เหตุใดบางเกมจึงเสร็จสมบูรณ์ np


50

ฉันอ่านรายการ Wikipedia เกี่ยวกับ " รายการปัญหาที่เกิดปัญหา NP-complete " และพบว่าเกมเช่น super mario, pokemon, tetris หรือ saga crush candy เป็น np-complete ฉันจะจินตนาการถึงความสมบูรณ์แบบของเกมได้อย่างไร คำตอบไม่จำเป็นต้องแม่นยำเกินไป ฉันแค่ต้องการรับภาพรวมความหมายของเกมที่สามารถทำให้สมบูรณ์ได้


4
ดูคำถามอ้างอิงเกี่ยวกับความสมบูรณ์แบบของ NP ฉันคิดว่าคำถามของคุณกว้างเกินไปสำหรับรูปแบบการแลกเปลี่ยนสแต็ก
Kyle Jones

5
ใน minecraft คุณสามารถสร้าง .... คอมพิวเตอร์ได้ดี ... วิ่ง .... minecraft?
djsmiley2k - CoW

4
การสร้างเครื่องคิดเลขโดยใช้ Magic: The Gathering Cards สนุกมาก :-)
เสา

นี่ไม่ใช่คำตอบสำหรับคำถามที่คุณถาม แต่มีความเกี่ยวข้องอย่างใกล้ชิดซึ่งเป็นสิ่งสำคัญที่จะต้องชี้ให้เห็น: ผู้ออกแบบเกมที่มีชื่อเสียง (และผู้สนับสนุนวิธีการอย่างเป็นทางการในการออกแบบเกม) Raph Koster ได้ตั้งทฤษฎีว่า ความซับซ้อนในการคำนวณของเกมมีความสำคัญต่อความเพลิดเพลินอย่างต่อเนื่องของเรา เขาระบุว่า "สนุก" โดยพื้นฐานแล้วเป็นการตอบสนองต่อการเรียนรู้เพื่อปรับปรุงประสิทธิภาพของงานที่ยากลำบากในสภาพแวดล้อมที่ไม่เป็นอันตรายและชี้ให้เห็นว่าการทำสิ่งนี้ต่อไปในระบบที่มีข้อ จำกัด เช่นเกมขึ้นอยู่กับระบบ ..
Jules

... ยากหรือเป็นไปไม่ได้ที่จะคาดเดาได้อย่างรวดเร็วเพียงพอที่จะใช้การคาดการณ์เหล่านั้นดังนั้นบังคับให้เราเรียนรู้ในทางตรงน้อยกว่า (มักใช้การวิเคราะห์พฤติกรรม) ปัญหาที่มีความซับซ้อนสูง (เขามักจะแนะนำ NP Hard) เป็นวิธีที่เชื่อถือได้มากที่สุดในการสร้างรูปแบบพฤติกรรมดังกล่าวซึ่ง (ถ้าเขาถูกต้อง) อาจเป็นเหตุผลว่าทำไมพวกเขาถึงเล่นเกมที่รู้จักกันดี ดูสไลด์ประชุมและหนังสือนี้สำหรับข้อมูลเพิ่มเติม
จูลส์

คำตอบ:


72

หมายความว่าคุณสามารถสร้างระดับหรือปริศนาภายในเกมเหล่านี้ที่เข้ารหัสปัญหา NP-Hard คุณสามารถนำปัญหาการระบายสีกราฟสร้างระดับ Super Mario Bros. ที่เกี่ยวข้องและระดับนั้นสามารถเอาชนะได้หากและหากกราฟนั้นมี 3 สี

หากคุณต้องการที่จะเห็นเฉพาะวิธีการแก้ปัญหา NP-สมบูรณ์แปลงค่าเป็นเกมที่ผมขอแนะนำกระดาษ"คลาสสิกเกม Nintendo คือ (คอมพิวเตอร์) ยาก" มันเขียนได้ดีและง่ายต่อการติดตาม

ข้อควรระวังที่สำคัญที่ต้องจำไว้ก็คือความแข็งของ NP นั้นต้องทำให้เกมเป็นแบบ "ชัดเจน" ตัวอย่างเช่น Tetris โดยปกติจะมีบอร์ดขนาดคงที่ แต่การทดสอบความแข็งต้องใช้เกมเพื่ออนุญาตบอร์ดขนาดใหญ่โดยพลการ อีกตัวอย่างหนึ่งคือศัตรูนอกจอใน Super Mario Bros: การพิสูจน์สำหรับเกมที่ศัตรูนอกจอยังคงเคลื่อนไหวราวกับว่าพวกเขาอยู่บนหน้าจอแทนที่จะหยุดอยู่และถูกรีเซ็ตเป็นตำแหน่งเริ่มต้นเมื่อมาริโอกลับมา .


