Beruflich Dokumente
Kultur Dokumente
= n / m
Ento, o tempo de execuo do IDA* pode ser aproximado por O(n/m), o tamanho do
problema dividido pela memria disponvel. Usando os dados deste experimento:
n = 4,3252 * 10
19
m = 173.335.680
n / m = 249.527.409.904
t = 352.656.042.894
3.7) Usando Database Disjuntos e Pareados
Infelizmente as tcnicas de database disjuntos e database pareados no podem ser usadas
para solucionar o cubo mgico, pois cada movimentao envolve mais de uma pea e o seu
uso poderia ocasionar perda da admissibilidade da nova funo heurstica.
3.8) Concluses
Nesse trabalho, foram descobertas as primeiras solues timas para instncias randmicas
do Cubo Mgico, um dos mais famosos problemas combinatrios deste tempo. O
comprimento mdio da soluo tima aparenta ser de 18 movimentos.
A idia chave, devida o a Culberson e Schaeffer em 1996, tomar um subconjunto de
objetivos o problema original, e pr-computar e armazenar o nmero exato de movimentos
para resolver estes sub-objetivos para todos os possveis estados iniciais. Assim, a soluo
exata para estes sub-objetivos usado como um limite mnimo para uma busca IDA* para
o problema original.
Caracteriza-se aqui a eficcia de uma heurstica admissvel simplesmente pelo seu valor
esperado. tambm apresentada uma anlise informal da tcnica e elaborada uma hiptese
de que seu desempenho regido por aproximadamente t ~ n/m, onde t o tempo de
execuo, m a quantidade de memria utilizada e n o tamanho do espao do problema.
Esta aproximao consistente com os resultados destes experimentos, e sugere que a
velocidade do algoritmo cresce linearmente com a quantidade de memria disponvel.
21
4) Complexidade de Tempo da busca IDA* para o Cubo Mgico
[Korf 2001]
Em trabalhos realizados anteriormente, era usado um modelo abstrato de rvore de espao
de busca, onde cada n teria exatamente b filhos, e cada aresta teria um custo igual a uma
unidade e que haveria um nico estado objetivo uma profundidade d. Esse modelo prev
que heursticas com erro:
absoluto constante resultam em uma complexidade de tempo linear;
relativo constante resultam em uma complexidade de tempo exponencial;
Problemas com essa abordagem:
assume que h um nico caminho a partir do estado inicial at o estado objetivo;
determina a acurcia da funo heurstica baseada num nico estado;
os resultados em geral so assintticos
Devido a essas limitaes bastante difcil prever a performace do A* e IDA* em
qualquer problema concreto.
4.1) Conceitos
Funo Heurstica Consistente
Seja h(n) a estimativa do custo at o estado objetivo a partir do n n. Seja g(n) o custo do
n n.Seja n um filho de n. Seja f(n) = g(n) + h(n). Uma funo heurstica h(n) dita
consistente se para todo n, f(n) f(n). Supe-se que para qualquer discusso a frente a
funo heurstica seja consistente.
Funo de Distribuio dos Valores Heursticos: D(n)
D(n) frao total dos estados to problema com valores heursticos iguais ou inferiores a n.
Funo de Equilbrio dos Valores Heursticos: P(n)
P(n) probabilidade de um n ser escolhido randomicamente e uniformemente entre todos
os ns de uma profundidade n. P(n) no uma propriedade do problema, mas sim do
espao de busca do problema. Para o cubo mgico P(n) = D(n), mas para a famlia do jogo
dos 8 (jogo dos 15, jogo dos 24, ...) a probabilidade posio do espao em branco deve ser
considerada.
22
4.2) Resultado Principal
4.3) Teoria e Prtica
Para o cubo mgico, discrepncia entre predio do nmero de ns expandidos com o
nmero de ns realmente expandidos foi 1% em mdia.
Para o jogo dos 15, discrepncia entre predio do nmero de ns expandidos com o
nmero de ns realmente expandidos foi 2,5 % em mdia.
b o branching factor,
d a profundidade da soluo tima,
P(n) funo de distribuio dos valores
heursticos.
O nmero de ns expandidos na ltima
iterao do IDA* em mdia:
i=0
d
b
i
P(d-i) b
0
P(d)+b
1
P(d-1)+...b
d
P(0)=
i=0
d
b
i
P(d-i)
i=0
d
b
i
P(d-i) b
0
P(d)+b
1
P(d-1)+...b
d
P(0)=
23
5) Trabalho Prtico
Especificar e implementar o jogo do cubo mgico. Primeiro para cada face sendo uma
matriz 2x2, depois 3x3 e por fim NxN. Criar uma heurstica e comparar com uma busca
completamente desinformada.
Linguagem utilizada: Object Pascal / Delphi.
Modelagem
O cubo foi modelado como uma classe, com um conjunto de mtodos para efetuar as
rotaes (operadores) e outras atividades custodiais.
A representao 3D no foi utilizada, pois seriam necessrios 3 nmeros inteiros para
representar a posio de cada cubculo que compe o cubo. Cada face do cubo foi
representada como uma matriz de bytes NxN. Cada valor dos elementos de uma
matriz (face) mapeado numa cor especfica e vice-versa. Cada face indexada por um
nmero de 0 a 5.
Como so seis faces, a cardinalidade do conjunto de valores que cada posio na matriz
pode assumir 6. Sem perda de generalidade esses valores vo de 0 a 5. O nmero de
elementos de um lado com uma determinada cor sempre NxN, e o total de elementos no
cubo 6xNxN. Essas afirmaes so vlidas para qualquer cubo NxNxN.
Na modelagem adotamos os seguintes critrios;
Sejam A, B o identificador de duas faces.
A+B = 5 se, e somente se, as faces so opostas;
Se uma posio da matriz contm um valor A a face onde esse valor foi iniciado
A;
Cada eixo de rotao perpendicular a uma face indexada por A dado por A mod 3;
Cada rotao numa face de ndice A ocorre em um plano definido pelo seu eixo de rotao.
Esse plano indexado por valores que vo de 0 a N-1;
Cada rotao de um plano pode ter dois sentidos: 90e -90. O sentido de rotao definido
pela regra da mo direita. Onde vetor de rotao tem o sentido da face de menor ndice para
a de maior. Ele perpendicular ao eixo de rotao.
24
Um movimento ento foi modelado como:
Cubo.Rotao(eixo,plano,sentido);
As rotaes do tipo Rotao(A,0,sentido) e Rotao(A, N-1,sentido) modificam as faces
que definem o vetor de rotao de forma que as matrizes que as representam sofram uma
rotao interna de seus valores de mesma intensidade, mas de sentidos opostos. Tais
operaes preservam as propriedades das rotaes mecnicas em um cubo real. Isso deve se
dependncia de valores dos elementos das matrizes que se encontram em arestas de faces
adjacentes num cubo real.
A partir da operao Rotao(eixo,plano,sentido) as demais funes relevantes ao problema
so derivadas.
A rotao de cubo num eixo realizada da seguinte forma
Cubo.RotaoEixo(eixo,sentido)
Para i assumindo os valores de 0 a Cubo.N-1 faa
Cubo.Rotao(eixo,i,sentido);
Isomorfismo de Cubos
Uma determinada configurao de cubo NxNxN possui 24xN configuraes isomorfas.
Por isomorfismos definimos:
Seja C e D cubos mgicos. Existe uma seqncia finita de aplicaes de
rotaes de eixo em C que o torne idntico a D, se e somente se, C e D so
configuraes isomorfas.
Dois cubos possuem configuraes isomrficas, se e somente se, so isomorfos.
Todo cubo isomorfo se comparado consigo mesmo.
Dois cubo so isomrficos triviais, se C = D.
Rotaes Isomrficas
As rotaes isomrficas so aquelas que aplicadas a um determinado cubo em qualquer
seqncia podero gerar cubo isomorfos, se e somente se, o cubo isomorfo gerado
isomorfo trivial.
25
Implementao de uma Rotao Isomrfica:
Cubo.RotaoIsomrfica(eixo,plano,sentido);
Se plano<>0 ento
Cubo.Rotao (eixo,plano,sentido)
Seno
Para i assumindo os valores de 1 a Cubo.N-1 faa
Cubo.Rotao(eixo, i, -sentido);
Para a implementao acima um efeito geomtrico curioso observado:
Seja C um cubo mgico, se a C for somente aplicada rotaes isomrficas
com a implementao acima ento existe um cubculo localizado num de
seus vrtices cuja posio inalterada.
Fatos das rotaes isomrficas:
Existe uma seqncia de aplicaes de rotaes de tamanho M que resolve um determinado
cubo se, e somente se, existe uma seqncia de aplicaes de rotaes isomorfas de
tamanho M que o resolva.
Devido ao fato acima:
no mais ser trado o caso rotaes simples, somente isomorfas. De agora
em diante, rotao sinnimo de rotao isomorfa.
Agora vale lembrar que rotaes no eixo de cubos ficam proibidas! Pois destruiriam o
isomorfismo!
Conseqncias do uso de rotaes isomorfas
1. Faz sentido dizer que cubculos esto fora de sua face;
2. Faz sentido o uso da distncia Manhattam para cubculos fora de sua
face;
3. Diminuio do overhead computacional, devido a comparaes
desnecessrias, pois a primeira falha na comparao entre dois cubos
revela, definitivamente, que eles no so isomorfos.
4. Elimina a gerao de cubos isomorfos que no sejam isomorfos triviais.
26
Buscas
As buscas implementadas foram:
No informadas
o Largura
o Profundidade Limitada
o Profundidade Interativa
Informadas:
o A*
Heurstica Peas fora do lugar
Heurstica Manhathan
Heurstica Desordem do Cubo (experimental)
o IDA*
Heurstica Peas fora do lugar
Heurstica Manhathan
Heurstica Desordem do Cubo (experimental)
A manuteno de ponteiros para os ns-pais foi implementada.
Cada cubo possui variveis internas para guardar informaes sobre seu estado na busca:
Quem seu pai, caso no fosse o cubo inicial;
Profundidade.
Visitado ou no
H ainda variveis de controle e para evitar computao.
Eliminao de estados redundantes
Foi implementada uma tabela hash para realizar essa tarefa: excluir cubos isomorfos da
busca. Porm ela mostrou nenhum ganho e gerou um consumo muito grande de memria, o
que provocou um trashing prematuro do sistema.
Uma idia menos radical foi a poltica de avoidance: procurar evitar, mas no garantir a
existncia de cubos isomorfos.
Poltica de avoidance baseia-se na existncia de ponteiros para o n pai: toda vez que um
n fosse expandido, todos os ancestrais diretos do n seriam comparados com ele. Caso
algum deles fosse isomorfos do descendente, este seria descartado.
27
Assinaturas
A comparao dos ns na tentativa de evitar estados repetidos poderia onerar desempenho
da busca, o que aumentaria o custo off-line. Para evitar a comparao direta criou-se uma
funo, semelhante quelas usadas em hashing, que gera uma assinatura para cada cubo,
que tem como argumentos a disposio dos cubculos do cubo. A assinatura usada um
inteiro de 32-bits, armazenado na prpria instncia objeto cubo. Se dois cubos tivessem
assinaturas diferentes, eles no seriam isomorfos, caso contrrio, efetuada, de fato, a
comparao, cubculo a cubculo, para saber se so, ou no, isomorfos. Essa assinatura
sempre calculada sob demanda. Sabendo-se que o fator de ramificao de um cubo 3x3x3
18 e que seu fator de ramificao 18 a maior rvore completa possui uma altura de 40
ns*. Com isso podemos inferir que o fator de ramificao caia para 17. Para solues
muito profundas no de grande ajuda, mas para solues mais prximas a raiz fornece
uma melhoria. No caso do cubo 2x2x2 o fator de ramificao cai para 11.
* claro que no se pode garantir tal fato, apenas uma suposio at ento que tal
rvore exista.
Buscas No Informadas
Para as buscas no informadas foram implementadas filas e pilhas, para a realizao das
buscas em largura e profundidade limitada, respectivamente. A busca em profundidade
interativa foi um incremento da profundidade limitada na qual essa era chamada na rotina
daquela, mas uma diferena: a comparao com a soluo s acontece na profundidade
limite.
Buscas Informadas
Para a realizao das buscas informadas foi implementada uma heap*, lista de prioridades.
O custo da insero e remoo de um n nessa estrutura de dados O(log(n)), onde n o
tamanho essa heap (a quantidade de ns nela contida). O n cabea seria sempre o n com
menor f*.
*Funo heurstica para Busca A*: f =h+g;
*Um fato interessante que as pilhas e as filas das buscas no informadas poderiam ter sido
substitudas por uma heap implementando-se uma funo f apropriada para cada caso.
Heursticas Clssicas
Peas fora do lugar:
H = (Nmero de Peas fora da sua face) /(4 x N), para um cubo NxNxN
Manhattam:
28
H = ((Nmero de peas fora da face e em face adjacente)+
2*(Nmero de peas fora da face e em face oposta))//(4 x N), para um cubo NxNxN
As duas heursticas acima so admissveis, pois afirmam que possvel chegar a soluo
realizando-se um nmero de rotaes exatas, H, pois cada rotao moveria exatamente 4*N
cubculos, sem levar em conta a eventual perturbao de tal operao nas demais peas. Se
fosse possvel efetuar a tarefa em com um nmero de passos menor que H, ento existe
alguma rotao que movimente um nmero de cubculos entre faces maior que 4*N, o que
um absurdo!
Essas heursticas s puderam ser implementadas devido ao uso de rotaes isomorfas. Uma
atribuio dinmica, por exemplo, da cor de um lado ao maior nmero de pedras de mesma
cor existente nele, poderia fazer a busca oscilar e a soluo nunca ser achada, pois a
configurao do cubo muito sensvel s rotaes.
Heursticas Experimental: Desordem do Cubo
As heursticas utilizadas para a resoluo do Cubo Mgico como, por exemplo, o
"Manhattan Distance", no podem ser utilizadas diretamente, dado que extrapolam (e
muito) o nmero real de passos que faltam para se chegar configurao final. Para us-las,
faz uma correo atravs de uma equao linear da forma:
h' = ah + b
Onde h o valor inicial da heurstica e h' o valor corrigido. Tipicamente, temos os
seguintes casos:
Para h = 0 (cubo resolvido), h' tambm ter que ser zero.
Quando falta um nico movimento para se resolver o cubo, via de regra o valor de h
de 4N, sendo N o tamanho do cubo NxNxN.
Assim, a equao fica com a = 1/ 4N e b = 0.
Deste modo, a heurstica seguramente ser admissvel, visto que nenhum movimento
mexer com mais de 4N faces.
Todavia, uma heurstica melhor quanto maior for o seu valor esperado [Korf 97]. Isto, na
prtica, significa que quanto mais prxima do valor real, melhor ser a heurstica. E esta
forma de tornar a heurstica admissvel acaba por resultar em valores distantes do real.
Com isto, foi proposta uma forma de correo no formato:
h' = ah + bh + c
29
Porm, para isto seria necessrio o limite superior da heurstica original, e associ-lo ao
nmero mximo de passos para a soluo tima. Ento, foi feita uma heurstica que mede a
desordem do cubo, contando, para cada face, em cada linha ou coluna, qual a cor que
mais ocorre, e quantas peas faltam para que toda a linha ou coluna fique com esta cor. Isto
tambm feito para a face inteira.
O algoritmo fica assim:
funo desordem(C: cubo, N: inteiro): inteiro
incio
valor <- 0;
para cada face em C fazer
incio
para linha de 1 a N fazer
incio
conta <- Nmero de ocorrncias da cor mais presente na linha;
valor <- valor + (N - conta);
fim
para coluna de 1 a N fazer
incio
conta <- Nmero de ocorrncias da cor mais presente na coluna;
valor <- valor + (N - conta);
fim
conta <- Nmero de ocorrncias da cor mais presente na face;
valor <- valor + (N * N conta);
fim
retornar valor;
fim
Os dois primeiros casos so similares ao que foi descrito no incio:
Quando o cubo est resolvido, em cada linha ou coluna de cada face, todas as peas
tm a mesma cor. Assim, h = 0.
Quando falta um nico movimento para se resolver o cubo, todas as peas sero da
mesma cor em duas faces. Nas quatro faces remanescentes, haver uma pea de cor
diferente em cada linha, e nas colunas todas tero a mesma cor (ou vice-versa). Da
mesma forma, nestas faces, teremos N peas de cor diferente em cada face. Assim:
o h = h1 + h2 = 4N + 4N
o h = 8N
O valor mximo da heurstica ocorrer quando, em todas as faces, as cores das
peas forem diferentes em todas as linhas e colunas (para N > 6, isto no ser mais
30
possvel). Neste caso, teremos uma contribuio de N - 1 em cada linha ou coluna.
Como so seis faces, e h N linhas e N colunas em cada face, temos:
o h1 = 6 * 2 * N * (N - 1)
o h1 = 12 * (N - N)
Vendo-se cada face como um todo, a maior desordem ocorrer quando a contagem
das cores for aproximadamente a mesma. Assim:
o h2 = 6 * (1 - 1/6) * N
2
o h2 = (6 - 1) * N
2
o h2 = 5N
2
Juntando-se os dois resultados:
o h = h1 + h2 = (12N
2
12N) + 5N
2
o h = 17N
2
- 12N
Assumiu-se como nmero mximo de movimentos 7N - 3, dado que para N = 2 so
necessrios no mximo 11 movimentos, e para N = 3 preciso 18 movimentos. No h
valores para N >= 4.
Com isto, temos o seguinte mapeamento de valores de h e h':
H h'
0 0
8N 1
17N - 12N 7N - 3
O que resulta no seguinte sistema de equaes:
0 * a + 0 * b + c = 0
(8N) * a + (8N) * b + c = 1
(17N - 12N) * a + (17N - 12N) * b + c = 7N - 3
Trivialmente, obtemos c = 0. Desenvolvendo-se as demais equaes, obtemos:
64Na + 8Nb = 1
(289N
4
- 408N
3
+ 144N
2
)a + (17N
2
- 12N)b = 7N - 3
Resolvendo-se este conjunto de equaes, obtivemos:
a = (39 * N - 12) / (2312 * N
4
- 4352 * N
3
+ 1920 * N
2
)
b = (289 * N
2
- 856 * N + 336) / (2312 * N
3
- 4352 * N
2
+ 1920 * N)
31
Assim, podemos aplicar a correo necessria para obtermos um valor de h' mais prximo
do real. A seguir, valores possveis para a e b, dependendo de N.
N a b
2 0.00669643 -0.04464286
3 0.00120623 0.01271712
4 0.00041853 0.01785714
5 0.00019283 0.01728662
Resultados:
Foram feitos testes desta heurstica, comparando-a com o Manhattan Distance. A seguir, os
resultados:
Cubo 2x2x2:
A* IDA*
Desordem Manhattan Desordem Manhattan
Profundidade
Esperada
Ns
Gerado
s
Profundidade Ns Gerados Profundidade Ns Gerados Profundidade Ns Gerados Profundidade
6 1.572 6 6.252 6 25.005 6 206.853 6
6 1.080 6 8.388 6 6.666 6 37.050 6
7 16.05
6
9 19.476 7 956.337 9 810.018 7
7 9.504 7 26.376 7 552.269 7 848.357 7
8 9.516 8 129.648 8 1.268.306 8 15.467.342 8
Cubo 3x3x3:
A* IDA*
Desordem Manhattan Desordem Manhattan
Profundidade
Esperada
Ns
Gerados
Profundidade Ns Gerados Profundidade Ns Gerados Profundidade Ns Gerados Profundidade
4 756 4 1.710 4 182 5 1.478 4
5 7.650 5 52.812 5 39.518 8 102.914 5
5 3.366 5 2.070 5 1.865 7 6.707 5
5 13.860 7 8.190 5 71.572 7 5.470 5
6 5.778 6 286.272 6 1.825 8 325.357 6
Aps estes testes, pode-se verificar que a heurstica no admissvel, dado que em alguns
casos retorna solues sub-timas. Todavia, esta heurstica efetua uma reduo
considervel no nmero de ns gerados, o que reduz o tempo total de processamento (e
32
tambm o risco de exausto da memria, o que acarreta em paginao excessiva,
deteriorando ainda mais o desempenho do programa).
Concluses
Aps alguns testes observamos:
A respeito das buscas informadas com heursticas admissveis podemos dizer que elas
funcionaram para cubos 2x2x2 e 3x3x3 at a profundidade 5 e 4 respectivamente. Para
profundidades maiores que 4 e cubos com fator N>4 elas degeneram-se em buscas em
largura. Essas degeneraes devem-se natureza do problema e qualidade das funes
heursticas empregadas: solues muito profundas no nos informam, aparentemente, da
sua natureza somente consideram as posies relativas entre cubculos e faces. verdade
que a recproca no verdadeira.
As tcnicas para evitar estados repetidos foram bem sucedidas para cubos 2x2x2, mas para
cubos maiores s retardou o inevitvel: a falta de memria perante solues profundas (
no caso do A*) e a baixa acurcia das funes heursticas utilizadas.
Consideraes finais: mudanas de tcnicas pode fazer-se necessrias: a busca pela soluo
tima pode no valer a pena, devido ao seu alto custo off-line.
Uso do Programa: MagicCube.exe
Autores: Paulo Coelho e Ricardo Fernandes Ribeiro
Dificuldade: indica o grau de embaralhamento de um cubo numa seqncia aleatria de
at 100 rotaes
Embaralha: realiza o embaralhamento com o grau indicado em Dificuldades
Busca !: efetua a busca selecionada priori.
Profundidade Mxima: indica em que profundidade uma no-informada deve parar.
Ao: Usado aps a realizao de uma busca, ele efetua as rotaes do cubo mais a
esquerda, o qual uma cpia do cubo principal.
NxNxN: informa a geometria do cubo.
Aps a execuo de uma busca, o programa fornece uma pequena estatstica:
33
o Ns Gerados: Nmero de ns que foram fruto de uma expanso, atravs a
aplicao de rotaes;
o Ns Expandidos: Nmero de ns que sofreram expanso, ou seja que foram
analisados;
o Ns no Expandidos: Ns que foram gerados, mas no foram expandidos;
o Total de Ns : Total de ns durante a execuo da busca;
o Profundidade Mxima: a profundidade do maior n gerado ou
expandido.
34
6) Referncias
[Korf 1997] Finding Optimal Solutions to Rubik's Cube Using Pattern Databases,
Richard E. Korf.
[Korf 2000] Recent Progress in the Design and Analysis of Admissible Heuristic
Functions, Richard E. Korf
[Korf 2001] Time Complexity of Iterative-Deepening-A*, Richard E. Korf, Michael
Reid, Stefan Edelkamp.
[KorfFel2000] Disjoint Pattern Database Heuristics, Richard E. Korf, Ariel Felner
Outras Referncias:
Planning with Pattern Databases, Stefan Edelkamp
Searching for Macro Operators with Automatically Generated Heuristics,
Istvn T. Herndvlgyi.
Planning as Heuristic Search, Blai Bonet and Hctor Geffner