home *** CD-ROM | disk | FTP | other *** search
- "Alpha-Beta-Algorithmus"
-
- Alpha-Beta(S-tand,<A-lpha,B-eta>,<Z-ug, W-ert>) ->
- Liste-moeglicher-Zuege(S-tand, L-iste)
- berechne-Wert(S-tand, L-iste, <A-lpha,B-eta>, <Z-ug, W-ert>);
-
- berechne-Wert(S-tand, nil, <A-lpha,B-eta>, <Z-ug, W-ert>) ->
- statische-Bewertung(S-tand, W-ert);
- berechne-Wert(S-tand, T-ochter.R-est, <A-lpha,B-eta>,
- <Z-ug, W-ert>) ->
- beschraenkt-bester-Zug(T-ochter.R-est, <A-lpha,B-eta>,
- <Z-ug, W-ert>);
-
- beschraenkt-bester-Zug(T-ochter.R-est, <A-lpha,B-eta>,
- <Z-ug, W-ert>) ->
- Alpha-Beta(T-ochter,<A-lpha,B-eta>,<Z-ug', W-ert'>)
- ueberpruefe-Schwestern(R-est, <A-lpha,B-eta>,
- <T-ochter, W-ert'>, <Z-ug, W-ert>);
-
- ueberpruefe-Schwestern(nil,<A-lpha,B-eta>,<Z-ug,W-ert>,<Z-ug, W-ert>) -> /;
- ueberpruefe-Schwestern(L-iste, <A-lpha,B-eta>, <Z-ug, W-ert>, <Z-ug, W-ert>) ->
- MIN-Ebene(Z-ug) val(inf(B-eta,W-ert),1) /;
- ueberpruefe-Schwestern(L-iste, <A-lpha,B-eta>, <Z-ug, W-ert>,<Z-ug, W-ert>) ->
- MAX-Ebene(Z-ug) val(inf(W-ert,A-lpha),1) /;
- ueberpruefe-Schwestern(L-iste,<A-lpha,B-eta>,<Z-ug, W-ert>,<Z-ug1, W-ert1>) ->
- revidiere-Alpha-Beta(<A-lpha,B-eta>, <Z-ug,W-ert>, <A-lpha',B-eta'>)
- beschraenkt-bester-Zug(L-iste, <A-lpha',B-eta'>, <Z-ug', W-ert'>)
- der-Bessere(Z-ug, W-ert, Z-ug', W-ert', Z-ug1, W-ert1);
-
- revidiere-Alpha-Beta(<A-lpha,B-eta>, <Z-ug,W-ert>, <W-ert,B-eta>) ->
- MIN-Ebene(Z-ug) val(inf(A-lpha,W-ert),1) /;
- revidiere-Alpha-Beta(<A-lpha,B-eta>, <Z-ug,W-ert>, <A-lpha,W-ert>) ->
- MAX-Ebene(Z-ug) val(inf(W-ert,B-eta),1) /;
- revidiere-Alpha-Beta(<A-lpha,B-eta>, <Z-ug,W-ert>, <A-lpha,B-eta>) ->;
-
- der-Bessere(b-Z', W-ert', b-Z'', W-ert'', b-Z', W-ert') ->
- MAX-Ebene(b-Z') val(inf(W-ert', W-ert''),1) /;
- der-Bessere(b-Z', W-ert', b-Z'', W-ert'', b-Z', W-ert') ->
- MIN-Ebene(b-Z') val(inf(W-ert'', W-ert'),1) /;
- der-Bessere(b-Z', W-ert', b-Z'', W-ert'', b-Z'', W-ert'') -> ;
-
- Liste-moeglicher-Zuege(S-tand,L-iste) ->
- set-of(S-tand', zulaessiger-Zug(S-tand, S-tand'), L-iste);
-
- "Spielregeln fuer das Streichholzspiel (Version 3)"
-
- zulaessiger-Zug(<S-uchtiefe, F-arbe-am-Zug, H-oelzchenzahl >,
- <S-uchtiefe', F-arbe-am-Zug', H-oelzchenzahl' >) ->
- val(inf(S-uchtiefe,4),1)
- Anzahl(n)
- val(inf( H-oelzchenzahl,n),0)
- val(sub( H-oelzchenzahl,n), H-oelzchenzahl')
- val(add( S-uchtiefe,1), S-uchtiefe')
- Gegner( F-arbe-am-Zug, F-arbe-am-Zug');
-
- Gegner(WEISS,SCHWARZ) ->;
- Gegner(SCHWARZ,WEISS) ->;
-
- Anzahl(n) -> enum(n,3);
-
- "MINIMAX-Definitionen (Version 2)"
-
- MAX-Ebene(<S-uchtiefe, WEISS, A>) ->;
- MIN-Ebene(<S-uchtiefe, SCHWARZ, A>) ->;
-
- statische-Bewertung(<S-uchtiefe, F-arbe-am-Zug, 0>, 1) ->
- MAX-Ebene(<S-uchtiefe, F-arbe-am-Zug, 0>) /;
- statische-Bewertung(<S-uchtiefe, F-arbe-am-Zug, 0>, 0) ->
- MIN-Ebene(<S-uchtiefe, F-arbe-am-Zug, 0>) /;
- statische-Bewertung(<S-uchtiefe, SCHWARZ, H-oelzchenzahl >, 1) ->
- val(mod( H-oelzchenzahl,4),1) /;
- statische-Bewertung(<S-uchtiefe, SCHWARZ, H-oelzchenzahl >, 0) ->;
- statische-Bewertung(<S-uchtiefe, WEISS, H-oelzchenzahl>, 0) ->
- val(mod( H-oelzchenzahl,4),1) /;
- statische-Bewertung(<S-uchtiefe, WEISS, H-oelzchenzahl>, 1) ->;
-
- "Hilfspraedikat"
-
- set-of(x,p,l) ->
- output-is(o) input-is(i)
- new-buffer(set-of'(x,p,l))
- output(o) input(i);
-
- set-of'(x,p,l) -> output("buffer") input("buffer") outml("nil;") fail;
- set-of'(x,p,l) -> p in(l') in-char(";") erweitere(l',x) fail;
- set-of'(x,p,l) -> in(l);
-
- erweitere(x.l,x) -> / erweitere(l);
- erweitere(y.l,x) -> out(y) outm(".") erweitere(l,x);
- erweitere(nil,x) -> out(x) outml(".nil;");