2#include "../Construtiva/TProcuraConstrutiva.h"
EParametrosAdversa
Identifica um parâmetro especÃfico no código.
@ PARAMETROS_ADVERSA
marcador para permitir a extensão do enum em subclasses.
@ PODA_HEURISTICA
permite cortar sucessores, mas calcula a heurÃstica a todos, de modo a mantendo os melhores
@ ORDENAR_SUCESSORES
opção de ordenar sucessores por heurÃstica, ou por último valor registado
@ PODA_CEGA
corta os sucessores, mesmo sem calcular a heurÃstica, por ordem aleatória
struct SValorEstado TValorEstado
registo do valor de um estado, em procuras anteriores
ETipoValor
tipo de valor resultante do minimax com cortes alfa/beta
@ EXATO
o valor foi calculado sem cortes, ou seja, não sofreu influência de alfa ou beta;
@ LOWER_BOUND
o valor foi afetado por um corte de beta (ou seja, ele é pelo menos esse valor, mas pode ser maior);
@ UPPER_BOUND
o valor foi afetado por um corte de alfa (ou seja, ele é no máximo esse valor, mas pode ser menor).
@ PARAMETROS_CONSTRUTIVA
Marcador para permitir a extensão do enum em subclasses.
constexpr int TAMANHO_HASHTABLE
Representa um estado no espaço de estados.
int NoFolha(bool nivel)
fim da procura, por corte de nÃvel (ou não haver sucessores), retornar heurÃstica
void OrdenarSucessores(TVector< TNo > &sucessores, TVector< int > &id, int nivel)
void TesteEmpirico(TVector< int > instancias, bool mostrarSolucoes=true, char *ficheiro=NULL)
int MiniMax(int nivel=4)
retorna o valor do estado actual, apos procura de profundidade nivel
void RelatorioCSV(TVector< TVector< int > > &torneio, FILE *f)
Gera um relatório CSV com os resultados.
int MaiorAmeaca(TVector< int > &qMin, TVector< int > &qMax, int maxAmeaca) const
Utilitário para calculo de uma heurÃstica standard em jogos simples.
static bool completo
controlo para indicar se a procura foi realizada de forma completa (c.c. foi cortada)
bool minimizar
o jogador actual deve minimizar o custo (ou maximizar caso tenha o valor falso)
int Heuristica(void)
chamar após calcular a heurÃstica (grava o valor, dependendo da parametrização)
int MetodoIterativo(int alfaBeta)
iteração, aumentando o nÃvel progressivamente
bool CorteAlfaBeta(int valor, int &alfa, int &beta)
verifica se há um corte alfa/beta, atualizando alfa e beta
bool ValorEstado(TValorEstado &valor, int operacao)
ler ou gravar o melhor valor conhecido
bool ExisteHeuritica(void)
void ResetParametros()
Método para inicializar os parâmetros (redefinir se forem adicionados parâmetros especÃficos)
void SubstituirHT(int indice)
static int reutilizadoAvaliacao
bool Utilizavel(TValorEstado &valor, int nivel, int alfa, int beta)
ver se o valor obtido é utilizável no contexto atual
static int infinito
valor de infinito (vitoria/derrota), omissao 1000
static int nivelOK
profundidade máxima no método iterativo
int MiniMaxAlfaBeta(int nivel=4, int alfa=-infinito, int beta=+infinito)
retorna o valor do estado actual, apos procura de profundidade nivel. Idêntico a MiniMax
static TValorEstado valorHT[TAMANHO_HASHTABLE]
int ExecutaAlgoritmo()
Executa o algoritmo com os parametros atuais.
Representa um estado no espaço de estados.
static int resultado
Resultado retornado pelo algoritmo na última execução.
registo do valor de um estado, em procuras anteriores