2012-05-16 10 views
10

मैं एल्गोरिदम के लिए काफी नया हूं और मैं मिनीमैक्स को समझने की कोशिश कर रहा था, मैंने बहुत से लेख पढ़े, लेकिन मैं अभी भी इसे टिक-टैक-टो में कैसे कार्यान्वित नहीं कर सकता अजगर में खेल। क्या आप इसे संभवतः जितना आसान हो सके समझ सकते हैं शायद कुछ छद्म कोड या कुछ पायथन कोड के साथ?"डमीज़ के लिए" मिनीमैक्स स्पष्टीकरण

मुझे समझने की जरूरत है कि यह कैसे काम करता है। मैंने इसके बारे में बहुत सी चीजें पढ़ीं और मैं बुनियादी समझ गया, लेकिन मुझे अभी भी यह नहीं पता कि यह कैसे एक कदम वापस कर सकता है।

यदि आप कृपया मुझे ट्यूटोरियल और नमूने जैसे लिंक नहीं कर सकते हैं (http://en.literateprograms.org/Tic_Tac_Toe_(Python)), मुझे पता है कि वे अच्छे हैं, लेकिन मुझे बस एक बेवकूफ स्पष्टीकरण की आवश्यकता है।

अपना समय :)

+0

यह होमवर्क है? – Jordan

+5

मैं अभी भी हाईस्कूल में हूं ... मैं जुनून के लिए सीखता हूं :) –

उत्तर

8

"मिनीमैक्स" का विचार यह है कि दो खिलाड़ियों के खेल में, एक खिलाड़ी स्कोर के कुछ रूप को अधिकतम करने की कोशिश कर रहा है और दूसरा खिलाड़ी इसे कम करने की कोशिश कर रहा है। उदाहरण के लिए, टिक-टैक-टो में एक्स की जीत +1 के रूप में और ओ के रूप में -1 के रूप में स्कोर की जा सकती है। अंतिम स्कोर को अधिकतम करने की कोशिश कर एक्स अधिकतम खिलाड़ी होगा और ओ अंतिम खिलाड़ी को कम करने की कोशिश कर रहे मिनी खिलाड़ी होंगे।

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

दूसरे शब्दों में, खेल-सैद्धांतिक एक बोर्ड स्थिति बी के लिए अल्पमहिष्ठ मूल्य वी के रूप में

V(B) = 1 if X has won in this position 
V(B) = -1 if O has won in this position 
V(B) = 0 if neither player has won and no more moves are possible (draw) 
अन्यथा

V(B) = max(V(B1), ..., V(Bn)) where board positions B1..Bn are 
     the positions available for X, and it is X's move 
V(B) = min(V(B1), ..., V(Bn)) where board positions B1..Bn are 
     the positions available for O, and it is O's move 

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

हालांकि, शतरंज जैसे खेलों में गणना करना आम तौर पर संभव नहीं है, क्योंकि गैमेटियोरेटिक मूल्य की गणना करने के लिए किसी को अंतिम स्थिति तक पूरे खेल के पेड़ को गिनने की आवश्यकता होती है और वह पेड़ आमतौर पर बहुत बड़ा होता है। इसलिए, एक मानक दृष्टिकोण "मूल्यांकन फ़ंक्शन" का सिक्का बनाना है जो बोर्ड की स्थिति को उन स्कोरों पर मैप करता है जो उम्मीदवारों को गैमेटियोरेटिक मानों से सहसंबंधित हैं। जैसे शतरंज कार्यक्रम मूल्यांकन कार्यों में भौतिक लाभ, खुले कॉलम इत्यादि के लिए सकारात्मक स्कोर देना होता है। एक मिनीमैक्स एल्गोरिदम उन्हें बोर्ड स्थिति के वास्तविक (असंगत) गैमेटियोरेटिक मान के बजाय मूल्यांकन फ़ंक्शन स्कोर को कम से कम करता है।

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

+0

इसे समझाने के लिए समय निकालने के लिए धन्यवाद, मैंने इस पोस्ट को ढूंढने से पहले थोड़ी देर की खोज की और यह मिनीमैक्स के बारे में सीखने में सहायक है – Rick

3

Minimax बारी बारी-बारी के साथ एक दो खिलाड़ी खेल में संभावित चालों के अंतरिक्ष की खोज का एक तरीका है के लिए धन्यवाद। आप जीतने की कोशिश कर रहे हैं, और आपका प्रतिद्वंद्वी आपको जीतने से रोकने की कोशिश कर रहा है।

एक महत्वपूर्ण अंतर्ज्ञान यह है कि यदि वर्तमान में यह आपकी बारी है, तो दो-चाल अनुक्रम जो आपको जीत की गारंटी देता है उपयोगी नहीं है, क्योंकि आपका प्रतिद्वंद्वी आपके साथ सहयोग नहीं करेगा। आप ऐसे कदम बनाने की कोशिश करते हैं जो जीतने की संभावना को अधिकतम करते हैं और आपका प्रतिद्वंद्वी चलता है जो जीतने की संभावना को कम करता है।

इसी कारण से, आपके द्वारा किए जाने वाले चालों से शाखाओं का पता लगाने में बहुत उपयोगी नहीं है, या आपके प्रतिद्वंद्वी को आपके लिए अच्छा बनाता है।

+0

ठीक है ... लेकिन उदाहरण के लिए मैं इसे टिक टैक पैर गेम में कैसे लागू कर सकता हूं? –

संबंधित मुद्दे