ความลึก (จำนวนครั้ง) ยังคงสำคัญหรือไม่เมื่อมันสูงพอ?


10

นี่ไม่ใช่ของจริงแค่คิดว่าสิ่งนี้เกิดขึ้น

Computer Aเป็นซุปเปอร์คอมพิวเตอร์ สามารถคำนวณลึก 30 ชั้นภายใน 20 วินาที

Computer Bเป็นซุปเปอร์คอมพิวเตอร์ สามารถคำนวณลึก 15 ชั้นภายใน 20 วินาที

พวกเขาเล่นกับหมากรุกกัน

ความลึก 15 ระดับเหล่านี้สำคัญหรือไม่ ฉันเดาว่าภายใน 15 ความลึกเหล่านี้อาจมีวิธีล้านล้านทางที่จะหลบหนีการรุกฆาตหรือจับชิ้นส่วนที่สำคัญ แน่นอนว่าComputer Aรู้เพิ่มเติม แต่Computer Bสามารถทำนายอนาคตได้ค่อนข้างไกลเกินไปในความคิดของฉันก็เพียงพอที่จะป้องกันตัวเองได้ดี


ในกรณีนี้ด้วย "ความลึก" คุณหมายถึงจำนวนการเร่ร่อน? ไชโย
Rauan Sagit

ใช่ฉันหมายถึง plies
RikTelner

คำตอบ:


13

ใช่ความลึกทั้ง 15 เรื่องนั้นสำคัญมาก

พิจารณาตำแหน่งนี้ที่เกิดขึ้นในเกมอมตะของคาสปารอฟกับ Topalov

Kasparov - Topalov

ฉันทดสอบตำแหน่งนี้ด้วยหลายเครื่องยนต์ เอ็นจิ้นบางตัวที่ระดับความลึก 15 ไม่สามารถตรวจจับได้ว่า24 ... cxd4เป็นการเคลื่อนที่ที่เสียและคิดว่ามันชนะ เอ็นจิ้นเดียวกันเหล่านั้นที่มีความลึกมากกว่าเล่นท่าที่ถูกต้อง24 ... Kb6!

ตัวอย่างเช่นแม้แต่เครื่องยนต์ที่ทรงพลังเช่นเดียวกับ Stockfish 4 ในขั้นต้นที่ระดับความลึก 21 คิดว่าการสูญเสีย24 ... cxd4นั้นถูกต้อง

Stockfish DD 64 SSE4.2: 24...cxd4 25. Re7+ Kb6 26. Qxd4+ Kxa5 27. Qc3+ Kb6 
28. Qd4+ Qc5 29. Qxf6+ Bc6 30.Qxc6+ Qxc6 31. dxc6 Rd1+ 32. Ka2 f5 33. c7 Rc8 
34. Rxh7 Rxc7 35. Rh6 Rc6 36. g4 f4 37. g5 Rd2 38. c3 Rxc3 39. Rxg6+ Kc5 
40. Bg4 Rcc2 41. Rxa6 Rxb2+ 42. Ka1 Rbc2 43. Kb1 
(-1.45/21)

เอ็นจิ้นเดียวกันเมื่อเก็บลึกลงไปอีกเล็กน้อยจะแสดง24 ... Kb6เพื่อการเคลื่อนที่ที่ถูกต้อง

Stockfish DD 64 SSE4.2: 24...Kb6 25. b4 Qxf4 26. Rxf4 Nxd5 27. Rxf7 cxb4 
28. axb4 Rhe8 29. Rxe8 Rxe8 30. Nb3 Re1+ 31. Kb2 Re2 32. Rxh7 Nxb4 
33. Kc3 Nd5+ 34. Kd3 Rxh2 35. Rh4 Ne7 36. Nd4 Nc6 37. Nxc6 Bxc6 38. f4 Kc5 
39. Be6 Rxh4 40. gxh4 Bd5 41. f5 gxf5 42. Bxf5 a5
(-0.78/26)

Fritz 11 SE ที่ระดับความลึก 15 ก็ล้มเหลวเช่นกัน แต่พบว่าการเคลื่อนไหวที่ถูกต้องที่ความลึก 16!

Fritz 11 SE: 24... cxd4 25. Qxd4+ Qb6 26. Re7+ Nd7 27. Qe5 f6 28. Qc3 Qg1+ 
29. Ka2 Bxd5+ 30. Nb3 f5 31. Qc7+ Ka8 32. Rxd7 Rxd7 33. Qxd7 Bxf3 34. Qd6 Qa7  
(-1.44/15) 

Fritz 11 SE: 24... Kb6 25. b4 Qxf4 26. Rxf4 Nxd5 27. Rxf7 cxb4 28. axb4 Nxb4 
29. Nb3 Bd5 30. Rf6+ Nc6 31. Nd4 Rdf8 32. Rd6 Kc5 33. Rxc6+ Bxc6 34. Ne6+ Kd6 
35. Nxf8 
(-0.59/16)

