ฉันเขียนคำตอบนี้อีกครั้งเพื่อพยายามแสดงความคิดเห็นเกี่ยวกับรุ่นก่อนหน้า
ฉันคิดว่าคุณได้อ่านคำนิยามของ Wikipedia สำหรับความสมบูรณ์แบบ NPซึ่งไม่ได้เน้นไปที่เกมจริงๆ ฉันจะทำให้ความหมายที่แท้จริงของ NP-ครบถ้วนสมบูรณ์และทฤษฎีเกมเป็นเพียงเล็กน้อยและอธิบายสาระสำคัญของเกม NP-Complete
ลองพิจารณาเป็นเกมที่ผู้เล่น 2 คนที่มีการเคลื่อนไหวทางเลือกมากขึ้นจำากัดนี้เป็นหลักเกี่ยวกับเกม Combinatorial โดยทั่วไปเกมที่คุณมีจำนวนการเคลื่อนไหวที่สามารถทำได้และคุณต้องเลือกหนึ่งในนั้น คุณต้องการที่จะเล่น "สมบูรณ์แบบ" ซึ่งหมายความว่าคุณจะไม่ย้าย "ไม่ดี" ดังนั้นการเคลื่อนไหวที่อนุญาตคุณต้องการเลือกสิ่งที่ดีที่สุด (แน่นอนว่าคู่ต่อสู้ของคุณมีเป้าหมายเดียวกัน ... )
โปรดทราบว่าการเล่นที่สมบูรณ์แบบไม่ได้หมายความว่าคุณจะชนะเสมอ กฎของเกมสามารถเป็นเช่นนั้นผู้เล่นคนแรกหรือคนที่สองควรชนะ เกมบางเกมเช่น Tic-Tac-Toe น่าจะจบลงด้วยผลเสมอ ดังนั้นสิ่งที่ "การเล่นที่สมบูรณ์แบบ" หมายถึงในการสนทนานี้คือ:
(1) คุณจะไม่เคยอยู่ในตำแหน่งที่ชนะและแพ้ในเกมเพราะคุณทำท่า "ไม่ดี"
(2) คุณจะไม่พลาดโอกาสที่จะได้รับ เข้าสู่ตำแหน่งที่ชนะหากมีโอกาสดังกล่าวเกิดขึ้น
เมื่อพิจารณาถึงสถานะปัจจุบันของเกมสิ่งที่คุณต้องการคือการใช้ "อัลกอริทึมที่มีประสิทธิภาพ" เพื่อคำนวณการเคลื่อนไหวที่ดีที่สุด ในอีกด้านขอทราบว่าอัลกอริทึมที่มีการค้นหาผ่านแผนผังเกมทั้งหมดเป็น "อัลกอริทึมที่ไม่มีประสิทธิภาพ"
ตอนนี้ให้นิยาม "ประสิทธิภาพ" อีกเล็กน้อยอย่างเป็นทางการ ฉันจะทำให้มันง่ายขึ้นเล็กน้อย แต่สาระสำคัญนั้นถูกต้อง พิจารณาจำนวนการคำนวณที่ต้องทำเพื่อเลือกการย้ายครั้งต่อไปโดยที่ค่าเฉลี่ยในการเคลื่อนที่แต่ละครั้งนั้นมีความเป็นไปได้ ( ปัจจัยการแตกแขนง ) และมีการเคลื่อนที่ครั้งในเกม ความคิดยังเป็นว่าการคำนวณแต่ละจะใช้เวลาในเวลาเดียวกันเพื่อให้ความพยายามที่สามารถแปลเป็นเวลาซับซ้อน ,แทนการคำนวณดิบCBnT
- "อัลกอริทึมที่มีประสิทธิภาพ" จะมี:โดยที่คือ "จำนวนเต็มเล็กน้อย" และอาเป็นจำนวนจริง ดังนั้นอัลกอริธึมที่มีประสิทธิภาพจะดำเนินการในเวลาพหุนามตั้งแต่นี้คือการแสดงออกพหุนาม
T∝aBa+bBα−1+cBα−2+...+hB0
α
- "อัลกอริทึมที่ไม่มีประสิทธิภาพ" จะมี:
และอัลกอริทึมนี้ทำงานในเวลาเอ็กซ์โปเนนเชียล (เช่นเวลาที่ไม่ใช่โพลิโนเมียนัล) ประเด็นตรงนี้ก็คือเมื่อได้รับผลการระเบิดแบบ combinatorial มากขึ้น
T∝aBn
n
ตอนนี้จุดสำคัญคือมันเป็นไปไม่ได้ที่จะมีอัลกอริธึมที่มีประสิทธิภาพเวลาพหุนามซึ่งเล่นได้อย่างสมบูรณ์แบบสำหรับเกมที่สมบูรณ์แบบ NP ในการเล่นปัญหาที่สมบูรณ์แบบของ NP จะต้องได้รับการแก้ไขโดยอัลกอริธึมที่ไม่มีประสิทธิภาพซึ่งจะทำงานในเวลาที่ไม่ใช่พหุนาม
โปรดทราบว่าเวลาทำงานนั้นเกี่ยวกับจำนวนการคำนวณที่แท้จริงไม่ใช่เวลาตอบสนองที่มนุษย์รับรู้ สำหรับเกมเล็ก ๆ เช่น Tic-Tac-Toe คอมพิวเตอร์สามารถเล่นการเคลื่อนไหวในอนาคตที่เป็นไปได้ทั้งหมดและยังคงตอบสนองอย่างรวดเร็วตามการรับรู้ของมนุษย์
สำหรับNimเป็นไปได้ที่จะสร้างอัลกอริทึมเวลาพหุนาม ณ จุดใดในเกมอัลกอริทึมสามารถคำนวณว่าผู้เล่นคนใดมีท่าเดินที่ชนะและท่าไหนที่ควรจะเป็น
ในอีกทางหนึ่งลองเล่นเกมคิวบิค (คุณพยายามที่จะสร้างบรรทัดที่ 4 ในตาราง 3 มิติดังนั้นโดยพื้นฐานแล้วมันคือ tic-tac-toe บนตาราง 4x4x4) Qubic เป็น NP-complete ดังนั้นจึงไม่มีอัลกอริธึมเวลาพหุนามในการคำนวณการเคลื่อนที่ที่สมบูรณ์แบบต่อไป วิธีเดียวที่จะรู้ว่าคุณมีท่าทีชนะหรือไม่คือการลองท่าที่เป็นไปได้ทั้งหมดของผู้เล่นทั้งสองเพื่อยืนยันว่าท่าใดท่าหนึ่งเป็นผู้ชนะหรืออย่างน้อยก็ไม่ใช่ผู้แพ้
จริงๆแล้วทรีเกมทั้งหมดของ Qubic นั้นเล็กพอที่จะเข้ารหัสลงในโปรแกรมคอมพิวเตอร์ที่สามารถเล่นได้อย่างสมบูรณ์แบบ การเข้ารหัสหมายถึงอะไรคือทรีเกมทั้งหมดได้รับการสำรวจและการเคลื่อนไหวทั้งหมดได้ผลล่วงหน้า ดังนั้นโปรแกรมสามารถทำการเรียกฐานข้อมูลอย่างรวดเร็วโดยใช้สถานะบอร์ดปัจจุบันและกลับไปสู่สถานะที่ดีที่สุดสำหรับสถานะบอร์ดนั้นโดยไม่ต้องทำการค้นหาทรีในแต่ละครั้งที่จะทำการย้าย นี่คือ "การโกง" สำหรับจุดประสงค์ของเราที่นี่
ตอนนี้เรามาพูดถึงหมากรุกเพื่อพูดคุยเกี่ยวกับฟังก์ชั่นการประเมินผลโดยไม่สนใจคุณสมบัติอื่น ๆ ของโปรแกรมเล่นหมากรุก หมากรุกยังคงเป็นเกมปริศนา ไม่ทราบว่าผู้เล่นคนแรกหรือคนที่สองควรชนะ มันเป็นไปไม่ได้ที่จะได้รับตำแหน่งกรรมการใด ๆ และทำนายด้วยความมั่นใจว่าใครจะชนะ ในความเป็นจริงหมากรุกมีแผนภูมิเกมขนาดใหญ่ที่เป็นไปไม่ได้ที่จะค้นหาทรีเกมทั้งหมด คุณต้องการคอมพิวเตอร์ที่ไม่เร็วกว่า 10 หรือ 100 เท่า แต่เร็วกว่าพันล้านเร็วกว่าคอมพิวเตอร์เครื่องอื่น ๆ (มีความหวังว่าการคำนวณควอนตัมสามารถตัดผ่านปม Gordian นี้)
คิดว่าฟังก์ชั่นการประเมินหมากรุกเป็นการให้ความเป็นไปได้ในการเคลื่อนที่ที่ดีที่สุด สิ่งที่โปรแกรมหมากรุกทำคือการรวมหน้าตากับฟังก์ชั่นการประเมินผล ดังนั้นโปรแกรมจะพิจารณาการเคลื่อนไหวในอนาคตที่เป็นไปได้ทั้งหมดจนกว่าจะถึงจุดที่ให้คะแนน "ดี" กับตำแหน่งกระดาน คอมพิวเตอร์ประเมินเส้นทางที่เป็นไปได้ทั้งหมดผ่านต้นไม้ด้วยวิธีนี้แล้วเลือกเส้นทางด้วยคะแนนที่ดีที่สุด เนื่องจากการค้นหาไม่เคยจบเกมสำหรับเส้นทางทั้งหมดที่กำลังถูกประเมินโปรแกรมหมากรุกทั้งหมดจึงใช้ฟังก์ชั่นการประเมินที่ไม่สมบูรณ์ (หากคุณใกล้ถึงจุดสิ้นสุดของเกมแล้วคอมพิวเตอร์อาจสามารถดูการเคลื่อนไหวในอนาคตที่เป็นไปได้ทั้งหมด) นั่นหมายความว่าอาจเป็นไปได้ที่จะเอาชนะโปรแกรมแม้ว่าโปรแกรมนั้นจะมีตำแหน่งชนะในบางจุดก็ตาม