TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
Loading...
Searching...
No Matches
Puzzle8.h
Go to the documentation of this file.
1#pragma once
2#include "../TProcuraConstrutiva.h"
3
11class CPuzzle8 :
13{
14public:
15 CPuzzle8(void);
16 ~CPuzzle8(void);
17
18 // puzzle-8, posição de cada número
20 // posição do zero (espaço vazio)
21 int zero;
22
23 // Métodos virtuais redefinidos
26 puzzle = ((CPuzzle8*)objecto)->puzzle;
27 zero = ((CPuzzle8*)objecto)->zero;
28 }
29 void Inicializar(void);
31 bool SolucaoCompleta(void);
32 void Debug(void);
33 void MostrarSolucao(void);
34 const char* Acao(TProcuraConstrutiva* sucessor);
35 void ResetParametros();
36
37 int Heuristica(void);
38
39 bool Distinto(TProcuraConstrutiva* estado);
41
42private:
43 void Trocar(int a, int b) {
44 if (puzzle[a] == 0) {
45 puzzle[a] = puzzle[b];
46 puzzle[b] = 0;
47 zero = b;
48 }
49 else {
50 puzzle[a] = puzzle[b];
51 puzzle[b] = 0;
52 zero = b;
53 }
54 }
55};
56
57/* Testes nas procuras cegas (instâncias 40 a 49)
58
59 ID |conf| custo(g) | expansões | gerações | avaliações | tempo(s) |
60----|----|----------|------------|-----------|------------|----------|
61Total 1 | 135 | 37353 | 63602 | 0 | 0,046s | 10
62Total 2 | 135 | 10479715 | 29654461 | 0 | 12,209s | 10
63Total 3 | 135 | 16213162 | 45867646 | 0 | 12,987s | 10
64Total 4 | 135 | 87998 | 151568 | 0 | 0,079s | 10
65Total 5 | 135 | 71137 | 116772 | 0 | 0,931s | 10
66Torneio (#instâncias melhores):
67 |-01-|-02-|-03-|-04-|-05-|
68 1 | 8 | 8 | 0 | 4 | 20
69 |----|----|----|----|----|
70 2 -8 | | 4 | -8 | -7 |-19
71 |----|----|----|----|----|
72 3 -8 | -4 | | -8 | -8 |-28
73 |----|----|----|----|----|
74 4 0 | 8 | 8 | | 3 | 19
75 |----|----|----|----|----|
76 5 -4 | 7 | 8 | -3 | | 8
77 |----|----|----|----|----|
78Configuração 1
79P1(Algoritmo): Largura Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
80P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ascendentes | P8(pesoAStar): 100
81P9(ruido): 0 | P10(baralhar): 0
82Configuração 2
83P1(Algoritmo): Largura Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
84P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ignorar | P8(pesoAStar): 100
85P9(ruido): 0 | P10(baralhar): 0
86Configuração 3
87P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
88P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ignorar | P8(pesoAStar): 100
89P9(ruido): 0 | P10(baralhar): 0
90Configuração 4
91P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
92P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ascendentes | P8(pesoAStar): 100
93P9(ruido): 0 | P10(baralhar): 0
94Configuração 5
95P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
96P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): gerados | P8(pesoAStar): 100
97P9(ruido): 0 | P10(baralhar): 0
98
99*/
#define OBJETO_HASHTABLE
Representa um estado do puzzle 8.
Definition Puzzle8.h:13
~CPuzzle8(void)
Definition Puzzle8.cpp:9
int zero
Definition Puzzle8.h:21
bool SolucaoCompleta(void)
Verifica se o estado actual é objectivo (é uma solução completa)
Definition Puzzle8.cpp:65
void MostrarSolucao(void)
definir para visualizar a solução
Definition Puzzle8.cpp:114
int Heuristica(void)
Função para calcular quanto falta para o final, o valor da heurística.
Definition Puzzle8.cpp:73
void Codifica(uint64_t estado[OBJETO_HASHTABLE])
Codifica o estado para um vetor de inteiros de 64 bits.
Definition Puzzle8.cpp:180
void Sucessores(TVector< TNo > &sucessores)
Coloca em sucessores a lista de estados sucessores.
Definition Puzzle8.cpp:46
const char * Acao(TProcuraConstrutiva *sucessor)
Definition Puzzle8.cpp:89
TVector< int > puzzle
Definition Puzzle8.h:19
void Debug(void)
Mostra o estado no ecrã, para debug.
Definition Puzzle8.cpp:102
bool Distinto(TProcuraConstrutiva *estado)
Definition Puzzle8.cpp:169
void Inicializar(void)
Coloca o objecto no estado inicial da procura.
Definition Puzzle8.cpp:23
void ResetParametros()
Inicializa os parametros, indicadores e instâncias.
Definition Puzzle8.cpp:160
TProcuraConstrutiva * Duplicar(void)
Cria um objecto que é uma cópia deste.
Definition Puzzle8.cpp:13
void Copiar(TProcuraConstrutiva *objecto)
Definition Puzzle8.h:25
CPuzzle8(void)
Definition Puzzle8.cpp:5
Representa um estado no espaço de estados.
static int resultado
Resultado retornado pelo algoritmo na última execução.
Definition TProcura.h:459