นอกจากนี้ยังพิจารณาปัญหาอย่างไม่น่าเชื่อเช่นนี้ตำแหน่งที่ผมพบว่าที่นี่

สต็อคฟิชไม่สามารถหาเส้นที่ชนะได้ 1 Be2 +! จนกระทั่งความลึก 31 ขึ้นไปจนกระทั่งถึงตอนนั้นมันคิดว่ามันเป็นการเคลื่อนไหวที่ไม่ดี ฉันแสดงให้เห็นถึงชัยชนะที่นี่ ประเด็นก็คือว่าแบล็กอยู่ในซุกสวางเพราะภัยคุกคามจากคู่ครองและต้องยอมแพ้ราชินีหรือย้ายจำนำซึ่งจะช่วยให้ไวท์สร้างจำนำที่ผ่านไปและชนะ

NN - NN, 1-0
1. Be2 +! Kf5 2. Nd5! Qxe6 3. Bd3 + Kg4 4. Be4 !! Qh6
( 4 ... Qxe4 5. Nf6 + )
5. Nf4 Qg7 6. Nd3! Qxd4 7. c6! a5
( 7 ... Qxe4 8. Nf2 + Kf3 9. Nxe4 Kxe4 10. Kg2 Kd4 11. g4 hxg4 12. h5 Ke5 13. h6 Kf6 14. Kg3 Kg6 15. Kxg4 Kxh6 15. Kf5 Kg7 17. Ke6 Kf8 18. Kd7 18. Kf7 19. Kxc7 )
8. b5! a4 9. b6 cxb6 10. c7 Qxe4
( 10 ... Qc3 11. Nf2 # )
11. Nf2 + Kf3 12. Nxe4 1-0

นี่คือบันทึกของเครื่องยนต์จาก Stockfish 4 อย่างที่คุณเห็นมันตรวจพบว่า 1. Be2 + ชนะเพียงระดับความลึก 31 เท่านั้น!

Stockfish DD 64 SSE4.2: 1. Be2+ Kf5 2.Bc4 c6 3. Ne2 Qf6 4. Kg2 Kg4 5. Nf4 Qxd4 
6. Bd3 Qe3 7. Be2+ Kf5 8. Bf3 Qd2+ 9. Kh3 Qxb4 10. e7 Qe1 11. Ne2 Qf1+ 12. Kh2 Qf2+
13. Kh3 Qe3 (-1.05/22) 

Stockfish DD 64 SSE4.2: 1. Be2+ Kf5 2. Bc4 Qf6 3. Ne2 c6 4. Bxa6 Qxe6 5. Bd3+ Kf6 
6. Nf4 Qe1 7. d5 Qxb4 8. dxc6 Qxc5 9. Be4 Ke7 10. c7 Kd7 11. Nd5 Kd6 12. Kh3 Qc4 
13. Bg2 Qg4+ 14. Kh2 Qc8 15. Be4 (-1.15/26) 

Stockfish DD 64 SSE4.2: 1. Be2+ Kf5 2. Bc4 Qf6 3. Ne2 c6 4. d5 cxd5 5. Bxd5 Qb2 
6. Bc4 Kf6 (-1.01/28) 

Stockfish DD 64 SSE4.2:  1. Be2+ Kf5 2. Nd5 Qxe6 3. Bd3+ Kg4 4. Be4 Qh6 5. Nf4 Qf6 
6. Nd3 Qxd4 7. c6 Qxe4 8. Nf2+ Kf3 9. Nxe4 Kxe4 10. Kg2 Ke5 11. Kf3 Kf5 12. g4+ Kf6
13. gxh5 Kg7 14. Kf4 Kf6 15. h6 Kg6 16. h5+ Kh7 17. Kg5 Kg8 18. h7+ Kxh7 19. Kf5 Kg7
20. Ke6 Kh6 21. Kd7 Kxh5 22. Kxc7 Kg5 23. Kd7 (6.06/31) 

แต่ฉันหมายถึง 15 การเคลื่อนไหวทุกการเคลื่อนไหว ไม่เพียงแค่เริ่มต้นเท่านั้น
RikTelner

4
ใช่ทุกการเคลื่อนไหว หากในการเคลื่อนที่ครั้งแรกมันจะคำนวณที่ระดับความลึก 15 และทำให้เกิดความผิดพลาดจากนั้นการคำนวณความลึก 15 ครั้งในการย้ายครั้งต่อไปจะไม่บันทึก
Wes

5

ความสัมพันธ์ระหว่างประสิทธิภาพที่เพิ่มขึ้นกับความลึกของการค้นหานั้นเป็นพื้นที่การวิจัยที่ใช้งานเป็นระยะเวลานานในชุมชนการเขียนโปรแกรมคอมพิวเตอร์หมากรุก มีทฤษฎีที่เพิ่มความลึกของการค้นหาส่งผลให้ผลตอบแทนลดลงในจุดแข็ง ... สิ่งนี้ดูเหมือนจะได้รับการยืนยันในผลการทดลอง

จากมุมมองของฉันมีรากฐานที่เข้าใจง่ายสำหรับสิ่งนี้ ลองนึกภาพการจับคู่สมมุติของคุณระหว่างซูเปอร์คอมพิวเตอร์สองเครื่องโดยเริ่มจากตำแหน่งฐาน endgame ของเกม การชนะที่ถูกบังคับส่วนใหญ่ในตารางจะเกิดขึ้นที่ขอบฟ้าน้อยกว่า (ตัวอย่าง) 50 ชั้น ตำแหน่งที่เหลือส่วนใหญ่จะถูกดึงออกมาเพียงการแก้ไขเศษส่วนเล็กน้อยเพื่อให้ได้ชัยชนะที่ระดับความลึกที่สูงขึ้น การค้นหาคอมพิวเตอร์ที่ 100 ply จะมีข้อได้เปรียบที่ จำกัด กว่าคอมพิวเตอร์ 50 ply เพราะ (อย่างที่คุณพูดถึง) โปรแกรมที่อ่อนแอนั้นสามารถนำทางผ่านเกือบทุกบรรทัดที่หายไปทั้งหมดเกิดขึ้นที่ความลึกที่ จำกัด โปรแกรม 50 ply จะมีข้อได้เปรียบมากกว่าโปรแกรม 25 ply ... เช่นเดียวกับโปรแกรม 4 ply จะมีข้อได้เปรียบที่ยิ่งใหญ่กว่าโปรแกรม 2 ply

ฉันพบแนวคิดนี้เป็นครั้งแรกเมื่อประมาณ 15 ปีที่แล้วในชุดเอกสารเรื่องDark Thoughtโดยทดลองในการค้นหาลึก นี่คือการอ่านที่ดีถ้าคุณมีความสนใจในหมากรุกคอมพิวเตอร์

แม้ว่าฉันจะไม่พบการอ้างอิงออนไลน์ แต่มีบทความจากปีที่แล้วในหัวข้อนี้ ...

Diogo R. Ferreira (2013) ผลกระทบของความลึกในการค้นหาความแข็งแรงในการเล่นหมากรุก ICGA Journal, Vol. 36 ฉบับที่ 2


2

คำถามคือ: คุณหมายถึง 15/30 ชั้นของการค้นหาที่ละเอียดถี่ถ้วนหรือความลึก / ซ้ำที่ 15/30 ของเครื่องมือหมากรุกสมัยใหม่เช่น Stockfish หรือไม่?

หากคุณหมายถึงหลัง 15 ชั้นไม่จำเป็นต้องมีความหมายมาก เอ็นจิ้นหมากรุกสมัยใหม่จะตัดและลดการเคลื่อนไหวที่ไม่ดีดังนั้นมันอาจเป็นไปได้ว่าการเสียสละที่ดูเหมือนจะไม่ดีตั้งแต่แรกพบที่ระดับความลึก / ซ้ำที่ 15 นั้นจริง ๆ แล้วค้นหาเพียงระดับความลึก 5-10 เท่านั้น ที่ความลึก / การวนซ้ำ 30 การเคลื่อนไหวอาจจะยังคงค้นหาเฉพาะในระดับความลึกที่ลดลง แต่จากนั้นอาจเป็นความลึกที่มีประสิทธิภาพ 15-20 ซึ่งอาจเพียงพอที่จะพบว่าการเสียสละดีจริง ๆ และทันทีที่เครื่องยนต์ ค้นพบว่าการย้ายมีแนวโน้มจะลดการลดลงเพื่อให้การค้นหาถูกย้ายไปที่ความลึกใกล้เคียงกับ 30 เร่ (หรือลึกกว่าเนื่องจากการค้นหาส่วนขยายและ quiescence) ใช่ฉันคิดว่ามันสามารถสร้างความแตกต่างได้แม้ว่าการรวมกันจะอยู่ภายในขอบเขตเล็กน้อยที่ 15 ชั้น

หากคุณอ้างถึงการค้นหาที่ละเอียดถี่ถ้วนฉันคิดว่าเอ็นจิ้นที่มีความลึก 15 จะแข็งแกร่งมากหากมันมีฟังก์ชั่นการประเมินผลที่ดีและการค้นหาความเงียบบางอย่าง (หลังจากโหนดลาที่ความลึก 15) เนื่องจากผลตอบแทนลดลงฉันคิดว่ากำไรที่ได้รับจากการเพิ่มความลึกเป็นสองเท่าจะน้อยกว่าสิ่งที่คุณจะได้รับจากการจับคู่ระหว่างเครื่องยนต์สมัยใหม่สองเครื่องที่มีความลึก 15 เทียบกับ 30 ลึก แต่นั่นเป็นเพียงทฤษฎีเท่านั้น ความลึก 15 จะใช้คำสั่งที่มีขนาดยาวกว่าเครื่องยนต์ปกติถึงความลึก / การทำซ้ำ 15 ดังนั้นการทดลองดังกล่าวจะทำได้เฉพาะที่ความลึกต่ำกว่าเท่านั้น


0

FWIW เมื่อ ARM เป็นรุ่นใหม่ฉันเขียนโปรแกรมค้นหา ARM ที่ละเอียดถี่ถ้วนด้วยการประเมินตำแหน่งวัสดุเฉพาะหลังจาก 1 ชั้น

ฉันใช้เทคนิคที่มีรหัสเครื่องที่ดีที่สุดการวนซ้ำที่ลึกขึ้นการทำอัลฟาเบต้าในการย้ายที่เรียงลำดับ (เกือบทุกตำแหน่งมีค่า 0 ดังนั้นจึงมีการตัดอัลฟาเบต้าที่เหมาะสม) - และตารางแฮชซึ่งลดปัจจัยสาขาลง สแควร์รูทเชิงทฤษฎีสำหรับอัลฟาเบต้าโดยทั่วไปประมาณ 4 ที่ส่วนที่แย่ที่สุดของเกม

ในการแข่งขันกับโปรแกรมมาตรฐานในเวลานั้นโปรแกรม E6P ของฉันเข้าสู่ตำแหน่งที่แย่มาก แต่ด้วยการค้นหาที่ละเอียดมากหรือสองครั้งเมื่อเปรียบเทียบกับซอฟต์แวร์มืออาชีพในเวลานั้น (เช่นโดยทั่วไปคือ 6 ply ครบถ้วนสมบูรณ์ มากถึง 12 ชั้นในขณะที่เกมนั้นง่ายขึ้น) มันยังคงดิ้นรนจากการสูญเสียที่แท้จริงแม้จะมีความมั่นใจจากฝ่ายตรงข้าม เกมเกือบทั้งหมดไปสู่การตัดสินหลังจากผ่านไปหลายชั่วโมงเพราะโปรแกรมฝ่ายตรงข้ามไม่สามารถชนะได้

หลังจากนั้นฉันปรับมันให้เหมาะกับ StrongARM ซึ่งมันเปลี่ยนเป็น 10 ชั้น รุ่นนี้สามารถเอาชนะผู้เล่นที่ไม่ใช่หมากรุกทั้งหมดได้อย่างง่ายดาย แต่เห็นได้ชัดว่ามันขาดการรับรู้เชิงกลยุทธ์ดังนั้นความคิดเห็นที่มีชื่อเสียงจึงถูกนำไปใช้: ใช่พวกเขาคือการเคลื่อนไหวของหมากรุก - แต่มันไม่ใช่หมากรุก!

นี่เป็นไม่กี่ปีที่ผ่านมา แต่ฉันอยากจะลองอีกครั้งด้วยการประเมินตำแหน่งเชิงกลยุทธ์มากขึ้นที่ชั้น 1 - และด้วย Intel XEON ตามหลักวิชา 10,000-100,000x เร็วกว่า (และมีหน่วยความจำแฮชตาราง 30k เท่า) กว่า 4MIPS ARM2 โอ๊กอาร์คิมีดีส

เป็นที่ยอมรับไม่ใช่กระแสหลัก แต่สนุกกับการเล่น


-2

+1 เร่ประมาณ + 55..70 ELO ได้รับ (งานวิจัยจำนวนมากในหัวข้อนี้)

ฉันเดาว่าภายใน 15 ความลึกเหล่านี้อาจมีวิธีล้านล้านทางที่จะหลบหนีการรุกฆาตหรือจับชิ้นส่วนที่สำคัญ

สิ่งนี้คือ "trillions" ทั้งหมดนี้คำนวณโดย A @ D = 30 และหาก A เลือกย้ายด้วยการชนะ eval หมายความว่ามันคำนวณ "trillions" ทั้งหมดนี้และไม่ว่า "trillions" จะตอบกลับการเคลื่อนไหวของฝ่ายตรงข้ามใด - ยังชนะอยู่


ยินดีต้อนรับสู่การอภิปราย คุณมีอะไรที่จะพิสูจน์คำพูดของคุณ? ฉันไม่คิดว่าจะมีความสัมพันธ์ที่เป็นรูปธรรม
SmallChess
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.