जहां तक मुझे समझा गया, आपकी मुख्य समस्या निम्न है: आपको दिखाया गया है कि किसी परिस्थिति में मिनीमैक्स का उपयोग कैसे करें जहां अधिकतम/मिनट चक्र में जाता है और अब आपके पास एक ऐसा गेम है जहां कभी-कभी एक खिलाड़ी कई चाल कर सकता है एक पंक्ति।
मैं आपको सामान्य दृष्टिकोण की व्याख्या करता हूं जो मूल रूप से किसी भी गेम के लिए काम करता है, और फिर मैं कुछ चीजें जोड़ूंगा जो मणकला के लिए अलग-अलग किए जा सकते हैं।
तो सामान्य दृष्टिकोण
स्टैंडर्ड अल्पमहिष्ठ इस प्रकार है:
function minimax(node, depth, maximizingPlayer)
if depth = 0 or node is a terminal node
return the heuristic value of node
if maximizingPlayer
bestValue := -∞
for each child of node
val := minimax(child, depth - 1, FALSE)
bestValue := max(bestValue, val)
return bestValue
else
bestValue := +∞
for each child of node
val := minimax(child, depth - 1, TRUE)
bestValue := min(bestValue, val)
return bestValue
आप अधिकतम/मिनट के साथ अल्पमहिष्ठ कॉल कहाँ प्रारंभ और उसके बाद यह लगातार बदल जाता है। आपके मामले में आपको केवल एक छोटी सी जांच जोड़ने की आवश्यकता है।
function minimax(node, depth, maximizingPlayer)
if depth = 0 or node is a terminal node
return the heuristic value of node
if maximizingPlayer
bestValue := -∞
for each child of node
# here is a small change
if freeTurn(child):
isMax := TRUE
else:
isMax := FALSE
val := minimax(child, depth - 1, isMax)
bestValue := max(bestValue, val)
return bestValue
else
bestValue := +∞
for each child of node
# here is a small change
if freeTurn(child):
isMax := FALSE
else:
isMax := TRUE
val := minimax(child, depth - 1, isMax)
bestValue := min(bestValue, val)
return bestValue
जहाँ आपके समारोह freeTurn
रिटर्न आप कि क्या आप अपने वर्तमान स्थानांतरण के बाद एक मुक्त बारी है। ध्यान दें कि इस एल्गोरिदम के लिए कोई अंतर नहीं है कि आप पंक्ति में केवल 2 चाल या पंक्ति में 5 चाल कर सकते हैं।
Mancala के बारे में
mancala के कई रूपों हैं, लेकिन खेल की शाखाओं में कारक बहुत छोटा है (एक मुझे पता है कि < = 6 में)। अब मान लें कि आपके पास तीन चाल A
, B
, C
, D
और C
स्थानांतरित करने के लिए आपको एक और बार खेलने की अनुमति मिलती है। C
स्थिति से आप C1
, C2
चला सकते हैं। तो आप उन्हें जोड़ सकते हैं (C + C1
, C + C2
) और उन्हें केवल एक कदम के रूप में व्यवहार करें (याद रखने के लिए छोटी बहीखाता यह जानी चाहिए कि यह वास्तव में दो चाल है)।तो अभी आप अपने न्यूनतम अधिकतम पुनरावृत्तियों के साथ समाप्त हो जाते हैं जहां आपके पास 4 नहीं बल्कि 5 चालें हैं: A
, B
, C + C1
, C + C2
, D
। असल में बड़े ब्रांचिंग कारक वाले गेम के लिए इस दृष्टिकोण का उपयोग करने में कुछ भी गलत नहीं है।
ठीक है, तो यह मिनी, अधिकतम, न्यूनतम, अधिकतम संरचना रखेगा, आप दोहराने वाले प्रत्येक अधिकतम के बीच एक बेकार मिनट रखेंगे? – Zapnologica
हां, जब तक कि आपके पास कोई बेहतर विचार न हो। –
यह संभावित प्ली गहराई को कैसे प्रभावित करेगा? – Zapnologica