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);
30 void Gravar(void);
32 bool SolucaoCompleta(void);
33 void Debug(bool completo = true) override;
34 void MostrarSolucao(void);
36 void ResetParametros();
37
38 int Heuristica(void);
39
40 bool Distinto(TProcuraConstrutiva* estado);
41 void Codifica(TBits &estado);
42
43private:
44 void Trocar(int a, int b) {
45 if (puzzle[a] == 0) {
46 puzzle[a] = puzzle[b];
47 puzzle[b] = 0;
48 zero = b;
49 }
50 else {
51 puzzle[a] = puzzle[b];
52 puzzle[b] = 0;
53 zero = b;
54 }
55 }
56};
57
58/* Testes nas procuras cegas (instâncias 40 a 49)
59
60 ID |conf| custo(g) | expansões | gerações | avaliações | tempo(s) |
61----|----|----------|------------|-----------|------------|----------|
62Total 1 | 135 | 37353 | 63602 | 0 | 0,046s | 10
63Total 2 | 135 | 10479715 | 29654461 | 0 | 12,209s | 10
64Total 3 | 135 | 16213162 | 45867646 | 0 | 12,987s | 10
65Total 4 | 135 | 87998 | 151568 | 0 | 0,079s | 10
66Total 5 | 135 | 71137 | 116772 | 0 | 0,931s | 10
67Torneio (#instâncias melhores):
68 |-01-|-02-|-03-|-04-|-05-|
69 1 | 8 | 8 | 0 | 4 | 20
70 |----|----|----|----|----|
71 2 -8 | | 4 | -8 | -7 |-19
72 |----|----|----|----|----|
73 3 -8 | -4 | | -8 | -8 |-28
74 |----|----|----|----|----|
75 4 0 | 8 | 8 | | 3 | 19
76 |----|----|----|----|----|
77 5 -4 | 7 | 8 | -3 | | 8
78 |----|----|----|----|----|
79Configuração 1
80P1(Algoritmo): Largura Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
81P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ascendentes | P8(pesoAStar): 100
82P9(ruido): 0 | P10(baralhar): 0
83Configuração 2
84P1(Algoritmo): Largura Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
85P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ignorar | P8(pesoAStar): 100
86P9(ruido): 0 | P10(baralhar): 0
87Configuração 3
88P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
89P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ignorar | P8(pesoAStar): 100
90P9(ruido): 0 | P10(baralhar): 0
91Configuração 4
92P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
93P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ascendentes | P8(pesoAStar): 100
94P9(ruido): 0 | P10(baralhar): 0
95Configuração 5
96P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
97P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): gerados | P8(pesoAStar): 100
98P9(ruido): 0 | P10(baralhar): 0
99
100*/
Representa um estado do puzzle 8.
Definition Puzzle8.h:13
~CPuzzle8(void)
Definition Puzzle8.cpp:9
void Codifica(TBits &estado)
Codifica o estado para um vetor de inteiros de 64 bits.
Definition Puzzle8.cpp:204
int zero
Definition Puzzle8.h:21
TString Acao(TProcuraConstrutiva *sucessor)
Definition Puzzle8.cpp:113
void Gravar(void)
Definition Puzzle8.cpp:63
bool SolucaoCompleta(void)
Verifica se o estado actual é objectivo (é uma solução completa)
Definition Puzzle8.cpp:90
void MostrarSolucao(void)
definir para visualizar a solução
Definition Puzzle8.cpp:138
int Heuristica(void)
Função para calcular quanto falta para o final, o valor da heurística.
Definition Puzzle8.cpp:98
void Sucessores(TVector< TNo > &sucessores)
Coloca em sucessores a lista de estados sucessores.
Definition Puzzle8.cpp:71
TVector< int > puzzle
Definition Puzzle8.h:19
bool Distinto(TProcuraConstrutiva *estado)
Definition Puzzle8.cpp:193
void Inicializar(void)
Coloca o objecto no estado inicial da procura.
Definition Puzzle8.cpp:23
void Debug(bool completo=true) override
Mostra o estado no ecrã, para debug.
Definition Puzzle8.cpp:126
void ResetParametros()
Inicializa os parâmetros, indicadores e instâncias.
Definition Puzzle8.cpp:184
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:575