|
TProcura
Biblioteca em C++ para testes paramétricos de algoritmos, e coleção de algoritmos de procura e otimização
|
Functions | |
| virtual TString | TProcuraConstrutiva::Acao (TNo sucessor) |
| Retorna a ação (movimento, passo, jogada, lance, etc.) que gerou o sucessor. | |
| virtual void | TProcuraConstrutiva::Codifica (TBits &estado) |
| 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 352 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, and CPuzzle8.
Definition at line 1024 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, and CPuzzle8.
Definition at line 622 of file TProcuraConstrutiva.cpp.