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*)objeto)->puzzle;
27 zero = ((CPuzzle8*)objeto)->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
42 void Codifica(TBits &estado);
43
44private:
45 void Trocar(int a, int b) {
46 if (puzzle[a] == 0) {
47 puzzle[a] = puzzle[b];
48 puzzle[b] = 0;
49 zero = b;
50 }
51 else {
52 puzzle[a] = puzzle[b];
53 puzzle[b] = 0;
54 zero = b;
55 }
56 }
57};
58
59/* Testes nas procuras cegas (instâncias 40 a 49)
60
61 ID |conf| custo(g) | expansões | gerações | avaliações | tempo(s) |
62----|----|----------|------------|-----------|------------|----------|
63Total 1 | 135 | 37353 | 63602 | 0 | 0,046s | 10
64Total 2 | 135 | 10479715 | 29654461 | 0 | 12,209s | 10
65Total 3 | 135 | 16213162 | 45867646 | 0 | 12,987s | 10
66Total 4 | 135 | 87998 | 151568 | 0 | 0,079s | 10
67Total 5 | 135 | 71137 | 116772 | 0 | 0,931s | 10
68Torneio (#instâncias melhores):
69 |-01-|-02-|-03-|-04-|-05-|
70 1 | 8 | 8 | 0 | 4 | 20
71 |----|----|----|----|----|
72 2 -8 | | 4 | -8 | -7 |-19
73 |----|----|----|----|----|
74 3 -8 | -4 | | -8 | -8 |-28
75 |----|----|----|----|----|
76 4 0 | 8 | 8 | | 3 | 19
77 |----|----|----|----|----|
78 5 -4 | 7 | 8 | -3 | | 8
79 |----|----|----|----|----|
80Configuração 1
81P1(Algoritmo): Largura Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
82P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ascendentes | P8(pesoAStar): 100
83P9(ruido): 0 | P10(baralhar): 0
84Configuração 2
85P1(Algoritmo): Largura Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
86P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ignorar | P8(pesoAStar): 100
87P9(ruido): 0 | P10(baralhar): 0
88Configuração 3
89P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
90P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ignorar | P8(pesoAStar): 100
91P9(ruido): 0 | P10(baralhar): 0
92Configuração 4
93P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
94P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): ascendentes | P8(pesoAStar): 100
95P9(ruido): 0 | P10(baralhar): 0
96Configuração 5
97P1(Algoritmo): Profundidade Primeiro | P2(Debug): nada | P3(Ver): 4 | P4(Seed): 1
98P5(Tempo): 10 | P6(Limite): 0 | P7(Repetidos): gerados | P8(pesoAStar): 100
99P9(ruido): 0 | P10(baralhar): 0
100
101*/
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 é objetivo (é 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
void Copiar(TProcuraConstrutiva *objeto)
Definition Puzzle8.h:25
TVector< int > puzzle
Definition Puzzle8.h:19
bool Distinto(TProcuraConstrutiva *estado)
Definition Puzzle8.cpp:193
void Inicializar(void)
Coloca o objeto 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 objeto que é uma cópia deste.
Definition Puzzle8.cpp:13
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