4
ไม่คุ้มกับคำตอบของตัวเอง แต่ต่อไปนี้มีการบรรยายวิดีโอที่ดี: courses.csail.mit.edu/6.890/fall14/lectures/L05.html - คำอธิบายที่ชัดเจน
340082710

4
มันอาจจะคุ้มค่ารวมถึงคำแถลงที่ถูกต้องของทฤษฎีบทจากกระดาษ (น่าสนใจอย่างมาก!) ที่คุณเชื่อมโยงซึ่งรวบรัดและแม่นยำอธิบายสิ่งที่มันหมายถึงการพูดว่าเกม NP-hard: มันยาก NP ที่จะตัดสินใจว่า เป้าหมายสามารถเข้าถึงได้จากจุดเริ่มต้นของขั้นตอนใน Super Mario Bros ทั่วไป
ymbirtt

อาจจะไม่เกี่ยวข้อง แต่กับเกมโปเกมอนล่าสุด (ดวงอาทิตย์และดวงจันทร์) หลักฐานในบทความไม่เป็นความจริงอีกต่อไป (อย่างน้อยก็อย่างที่เป็นอยู่) ในขณะที่ผู้ฝึกสอนศัตรูไม่ขยับเข้าหาผู้เล่นเพื่อต่อสู้กับพวกเขาอีกต่อไป
simonalexander2005

2
ในการเป็น NP-Complete คุณจะต้องสามารถเข้ารหัสปัญหา NP-Hard ได้และอยู่ใน NP ประโยคที่สองหายไปจากคำตอบข้างต้น
Yakk

ถึงแม้ว่าคำตอบนี้จะดีในทางเทคนิคมันเป็นความสว่างปัญหาให้กับใครบางคนไม่ทราบพอที่จะถามคำถามในตอนแรก? ฉันไม่คิดว่ามันจะเป็น ...
MaxW

20

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

ลองมาเป็นตัวอย่าง Tetris เนื่องจากเป็นสิ่งเดียวที่คุณพูดถึงที่ฉันเข้าใจพอที่จะพูดถึง Tetris มีกฎที่เรียกว่า "perfect clear" ซึ่งจะทำให้ผู้เล่นได้รับโบนัสก้อนใหญ่หากการดร็อปชิ้นหนึ่งล้างกระดานทั้งหมด บางคนอาจสงสัยว่าถ้าเรียงลำดับชิ้นและเลขจำนวนเต็มมีลำดับการเคลื่อนที่ตามกฎหมายสำหรับชิ้นส่วนที่ประสบความสำเร็จอย่างน้อยเคลียร์สมบูรณ์ คำแถลงปัญหาเช่นสิ่งเหล่านั้นมีความเป็นนามธรรมเพียงพอที่สามารถสร้างแบบจำลองด้วยเครื่องมือของทฤษฎีความซับซ้อน{Pi}kPk

เรื่องสั้นที่สั้น " - สมบูรณ์" หมายถึงสิ่งหนึ่งและสิ่งเดียวเท่านั้นการอ้างสิทธิ์อย่างเช่น "Super Mario คือ - ที่สมบูรณ์" ต้องได้รับการแปลเป็นแถลงการณ์อย่างเป็นทางการก่อนที่จะทำให้จริง ความรู้สึกNPNP


1

นี่คือคำอธิบายง่ายๆโบกมือ:

เกมดังกล่าวอยู่ใน NPเพราะ "วิ่ง" พฤติกรรมของผู้เล่นในช่วงเวลาของเกมและตรวจสอบว่าเขา / เธอชนะหรือแพ้สามารถทำได้อย่างมีประสิทธิภาพ (เราต้องการให้มันอยู่ในเวลาพหุนามในช่วงระยะเวลาของเกม แต่อาจเป็นไปได้ เชิงเส้นหรือ -ish)O(nlog(n))

