क्या ऐसा कोई एल्गोरिथ्म मौजूद है, जहां अगर असीम प्रसंस्करण शक्ति दी जाए, तो एक कंप्यूटर पूरी तरह से शतरंज खेल सकता है ताकि वह कभी न खोए?
यदि हां, तो मुझे इसके लिए छद्म कोड कहां मिल सकता है?
क्या ऐसा कोई एल्गोरिथ्म मौजूद है, जहां अगर असीम प्रसंस्करण शक्ति दी जाए, तो एक कंप्यूटर पूरी तरह से शतरंज खेल सकता है ताकि वह कभी न खोए?
यदि हां, तो मुझे इसके लिए छद्म कोड कहां मिल सकता है?
जवाबों:
क्या एक एल्गोरिथ्म मौजूद है? हाँ। जर्मेलो के प्रमेय के अनुसार , शतरंज के लिए एक परिमित निर्धारक सूचना-दो-खिलाड़ी खेल के लिए तीन संभावनाएं हैं: या तो पहले खिलाड़ी के पास जीतने की रणनीति है, या दूसरे खिलाड़ी के पास जीतने की रणनीति है, या तो खिलाड़ी एक आकर्षित कर सकता है। हम नहीं जानते (अभी तक) यह शतरंज के लिए है। (चेकर्स, दूसरी ओर, हल किया गया है : या तो खिलाड़ी एक ड्रॉ को मजबूर कर सकता है।)
वैचारिक रूप से, एल्गोरिथ्म काफी सरल है: एक पूर्ण गेम ट्री का निर्माण करें , लीफ नोड्स (गेम-एंडिंग पोज़िशन्स) का विश्लेषण करें, और या तो शुरुआती प्रारंभिक चाल को बनाएं, इस्तीफा दें या ड्रॉ की पेशकश करें।
समस्या विवरण में निहित है: लगभग 10 43 संभावित स्थान हैं, और यहां तक कि बड़ी संख्या में चालें (अधिकांश पदों को एक से अधिक तरीकों से पहुँचा जा सकता है)। इसका लाभ उठाने के लिए आपको वास्तव में अपने असीम रूप से शक्तिशाली कंप्यूटर की आवश्यकता है, क्योंकि इस एल्गोरिथ्म का लाभ उठाने वाला कंप्यूटर या तो ज्ञात ब्रह्मांड में फिट नहीं हो सकता है, या ब्रह्मांड समाप्त होने के कुछ समय बाद तक गणना समाप्त नहीं करेगा।
Https://en.wikipedia.org/wiki/Endgame_tablebase देखें ।
अनंत कंप्यूटर शक्ति के साथ, कोई भी शुरुआती स्थिति के लिए ऐसी तालिका बना सकता है और शतरंज को हल कर सकता है ।
व्यवहार में, केवल सात "पुरुष" (पंजे और टुकड़े, राजाओं की गिनती) तक की स्थिति को वर्तमान सुपर कंप्यूटर का उपयोग करके हल किया गया है, इसलिए हम शतरंज को हल करने से बहुत दूर हैं। समस्या की जटिलता टुकड़ों की संख्या के साथ तेजी से बढ़ जाती है।
यदि आपके पास वास्तव में असीम प्रसंस्करण शक्ति है, तो ऐसा एल्गोरिथ्म वास्तव में लिखने के लिए तुच्छ होगा । जैसा कि शतरंज में संभव राज्यों की एक सीमित संख्या है, आप सिद्धांत रूप में उन सभी के माध्यम से पुनरावृत्ति कर सकते हैं जब तक कि आप सही नाटक का रास्ता नहीं ढूंढते। यह बहुत ही अयोग्य होगा, लेकिन यदि आपके पास असीम प्रसंस्करण शक्ति है, तो इससे कोई फर्क नहीं पड़ेगा।
प्रश्न को सीधे संबोधित करने के लिए: हाँ एक ऐसा एल्गोरिथ्म है। इसे मिनिमैक्स कहा जाता है। (एंडगेम टेबलबेस इस एल्गोरिदम (पीछे की ओर!) का उपयोग करके उत्पन्न होते हैं, लेकिन सादे पुराने सरल मिनिमैक्स एल्गोरिदम को आपकी आवश्यकता है)। यह एल्गोरिथ्म पूरी तरह से किसी भी दो खिलाड़ी शून्य योग खेल खेल सकता है। यहाँ pseudocode खोजें:
https://en.wikipedia.org/wiki/Minimax
ध्यान दें कि इस एल्गोरिथ्म के वेरिएंट का उपयोग आधुनिक कंप्यूटर शतरंज कार्यक्रमों द्वारा किया जाता है।
न केवल सही शतरंज खेलने के लिए एक एल्गोरिथ्म है, यह एक छोटा प्रोग्राम लिखना संभव है (जो अनंत संसाधन दिए गए हैं) किसी भी निर्धारक पूर्ण-ज्ञान परिमित अवधि दो-खिलाड़ी गेम को पूरी तरह से खेलते हैं ।
खेल इंजन को उस खेल के नियमों को जानने की भी आवश्यकता नहीं है जो वह खेल रहा है। सभी की जरूरत है कि एक "खेल राज्य" का एक अपारदर्शी प्रतिनिधित्व है और कार्य (क) किसी भी खेल राज्य को दिया जाता है, कानूनी रूप से अगले खेल राज्यों की सूची प्रदान करते हैं और (ख) एक खेल राज्य दिया जाता है, तय करें कि क्या यह खिलाड़ी के लिए एक जीत है , खिलाड़ी 2 के लिए एक जीत, एक ड्रॉ, या यह एक अंतिम स्थिति नहीं है।
उन कार्यों को देखते हुए एक सरल पुनरावर्ती एल्गोरिथ्म खेल को "हल" करता है।
इस तथ्य को पिछले उत्तरों में शतरंजप्रोग्रामर (मिनिमैक्स) और Acccumulation (जो अजगर में कार्यक्रम का एक संस्करण प्रदान करता है) द्वारा प्रस्तुत किया गया है।
मैंने 20 साल पहले ऐसा कार्यक्रम लिखा था। मैंने नॉट्स-एंड-क्रॉस (टिक-टैक-टो अगर आप अमेरिकी हैं) खेलकर इसका परीक्षण किया। यकीन है कि यह एक आदर्श खेल खेला।
बेशक यह किसी भी गंभीर गेम के लिए किसी भी कल्पनीय कंप्यूटर पर जल्दी से गिर जाएगा। क्योंकि यह पुनरावर्ती है यह पूरी तरह से स्टैक पर पूरे गेम ट्री का निर्माण कर रहा है, इसलिए आपको अन्य जवाबों में संदर्भित शतरंज के 10 ^ 123 राज्यों का विश्लेषण करने से पहले कहीं भी मिलने पर "स्टैक ओवरफ्लो" (बहुत अधिक इरादा) मिलेगा। लेकिन यह जानना मजेदार है कि सिद्धांत रूप में यह छोटा कार्यक्रम काम करेगा।
मेरे लिए यह एआई के बारे में कुछ दिलचस्प भी कहता है: हालांकि आपको लगता है कि "ब्लूज़" डीप ब्लू, या गो ज़ीरो, या वास्तव में एक मानव द्वारा शतरंज या गो खेलते हुए प्रदर्शित किया गया है, एक ऐसा अर्थ है जिसमें इन खेलों में तुच्छ, बिल्कुल कम्प्यूटेशनल इष्टतम है समाधान की। चुनौती यह है कि उचित समय में इष्टतम समाधान न करते हुए एक अच्छा कैसे प्राप्त किया जाए।
मैं सादगी के लिए ड्रॉ या चालों के अनंत दृश्यों की संभावनाओं की उपेक्षा करूंगा। एक बार एल्गोरिथ्म को समझने के बाद, उन मामलों में इसे बढ़ाना विशेष रूप से मुश्किल नहीं है।
सबसे पहले, कुछ परिभाषाएँ:
कोई भी चाल जो उस खिलाड़ी के लिए गेम जीतती है जो उस चाल को जीतती है।
कोई भी चाल जो उस खिलाड़ी के लिए खेल खो देती है जो उस चाल को खो देती है।
कोई भी चाल जो कम से कम एक जीत की चाल के साथ दूसरे खिलाड़ी को छोड़ देती है वह भी हारने वाला कदम है। (चूंकि प्रतिद्वंद्वी उस कदम को उठा सकता है और नुकसान उठाने के लिए मजबूर कर सकता है।)
कोई भी चाल जो केवल हारने की चाल के साथ दूसरे खिलाड़ी को छोड़ देती है, वह भी एक चाल है। (कोई फर्क नहीं पड़ता कि आपका प्रतिद्वंद्वी क्या कदम उठाता है, आप जीतेंगे।)
एक सही रणनीति का अर्थ है हमेशा जीतने वाली चालें बनाना अगर कोई रह जाता है और इस्तीफा दे देता है जब किसी के पास केवल चालें शेष रह जाती हैं।
अब, यह एक सही रणनीति लिखने के लिए तुच्छ है। बस सभी संभव चाल अनुक्रम विस्फोट और जीतने / खोने चाल की पहचान। गतिरोध को नजरअंदाज करते हुए, यह अंततः हर कदम को या तो एक जीतने की चाल या हारने की चाल के रूप में पहचानेगा।
अब, रणनीति तुच्छ है। अपनी सभी संभावित चालों को देखें। यदि कोई भी जीतने वाली चाल बनी रहती है, तो एक और जीत लो। यदि केवल हारने की गति बनी हुई है, तो इस्तीफा दें, क्योंकि आपका प्रतिद्वंद्वी आपको हारने के लिए मजबूर कर सकता है।
गतिरोध की संभावना को शामिल करने के लिए रणनीति को समायोजित करना मुश्किल नहीं है।
अपडेट : बस अगर यह स्पष्ट नहीं है कि यह कैसे हर कदम को अधिक जीतने या हारने के कदम के रूप में पहचानता है, तो विचार करें:
n
सबसे लंबे समय तक संभव शतरंज खेल में चाल की संख्या को बुलाओ । (हम अब के लिए बिना अनुक्रम वाले दृश्यों को अनदेखा कर रहे हैं, हालांकि उनमें से यह मुश्किल नहीं है।)n
पूर्व चाल के साथ कोई चाल नहीं है जिस पर हमें विचार करने की आवश्यकता है।n-1
पूर्व चालों के साथ हर चाल या तो एक जीतने वाली चाल है या हारने वाली चाल है क्योंकि n
चालें सबसे लंबे खेल को समाप्त करती हैं।n-2
केवल जीतने वाली चालों या हारने वाली चालों के द्वारा होता है और इस प्रकार स्वयं एक चाल चाल या हारने वाली चाल है।1. d4
साथ प्रतिक्रिया हुई ...resigns
?
मान लीजिए आप तीन कार्य होते हैं: win_state
, get_player
, और next_states
। इनपुट win_state
एक गेम स्टेट है, और आउटपुट -1 है अगर व्हाइट चेकमेट में है, 0 अगर यह ड्रॉ है, तो 1 अगर चेकमेट में काला है, और None
अन्यथा। इनपुट के लिए get_player
एक खेल राज्य है, और आउटपुट -1 है अगर यह काले रंग की बारी है और 1 अगर यह सफेद है। इनपुट के लिए next_states
संभव अगले गेम राज्यों की सूची है जो एक कानूनी कदम के परिणामस्वरूप हो सकता है। फिर निम्नलिखित फ़ंक्शन, जब एक खेल राज्य और एक खिलाड़ी दिया जाता है, तो आपको यह बताना चाहिए कि उस खिलाड़ी को जीतने के लिए किस खेल में आगे बढ़ना है।
def best_state(game_state,player)
def best_result(game_state):
if win_state(game_state):
return(win_state)
else:
player = get_player(game_state)
return max([best_result(move)*player for move in next_states(game_state)])*player
cur_best_move = next_states(games_state)[0]
cur_best_outcome = -1
for state in next_states(game_state):
if best_result(state)*player > cur_best_outcome:
cur_best_outcome = best_result(state)*player
cur_best_move = state
return(best_move)
हाँ। यह आसान है। आपको अनंत प्रसंस्करण शक्ति की भी आवश्यकता नहीं है। आप सभी की जरूरत है एक लुक-अप तालिका है जिसमें प्रत्येक संभावित बोर्ड स्थिति के लिए, उस स्थिति में खेलने के लिए सबसे अच्छा कदम है। यहाँ छद्म कोड है:
def play-move(my-color, board-position):
return table-of-best-moves[my-color, board-position]
एकमात्र कैच यह है कि इस लुक-अप तालिका को मिल्की वे आकाशगंगा की तुलना में बहुत बड़ा, शायद बहुत बड़ा होना चाहिए- और इसके निर्माण में लंबा समय लगेगा - शायद ब्रह्मांड की वर्तमान आयु की तुलना में अधिक लंबा, जब तक कि वहां नहीं हो। शतरंज में कुछ अनदेखा नियमितता जो इसे बहुत सरल बनाता है, जैसा कि हम अभी देख सकते हैं। लेकिन अगर आपके पास यह लुक-अप टेबल है, तो हर बार एक सही कदम चुनने के लिए सब-ट्राइन एक सीपीयू निर्देश के रूप में कम से कम लागू किया जा सकता है।
इसके अलावा, शतरंज के हमारे वर्तमान ज्ञान को देखते हुए, यह सुनिश्चित करने का कोई तरीका नहीं है कि सही खेल गारंटी देता है कि आप हारेंगे नहीं। उदाहरण के लिए, यदि सही नाटक व्हाइट के लिए जीत की गारंटी देता है, तो ब्लैक पूरी तरह से ब्लैक प्ले करने पर भी हार जाएगा।