Funkcja EVAL wywołana dla wierzchołka typu MIN zachowuje się analogicznie, z tą różnicą, że zamiast nierówności ostrej sprawdzana jest nierówność nieostra.
Pseudokod def scout(state): eval(state)
def eval(state): if state.is_terminal(): return state.value() value = None if state.is_max(): for child in state.children(): if value is None or test(child, value, >): value = eval(child) else: # state.is_min() for child in state.children(): if value is None or not test(child, value, >=): value = eval(child) return value
def test(state, value, rel): if state.is_terminal(): return rel(state.value(), value) if state.is_max(): for child in state.children(): if test(child, value, rel): return True return False else: # state.is_min() for child in state.children(): if not test(child, value, rel): return False return True
Przypisy
Kategoria:Algorytmy