TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
Loading...
Searching...
No Matches
Particao.h
Go to the documentation of this file.
1#pragma once
2
3#include "../TProcuraMelhorativa.h"
4#include "../TCodificacaoBinaria.h"
5
7// CParticao class
9// Author: José Coelho
10// Last revision: 2025-01-30
11// Description:
12// Implementa o problema da particao. Este problema consiste em dividir
13// um conjunto de numeros naturais em duas partes cuja soma dos numeros em cada
14// parte seja igual.
16class CParticao :
18{
19public:
20 CParticao(void);
22
23 // estrutura de dados (números a colocar, números colocados em cada lado, e total de cada lado)
26 TVector<bool> solCompleta; // codificação de uma solução, na abordagem melhoriativa: vetor binário
27 // na abordagem melhorativa, assume-se que os números estão em "numeros" e não são deslocados para esquerd/direita
28
29 // Metodos virtuais redefinidos
32 if (clone != NULL)
33 clone->Copiar(this);
34 else
35 memoriaEsgotada = true;
36 return clone;
37 }
38
41 numeros = ((CParticao*)objecto)->numeros;
42 esquerda = ((CParticao*)objecto)->esquerda;
43 direita = ((CParticao*)objecto)->direita;
44 totalEsquerda = ((CParticao*)objecto)->totalEsquerda;
45 totalDireita = ((CParticao*)objecto)->totalDireita;
46 solCompleta = ((CParticao*)objecto)->solCompleta;
47 }
48 void Inicializar(void);
49 void Debug(bool completo = true) override;
50 void MostrarSolucao(void) { Debug(); }
51 void TesteManual(const char* nome);
52
53 // métodos melhorativos
54 void NovaSolucao(void);
55 int Avaliar(void);
57 void Mutar(void);
58 void Cruzamento(TPonto a, TPonto b);
59 int Distancia(TPonto a);
60};
61
64{
65public:
68
69 // dados da instância, em variáveis estáticas
70 static TVector<int> numeros; // número de elementos a particionar
71
72 int Avaliar(void);
73
76 instancia = { NULL, 10,2,1000, NULL, NULL };
77 }
78
81 if (clone != NULL)
82 clone->Copiar(this);
83 else
84 memoriaEsgotada = true;
85 return clone;
86 }
87 void Inicializar(void);
88 void Debug(bool completo) override;
89};
int Avaliar(void)
Definition Particao.cpp:195
static TVector< int > numeros
Definition Particao.h:70
void ResetParametros()
Inicializa os parametros, indicadores e instâncias.
Definition Particao.h:74
void Inicializar(void)
Coloca o objecto no estado inicial da procura.
Definition Particao.cpp:168
void Debug(bool completo) override
Mostra o estado no ecrã, para debug.
Definition Particao.cpp:208
TPonto Duplicar(void)
Cria um objecto que é uma cópia deste.
Definition Particao.h:79
Representa um estado do problema da partição.
Definition Particao.h:13
TVector< bool > solCompleta
Definition Particao.h:26
TPonto Duplicar(void)
Cria um objecto que é uma cópia deste.
Definition Particao.h:30
void Mutar(void)
Definition Particao.cpp:143
~CParticao(void)
int Distancia(TPonto a)
Definition Particao.cpp:160
void Copiar(TProcuraConstrutiva *objecto)
Definition Particao.h:24
int Avaliar(void)
Definition Particao.cpp:122
void Copiar(TPonto objecto)
Fica com uma cópia do objecto.
Definition Particao.h:39
void Vizinhanca(TVector< TPonto > &vizinhos)
Definition Particao.cpp:133
TVector< int > direita
Definition Particao.h:19
TVector< int > esquerda
Definition Particao.h:19
void Cruzamento(TPonto a, TPonto b)
Definition Particao.cpp:150
TVector< int > numeros
Definition Particao.h:19
void NovaSolucao(void)
Definition Particao.cpp:115
int totalDireita
Definition Particao.h:20
void Inicializar(void)
Coloca o objecto no estado inicial da procura.
void MostrarSolucao(void)
definir para visualizar a solução
Definition Particao.h:50
void TesteManual(const char *nome)
Inicializa a interação com o utilizador.
Definition Particao.cpp:108
void Debug(bool completo=true) override
Mostra o estado no ecrã, para debug.
int totalEsquerda
Definition Particao.h:20
CParticao(void)
void ResetParametros()
Inicializa os parametros, indicadores e instâncias.
void Copiar(TPonto objecto)
Fica com uma cópia do objecto.
virtual void Copiar(TPonto objecto)
Fica com uma cópia do objecto.
static bool memoriaEsgotada
Flag indicando problemas de memória esgotada.
Definition TProcura.h:501
static int resultado
Resultado retornado pelo algoritmo na última execução.
Definition TProcura.h:493
static TParametro instancia
ID da instância atual, a ser utilizado em SolucaoVazia().
Definition TProcura.h:24