Sie sind auf Seite 1von 34

Heursticas para o Cubo Mgico

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.

Nmero de configuraes possveis

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

Nmero de configuraes possveis


2.8 x 1074
7.4 x 1045
4.3 x 1019
3.6 x 106
Branching factor sem refinamentos
30
24
18
12

1.4) O Cubo de Rubik como um Problema Computacional


O Cubo de Rubik considerado no campo da I.A. como um toy benchmark. Ele usado
para testar a eficincia de novas tcnicas, possuindo caractersticas que so um teste de
fogo:

Um espao de busca gigantesco;


Cada movimento envolve mais de uma pea o que no o corre na famlia do
jogo dos 8, que tambm uma famlia de toy benchmarks em IA;

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;

1.5) Algoritmos de Busca


Em especial, nos deteremos no algoritmo IDA*, que a verso de espao linear do
algoritmo A*. Esses dois algoritmos se valem de uma funo heurstica h(n) que
estima o custo real de se alcanar uma soluo a partir de uma determinada configurao.
Se h(n) admissvel ento ela no superestima o custo real e, assim, esses algoritmos
sempre retornam a soluo tima, caso ela exista.
NxN Jogo dos N2-1
3x3 Jogo dos 8
4x4 Jogo dos 15
5x5 Jogo dos 24

Ordem do Nmero de Estados


105
1013
1025

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.

2) Projeto de Funes Heursticas com Patterns Databases

[Korf 2000] [KorfFel2000]

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.

Interaes Mais Complexas Entre


Peas
14 7

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

Distncia Manhattan: 19 movs


Necessrios: 31movs

Distncia Manhattan: 20 movs


Necessrios: 28 movs

Distncia Manhattan: 17 movs


Necessrios: 27 movs

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

31 movs necessrios para resolver as peas vermelhas


22 movs necessrios para resolver as peas azuis
Heurstica Final: mximo(31, 22) movs = 31 movs

Figura. 2.4

importante lembrar que no h impedimento em se ter outros pattern databases para o


clculo da funo heurstica, como, por exemplo, o mximo de um conjunto de pattern
databases, pois o prprio pattern database uma funo heurstica admissvel.
Infelizmente no permitido somar os valores da funo heurstica, pois corre-se o risco de
contabilizar a movimentao de uma pedra mais de uma vez. Uma forma de impedir esse
problema e melhorar a performance dos pattern databases ser vista a seguir.
2.1.2) Pattern Databases Disjuntos
Uma forma para se tentar encontrar uma funo heurstica que combine o resultado de dois
ou mais pattern databases sem superestimar o valor da funo heurstica, pode ser
somando-se o valor das entradas dois pattern databases distintos, porm para esse
procedimento resultar em uma funo admissvel, duas condies so necessrias:

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.

Um exemplo trivial de pattern database disjunto (ou database disjunto) a distncia


Manhattan. Cada distncia Manhattan de uma pea pode ser vista como a soma de um
conjunto individual de valores pattern databases, onde cada conjunto contm exatamente
uma pea.
Um exemplo no trivial de database disjunto dividir o Jogo dos 15 em duas metades
horizontais num grupo de sete peas na parte de acima e oito peas na parte de baixo,
assumindo que a posio sem pea fique no canto alto esquerdo para o estado objetivo.
O nmero de movimentos necessrios para resolver cada pea em cada padro a partir de
todas as combinaes possveis so pr-computados, mas apenas contando a movimentao
das pedras pertencentes ao padro. Ao invs de explicitar a posio sem pedra,
armazenado o mnimo possvel para todas as localizaes possveis da posio sem pea.
O database para o padro das oito peas contm 16!/(16-8)! = 518.918.400 entradas. Para o
das sete peas contm 16!/(16-7)! = 57.657.600 entradas. Como so necessrios 4 bits para
armazenar o nmero mximo de movimentos para cada padro, 495Mb e 55 Mb de
memria sero necessrios, respectivamente, para armazenar cada tabela.

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

Exemplo Databases Aditivos - 1


1

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:

Exemplo Databases Aditivos - 2


1 2 3
4 5 6 7
8 9 10 11
12 13 15 14

Reflexo
na
Diagonal
Principal

1 2 3
4 5 6 7
8 9 10 11
12 13 15 14
Particionamento 2

Particionamento 1

Heurstica Final = Mximo(h1(P), h2 (P))

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

Exemplo Databases Aditivos - 3


5
10
15
20

1
6
11
16
21

2
7
12
17
22

3
8
13
18
23

4
9
14
19
24

Partionamento para o Jogo dos 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

Exemplo: Conflito Linear


3

Distncia Manhattan 2+2 = 4 movs


Heurstica com Conflito Linear 2+2+2 = 6 movs

