Uma ajudinha com o 15-puzzle...
Dê uma lida no site...
http://mathworld.wolfram.com/15Puzzle.html
Tem alguma coisa lá que você pode usar no seu programa.
Até,
Cris
Pessoal,
Lá vai algumas dicas para resolver o 15-puzzle:
Lá vai algumas dicas para resolver o 15-puzzle:
- Defina um estado.
- Dá para representar o tabuleiro em um unsigned long long. (Pense!)
- Os movimentos necessários também podem ser representados com dois unsigned long long (Pense mais um pouco!)
- Memorize os estados.
- Como seu estado é um unsigned long long é fácil gerar uma função de hash. <http://www.ime.usp.br/~pf/mac0122-2002/aulas/hashing.html>
- Busca por prioriadade.
- Definia uma função de custo para os estados. Use algo do tipo: Nível + Distância Manhattan <http://en.wikipedia.org/wiki/Taxicab_geometry>
- Escreva uma fila de prioridade <http://www.ime.usp.br/~pf/mac0122-2002/aulas/heapsort.html>.
- TOME CUIDADO NA HORA DE IMPRIMIR A SAÍDA
Fiz tudo isso, mas o problema é falta de memória.
Vc limitou a quantidade de caras no hash?
E quando vai colocar alguem no heap, mas o heap tah cheio, vc joga fora o ultimo elemento?
meu struct é só tres unsigned long long, não vejo de onde mais tirar...
Vc limitou a quantidade de caras no hash?
E quando vai colocar alguem no heap, mas o heap tah cheio, vc joga fora o ultimo elemento?
meu struct é só tres unsigned long long, não vejo de onde mais tirar...
Estou trabalhando com 60000 nos na fila de prioridade, e 60000 elementos no HASH.
Manda seu código para o meu e-mail.