เกมดังกล่าวเป็นแบบNP-hardเพราะพฤติกรรมของผู้เล่นแสดงออกอย่างมาก ในขณะที่ ณ จุดใดก็ตามผู้เล่นอาจมีข้อ จำกัด แม้จำนวนคงที่จำนวนการกระทำที่เป็นไปได้ แต่ก็เพียงพอที่จะสร้างพื้นที่ของพฤติกรรมหรือกลยุทธ์ที่อธิบายความยาวของเกม; และในขณะที่คุณอาจจะสามารถให้เงื่อนไขที่เรียบง่ายหรือสูตรตรรกะในความถูกต้อง / ผลประโยชน์ / ความถูกต้องของการกระทำของผู้เล่นในพื้นที่ทั่วโลกคุณจะได้รับผลที่คล้ายกันกับวงจร combinatorial ขนาดใหญ่หรือสูตร k-CNF

หวังว่านี่จะใช้ความรู้สึกเป็นสัญชาตญาณและยังส่งสัญญาณระฆังทฤษฎี CS ให้เพียงพอ

ป.ล. - เกมบางเกมมีความซับซ้อนมากกว่านั้น ตัวอย่างเช่น boardgames Hex , Go and Reversiนั้นสมบูรณ์แบบ PSPACE นั่นเป็นเพราะสูตรที่คุณต้องการเพื่อให้ได้มาซึ่งกลยุทธ์การชนะคือสูตรการสลับสลับ - ซ้ำ ๆ กัน: การเคลื่อนไหวโดยผู้เล่น 1 มีอยู่เช่นว่าทุกการเคลื่อนไหวโดยผู้เล่น 2 จะมีการเคลื่อนไหวโดยผู้เล่น 1 เป็นต้น เช่นนั้นกับการเคลื่อนไหวทั้งหมดที่มีการเล่นไม่ว่าจะเป็นการเคลื่อนไหวของผู้เล่น 2 คนบางคนไม่ถูกต้องหรือเรามีผู้เล่นลำดับที่ 1 ที่ชนะ ด้วยเกม NP โดยทั่วไปแล้วมันเป็นเพียงพฤติกรรมของผู้เล่น / กลยุทธ์ / ตัวเลือกการเคลื่อนไหว


"หวังว่านี่จะทำให้เข้าใจได้ง่าย" - ไม่ใช่สำหรับฉัน ...
Raphael

1

สำหรับเกมผู้เล่นเดี่ยวคุณสามารถถามคำถาม "มีกลยุทธ์ในการชนะสำหรับผู้เล่น" และคำถามนั้นมักจะมีคำตอบ "ใช่" ที่สามารถตรวจสอบได้ในเวลาพหุนามและอาจเป็นปัญหาที่สมบูรณ์

สำหรับเกมที่มีผู้เล่นสองคนคำตอบนั้นมักจะไม่ได้รับการยืนยันในเวลาพหุนามเพราะเพื่อตรวจสอบว่าการย้ายสำหรับ A เป็นการย้ายที่ชนะคุณต้องแสดงให้เห็นว่าสำหรับการตอบสนองของ B ทุกครั้งจะต้องมีการย้ายที่ชนะสำหรับ A และอีกครั้ง เป็นต้น


0

แน่นอนว่ามันอยู่ใน NP เพราะวิธีแก้ปัญหาที่เป็นไปได้คือจำนวนอินพุต จำกัด (ในแต่ละเฟรมอินพุตคุณสามารถเลือกปุ่ม k ใด ๆ เราแสดงปุ่มแต่ละตัวสำหรับแต่ละเฟรมด้วยตัวอักษร) ที่นำคุณไปสู่ หน้าจอที่ชนะ เรารู้ว่าเกมนี้เคยพ่ายแพ้มาก่อนเราจึงรู้ว่ามันมีทางออก NTM ดำเนินการมากกว่าเทปและคาดเดาความยาวของใบรับรองที่ถูกต้องอย่างน่าอัศจรรย์ จากนั้นจะจำลองซูเปอร์มาริโอพร้อมอินพุตและตรวจสอบ การตรวจสอบสามารถทำได้ในเวลาพหุนาม (เวลาเชิงเส้นจริง ๆ แล้วถ้าการแก้ปัญหานั้นถูกต้องจะต้องใช้เวลา n เฟรมที่จะชนะ)

