TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
|
Functions | |
virtual const char * | TProcuraConstrutiva::Acao (TNo sucessor) |
Retorna a ação (movimento, passo, jogada, lance, etc.) que gerou o sucessor. | |
virtual void | TProcuraConstrutiva::Codifica (uint64_t estado[OBJETO_HASHTABLE]) |
Codifica o estado para um vetor de inteiros de 64 bits. | |
virtual int | TProcuraConstrutiva::Heuristica (void) |
Função para calcular quanto falta para o final, o valor da heurÃstica. | |
Métodos de redefinição aconselhados a uma boa implementação
Retorna a ação (movimento, passo, jogada, lance, etc.) que gerou o sucessor.
sucessor | - estado filho deste, cuja ação deve ser identificada |
Este método não é crÃtico, mas é importante para se poder visualizar ações. Se este método não for redefinido, a interface mostrará apenas os estados completos, sem detalhar as ações que os geraram.
Durante a exploração manual do espaço de estados, permitir que ações sejam fornecidas diretamente, ao invés de depender do ID do sucessor, facilita testes e integração com outros sistemas. Esta situação é vantajosa, para permitir introduzir uma sequência de ações, que eventualmente venha de outro programa, permitindo assim a validação da solução.
Reimplemented in CJogoEmLinha.
Definition at line 350 of file TProcuraConstrutiva.h.
Codifica o estado para um vetor de inteiros de 64 bits.
As variáveis de estado devem ser compactadas no vetor de inteiros de 64 bits. Todos os estados codificados têm de ser distintos de 0. Estados distintos, têm de ficar com codificações distintas.
Em diversos problemas, um mesmo estado pode ter múltiplas representações equivalentes. Por exemplo, se um conjunto de inteiros for um estado, este pode ser representado em vetor. No entanto a ordem é irrelevante, dado que é um conjunto. Assim não faz sentido guardar vários estados que sejam representações do mesmo estado. Há que normalizar o estado antes de o guardar, de modo a que seja dado como estado repetido, se uma das duas formas já tiver sido gerada. O exemplo do conjunto de inteiros, a normalização pode ser a ordenação do vetor, constituindo assim um estado único entre todas as formas que o conjunto pode ser representado em vetor. Problemas de tabuleiro, há simetrias que podem gerar várias versões da mesma posição.
Sucessores()
. Reimplemented in CJogoDoGalo, CJogoEmLinha, CAspirador, COitoDamas, CParticao, CProblemaArtificial, and CPuzzle8.
Definition at line 918 of file TProcuraConstrutiva.cpp.
Função para calcular quanto falta para o final, o valor da heurÃstica.
A função heurÃstica é crÃtica para utilizar os algoritmos informados. Deve devolver uma estimativa sem ultrapassar o custo real, do custo que falta para atingir o estado objetivo mais próximo do estado atual. Se a estimativa não ultrapassar o custo real, a heurÃstica será admissÃvel. No entanto, em alguns casos, heurÃsticas não admissÃveis podem ser utilizadas, podendo acelerar a procura, mesmo que ocasionalmente levem a resultados subótimos.
No final, chame a função heurÃstica da superclasse para atualizar as estatÃsticas e o número de avaliações. Se estiver configurado, esse processo também pode introduzir ruÃdo na heurÃstica, o que pode impactar certos algoritmos de procura.
Esta função pretende-se rápida, e o mais próxima possÃvel do valor real, sem ultrapassar.
Reimplemented in CJogoDoGalo, CJogoEmLinha, TProcuraAdversa, CAspirador, CProblemaArtificial, CPuzzle8, and CProblemaArtificial.
Definition at line 522 of file TProcuraConstrutiva.cpp.