74 void TesteEmpirico(
int inicio = -1,
int fim = -1,
bool mostrarSolucoes =
true);
EParametrosAdversa
Identifica um parâmetro específico no código.
@ podaHeuristica
permite cortar sucessores, mas calcula a heurística a todos, de modo a mantendo os melhores
@ parametrosAdversas
marcador para permitir a extensão do enum em subclasses.
@ podaCega
corta os sucessores, mesmo sem calcular a heurística, por ordem aleatória
@ ordenarSucessores
opção de ordenar sucessores por heurística, ou por último valor registado
struct SValorEstado TValorEstado
registo do valor de um estado, em procuras anteriores
ETipoValor
tipo de valor resultante do minimax com cortes alfa/beta
@ upperbound
o valor foi afetado por um corte de alfa (ou seja, ele é no máximo esse valor, mas pode ser menor).
@ exato
o valor foi calculado sem cortes, ou seja, não sofreu influência de alfa ou beta;
@ lowerbound
o valor foi afetado por um corte de beta (ou seja, ele é pelo menos esse valor, mas pode ser maior);
@ parametrosConstrutivas
Marcador para permitir a extensão do enum em subclasses.
#define 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
int MaiorAmeaca(TVector< int > &qMin, TVector< int > &qMax, int maxAmeaca)
Utilitário para calculo de uma heurística standard em jogos simples.
void OrdenarSucessores(TVector< TNo > &sucessores, TVector< int > &id, int nivel)
int MiniMax(int nivel=4)
retorna o valor do estado actual, apos procura de profundidade nivel
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]
void TesteEmpirico(int inicio=-1, int fim=-1, bool mostrarSolucoes=true)
Executa testes empíricos, em todas as configurações guardadas, nas instâncias selecionadas.
int ExecutaAlgoritmo()
Executa o algoritmo com os parametros atuais.
Representa um estado no espaço de estados.
registo do valor de um estado, em procuras anteriores