TProcuraAdversa
Algoritmos de procura adversa
|
Functions | |
virtual TNo | TProcuraConstrutiva::Duplicar (void)=0 |
Cria um objecto que é uma cópia deste. | |
virtual void | TProcuraConstrutiva::Copiar (TNo objecto) |
Fica com uma cópia do objecto. | |
virtual void | TProcuraConstrutiva::SolucaoVazia (void) |
Coloca o objecto no estado inicial da procura. | |
virtual void | TProcuraConstrutiva::Sucessores (TVector< TNo > &sucessores) |
Coloca em sucessores a lista de estados sucessores. | |
virtual bool | TProcuraConstrutiva::SolucaoCompleta (void) |
Verifica se o estado actual é objectivo (é uma solução completa) | |
virtual void | TProcuraConstrutiva::TesteManual (const char *nome) |
Inicializa a interação com o utilizador. | |
Métodos de redefinição obrigatória no problema
|
inlinevirtual |
Fica com uma cópia do objecto.
Este método tem de ser criado na subclasse, de modo a um estado poder ficar igual a outro. As variáveis de estado, devem ser todas copiadas.
Deve garantir que as variáveis copiadas sejam suficientes para reconstruir o estado corretamente. No entanto, uma instância pode ter dados que não mudam em cada estado. Essas variáveis não precisam de estar no estado, e podem ser alocadas de forma estática na subclasse, não sendo necessário copiar nesta função.
A não ser que exista uma estrutura de dados completa, o modelo de código em baixo pode ser facilmente reproduzido para qualquer subclasse.
Definition at line 276 of file TProcuraConstrutiva.h.
|
pure virtual |
Cria um objecto que é uma cópia deste.
Este método tem de ser criado na subclasse, de modo a criar uma cópia do mesmo tipo. O código da subclasse geralmente segue um padrão e pode utilizar o modelo abaixo, aproveitando o método Copiar(). É especialmente útil na função de Sucessores(), na geração de um novo estado.
Implemented in CJogoDoGalo, and CJogoEmLinha.
|
inlinevirtual |
Verifica se o estado actual é objectivo (é uma solução completa)
Este método verifica se o estado atual é objetivo, e portanto temos uma solução completa. A complexidade da verificação depende do problema, podendo ser um teste simples ou envolver múltiplas condições.
Sucessores()
, garantindo que a avaliação do objetivo seja feita apenas quando necessário.Reimplemented in CJogoDoGalo, and CJogoEmLinha.
Definition at line 370 of file TProcuraConstrutiva.h.
|
inlinevirtual |
Coloca o objecto no estado inicial da procura.
Este método inicializa as variáveis de estado no estado inicial vazio. Representa o estado inicial antes de qualquer ação ser realizada na procura. Caso existam dados de instância, deve neste método carregar a instância. A primeira instrução deverá chamar o método da superclasse, conforme modelo em baixo.
Reimplemented in CJogoDoGalo, and CJogoEmLinha.
Definition at line 307 of file TProcuraConstrutiva.h.
Coloca em sucessores a lista de estados sucessores.
sucessores | - variável com a lista de estados sucessores a retornar. |
Este é o método principal, que define a árvore de procura. Para o estado atual, duplicar o estado por cada ação / estado que seja sucessor. Alterar as variáveis de estado para corresponderem à ação efetuada no estado sucessor. Caso o custo não seja unitário, definir o custo da ação. Chamar o método da superclasse no final, já que irá atualizar estatísticas, bem como eliminar estados que sejam repetidos, dependendo da parametrização.
Reimplemented in CJogoDoGalo, and CJogoEmLinha.
Definition at line 127 of file TProcuraConstrutiva.cpp.
|
virtual |
Inicializa a interação com o utilizador.
Esta função arranca com o teste manual, orientada para o programador. A interface permite:
Esta função deve ser redefinida para inicializar a variável com informação dos IDs das instâncias disponíveis. Essa variável é do tipo TParametro, mas não está na lista de parametros, devendo ser inicializada aqui.
Reimplemented in CJogoDoGalo, and CJogoEmLinha.
Definition at line 756 of file TProcuraConstrutiva.cpp.