Exemplo de Dinmica do Conflito Linear

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

3) Pattern Databases Aplicado ao Cubo Mgico

[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:

Os seis cubos, um em cada centro de cada face rodam, mas no se movem,


formando uma referncia fixa, impedindo rotaes do cubo inteiro.
Oito cubos esto nos cantos, cada um com trs faces visveis.
Doze cubos esto nas arestas, cada um com duas faces visveis.

A prxima questo definir os operadores primitivos. Embora, a princpio, as rotaes de


todas as fileiras de cubos, em qualquer sentido sejam vlidas, muitas destas so
redundantes. Por exemplo, se uma determinada fileira de cubos for movida em uma direo
e, em seguida, a mesma fileira for movida no sentido oposto, teremos a configurao
anterior de volta. Tomando-se o cuidado de evitar estes movimentos redundantes, pode-se
reduzir o fator mdio de ramificao do Cubo Mgico de 18 para 13,34847.
3.3) Uma primeira abordagem
Para se encontrar solues timas, necessrio um algoritmo admissvel de busca.
Algoritmos com complexidade exponencial de espao, como A* so impraticveis em
problemas grandes. O mais apropriado o uso do IDA*, que executa ma busca em
profundidade que por solues com custos cada vez mais elevados, utilizando uma
heurstica para podar ns que ultrapassem o custo limite da iterao corrente.
Profundidade
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

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

Ento, precisa-se de uma funo heurstica. A heurstica bvia a verso tridimensional da


distncia de Manhattan. Porm, aps a mesma ser corrigida, para tornar-se admissvel, o
valor esperado da mesma de 5,5, o que d uma medida de sua eficcia, como ser visto
posteriormente.
O algortmo IDA*, executado em uma mquina Sun Ultra-Sparc Modelo 1, com esta
heurstica, pode procurar no nvel 14 em cerca de trs dias, mas resolver instncias do
problema no nvel 18 levaria mais de 250 anos. Precisa-se de uma heurstica melhor.
3.4) Pattern Databases
Enquanto normalmente pensamos em uma heurstica como uma funo computada por um
algoritmo, esta mesma funo pode ser armazenada em uma tabela, se houver memria
suficiente. De fato, por razes de eficincia, funes heursticas so geralmente prcomputadas e armazenadas em memria. Por exemplo, a distncia de Manhattan acima
pode ser computada com a ajuda de uma pequena tabela que contm as distncias de
Manhattan de cada pea individual para todas suas possveis posies e orientaes.
Se considerarmos apenas os oito cubos do canto, a posio e orientao da ltima pea
podem ser determinadas pelas demais sete, existindo portanto 8! x 37 = 88.179.840
combinaes possveis. Usando uma busca em largura a partir do objetivo, possvel
enumerar estes estados e armazenar em uma tabela o nmero de movimentos requeridos
para resolver cada combinao de cubos nos cantos. Como estes valores vo de 0 a 11, so
necessrios quatro bits para cada entrada. Assim, esta tabela necessita de 44.089.920 bytes,
ou 42 MB.

Pattern Database para os 8 Cubinhos


do Cantos

Este database contm 88 milhes de entradas

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).

Database para 6 Cubinhos


das Arestas

Database para 6 Cubinhos


Restantes das Arestas

Figura. ###
Este database contm 43 milhes de entradas

Este database tambm 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:

Seja n o nmero de estados no espao do problema,


Seja b o fator de ramificao do espao,
Seja d o comprimento mdio da soluo tima para uma instncia aleatria do
problema,
Seja m o total de memria utilizada, em termos de nmeros de valores de heurstica
armazenados, e
Seja t o tempo de execuo do IDA*, em termos de ns gerados.

20

O comprimento mdio d da soluo tima, que a profundidade qual o IDA* dever


buscar, pode ser estimada por logb(n). Como argumentado anteriormente e ~ logb(m) e t ~
b (d - e). Assim:
t~ b

(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

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

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

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.

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*

o IDA*

Heurstica Peas fora do lugar


Heurstica Manhathan
Heurstica Desordem do Cubo (experimental)
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

fim
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);

retornar valor;

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) * N2
o h2 = (6 - 1) * N2
o h2 = 5N2

Juntando-se os dois resultados:

o h = h1 + h2 = (12N2 12N) + 5N2


o h = 17N2 - 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
0
8N
17N - 12N

h'
0
1
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
(289N4 - 408N3 + 144N2)a + (17N2 - 12N)b = 7N - 3
Resolvendo-se este conjunto de equaes, obtivemos:
a = (39 * N - 12) / (2312 * N4 - 4352 * N3 + 1920 * N2)
b = (289 * N2 - 856 * N + 336) / (2312 * N3 - 4352 * N2 + 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
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

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

Das könnte Ihnen auch gefallen