2010-05-02 14 views
13

रास्ता रास्ता वापस (20+ साल सोचें) मुझे एक पत्रिका में एक गोमोकू गेम स्रोत कोड का सामना करना पड़ा जिसे मैंने अपने कंप्यूटर के लिए टाइप किया था और इसमें बहुत मज़ा आया था।गोमोकू सरणी आधारित एआई-एल्गोरिदम?

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

मुझे याद रखने वाली चीजें यह थी कि यह मूल रूप से पूरे बोर्ड को कवर करने वाली एक सरणी आवंटित की गई थी। फिर, जब भी मैं, या यह, एक टुकड़ा रखा, यह बोर्ड पर सभी स्थानों पर कई वजन जोड़ देगा कि टुकड़ा संभवतः प्रभावित होगा।

उदाहरण के लिए (ध्यान दें कि वजन निश्चित रूप से गलत रूप में मैं उन याद नहीं है कर रहे हैं):

1 1 1 
2 2 2 
    3 3 3 
    444 
1234X4321 
    3 3 3 
2 2 2 
1 1 1 

तो यह बस सरणी एक खुले स्थान के लिए सबसे कम या उच्चतम मूल्य के साथ स्कैन किया।

चीजें मैं पर फजी हूँ:

  • शायद यह था दो सरणियों, मेरे लिए एक और खुद के लिए एक और एक न्यूनतम/अधिकतम भार था?
  • वहाँ एल्गोरिथ्म के लिए अधिक किया गया है हो सकता है, लेकिन इसके मूल में यह मूल रूप से एक सरणी और भारित संख्या

था इस अंगूठी सब पर किसी के साथ एक घंटी है? किसी को भी कुछ भी मदद मिलेगी?

+0

कृपया एक संबंधित सवाल http://stackoverflow.com/questions/ करने के लिए अपने जवाब की जांच 2438231 # 6000643 मैं अपने सरल कार्यान्वित अभी तक मजबूत गोमोकू एआई के कार्यान्वयन को साझा करता हूं – amartynov

उत्तर

5

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

पांच-इन-ए-पंक्ति प्राप्त करने के लक्ष्य को पूरा करने के लिए आपको (ए) प्रतिद्वंद्वी को सफल होने से रोकना होगा और (बी) स्वयं को सफल बनाना होगा।

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

सफल से अपने प्रतिद्वंद्वी को रोकने के लिए, आप अगले करने के लिए अपने/उसके पत्थर पत्थर रखना होगा। यह विशेष रूप से अच्छा है यदि आप एक ही तीर से दो पक्षियों हड़ताल, तो प्रतिद्वंद्वी के पत्थर के आसपास के क्षेत्रों में एक ही तरह से तुम्हारा कर मूल्य वृद्धि करनी चाहिए - अधिक पत्थर वह पहले से ही खड़े है, उच्च स्कोर, और अधिक होने की संभावना एल्गोरिदम प्रतिद्वंद्वी को काटने की कोशिश करेगा।

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

हालांकि यह एक बहुत ही बुनियादी दृष्टिकोण है, और एक पेड़ खोज एल्गोरिथ्म द्वारा बेहतर प्रदर्शन किया जाएगा। Google को खोजना, संबंधित paper on Threat search है, जो स्पष्ट रूप से गोमोकू के लिए अच्छा काम करता है।पेपर एक पे-वॉल के पीछे है हालांकि:/

2

मैं लेख नहीं पढ़ा है, लेकिन वर्णन से मेरा अनुमान Minimax algorithm

1

यह एक प्राचीन गेम है - मुझे Planet Source Code पर कोड मिला। मैंने कॉलेज के दौरान इस खेल को खेला और 286 दिनों में इसका मूल संस्करण था।

2

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

लेकिन यह निश्चित रूप से बहुत ही छोटा एल्गोरिदम है। जीतने की रणनीति पहले ही मिल चुकी है। इस पेपर को देखें: L. Victor Allis, H. J. van den Herik, M. P. H. Huntjens. Go-Moku and Threat-Space Search। जब मैं अपना खुद का कार्यक्रम लिख रहा था तो इससे मुझे बहुत मदद मिली। इस तरह आप प्रोग्राम लिखने में सक्षम होंगे जो प्रतिद्वंद्वी पर हमला करने और जीतने के संयोजन खोजने में बहुत अच्छा है।

-1

आईफोन के लिए ओपन सोर्स संस्करण पर काम करना।

शामिल होने में रूचि रखते हुए मुझे मारो!

https://github.com/kigster/kigomoku

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