เพื่อแสดงความสมบูรณ์แบบของ NP เราสามารถลด 3-SAT ได้โดยสร้างตัวตรวจสอบ 3-Sat ด้วยเครื่องสร้างระดับ (ซึ่งสร้างขึ้นผ่านการใช้รหัสโดยพลการhttps://www.youtube.com/watch?v=IOsvuEA2h4w )

ดังนั้นเราจึงมีอินพุต 3-SAT CNF ที่เราตรวจสอบการจัดรูปแบบที่ถูกต้องก่อน หากมีการจัดรูปแบบไม่ดีเราเพียงแปลมันเป็นอินพุต 'jump'-one (มันเป็นไปไม่ได้ที่จะเอาชนะ Super Mario ภายในหนึ่งเฟรมโดยทำการกระโดด)

เราเรียกความยาวของอินพุต 3-CNF n

หากมีการจัดรูปแบบที่ถูกต้องเราแปลเป็นจำนวนอินพุตที่สร้างตัวตรวจสอบ 3-CNF สำหรับเรา (รหัสความยาวเท่ากันเสมอ k) แปล 3-CNF ให้เป็นสตริงของอินพุตที่สร้างค่าเฉพาะ 3- CNF ในตัวตรวจสอบ (ใน O (n)) และตรวจสอบการแก้ปัญหาที่เป็นไปได้ทั้งหมดโดยกำลังเดรัจฉาน มันไม่ทำงานและไม่ทำอะไรเลยถ้าหลังจากผ่านการแก้ปัญหาทั้งหมดแล้วจะไม่พบ มันรีสตาร์ทเกมและใช้วิธีแก้ปัญหาที่เป็นที่รู้จักสำหรับ Super Mario เพื่อเอาชนะเกม (รหัสที่ต้องทำคือความยาว j) การเปลี่ยนแปลงของเราเป็นแบบ O (n) ดังนั้นมันจึงอยู่ในเวลาพหุนาม

หากรูปแบบ CNF มีรูปแบบไม่ดีเราจะไม่ชนะ (โดยคำจำกัดความการป้อนข้อมูลของเราไม่ชนะถ้าเรายังไม่ชนะหนึ่งเฟรมหลังจากการใช้งานจริง) หาก CNF ไม่เป็นที่พอใจเราจะไม่ชนะ (คุณไม่สามารถชนะโดยการไม่ทำงานสำหรับหนึ่งเฟรมในตัวสร้างเลเวลเรามั่นใจได้ว่าในรหัสของเรา) หาก CNF เป็นที่น่าพอใจผู้ตรวจสอบจะพบว่าโซลูชันเริ่มต้นใหม่และชนะเกม ดังนั้นการลดพหุนามของ 3-Sat เป็น Super Mario จึงเสร็จสมบูรณ์และเราได้พิสูจน์แล้วว่า Super Mario นั้นเป็น NP-complete

(หวังว่าฉันจะไม่ทำสิ่งนี้เกิดขึ้นที่ไหนสักแห่งเราพบปัญหาในการจัดเก็บถ้า 3-CNF ยาวเกินไป แต่มักจะไม่สนใจที่เก็บข้อมูลที่ จำกัด ในบริบทเหล่านี้)


"แน่นอนว่ามันอยู่ใน NP เพราะทางออกที่เป็นไปได้เป็นเพียงจำนวน จำกัด " การอยู่ใน NP ต้องการให้โซลูชันนั้นถูก จำกัด ขนาดพหุนามในขนาดของอินพุต การถูก จำกัด ไม่เพียงพอ
David Richerby

0

ฉันเขียนคำตอบนี้อีกครั้งเพื่อพยายามแสดงความคิดเห็นเกี่ยวกับรุ่นก่อนหน้า

ฉันคิดว่าคุณได้อ่านคำนิยามของ Wikipedia สำหรับความสมบูรณ์แบบ NPซึ่งไม่ได้เน้นไปที่เกมจริงๆ ฉันจะทำให้ความหมายที่แท้จริงของ NP-ครบถ้วนสมบูรณ์และทฤษฎีเกมเป็นเพียงเล็กน้อยและอธิบายสาระสำคัญของเกม NP-Complete

ลองพิจารณาเป็นเกมที่ผู้เล่น 2 คนที่มีการเคลื่อนไหวทางเลือกมากขึ้นจำากัดนี้เป็นหลักเกี่ยวกับเกม Combinatorial โดยทั่วไปเกมที่คุณมีจำนวนการเคลื่อนไหวที่สามารถทำได้และคุณต้องเลือกหนึ่งในนั้น คุณต้องการที่จะเล่น "สมบูรณ์แบบ" ซึ่งหมายความว่าคุณจะไม่ย้าย "ไม่ดี" ดังนั้นการเคลื่อนไหวที่อนุญาตคุณต้องการเลือกสิ่งที่ดีที่สุด (แน่นอนว่าคู่ต่อสู้ของคุณมีเป้าหมายเดียวกัน ... )

โปรดทราบว่าการเล่นที่สมบูรณ์แบบไม่ได้หมายความว่าคุณจะชนะเสมอ กฎของเกมสามารถเป็นเช่นนั้นผู้เล่นคนแรกหรือคนที่สองควรชนะ เกมบางเกมเช่น Tic-Tac-Toe น่าจะจบลงด้วยผลเสมอ ดังนั้นสิ่งที่ "การเล่นที่สมบูรณ์แบบ" หมายถึงในการสนทนานี้คือ:
(1) คุณจะไม่เคยอยู่ในตำแหน่งที่ชนะและแพ้ในเกมเพราะคุณทำท่า "ไม่ดี"
(2) คุณจะไม่พลาดโอกาสที่จะได้รับ เข้าสู่ตำแหน่งที่ชนะหากมีโอกาสดังกล่าวเกิดขึ้น

เมื่อพิจารณาถึงสถานะปัจจุบันของเกมสิ่งที่คุณต้องการคือการใช้ "อัลกอริทึมที่มีประสิทธิภาพ" เพื่อคำนวณการเคลื่อนไหวที่ดีที่สุด ในอีกด้านขอทราบว่าอัลกอริทึมที่มีการค้นหาผ่านแผนผังเกมทั้งหมดเป็น "อัลกอริทึมที่ไม่มีประสิทธิภาพ"

ตอนนี้ให้นิยาม "ประสิทธิภาพ" อีกเล็กน้อยอย่างเป็นทางการ ฉันจะทำให้มันง่ายขึ้นเล็กน้อย แต่สาระสำคัญนั้นถูกต้อง พิจารณาจำนวนการคำนวณที่ต้องทำเพื่อเลือกการย้ายครั้งต่อไปโดยที่ค่าเฉลี่ยในการเคลื่อนที่แต่ละครั้งนั้นมีความเป็นไปได้ ( ปัจจัยการแตกแขนง ) และมีการเคลื่อนที่ครั้งในเกม ความคิดยังเป็นว่าการคำนวณแต่ละจะใช้เวลาในเวลาเดียวกันเพื่อให้ความพยายามที่สามารถแปลเป็นเวลาซับซ้อน ,แทนการคำนวณดิบCBnT

  • "อัลกอริทึมที่มีประสิทธิภาพ" จะมี:โดยที่คือ "จำนวนเต็มเล็กน้อย" และอาเป็นจำนวนจริง ดังนั้นอัลกอริธึมที่มีประสิทธิภาพจะดำเนินการในเวลาพหุนามตั้งแต่นี้คือการแสดงออกพหุนาม
    TaBa+bBα1+cBα2+...+hB0
    α
  • "อัลกอริทึมที่ไม่มีประสิทธิภาพ" จะมี: และอัลกอริทึมนี้ทำงานในเวลาเอ็กซ์โปเนนเชียล (เช่นเวลาที่ไม่ใช่โพลิโนเมียนัล) ประเด็นตรงนี้ก็คือเมื่อได้รับผลการระเบิดแบบ combinatorial มากขึ้น
    TaBn
    n

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

โปรดทราบว่าเวลาทำงานนั้นเกี่ยวกับจำนวนการคำนวณที่แท้จริงไม่ใช่เวลาตอบสนองที่มนุษย์รับรู้ สำหรับเกมเล็ก ๆ เช่น Tic-Tac-Toe คอมพิวเตอร์สามารถเล่นการเคลื่อนไหวในอนาคตที่เป็นไปได้ทั้งหมดและยังคงตอบสนองอย่างรวดเร็วตามการรับรู้ของมนุษย์

สำหรับNimเป็นไปได้ที่จะสร้างอัลกอริทึมเวลาพหุนาม ณ จุดใดในเกมอัลกอริทึมสามารถคำนวณว่าผู้เล่นคนใดมีท่าเดินที่ชนะและท่าไหนที่ควรจะเป็น

ในอีกทางหนึ่งลองเล่นเกมคิวบิค (คุณพยายามที่จะสร้างบรรทัดที่ 4 ในตาราง 3 มิติดังนั้นโดยพื้นฐานแล้วมันคือ tic-tac-toe บนตาราง 4x4x4) Qubic เป็น NP-complete ดังนั้นจึงไม่มีอัลกอริธึมเวลาพหุนามในการคำนวณการเคลื่อนที่ที่สมบูรณ์แบบต่อไป วิธีเดียวที่จะรู้ว่าคุณมีท่าทีชนะหรือไม่คือการลองท่าที่เป็นไปได้ทั้งหมดของผู้เล่นทั้งสองเพื่อยืนยันว่าท่าใดท่าหนึ่งเป็นผู้ชนะหรืออย่างน้อยก็ไม่ใช่ผู้แพ้

จริงๆแล้วทรีเกมทั้งหมดของ Qubic นั้นเล็กพอที่จะเข้ารหัสลงในโปรแกรมคอมพิวเตอร์ที่สามารถเล่นได้อย่างสมบูรณ์แบบ การเข้ารหัสหมายถึงอะไรคือทรีเกมทั้งหมดได้รับการสำรวจและการเคลื่อนไหวทั้งหมดได้ผลล่วงหน้า ดังนั้นโปรแกรมสามารถทำการเรียกฐานข้อมูลอย่างรวดเร็วโดยใช้สถานะบอร์ดปัจจุบันและกลับไปสู่สถานะที่ดีที่สุดสำหรับสถานะบอร์ดนั้นโดยไม่ต้องทำการค้นหาทรีในแต่ละครั้งที่จะทำการย้าย นี่คือ "การโกง" สำหรับจุดประสงค์ของเราที่นี่

ตอนนี้เรามาพูดถึงหมากรุกเพื่อพูดคุยเกี่ยวกับฟังก์ชั่นการประเมินผลโดยไม่สนใจคุณสมบัติอื่น ๆ ของโปรแกรมเล่นหมากรุก หมากรุกยังคงเป็นเกมปริศนา ไม่ทราบว่าผู้เล่นคนแรกหรือคนที่สองควรชนะ มันเป็นไปไม่ได้ที่จะได้รับตำแหน่งกรรมการใด ๆ และทำนายด้วยความมั่นใจว่าใครจะชนะ ในความเป็นจริงหมากรุกมีแผนภูมิเกมขนาดใหญ่ที่เป็นไปไม่ได้ที่จะค้นหาทรีเกมทั้งหมด คุณต้องการคอมพิวเตอร์ที่ไม่เร็วกว่า 10 หรือ 100 เท่า แต่เร็วกว่าพันล้านเร็วกว่าคอมพิวเตอร์เครื่องอื่น ๆ (มีความหวังว่าการคำนวณควอนตัมสามารถตัดผ่านปม Gordian นี้)

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


"มันเป็นไปไม่ได้ / ที่จะมีอัลกอริธึมที่มีประสิทธิภาพเวลาพหุนามสำหรับเกมที่ NP-complete ปัญหา NP-complete ต้องตามคำจำกัดความจะถูกแก้ไขโดยอัลกอริทึมที่ไม่มีประสิทธิภาพซึ่งทำงานในเวลาที่ไม่ใช่พหุนาม" - ไม่ถูกต้อง ไม่ทราบว่าเป็นไปได้หรือไม่ที่จะแก้ปัญหา NP-complete ในเวลาพหุนาม: นักวิจัยส่วนใหญ่คาดหวังอย่างยิ่งว่าคำตอบคือ "ไม่" แต่เราไม่รู้แน่ชัดและแน่นอน ฉันแนะนำให้คุณใช้เวลาอ่านเพิ่มเติมเกี่ยวกับคำจำกัดความที่แท้จริงของ NP-complete คุณสามารถค้นหาแหล่งข้อมูลบางอย่างในเว็บไซต์นี้และใน Wikipedia
DW

@DW - ใช่ฉันโง่คำตอบลงเล็กน้อย ฉันบอกว่าในวรรคแรก ถ้าคุณอ่านบิตด้านล่าง Qubic ฉันยังอธิบายว่าอัลกอริทึมเวลาพหุนามสามารถใช้สำหรับเกม "เล็ก" ได้อย่างไร ฉันพยายามที่จะให้คำตอบ OP จะเข้าใจว่าไม่ได้เขียนหนังสือเกี่ยวกับปัญหาความสมบูรณ์และทฤษฎีเกม
MaxW

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