मैंने पिछले संस्करण पर कुछ टिप्पणियों को संबोधित करने की कोशिश करने के लिए इस उत्तर को फिर से लिखा है।
मुझे लगता है कि आपने एनपी-पूर्णता के लिए विकिपीडिया की परिभाषा पढ़ ली है जो वास्तव में खेलों पर ध्यान केंद्रित नहीं करता है। मैं एनपी-पूर्णता और गेम थ्योरी के सटीक अर्थ को थोड़ा नीचे रखूँगा और एनपी-कम्प्लीट गेम का सार समझाऊँगा।
आइए वैकल्पिक चाल के साथ 2-खिलाड़ी गेम पर विचार करें, अधिक प्रतिबंधात्मक रूप से यह अनिवार्य रूप से कॉम्बिनेटरियल गेम के बारे में है । मूल रूप से एक खेल है जिसमें आपके पास कुछ चालें हैं जिन्हें बनाया जा सकता है और आपको उनमें से एक को चुनना होगा। आप "पूरी तरह से" खेलना चाहते हैं जिसका अर्थ है कि आप कभी भी "खराब" कदम नहीं उठाएंगे। इस तरह के स्वीकार्य कदमों में से आप सबसे अच्छे को चुनना चाहेंगे। (बेशक आपके प्रतिद्वंद्वी का एक ही लक्ष्य है ...)
ध्यान दें कि सही खेलने का मतलब यह नहीं है कि आप हमेशा जीतेंगे। खेल के नियम ऐसे हो सकते हैं कि पहले या दूसरे खिलाड़ी को जीतना चाहिए। इसके अलावा टिक-टैक-टो जैसे कुछ खेल एक ड्रॉ में समाप्त होने चाहिए। इस प्रकार इस चर्चा में "सही खेल" का अर्थ है:
(1) यह कि आप कभी भी जीतने की स्थिति में नहीं होंगे और फिर खेल को खो देंगे क्योंकि आपने एक "बुरा" कदम उठाया है
(2) आप कभी भी मौका पाने से नहीं चूकेंगे जीतने की स्थिति में अगर ऐसा अवसर आता है।
खेल की वर्तमान स्थिति को देखते हुए आप जो चाहते हैं वह सबसे अच्छा कदम की गणना करने के लिए "कुशल एल्गोरिथ्म" का उपयोग करने में सक्षम है। दूसरी तरफ आइए ध्यान दें कि एक एल्गोरिथम जिसे पूरे गेम ट्री के माध्यम से खोजना है, एक "अक्षम एल्गोरिथ्म" है।
अब "दक्षता" को थोड़ा और औपचारिक रूप से परिभाषित करने देता है। मैं इसे थोड़ा सरल करने जा रहा हूं लेकिन सार सही है। गणना, की संख्या पर विचार करें , कि अगली चाल चुना करने के लिए किया जाना चाहिए, कि एक औसत प्रत्येक चाल है संभावनाओं ( शाखाओं में कारक ) और कहा कि देखते हैं चाल खेल में छोड़ दिया है। धारणा यह भी है कि प्रत्येक गणना में एक ही समय लगता है ताकि कच्ची गणना के बजाय प्रयास को समय जटिलता , में अनुवाद किया जा सके ।सीबीnटी
- एक "कुशल एल्गोरिथ्म" होगा: जहाँ एक "छोटा पूर्णांक," है और आह कुछ वास्तविक संख्याएँ हैं। इस प्रकार कुशल एल्गोरिथ्म बहुपद समय में निष्पादित होता है क्योंकि यह एक बहुपद अभिव्यक्ति है।
टी∝ ए बीए+ बी बीα - 1+ सी बीα - 2+ । । । + ह B0
α
- एक "अकुशल एल्गोरिथ्म" होगा:
और यह एल्गोरिथ्म घातीय समय (यानी नॉनपोलिनोमिनल टाइम) में निष्पादित होता है । यहाँ मुद्दा यह है कि को एक बड़ा दहनशील परिणाम मिलता है।
टी∝ ए बीn
n
अब महत्वपूर्ण बिंदु यह है कि एक कुशल एल्गोरिथ्म, बहुपद समय के लिए असंभव है, जो एक खेल के लिए पूरी तरह से खेलता है जो एनपी-पूर्ण है। पूरी तरह से एक एनपी-पूर्ण समस्या को खेलने के लिए, परिभाषा के अनुसार, एक अप्रभावी एल्गोरिथ्म द्वारा हल किया जाना चाहिए जो कि नॉनपोलिनोमियल समय में चलता है।
ध्यान दें कि चलने का समय गणनाओं की आंतरिक संख्या के बारे में है, न कि किसी मानव द्वारा दिए गए प्रतिक्रिया समय के बारे में। टिक-टैक-टो जैसे छोटे गेम के लिए कंप्यूटर भविष्य की सभी संभावित चालें खेल सकता है और फिर भी एक मानव द्वारा कथित तौर पर प्रतिक्रिया देता है।
के लिए निम यह एक बहुपद समय एल्गोरिथ्म बनाने के लिए संभव है। गेम के किसी भी बिंदु पर एल्गोरिथ्म यह गणना कर सकता है कि किस खिलाड़ी के पास एक विजेता चाल है और उस चाल को क्या होना चाहिए।
दूसरी तरफ आइए क्यूबिक का खेल लेते हैं । (आप एक 3 डी ग्रिड में 4 की एक पंक्ति बनाने की कोशिश कर रहे हैं। इसलिए यह अनिवार्य रूप से 4x4x4 ग्रिड पर टिक-टैक-टो है।) क्यूबिक एनपी-पूर्ण है इसलिए इस प्रकार अगला सही कदम की गणना करने के लिए कोई बहुपद समय एल्गोरिथ्म नहीं है। यह जानने का एकमात्र तरीका है कि आपके पास वर्तमान में जीतने वाली चाल है, यह सुनिश्चित करने के लिए दोनों खिलाड़ियों के सभी संभावित कदमों की कोशिश करना है कि एक विशेष चाल विजेता है, या कम से कम हारने वाला नहीं है।
सच में क्यूबिक के लिए पूरा गेम ट्री इतना छोटा है कि इसे एक कंप्यूटर प्रोग्राम में एन्कोड किया जा सकता है जो पूरी तरह से खेल सकता है। एन्कोडिंग का मतलब यह है कि पूरे गेम ट्री की खोज की गई है और सभी चालों पर पहले से काम किया है। इसलिए कार्यक्रम अनिवार्य रूप से वर्तमान बोर्ड राज्य का उपयोग करके एक त्वरित डेटाबेस कॉल कर सकता है और उस बोर्ड राज्य के लिए सबसे अच्छा कदम वापस ले सकता है बिना पेड़ की खोज के हर बार एक चाल चलनी होगी। यह वास्तव में हमारे उद्देश्यों के लिए एक "धोखा" है।
अब शतरंज के अन्य कार्यक्रमों की कुछ विशेषताओं को अनदेखा करते हुए मूल्यांकन समारोह पर चर्चा करने के लिए शतरंज पर चर्चा करते हैं। शतरंज अभी भी एक अनसुलझा खेल है । यह अज्ञात है कि क्या पहले या दूसरे खिलाड़ी को जीतना चाहिए। किसी भी बोर्ड को स्थान दिया जाना संभव नहीं है और निश्चितता के साथ भविष्यवाणी करें कि कौन जीतेगा। वास्तव में शतरंज में इतना बड़ा गेम ट्री होता है कि पूरे गेम ट्री की खोज करना असंभव है। आपको ऐसे कंप्यूटरों की आवश्यकता होगी, जो किसी भी वर्तमान कंप्यूटर की तुलना में सिर्फ 10 या 100 गुना तेज नहीं, बल्कि अरबों-खरबों गुना अधिक तेज हों। (उम्मीद है कि क्वांटम कंप्यूटिंग इस गॉर्डियन गाँठ के माध्यम से कट सकता है।)
शतरंज मूल्यांकन फ़ंक्शन के बारे में सोचें क्योंकि प्रत्येक संभव अगले कदम को सर्वश्रेष्ठ चाल की संभावना देता है। शतरंज कार्यक्रम क्या है, मूल्यांकन कार्य के साथ आहेद को संयोजित करना है। इस प्रकार यह कार्यक्रम भविष्य के सभी संभावित कदमों को देखता है जब तक कि यह उस बिंदु तक नहीं पहुंच जाता है जहां "अच्छा" स्कोर बोर्ड की स्थिति के लिए दिया जा सकता है। कंप्यूटर इस तरह से पेड़ के माध्यम से सभी संभावित रास्तों का मूल्यांकन करता है और फिर सबसे अच्छे स्कोर के साथ रास्ता चुनता है। चूंकि खोज का मूल्यांकन किए जा रहे सभी रास्तों के लिए खेल के अंत तक नहीं हुआ, इसलिए सभी शतरंज कार्यक्रम अंततः अपूर्ण मूल्यांकन फ़ंक्शन का उपयोग करते हैं। (यदि आप खेल के अंत में हैं, तो कंप्यूटर सभी संभावित भविष्य की चालों को देखने में सक्षम हो सकता है।) इसका मतलब है कि कार्यक्रम को जीतने के लिए संभव हो सकता है, भले ही कार्यक्रम में कुछ बिंदु पर जीतने की स्थिति हो।