दिलचस्प पोस्ट
गोलांग में एक गतिशील जेएसओएन को कैसे पार्स / डिस्रलाइज़ करना शामिल करें। एंड्रॉइड स्टूडियो में एपीके में पुस्तकालय क्या मैं जावास्क्रिप्ट में कंसोल ऑब्जेक्ट का विस्तार कर सकता हूं? खाली स्ट्रिंग या ईमेल रेगे किसी ऐप * और * वेबसाइट के लिए OAuth2 के साथ प्रमाणीकरण करना jQuery-UI सीएसएस के बिना या कस्टमाइज़ेशन के बिना मेरे यूज़रस्क्रिप्ट में काम नहीं कर रहा है? JQuery में इनपुट परिवर्तन का पता लगा रहा है? UIImageView सामग्री मोड का प्रबंधन कैसे करें? Ggplot2 के साथ लैटिक डेन्ड्रोग्राम ग्राफ़ को पुन: प्रजनन करना गंभीर त्रुटि: कक्षा के लिए अपरिवर्तित initializer 'init (coder :)' का उपयोग JQuery में दो टैग्स के बीच की सभी सामग्री का चयन कैसे करें जावा में कन्स्ट्रक्टर सिंक्रनाइज़ेशन जावा को DNS कैशिंग टाइमआउट (टीटीएल) का सम्मान करने का कोई भी तरीका? कैसे एक स्थिर समारोह का परीक्षण करने के लिए क्या संरचना का आकार उस संरचना के संरेखण के एक सटीक कई होना आवश्यक है?

एआई के लिए "सबसे अच्छा कदम" निर्धारित करने के लिए मैं एक टिक-टैक-टो गेम के लिए किस एल्गोरिथ्म का उपयोग कर सकता हूं?

एक टिक-टेक-एंटिंग कार्यान्वयन में मुझे लगता है कि चुनौतीपूर्ण हिस्सा मशीन द्वारा खेला जाने वाला सर्वोत्तम कदम निर्धारित करना है।

एल्गोरिदम क्या पीछा कर सकते हैं? मैं सरल से जटिल तक कार्यान्वयनों में देख रहा हूं मैं इस समस्या के इस हिस्से से कैसे निपटूं?

Solutions Collecting From Web of "एआई के लिए "सबसे अच्छा कदम" निर्धारित करने के लिए मैं एक टिक-टैक-टो गेम के लिए किस एल्गोरिथ्म का उपयोग कर सकता हूं?"

एक आदर्श गेम (जीत या हर बार टाई) खेलने के लिए विकिपीडिया की रणनीति सरल छद्म कोड की तरह दिखती है:

