Documente Academic
Documente Profesional
Documente Cultură
PROGRAMA
DE
PS-GRADUAO
EM
SISTEMAS
DE
Mossor/RN
2016
INTRODUO
Diversos problemas podem ser implementados e resolvidos atravs da Inteligncia
Artificial (IA). Este campo de estudo trata da aplicao da atividade inteligente em um
dispositivo mecnico utilizando a representao e busca (Luger, 2013). Ou seja, para
solucionar estes problemas utilizando IA preciso encontrar estruturas capazes de representlos e um mtodo de busca para encontrar as solues.
Uma ferramenta muito utilizada para representar e solucionar problemas denominada
busca em espaos de estados. Esta consiste em um grafo, formado por um conjunto de ns
conectados por arcos ou elos. Os ns representam os estados ou possibilidades para a soluo
dos problemas e os elos simulam as transies, o caminho, entre os estados (Luger, 2013).
Aps representar todas as possveis situaes/transies, podemos aplicar a busca da
soluo. Nesse aspecto, uma gama de mtodos pode ser escolhida para encontrar a melhor
resoluo do problema.
Neste jogo, cada estado na rvore de busca de estados especifica a localizao das oito
peas e do local vazio. O espao vazio pode mover-se para cima, para baixo, para direita e
esquerda. Com a busca direcional, a procura pela soluo termina quando se obtm um n, ou
estado, que seja comum para os dois caminhos.
Algoritmo
).
).
/********************************************************************/
/********************* Predicado Principais *************************/
/*Resolva o Predicado Principal para Iniciar a Busca Bidirecional, Onde inicia as Bases de Dados Dinmicas em Zero*/
resolva :- init_dynamic,
estado_inicial( Inicio ), Meta e_a_meta, /*Carrega o estado inicial e o estado meta nas respectivas variaveis*/
busca_bidirectional( [[ r(raiz, Inicio) ]], [[r(meta, Meta)]], SolucaoDeInicio, SolucaoDeMeta ), /*Inicia a Busca Bidirecional, interccalando
os casamentos de busca*/
imprimatempo,
imprima( SolucaoDeInicio ), nl, nl,
imprima( SolucaoDeMeta ), nl.
/*Passa ao nvel seguinte gerando os filhos do nvel pai, tanto para a busca da rvore de incio como da busca da rvore de meta*/
busca_bidirectional( [HeadIni|TailIni], [HeadMeta|TailMeta], SolucaoDeInicio, SolucaoDeMeta) :ache_todos( ExtensaoAteUmFilhoIni, estende_ate_filho( HeadIni, ExtensaoAteUmFilhoIni ), ExtensoesIni ),
soma_ini(ExtensoesIni), /*Conteo dos ns expandidos desde o n de inicio*/
ap( ExtensoesIni, TailIni, ListaEstendidaIni ), /*Adiciona todos os ns filhos listapara a busca em profundidade*/
ache_todos( ExtensaoAteUmFilhoMeta, estende_ate_filho( HeadMeta, ExtensaoAteUmFilhoMeta ), ExtensoesMeta ),
soma_meta(ExtensoesMeta), /*Conteo dos ns expandidos desde o n meta*/
ap( TailMeta, ExtensoesMeta, ListaEstendidaMeta ), /*Adiciona todos os ns filhos para a busca em largura*/
busca_bidirectional( ListaEstendidaIni, ListaEstendidaMeta, SolucaoDeInicio, SolucaoDeMeta ).
/* nova comparao */
procura( LLSolDeInicio, LLSolDeMeta, SolucaoDeInicio, SolucaoDeMeta ) :procura2( LLSolDeInicio, LLSolDeMeta, SolucaoDeInicio, SolucaoDeMeta ).
procura( [_|LTailSolIni] , LLSolDeMeta, SolucaoDeInicio, SolucaoDeMeta ) :procura( LTailSolIni, LLSolDeMeta, SolucaoDeInicio, SolucaoDeMeta ).
procura2( LLSolDeInicio, [_|LTailMeta], SolucaoDeInicio, SolucaoDeMeta ) :procura2( LLSolDeInicio , LTailMeta, SolucaoDeInicio, SolucaoDeMeta ).
/*********************************************************************/
/*********************** Base de Conhecimentos ***********************/
/********************************************************************/
/************************ Testes ***********************/
/*Test A*/
estado_inicial([1,2,3,4,5,6,7,8,*]).
[3,*,1,2,5,6,4,7,8] e_a_meta.
/*Test B*/
/*
estado_inicial([1,2,3,4,5,6,7,8,*]).
[*,3,1,2,5,6,4,7,8] e_a_meta.
*/
/*Test C*/
/*
estado_inicial([1,2,3,4,5,6,7,8,*]).
10
[2,3,1,*,5,6,4,7,8] e_a_meta.
*/
/*Test D*/
/*
estado_inicial([1,2,3,4,5,6,7,8,*]).
[2,3,*,1,5,6,4,7,8] e_a_meta.
*/
/* Test E */
/*
estado_inicial([1,2,3,4,5,6,7,8,*]).
[1,2,3,5,*,6,4,7,8] e_a_meta.
*/
/********************************************************************/
/************************ Predicados de Ajuda ***********************/
11
imprima([r(raiz,Raiz)]) :- !,
write('Estado Inicial( Busca De Inicio - Profundidade) : '),
write(Raiz), write('.'),nl,
retract(countinicio(Nos)), write('Nos Expandidos:'), write(Nos),nl.
imprima([r(meta,Meta)]) :- !,
write('Estado Final ( Busca De Meta - Largura
) : '),
write(Meta), write('.'),nl,
retract(countmeta(Nos)), write('Nos Expandidos:'), write(Nos),nl.
BUSCA
BIDIRECIONAL
COM
SUAS
LIMITAES,
APLICAES
COMPARAES
O mtodo bidirecional mais indicado quando se tem um nico objetivo final bem
definido e para o qual os operadores tm inversos.
Dentre as vantagens, como comenta Robin (2009), pode-se destacar a velocidade de
resposta, visto que a soma do tempo gasto nos dois caminhos utilizados neste mtodo menor
do que o tempo gasto na utilizao de apenas um caminho no mtodo unidirecional. Alm
disso, de acordo com o mesmo autor, a busca bidirecional requer menos memria.
Como desvantagem Robin (2009) afirma que um mtodo de difcil execuo, visto
que deve-se decidir a cada passo o modo de busca na rvore de estados. Outro ponto que
dificulta sua utilizao o fato que deve-se conhecer o estado objetivo, que de preferncia
seja apenas um, e deve ser possvel regredir atravs dos estados. Alm disso, o algoritmo deve
ter um meio para detectar o ponto de interseco dos dois caminhos, para evitar a
redundncia, tornando o mtodo prejudicial.
Os principais problemas no mtodo de busca bidirecional a redundncia e a
interseco, ambos mencionados anteriormente. Como a rvore de estados tem muitos
caminhos diferentes a partir de um mesmo n, pode-se obter encontros redundantes entre os
12
13
Observando a Tabela 01, conclui-se que a busca bidirecional permite um menor uso de
tempo e de memria, comparada busca por largura e profundidade, sendo tima dependendo
da aplicao.
CONCLUSES
A busca bidirecional tem seu desempenho aliado ao tipo de aplicao. Em problemas
com apenas um objetivo ou estado meta, geralmente, esse mtodo pode ser aplicado com
sucesso. Problemas que contm vrias solues devem ser evitados porque podem dificultar a
realizao da busca.
A maior vantagem desse mtodo de busca a possibilidade de reduo de tempo de
funcionamento e memria de computador gastas frente a aplicao mtodos de busca
exaustivos unidirecionais.
A busca bidirecional pode ser aprimorada com a juno de outros mtodos de busca,
como por exemplo aplicando-se a heurstica, resultando em um mtodo hbrido com maior
chance de sucesso.
Para o quebra cabea de 8 peas, a busca bidirecional se aplica de forma satisfatria,
trazendo todos os benefcios referentes a esse mtodo desde que se aplique um mecanismo
adequado para identificar interseces e redundncias.
14
REFERNCIAS
ALUSIO, Sandra M. MONTESCO, Carlos A. E. TACO, Pastor W. G. Problema do Jogo
das Oito Fichas (8 Puzzle) Fazendo uso da Busca Bidirecional. 1999. Disponvel em: <
http://www.icmc.sc.usp.br/~sandra/G5_t2/8_Puzzle.htm>. Acesso em: 20 mar. 2016.
LUGER, George R. Inteligncia Artificial. 6 ed. So Paulo: Pearson Education do Brasil,
2013. 614 p.
OSRIO, Fernando et al. Inteligncia Artificial para jogos: Agentes especiais com
permisso
para
matar...
e
raciocinar!
Disponvel
em:
<
http://osorio.wait4.org/publications/Osorio-et-al-SBGames07-Tutorial.pdf>. Acesso em: 20
mar. 2016.
POHL, I. Bi-directional Search, in Machine Intelligence, vol. 6, eds. Meltzer and Michie,
Edinburgh University Press, 1971. 127-140 p.
POOLE, David. MACKWORTH, Alan. Artificial Intelligence: foundations of computational
agents. Disponvel em: <http://artint.info/html/ArtInt_65.html>. Acesso em: 20 mar. 2016.
ROBIN.
Bidirectional
Search.
2009.
Disponvel
em:
<http://intelligence.worldofcomputing.net/ai-search/bidirectional-search.html#.Vu_qteIrLIU>.
Acesso em: 21 mar. 2016.
RUSSELL, Stuart J. NORVING, Peter. Artificial intelligence: a modern approach, New
Jersey: Englewood Cliffs, 1995. 932 p.
SILVA, Marcos F. P. Inteligncia artificial em jogos digitais. Disponvel em: <
https://6d93618074139ea19caecce289f017ecc7f89b74.googledrive.com/host/0BwN3tFnUMZ
U_cExOUWR1RzE4Qjg/01%20-%20Apresenta%C3%A7%C3%A3o%20e%20Introdu
%C3%A7%C3%A3o.pdf>. Acesso em: 20 mar. 2016.
TATAI, Victor K. Tcnicas de Sistemas Inteligentes Aplicadas ao Desenvolvimento de
Jogos
de
Computador.
Disponvel
em:
<
http://www.dca.fee.unicamp.br/~gudwin/ftp/publications/TeseTatai.pdf>. Acesso em: 20 mar.
2016.
15