Beruflich Dokumente
Kultur Dokumente
Disciplina: I.A./COS/UFRJ
Alunos:
Ricardo Fernandes Ribeiro
Paulo Coelho Ventura Pinto
Professora:
Ins Dutra
1) Introduo
Muitos problemas de importncia prtica e terica possuem uma natureza combinatria. Os
problemas combinatrios so intrigantes, pois muitos deles so fceis de se definir, mas
muitos deles so difceis de serem resolvidos. Em geral, eles so problemas NP-hard.
O cubo mgico (ou cubo de Rubik) e jogo dos 8 (8-Puzzle) e a sua generalizao (n2-1)Puzzle (ou jogo dos (n2-1)) so problemas de natureza combinatria.
Esse dois puzzles sero utilizados para ilustrar o projeto de funes heursticas mais
acuradas que permitem encontrar, num tempo razovel, pela primeira, vez a soluo tima
para o cubo mgico e o jogo dos 24 para inmeras instncias desses problemas.
Tambm ser apresentada uma teoria que permite prever o tempo de execuo de uma
heurstica admissvel a partir de uma profundidade soluo e da funo heurstica.
1.2) Cubo Mgico
O cubo mgico um puzzle em forma de cubo. conhecido tambm como cubo de Rubik,
o seu inventor. Inventado em 1974 pelo hngaro Erno Rubik. Vendeu mais de 100 milhes
de exemplares pelo mundo. o puzzle combinatrio mais famoso de todos os tempos.
O problema difcil: o slogan nas embalagens comerciais diz que h bilhes de
combinaes possveis, o que um valor subestimado: H mais de 4.3252x1019 diferentes
configuraes a partir da configurao inicial (o cubo com todas as faces com as mesmas
cores).
Consiste de 27 cubculos que juntos formam um cubo 3x3x3:
Figura 1.1
O objetivo do jogo , partindo de uma configurao vlida qualquer, chegar a uma onde
cada face possua somente uma cor:
Figura 1.2
3
Existem configuraes que so trivialmente invlidas, porm outras no. Isso se deve ao
fato de que todo espao do problema, do ponto de vista combinatorial, estar dividido em 12
sub-grafos isomrficos, onde o seu conjunto de vrtices (estados configuraes possveis)
disjunto para cada sub-grafo dois a dois. Em outras palavras, nenhum movimento legal,
dentro de uma configurao pertencente a um sub-grafo, levaria outra configurao
pertencente a outro sub-grafo. Esse fato anlogo ao que ocorre no jogo dos 15, onde h
dois sub-grafos isomrficos separados.
Pode-se ainda visualizar a existncia de cubos maiores como 5x5x5 e 10x10x10. H o caso
menor: 2x2x2.
Exemplos de cubos NxNxN
2x2x2
3x3x3
4x4x4
5x5x5
Figura 1.3
1.3) Regras de movimentao
Cada movimento pode ser interpretado como uma rotao de elementos cbicos.
Cada rotao, de 90, aplicada em um conjunto de cubculos que estejam no
mesmo plano.
O eixo de rotao sempre perpendicular a uma das faces.
fatorial em N:
Nome Popular
Rubik's Wahn
Rubik's Revenge
Rubik's Cube
Pocket Cube
Nome Popular
Rubik's Wahn
Rubik's Revenge
Rubik's Cube
Pocket Cube
Instncia
5x5x5
4x4x4
3x3x3
2x2x2
Instncia
5x5x5
4x4x4
3x3x3
2x2x2
Acredita-se que qualquer soluo tima para uma dada configurao possa ser encontrada
em, no mximo, 20 movimentos e que a soluo mdia seja de 18 movimentos. Essas so
conjecturas presentes nos trabalhos do professor Richard Korf, que foi o primeiro a
descobrir a primeira tcnica vivel para a busca de solues timas para o Cubo de Rubik.
O mtodo desenvolvido por Korf, usando a tcnica de patterns databases e o algoritmo de
busca IDA*, foi capaz de encontrar a soluo tima para 10 cubos bem embaralhados
(100 movimentos aleatrios de um cubo na configurao objetivo):
Uma em 16 movimentos;
Trs em 17 movimentos;
Seis em 18 movimentos;
A funo heurstica clssica para a famlia do jogo dos 8 a distncia Manhattan. Ela
computada olhando-se cada uma das peas: contando-se o nmero de unidades da grade
entre a sua posio atual e a posio objetivo da pea (mas sempre por movimentos
horizontais e verticais) e, finalmente, somando-se todos esses resultados para todos as peas
do jogo.
5
Essa heurstica um limite inferior no tamanho da soluo tima real, pois cada pedra deve
ser movida a uma distncia menor do que a sua distncia Manhattan e cada movimento
deve mover somente uma nica pedra. Devido a essas caractersticas, a distncia Manhattan
uma heursticas admissveis.
Infelizmente o algoritmo A* no consegue resolver o Jogo dos 15, porque ele armazena
cada n gerado, exaurindo a memria disponvel na maioria dos problemas antes de achar
uma soluo.
O Interactive-Deepening A* (IDA*) uma verso do algoritmo de busca A*, mas com
complexidade de espao linear na profundidade de busca. Assim como o A*, ele garante
achar a soluo tima, se a funo heurstica usada for admissvel. Usando a distncia
Manhattan, ele foi o primeiro algoritmo a encontrar a soluo tima para o jogo dos 15.
Uma mdia 400 milhes de ns por segundo so gerados para cada instncia do problema,
requerendo 6 horas de tempo de execuo em 1985.
Uma explicao para a existncia das funes heursticas que elas computam o custo
exato da soluo para uma verso mais relaxada ou simplificada do problema. Por exemplo,
nos jogos do tipo do Jogo dos 8, se forem ignoradas as restries de que s podemos mover
uma pea para uma posio vazia, teremos um novo problema, onde todas as demais pedras
podem ser movidas para qualquer direo, mesmo que ocorra uma sobreposio. O custo da
soluo tima exatamente da distncia Manhattan de todas as pedras. importante
considerar que uma soluo na instncia inicial do problema tambm uma soluo da
verso simplificada e, portanto, o custo da soluo na verso simplificada um limite
inferior para o custo da soluo tima. A soluo para o problema inicial difcil porque as
pedras interagem entre sim e as restries de movimentaes so grandes, o que no ocorre
com a verso simplificada do problema. A principal desvantagem da heurstica distncia
Manhattan no capturar essas interaes no clculo da funo heurstica para uma
determinada configurao de peas.
2.1) Pattern Databases
O conceito de pattern databases busca capturar algumas das interaes entre as peas
perdidas na distncia Manhattan. Esses bancos de dados seriam usados para calcular uma
estimativa da profundidade da soluo tima: um valor heurstico. O conceito de pattern
databases surgiu atravs dos trabalhos de Culberson e Schaeffer . Por definio, uma
funo no precisa ser definida por uma equao algbrica ou algoritmo, mas sim por um
tipo especial de relao. Algumas funes possuem um domnio finito e, portanto, caso haja
disponibilidade de memria, os valores do seu conjunto-imagem podem ser armazenados
em uma look-up table.
A idia por trs dos pattern databases pr-computar o custo da soluo de alguns
sub-padres de uma determinada configurao e usar esses valores para computar uma
funo heurstica mais acurada.
Os pattern databases podem ser classificados como:
No-Aditivos
Aditivos
Disjuntos
O primeiro tipo de pattern database na literatura foi o no-aditivo. Iremos apresentar cada
um deles atravs dos problemas do jogo das peas deslizantes. Depois, esses conceitos
sero aplicados ao cubo mgico em sees mais a frentes.
7
2.1.1) Pattern Databases No-Aditivos
Jogo dos 24
Jogo dos 15
10 11 12 13 14
10 11
15 16 17 18 19
12 13 14 15
20 21 22 23 24
Figura 2.1
Considere um subconjunto de peas, tal que as sete pedras encontrem-se na coluna mais a
direita e na linha mais abaixo no Jogo dos 15, quando estas esto na configurao soluo.
Esse subconjunto chamado de padro crista (fringe pattern). Suponha que temos agora
uma instancia no-objetivo: o nmero mnimo de movimentos necessrios para mover as
peas da crista para sua posio objetivo, incluindo qualquer outra pea fora da crista, ,
obviamente, um limite inferior no nmero mnimo de movimentaes para se resolver o
problema todo. Esse nmero ento calculado para todas as permutaes possveis das
peas oriundas da crista. Ele depende somente das posies das peas de crista e da posio
sem pea, e as demais peas so consideradas equivalentes para um padro de crista
especfico. Como o nmero total de configuraes possveis 16!/(16-8)!, ou mais
explicitamente 518.918.400, e como um nico byte suficiente para contar o nmero de
movimentaes, teremos ento, em memria, uma tabela com menos de 500 Mb.
Peas do Padro Crista no Jogo dos 15
3
7
11
12
13
14
15
Figura. 2.2
Essa tabela computada em uma nica busca em profundidade, a partir da configurao
objetivo. Nessa busca, as peas fora do padro so equivalentes e um estado identificado
unicamente pela posio das peas do padro crista e da regio sem pea. Na primeira
ocorrncia do padro, o custo armazenando numa entrada da look-up table.
importante lembrar que a construo do pattern database realizada uma nica vez: o
custo da sua construo amortizado na soluo de vrias instncias do problema com o
mesmo objetivo.
3
7
11
12 13 14 15
3
15
12
11
13
7 13
3
7
11
12 13 14 15
12
15
11
3
14
12
11
14
7
13
3
7
11
12 13 14 15
3
15
Figura. 2.3
Uma vez que o banco foi construdo, o algoritmo IDA* utilizado para buscar a soluo
tima para uma instncia do problema. A funo heurstica pode buscar o mximo entre o
valor de uma entrada na tabela (indexado por um padro crista) e a distncia Manhattan
para todas as pedras fora do padro da instncia.
Combinando Mtiplos
Pattern Databases
5 10 14 7
8
15
12 9
9 10 11
2 11 4 13
12 13 14 15
Figura. 2.4
o conjunto peas de cada pattern database deve ser disjunto dois a dois;
cada pattern database pode conter somente o nmero de movimentaes das peas
do conjunto.
Uma regra geral para particionar os conjuntos de peas grupar as peas que estejam
numa mesma regio na configurao objetivo. Dessa forma, aumenta-se a probabilidade
de a funo heurstica captura de interaes entre peas.
10
9 10 11
12 13 15 14
O database das 7-peas vermelhas contm 58 milhes de entradas.
O database das 8-peas azuis contm 519 milhes de entradas.
Figura. 2.5
Uma vez que os databases disjuntos acima foram computados, possvel se construir um
novos databases tomando-se como base a reflexo das parties na diagonal principal do
primeiro database. Ento, uma nova funo heurstica calculada a partir desses dois
conjuntos de parties, como mostrado abaixo:
Reflexo
na
Diagonal
Principal
1 2 3
4 5 6 7
8 9 10 11
12 13 15 14
Particionamento 2
Particionamento 1
OBS:
h1 : heurstica para particionamento 1 computada atravs Database Aditivo 1
h2 : heurstica para particionamento 2 computada atravs Database Aditivo 2
Figura. 2.6
Entretanto, seus valores somente podem ser combinados a partir dos seus valores mximos,
pois os seus conjuntos de peas no so disjuntos.
11
1
6
11
16
21
2
7
12
17
22
3
8
13
18
23
4
9
14
19
24
Figura. 2.7
2.1.3) Databases Pareados
Consideremos agora um database que contenha o nmero de movimentos necessrios para
corretamente posicionar cada par de peas a partir de qualquer posio possvel. Esse valor
conta que as duas peas consideradas no podem ocupar o mesmo lugar no espao. Na
maioria dos casos, o valor em uma entrada desse database ser a soma da distncia
Manhattan, mas em alguns casos a exceder. Por exemplo, se duas peas estiverem na
mesma linha, que tambm a linha objetivo das peas, e ocupando a posio objetivo uma
da outra. Para que as peas possam ser movimentadas para as suas posies objetivos, uma
delas ter que dar passagem a outra para que o nmero de movimentos seja mnimo. Isso
adiciona dois movimentos soma das distncias Manhattan.
Figura. 2.8
12
3 1
3
1
1 3
Figura. 2.9
A esses valores - o nmero de movimentos necessrios para um par de peas ir para a sua
posio correta - so chamados de distncia pareada.
Seja n o nmero de pedras do jogo pedras, o tamanho de tabela construda seria da ordem
de O(n 4). Como nos demais pattern databases, esta tabela computada uma nica vez.
Seja uma tabela com a distncia pareada e uma configurao de peas do jogo, a
computao do valor da funo heurstica no deve somente somar os valores dos pares de
peas que satisfaam a configurao em questo, pois, certamente, a movimentao de uma
determinada pea ser contabilizada mais de uma vez, o que tornar a funo heurstica no
admissvel. Para evitar a perda da admissibilidade da funo heurstica, as n peas so
particionadas em n/2 pares que no se sobreponham. A pergunta que entra em cena : que
pares de peas escolher? O nmero de parties possveis com essa propriedade da ordem
de O(n!/(2n/2(n/2)!)). Na figura abaixo temos calculado o nmero exato de parties para os
diferentes dos jogos de peas deslizantes:
13
JOGO
3
8
15
24
35
48
Nmero de Parties
3,0E+00
1,1E+02
2,0E+06
3,2E+11
1,6E+20
1,2E+30
O ideal escolher os pares que maximizem o valor da funo heurstica. Uma forma de
enxergar o problema criar um grafo onde cada vrtice uma pea e cada aresta uma
aresta com um peso correspondente a distncia pareada. O problema ento se resume em
achar um conjunto de arestas onde duas arestas escolhidas no incidam sobre o mesmo
vrtice e que a soma de seus pesos seja mxima. Esse problema de grafos conhecido
como maximal weighted matching problem, e pode ser resolvido em tempo polinomial
O(n3), onde n o nmero de vrtices.
Esta tcnica apresentada pode ser estendida para triplas de peas ou n-tuplas de maior
ordem. Infelizmente para as triplas, esse problema anlogo ao tree-dimensional matching
problem que NP-completo, assim como os problemas de matching de ordens superiores.
Uma vantagem desse mtodo que ele produz valores heursticos mais acurados e,
portanto, menor gerao de ns, comparado aos databases disjuntos. A razo para isso
que quando duas peas esto localizadas em parties diferentes de um database disjunto,
suas interaes no so capturadas, o que no ocorre em um database pareado. A sua
principal desvantagem o overhead computacional causado pela necessidade da resoluo
de um problema de matching para cada n na busca (ou seja um pequeno problema de
otimizao para cada n onde se deseja calcular o valor da funo heurstica). O que
muito mais custoso do que somar ou comparar valores obtidos de um database para cada
grupo de peas.
14
[Korf 1997]
Cubo Mgico
Cubo de Rubik
Figura. 3.1
Vamos apresentar a primeira tcnica eficaz que obtm solues timas para instncias
aleatrias para o cubo mgico 3x3x3, sendo que a mdia das mesmas aparenta estar em 18
movimentos.
Ela utiliza o algoritmo de busca IDA* com uma funo heurstica baseada em tabelas
armazenadas em memria, tambm conhecidas como pattern databases. Essas tabelas
contm o nmero exato de movimentos requeridos para resolver vrios sub-objetivos do
problema, neste caso, o nmero de movimentos que solucionam subconjuntos de peas do
cubo.
3.1) Cubo Mgico
O problema do cubo mgico 3x3x3 extremamente difcil, dado que existem 4,3252 x 1019
estados diferentes que podem ser atingidos a partir de um determinada configurao. Para
efeito de comparao, o jogo dos 15 possui 1013 estados, e o jogo dos 24 possui 1025
estados.
Para se resolver o cubo mgico, necessita-se de uma estratgia geral, que consiste em um
conjunto de seqncias de movimentos, ou macro-operadores, que corrigem as posies de
peas sem violar as que j esto devidamente posicionadas. Existem algoritmos que acham
uma soluo qualquer para o Cubo Mgico, porm, em geral, elas possuem comprimentos
bem elevados (70 a 150 movimentos em mdia), se comparados os valores previstos pela
conjetura do Professor Richard Korf: qualquer instncia aleatria encontra-se no mximo
a 20 movimentaes da configurao soluo.
15
3.2) O Espao do problema
O primeiro passo traduzir o jogo fsico em um problema simblico para ser manipulado
por um computador. Dos 27 cubos, 26 so visveis, com um no centro. Destes:
Ns
18
243
3,24 x 103
4,325 x 104
5,773 x 105
7,707 x 106
1,029 x 108
1,373 x 109
1,833 x 1010
2,447 x 1011
3,266 x 1012
4,36 x 1013
5,82 x 1014
7,768 x 1015
1,037 x 1017
1,384 x 1018
1,848 x 1019
2,466 x 1020
16
Figura. 3.2
17
O valor esperado desta heurstica de 8,764, comparado com o 5,5 da distncia de
Manhattan. Durante a busca IDA* em cada estado gerado, um ndice nico gerado,
seguido de uma referncia tabela. O nmero de movimentos necessrios para resolver os
cubos dos cantos recuperado, sendo um limite mnimo do nmero de movimentos para
resolver o jogo inteiro.
Pode-se melhorar esta heurstica, considerando-se os cubos das arestas. Nesse caso, os doze
cubos das arestas so divididos em dois grupos de seis cubos. O nmero de combinaes
possveis para cada grupo de (12! / 6!) x 26 = 42.577.920. O nmero de movimentos
necessrios para resolver estes conjuntos varia de zero a dez, com um valor esperado de
cerca de 7,668 movimentos. Utilizando-se quatro bits para cada entrada, esta tabela requer
21.288.960 bytes (~ 20 MB).
Figura. ###
Este database contm 43 milhes de entradas
Figura. 3.3
O total requerido de memria para as trs tabelas de 82 MB, sendo que o tempo para
gerar as tabelas das trs heursticas de cerca de uma hora, sendo este custo amortizado
para vrias consultas com o mesmo estado final.
A nica maneira admissvel de combinar as heursticas do canto e das arestas , aps a
avaliao das mesmas, tomar o valor mximo. Em mdia, este valor de 8,878. Embora
este seja apenas um pouco superior mdia de 8,764 obtida com a avaliao apenas dos
cubos dos cantos, isto resulta em um aumento significativo do desempenho do algoritmo.
3.5) Resultados Experimentais
Foram geradas dez instncias do Cubo Mgico, fazendo-se 100 movimentos randmicos
em cada, partindo-se do estado final. Dado que cada estado gera 18 filhos, e com a
conjectura de que o dimetro do espao de busca no ultrapassa 20 movimentos, acredita-se
que a realizao de 100 movimentos randmicos gera, efetivamente, instncias aleatrias
do problema.
18
Foi utilizado o algoritmo IDA* com a heurstica descrita anteriormente, resolvendo todos
os problemas de maneira tima. Um dos problemas foi resolvido em 16 movimentos, com a
gerao de 3,72 bilhes de ns. Trs foram resolvidos em 17 movimentos e os demais seis
foram resolvidos em 18 movimentos, sendo que, no pior caso, foram gerados 1,02 trilho
de ns.
Isto foi feito em uma mquina Sun Ultra-Sparc Model 1, capaz de processar 700.000 ns
por segundo, em 1997. Foi verificado que, em altas profundidades, o nmero de ns gerado
por iterao bastante estvel para diferentes instncias do problema. Por exemplo, nas seis
iteraes completadas no nvel 17, o nmero de ns gerados variaram apenas de 116 a 127
bilhes de ns.
Buscas completas no nvel 16 requerem uma mdia de 9,5 bilhes de ns, levando menos
de quatro horas. Buscas completas no nvel 17 geram uma mdia de 122 bilhes de ns, e
levam cerca de dois dias. Uma busca completa no nvel 18 dever levar menos de quatro
semanas. O fator de ramificao desta heurstica, que a razo do nmero de ns gerados
em uma iterao, comparado com o nmero de ns gerados na iterao anterior ,
aproximadamente, o fator de ramificao da busca de fora bruta de 13,34847.
3.6) Anlise de Desempenho
O nmero consistente de ns gerados pelo IDA* em uma dada iterao para diferentes
instncias do problema sugere que o desempenho do algoritmo passvel de ser analisado.
A maioria das anlises de buscas com heursticas foi feita apenas com modelos analticos, e
no predisseram o desempenho de problemas reais. A discusso a seguir no uma anlise
formal, mas um conjunto de observaes de regularidades nos dados obtidos.
A maioria das anlises de avaliaes heursticas relacionam o desempenho de um algoritmo
de busca acurcia da heurstica como uma estimativa da distncia exata ao objetivo. Uma
dificuldade desta abordagem a dificuldade de medir a acurcia de uma heurstica, dado
que determinar a distncia exata para o objetivo em um dado problema
computacionalmente difcil para grandes problemas. Por acurcia, entende-se como a
habilidade de selecionar estados que levaro a mais rapidamente ao estado objetivo. A
heurstica mais acurada aquela que sempre seleciona o n que pertence soluo mais
prxima do estado objetivo.
Uma primeira observao que se pode caracterizar a eficcia de uma heurstica admissvel
pelo seu valor esperado sobre o espao do problema. Isto pode ser determinado para um
grau de acurcia exemplificando-se randomicamente o problema, e computando-se a
heurstica para cada estado. Para o cubo mgico, os valores da heurstica foram enumerados
em tabelas e seu valor esperado pode ser computado exatamente como a mdia dos valores
presentes na tabela. Alm disso, o valor esperado do mximo entre duas heursticas pode
ser computado a partir destas tabelas, assumindo que seus valores so independentes, o que
perfeitamente razovel aqui.
19
Se o valor da heurstica de cada estado igual ao seu valor esperado e, ento a busca IDA*
no nvel d seria equivalente a busca em profundidade iterativa para a profundidade d - e,
dado que f = g + h de cada estado seria sua profundidade menos e. Nestes experimentos,
esta heurstica tem um valor esperado de 8,878, que pode ser arredondado para 9. Uma
busca IDA* completa no nvel 17 gera aproximadamente 122 bilhes de ns. Todavia, uma
busca fora bruta para a profundidade 17 - 9 = 8 gera apenas cerca de 1,37 bilhes de ns,
aproximadamente duas ordens de grandeza a menos.
A razo para esta discrepncia que os estados encontrados em uma busca IDA* no so
um exemplo aleatrio do espao do problema. Estados com valores altos da funo
heurstica so podados, e estados com valores baixos da funo heurstica geram mais
filhos na mesma iterao. Assim, a busca desviada em favor dos valores baixos da
heurstica, o que baixa a mdia dos valores da heurstica dos estados encontrados pelo
IDA* provocando uma maior gerao de ns do que o previsto pelo valor esperado da
heurstica.
O prximo passo predizer o valor esperado da heurstica a partir da quantidade de
memria usada e do fator de ramificao b do problema. Em geral, o limite mnimo do
valor esperado de uma heurstica o logaritmo na base b do nmero de estado armazenados
na tabela, dado que com d movimentos, pode-se gerar bd estados. Porm, podero haver
estados duplicados na rvore de busca.
Como outro exemplo, dado que h cerca de 88 milhes de estados distintos de cubinhos dos
cantos, isso sugere que o nmero de movimentos necessrios para resolver o problema
deveria ser cerca de sete. De fato, o nmero mdio de movimentos 8,764. Outra vez, a
razo para a discrepncia que nem todos os ns do nvel sete na rvore correspondem a
estados nicos de cubos dos cantos, requerendo, ento, uma explorao mais profunda para
ger-los em sua totalidade.
Em outras palavras, estimar o valor esperado da heurstica a partir do fator de ramificao
do espao e do nmero de estado fornece um valor muito baixo ou pessimista. Por outro
lado, estimar o nmero de ns gerados pelo IDA* a partir do valor esperado da heurstica
fornece um valor que tambm muito baixo, que otimista. Isto sugere que combinar os
dois, para estimar o nmero de ns gerados pelo IDA* a partir do fator de ramificao do
espao e pelo nmero de estados na tabela heurstica, os dois erros podero ser mutuamente
cancelados.
Formalmente:
20
(d - e)
b (logb ( n ) log b ( m )) = 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 * 1019
m = 173.335.680
n / m = 249.527.409.904
t = 352.656.042.894
21
[Korf 2001]
22
4.2) Resultado Principal
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:
d
0
1
d
b P(d)+b P(d-1)+...b P(0)=
bi P(d-i)
i=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;
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:
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:
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*
o IDA*
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
Manhattam:
28
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
fim
fim
retornar valor;
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
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) * N2
o h2 = (6 - 1) * N2
o h2 = 5N2
H
0
8N
17N - 12N
h'
0
1
7N - 3
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
2
3
4
5
a
0.00669643
0.00120623
0.00041853
0.00019283
b
-0.04464286
0.01271712
0.01785714
0.01728662
Resultados:
Foram feitos testes desta heurstica, comparando-a com o Manhattan Distance. A seguir, os
resultados:
Cubo 2x2x2:
Profundidade
Esperada
Desordem
6
6
7
7
8
A*
Manhattan
IDA*
Desordem
Manhattan
Ns
Gerado
s
Profundidade
Ns Gerados
Profundidade
Ns Gerados
Profundidade
Ns Gerados
Profundidade
1.572
1.080
16.05
6
9.504
9.516
6
6
9
6.252
8.388
19.476
6
6
7
25.005
6.666
956.337
6
6
9
206.853
37.050
810.018
6
6
7
7
8
26.376
129.648
7
8
552.269
1.268.306
7
8
848.357
15.467.342
7
8
Cubo 3x3x3:
Profundidade
Esperada
4
5
5
5
6
Desordem
A*
Manhattan
IDA*
Desordem
Manhattan
Ns
Gerados
Profundidade
Ns Gerados
Profundidade
Ns Gerados
Profundidade
Ns Gerados
Profundidade
756
7.650
3.366
13.860
5.778
4
5
5
7
6
1.710
52.812
2.070
8.190
286.272
4
5
5
5
6
182
39.518
1.865
71.572
1.825
5
8
7
7
8
1.478
102.914
6.707
5.470
325.357
4
5
5
5
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
33
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