विकिपीडिया से उद्धरण (टिक टीएसी को पैर की अंगुली # रणनीति)

न्यूवेल और साइमन के 1 9 72 के टिक टीएसी-टो में उपयोग किए जाने वाले प्रत्येक सूची में, यदि वे पहली सूची में से पहली उपलब्ध चाल को चुनते हैं, तो एक खिलाड़ी टिक-टैक-टो (जीतने या कम से कम, ड्रा) का एक सही गेम खेल सकता है कार्यक्रम। [6]

  1. विन: यदि आपके पास दो पंक्तियां हैं, तो एक पंक्ति में तीन प्राप्त करने के लिए तीसरे खेलें।

  2. ब्लॉक: यदि प्रतिद्वंद्वी के पास दो पंक्तियां हैं, तो उन्हें ब्लॉक करने के लिए तीसरा खेलें।

  3. Fork: एक अवसर बनाएँ जहां आप दो तरीकों से जीत सकते हैं।

  4. ब्लॉक विरोधी के फोर्क:

    विकल्प 1: प्रतिद्वंद्वी को बचाव में मजबूर करने के लिए एक पंक्ति में दो बनाएँ, जब तक कि इसका परिणाम एक कांटा बनाने या जीतने में नहीं होता। उदाहरण के लिए, यदि "एक्स" में एक कोने है, "ओ" में केंद्र है, और "एक्स" के विपरीत कोने भी हैं, "ओ" को जीतने के लिए एक कोने नहीं खेलना चाहिए। (इस परिदृश्य में एक कोने बजाना जीतने के लिए "X" के लिए एक कांटा बनाता है।)

    विकल्प 2: यदि कोई कॉन्फ़िगरेशन है जहां विरोधी कांटा सकता है, तो उस कांटा को अवरोधित करें।

  5. केंद्र: केंद्र खेलें

  6. विपरीत कॉर्नर: यदि प्रतिद्वंद्वी कोने में है, तो विपरीत कोने खेलते हैं।

  7. खाली कॉर्नर: एक खाली कोने प्ले करें

  8. खाली साइड: एक खाली ओर चलाएं।

एक "कांटा" स्थिति की तरह लग रहा है, जैसा कि यह सूचित किया जाता है कि जानवरों के बल के रूप में किया जा सकता है।

नोट: एक "परिपूर्ण" प्रतिद्वंद्वी एक अच्छा व्यायाम है, लेकिन अंततः इसके खिलाफ 'खेलने' के लायक नहीं है हालांकि, आप विरोधी पक्षियों को विशिष्ट कमजोरियों को देने के लिए ऊपर प्राथमिकताओं को बदल सकते हैं।

आपको क्या चाहिए (टिक टीएसी-पैर की अंगुली या शतरंज जैसी अधिक मुश्किल खेल के लिए) मिनिमैक्स एल्गोरिदम , या इसके थोड़ा अधिक जटिल संस्करण, अल्फा-बीटा छंटाई साधारण अनुभवहीन मिनीमैक्स एक गेम के लिए ठीक-ठीक काम करेगा, हालांकि टिक-टेक-पैर की अंगुली के रूप में एक छोटी सी खोज स्थान है, हालांकि।

संक्षेप में, आप क्या करना चाहते हैं, इस कदम की खोज करने के लिए आपके लिए सर्वोत्तम संभव परिणाम नहीं है, बल्कि इस कदम के लिए जहां संभवतः सबसे खराब संभव परिणाम उतना अच्छा है जितना संभव है यदि आप मानते हैं कि आपका प्रतिद्वंद्वी अच्छा खेल रहा है, तो आपको यह मानना ​​होगा कि वे आपके लिए सबसे खराब कदम उठाएंगे, और इसलिए आपको उन कदमों को लेना होगा जो उनके अधिकतम लाभ को कम करता है।

हर एक संभावित बोर्ड को पैदा करने और इसके बाद बोर्ड के आधार पर स्कोरिंग के जबरदस्त तरीके से यह वृक्ष को आगे बढ़ाता है, जिससे ज्यादा मेमोरी की ज़रूरत नहीं होती है, विशेष रूप से एक बार जब आप समझते हैं कि 90 डिग्री बोर्ड रोटेशन निरर्थक हैं, जैसे ऊर्ध्वाधर, क्षैतिज और विकर्ण अक्ष

एक बार जब आप उस बिंदु पर पहुंच जाते हैं, तो परिणाम का वर्णन करने के लिए पेड़ के ग्राफ़ में डेटा की तुलना में 1k से भी कम की तरह कुछ होता है, और इस तरह कंप्यूटर के लिए सबसे अच्छा कदम।

-Adam

टिक-टैक-पैर की अंगूठी के लिए एक ठेठ अलाग इस तरह दिखना चाहिए:

बोर्ड: बोर्ड का प्रतिनिधित्व करने वाले नौ तत्व वेक्टर। हम 2 (रिक्त इंगित करते हैं), 3 (एक्स का संकेत), या 5 (हे दर्शाते हुए) को स्टोर करते हैं। मुड़ें: एक पूर्णांक दर्शाता है कि खेल के बारे में किस स्थान पर चलना है। 1 स्थानांतरित 1, 9 द्वारा आखरी बार संकेत दिया जाएगा

एल्गोरिथ्म

मुख्य एल्गोरिथ्म तीन कार्यों का उपयोग करता है

मे 2: रिटर्न 5 अगर बोर्ड का केंद्र वर्ग रिक्त है यानी बोर्ड [5] = 2 अन्यथा, यह फ़ंक्शन किसी गैर-कोने वाला वर्ग (2,4,6 या 8) देता है।

पॉस्विन (पी): यदि खिलाड़ी पी अपने अगले कदम पर जीत नहीं सकते हैं, तो 0 रिटर्न देता है; अन्यथा यह वर्ग की संख्या देता है जो कि एक जीत का चलन है यह समारोह जीतने के लिए और विरोधियों को जीतने के लिए दोनों कार्यक्रमों को सक्षम करेगा। यह फ़ंक्शन प्रत्येक पंक्तियों, स्तंभों और विकर्णों की जांच करके संचालित होता है एक संपूर्ण पंक्ति (या स्तंभ या विकर्ण) के लिए अपने वर्ग के मानों को गुणा करके, जीत की संभावित स्थिति की जांच हो सकती है यदि उत्पाद 18 (3 x 3 x 2) हो, तो एक्स जीत सकता है। यदि उत्पाद 50 (5 x 5 x 2) है, तो ओ जीत सकता है। यदि जीतने वाली पंक्ति (स्तंभ या विकर्ण) मिल जाती है, तो उसमें रिक्त वर्ग को खनन किया जा सकता है और उस वर्ग की संख्या इस फ़ंक्शन द्वारा वापस की जाती है।

जाओ (एन): वर्ग एन में एक कदम बना देता है यह प्रक्रिया बोर्ड [एन] से 3 तक सेट करती है, यदि टर्न अजीब है, या 5 यदि टर्न भी है। यह भी एक से बढ़ता वृद्धि

एल्गोरिदम प्रत्येक चाल के लिए एक अंतर्निहित रणनीति है यह अजीब क्रमांकित चाल बनाता है अगर यह एक्स खेलता है, तो यह भी-क्रमांकित कदम अगर यह ओ खेलता है।

Turn =1 Go(1) (upper left corner). Turn =2 If Board[5] is blank, Go(5), else Go(1). Turn =3 If Board[9] is blank, Go(9), else Go(3). Turn =4 If Posswin(X) is not 0, then Go(Posswin(X)) ie [ block opponent's win], else Go(Make2). Turn =5 if Posswin(X) is not 0 then Go(Posswin(X)) [ie win], else if Posswin(O) is not 0, then Go(Posswin(O)) [ie block win], else if Board[7] is blank, then Go(7), else Go(3). [to explore other possibility if there be any ]. Turn =6 If Posswin(O) is not 0 then Go(Posswin(O)), else if Posswin(X) is not 0, then Go(Posswin(X)), else Go(Make2). Turn =7 If Posswin(X) is not 0 then Go(Posswin(X)), else if Posswin(X) is not 0, then Go(Posswin(O)) else go anywhere that is blank. Turn =8 if Posswin(O) is not 0 then Go(Posswin(O)), else if Posswin(X) is not 0, then Go(Posswin(X)), else go anywhere that is blank. Turn =9 Same as Turn=7. 

मैंने इसे इस्तेमाल किया है मुझे बताएं कि आप लोग कैसे महसूस करते हैं

चूंकि आप केवल संभावित स्थानों के 3×3 मैट्रिक्स के साथ काम कर रहे हैं, इसलिए आप कंप्यूटिंग शक्ति को बिना कर के सभी संभावनाओं के माध्यम से एक खोज लिखना बहुत आसान होगा। प्रत्येक खुली जगह के लिए, उस स्थान को चिह्नित करने के बाद सभी संभावित परिणामों के माध्यम से गणना करें (फिर से, मैं कहूंगा), फिर जीतने की सबसे अधिक संभावनाओं के साथ इस कदम का उपयोग करें

यह अनुकूलन प्रयास की बर्बादी होगी, वास्तव में हालांकि कुछ आसान वाले हो सकते हैं:

  • दूसरी टीम के लिए संभावित जीत के लिए पहले की जांच करें, पहले आपको ढूंढने वाले ब्लॉक को अवरोधित करें (अगर वैसे भी 2 गेम हैं)।
  • यदि वह खुले है तो हमेशा केंद्र ले जाएं (और पिछले नियम में कोई उम्मीदवार नहीं है)
  • किनारों से आगे पक्ष ले लें (फिर से, अगर पिछले नियम खाली हैं)

एक खेल का मैदान के बिना एक प्रयास।

  1. जीतने के लिए (आपका डबल)
  2. यदि नहीं, तो हारना नहीं (प्रतिद्वंद्वी का दोहरा)
  3. यदि नहीं, तो क्या आपके पास पहले से एक कांटा है (डबल डबल है)
  4. यदि नहीं, तो प्रतिद्वंद्वी का एक कांटा है
    1. संभव डबल और कांटा (अंतिम जीत) के लिए अवरुद्ध अंक में खोज
    2. यदि ब्लॉकिंग पॉइंट में फोर्क की खोज नहीं की जाती है (जो प्रतिद्वंद्वी को सबसे अधिक नुकसान की संभावनाएं देता है)
    3. यदि न केवल अवरुद्ध अंक (हारने के लिए नहीं)
  5. यदि डबल और कांटा (अंतिम जीत) के लिए खोज नहीं है
  6. यदि केवल कांटे के लिए खोज न करें जो प्रतिद्वंद्वी को सबसे अधिक नुकसान की संभावनाएं देता है
  7. अगर केवल डबल के लिए खोज न करें
  8. अगर नहीं मृत अंत, टाई, यादृच्छिक।
  9. यदि नहीं (यह तुम्हारा पहला कदम है)
    1. अगर यह खेल का पहला कदम है;
      1. प्रतिद्वंद्वी को सबसे अधिक खोने की संभावना दें (केवल कोनों में एल्गोरिदम परिणाम जो प्रतिद्वंद्वी को 7 खोने की संभावना देता है)
      2. या बोरियत को तोड़ने के लिए यादृच्छिक
    2. अगर यह खेल का दूसरा कदम है;
      1. केवल खोने के अंक नहीं मिलते हैं (थोड़ा अधिक विकल्प देता है)
      2. या इस सूची में बिन्दुओं को ढूंढें जिसमें सबसे अच्छा जीतने का मौका है (यह उबाऊ हो सकता है, इसका परिणाम केवल सभी कोनों या आसन्न कोनों या केंद्र में होता है)

नोट: जब आपके पास डबल और कांटे हैं, तो जांचें कि क्या आपका प्रतिद्वंद्वी एक डबल देता है। यदि यह देता है, तो जांच लें कि आपका नया अनिवार्य बिंदु आपकी कांटा सूची में शामिल है या नहीं।

आप सीख सकते हैं कि ए ऐ कुछ नमूने गेम में खुद को सीखने के लिए खेलते हैं। एक पर्यवेक्षित शिक्षण एल्गोरिथ्म का उपयोग करें, इसे साथ में मदद करें।

संख्यात्मक स्कोर वाले प्रत्येक वर्ग को रैंक करें यदि एक वर्ग लिया जाता है, तो अगले विकल्प पर जाएं (रैंक द्वारा अवरोही क्रम में क्रमबद्ध) आपको एक रणनीति चुनने की आवश्यकता है (पहले के लिए दो मुख्य हैं और तीन (मुझे लगता है) दूसरे के लिए)। तकनीकी रूप से, आप बस सभी रणनीतियों का कार्यक्रम कर सकते हैं और फिर यादृच्छिक रूप में एक को चुन सकते हैं। यह एक कम अनुमान वाला प्रतिद्वंद्वी के लिए होगा

यह जवाब आपको समझता है कि आप पी 1 के लिए सही एल्गोरिथ्म को लागू करने को समझते हैं और सामान्य मानव खिलाड़ियों के खिलाफ स्थितियों में जीत हासिल करने के बारे में चर्चा करते हैं, जो दूसरों की तुलना में कुछ गलतियां अधिक सामान्य बनाते हैं।

बेशक खेल को ड्रा में खत्म करना चाहिए, यदि दोनों खिलाड़ी बेहतर ढंग से खेलें। एक मानव स्तर पर, एक कोने में खेलने वाला पी 1 बहुत अधिक बार जीत देता है जो भी मनोवैज्ञानिक कारणों के लिए, पी 2 को यह सोचने में बाक़ी है कि केंद्र में खेलना महत्वपूर्ण नहीं है, जो उनके लिए दुर्भाग्यपूर्ण है, क्योंकि यह एकमात्र प्रतिक्रिया है जो पी 1 के लिए जीतने वाला खेल नहीं बनाती है।

अगर पी 2 केंद्र में सही ढंग से ब्लॉक करता है, तो पी 1 को विपरीत कोने में खेलना चाहिए, क्योंकि फिर से, जो भी मनोवैज्ञानिक कारणों के लिए, पी 2 एक कोने खेलने की सममितता पसंद करेंगे, जो फिर से उनके लिए खोने वाले बोर्ड का उत्पादन करता है।

किसी भी कदम P1 के लिए प्रारंभिक कदम के लिए हो सकता है, वहाँ एक कदम P2 हो सकता है कि P1 के लिए एक जीत बना देगा, यदि दोनों खिलाड़ी बाद में बेहतर ढंग से खेलते हैं। उस अर्थ में पी 1 प्ले हो सकता है। बढ़त चालें इस मायने में सबसे कमजोर होती हैं कि इस कदम के संभावित प्रतिक्रियाओं का सबसे बड़ा अंश आकर्षित होता है, लेकिन अभी भी प्रतिक्रियाएं हैं जो पी 1 के लिए जीत बनाएंगे।

व्यावहारिक रूप से (अधिक सटीक, आकस्मिक रूप से) सबसे अच्छा पी 1 शुरुआत चालें पहले कोने, दूसरे केंद्र और अंतिम किनारे लगती हैं।

अगली चुनौती जो आप व्यक्तिगत रूप से या जीयूआई के माध्यम से जोड़ सकते हैं, बोर्ड को प्रदर्शित नहीं करना है। एक इंसान निश्चित रूप से सभी राज्य को याद कर सकता है लेकिन अतिरिक्त चुनौती से सममित बोर्डों की प्राथमिकता होती है, जो याद रखने के लिए कम प्रयास करते हैं, जिससे मैंने पहली शाखा में दी गई गलती को जन्म दिया।

पार्टियों में बहुत मज़ा है, मुझे पता है