2011-11-02 5 views
5

मुझे यह कहकर शुरू करना है कि इस प्रश्न का उत्तर एआई जादूगरों द्वारा बिना किसी प्रस्ताव के अनुभव के उत्तर दिया जा सकता है।मिनिमैक्स "आर्टिफिशियल इंटेलिजेंस के लिए प्रोलॉग प्रोग्रामिंग" में कार्यान्वित करें - min_to_move/1 और max_to_move/1 क्या हैं?

उत्कृष्ट Prolog Programming for Artificial Intelligence किताब यह काफी संक्षिप्त और चालाक अल्पमहिष्ठ कार्यान्वयन है:

minimax(Pos, BestSucc, Val) :- 
    moves(Pos, PosList), !,    % Legal moves in Pos produce PosList 
    best(PosList, BestSucc, Val) 
    ; 
    staticval(Pos, Val).     % Pos has no successors: evaluate statically 

best([ Pos], Pos, Val) :- 
    minimax(Pos, _, Val), !. 

best([Pos1 | PosList], BestPos, BestVal) :- 
    minimax(Pos1, _, Val1), 
    best(PosList, Pos2, Val2), 
    betterof(Pos1, Val1, Pos2, Val2, BestPos, BestVal). 

betterof(Pos0, Val0, Pos1, Val1, Pos0, Val0) :-  % Pos0 better than Pos1 
    min_to_move(Pos0),         % MIN to move in Pos0 
    Val0 > Val1, !           % MAX prefers the greater value 
    ; 
    max_to_move(Pos0),         % MAX to move in Pos0 
    Val0 < Val1, !.        % MIN prefers the lesser value 

betterof(Pos0, Val0, Pos1, Val1, Pos1, Val1).   % Otherwise Pos1 better than Pos0 

हालांकि, लेखक नहीं यह वर्णन करने में ज्यादा लंबाई करने के लिए चले गए और मुझे आश्चर्य है कि क्या min_to_move/1 और max_to_move/1 हैं छोड़ दिया हूँ ।

क्या कोई मुझे इन्हें समझा सकता है?

अग्रिम धन्यवाद!

उत्तर

5

स्पष्ट रूप से, min_to_move (Pos) सत्य है और केवल तभी जब "न्यूनतम" प्लेयर स्थिति स्थिति में स्थानांतरित करना है। इसके विपरीत max_to_move/1 के लिए। व्यक्तिगत रूप से, मुझे यहां कोडित शैली कोडिंग बहुत अच्छी नहीं है। उदाहरण के लिए, कई अवसरों पर, अगर-फिर-और ((->)/2 और (;)/2) इरादे व्यक्त करने के लिए एक बेहतर फिट प्रतीत होता है। अनुमानित नाम भी अधिक वर्णनात्मक हो सकते हैं (उदाहरण के लिए "position_best/2" उदाहरण के लिए पदों की सूची और सर्वोत्तम विकल्प के बीच संबंध का वर्णन करने के लिए "सर्वोत्तम/3") और अधिक पढ़ने योग्य (उदाहरण के लिए क्या है " बेहतर "उदाहरण के लिए पढ़ने के लिए कठिन होने के अलावा" better_of "?)।

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