Inteligencia artificial - hanoi
segunda-feira, 11 de junho de 2012 08:51
%ESPACO DE ESTADOS E FUNCOES DE AVALIACAO
sucessor(nodo(E1,C),nodo(E2,C2)):pode_ir(E1,E2),
C2 is C+1. pode_ir([[B|A],[],[]],[A,[B],[]]). pode_ir([[],[A|B],[]],[[A],B,[]]). pode_ir([[],[B|A],[]],[[],A,[B]]). pode_ir([[],[],[A|B]],[[],[A],B]). pode_ir([[B|A],[],[]],[A,[],[B]]). pode_ir([[],[],[A|B]],[[A],[],B]). pode_ir([[A|B],[C|D],[E|F]],[B,[A,C|D],[E|F]]):pode_ir([[A|B],[C|D],[E|F]],[B,[C|D],[A,E|F]]):pode_ir([[A|B],[C|D],[E|F]],[[C,A|B],D,[E|F]]):pode_ir([[A|B],[C|D],[E|F]],[[A|B],D,[C,E|F]]):pode_ir([[A|B],[C|D],[E|F]],[[E,A|B],[C|D],F]):pode_ir([[A|B],[C|D],[E|F]],[[A|B],[E,C|D],F]):pode_ir([[A|B],[C|D],[]],[B,[A,C|D],[]]):- A < C. pode_ir([[A|B],[C|D],[]],[B,[C|D],[A]]). pode_ir([[A|B],[],[E|F]],[B,[],[A,E|F]]):- A < E. pode_ir([[A|B],[],[E|F]],[B,[A],[E|F]]). pode_ir([[],[C|D],[E|F]],[[],D,[C,E|F]]):- C < E. pode_ir([[],[C|D],[E|F]],[[C],D,[E|F]]). pode_ir([[A|B],[C|D],[]],[[C,A|B],D,[]]):- C < A. pode_ir([[A|B],[C|D],[]],[[A|B],D,[C]]). pode_ir([[A|B],[],[E|F]],[[E,A|B],[],F]):- E < A. pode_ir([[A|B],[],[E|F]],[[A|B],[E],F]). pode_ir([[],[C|D],[E|F]],[[],[E,C|D],F]):- E < C. pode_ir([[],[C|D],[E|F]],[[E],[C|D],F]). heuristica2([nodo(Conf,C)|_],V):funcao_f(Conf,Val),
V is C+Val.
funcao_avaliacao([A,B,C],H):soma(A,SA,0), soma(B,SB,0), H is SA + SB. soma([],SA,SPA):SA = SPA. soma([C_A|R_A],SA,SPA):R is SPA + 1, soma(R_A,SA,R). funcao_f(State,F) :-1-
A
A
C
C
E
E
<
<
<
<
<
<
C.
E.
A.
E.
A.
C.
D:\Nova pasta\USP\IA\Work1\hanoi.pl
segunda-feira, 11 de junho de 2012 08:51
funcao_avaliacao(State,H),
F is H. teste_sucesso(nodo([[],[],[1,2,3]],_)). %BUSCA INFORMADA: A ESTRELA
busca_A_estrela(Inicial):busca_melhor_escolha(nodo(Inicial,0),C,stat(1,1,1),Stat), reverse(C,Caminho), mostrar_resultado(Caminho).
busca_melhor_escolha(Inicial,Sol,StatIn,StatOut):bme([(0,[Inicial])],[],Sol,StatIn,StatOut).