Skip to content

Examples

Abaixo são descritos os problemas que podem ser resolvidos com esta biblioteca.

Aspirador de Pó

O método main da classe VacuumWorldGeneric.py deve receber um arquivo texto que descreve a situação do ambiente e as posições do robô como parâmetros. Por exemplo, para o seguinte ambiente:

O seguinte arquivo de configuração será entregue:

0;1;1;1
0;0;0;0
1;1;1;1

onde 0 significa limpo e 1 sujo.

E o seguinte comando deve ser executado:

python VacuumWorldGeneric.py configuracao.txt 0 0

As ações que o robô (agente) sabe executar são:

  • esq: ir para a esquerda;
  • dir: ir para a direita;
  • baixo: ir para baixo;
  • cima: ir para cima;
  • limpar: limpar o quarto onde está.

Ao executar o comando acima, o programa deverá gerar uma sequência de ações que fará com que o robô saia do estado inicial e chegue em um estado final válido. Um estado final válido é um estado onde todos os quartos (quadrados) estão limpos.

Uma sequência de ações válidas para resolver o estado acima é:

dir; limpar; dir; limpar; dir; baixo; baixo; limpar; esq; limpar; esq; limpar; esq; limpar

Um outro exemplo

Considere um novo exemplo:

Para este exemplo o arquivo de configuração precisa ter este conteúdo:

0;1;1;1
0;0;1;1
1;1;1;1

E a chamada para o programa:

python VacuumWorldGeneric.py configuracao.txt 2 3

O programa que está implementado em VacuumWorldGeneric.py não se preocupa com a validação dos dados de entrada. Assume-se que os dados de entrada estão corretos, por exemplo, a posição do robô é uma posição válida.

A única tarefa que o programa deve fazer é se existir solução então retornar uma sequência de ações ótima para o problema. Se não existir solução então informar que não existe solução.

Banda U2

A banda U2 tem um concerto que começa daqui a 17 minutos e todos precisam cruzar uma ponte par chegar lá. Todos os 4 participantes estão do mesmo lado da ponte. É noite. Só há uma lanterna. A ponte suporta, no máximo, duas pessoas. Qualquer pessoa que passe, uma ou duas, deve passar com a lanterna na mão. A lanterna deve ser levada de um lado para outro e não ser jogada. Cada membro da banda tem um tempo diferente para passar de um lado para o outro. O par deve andar no tempo do menos veloz: Bono: 1 minuto para passar; Edge: 2 minutos para passar; Adam: 5 minutos para passar; e Larry: 10 minutos para passar.

O problema consiste em ter os quatro elementos da banda do outro lado da ponte no menor tempo possível.

O arquivo U2.py implementa uma solução possível para este problema.

8 Puzzle

O arquivo Puzzle8.py implementa um solucionador para o jogo Puzzle8:

Grafo