Competição - Estratégia

Competição - Estratégia

por Rafael Lemes Beirigo -
Número de respostas: 3

Falei com a Cris hoje no fim da aula de geocomp sobre o nosso problema (ela está dando distância entre pontos no plano em geometria computacional) e ela sugeriu que usássemos alguns algoritmos em grafos pra resolver nosso problema.

Pensamos em fazer da seguinte forma:

  1. Transformamos uma metade do tabuleiro em um digrafo, onde os pinos e as águas são vértices
  2. Usamos um algoritmo de pareamento de menor custo para conectar os pinos às respectivas águas (minimizando a distância entre o pino e a água correta)
    1. Teremos como resultado um grafo em que só há arestas indo do conjunto de pinos para o conjunto de águas
  3. Para cada água, criamos uma aresta para cada pino do lado oposto, onde o custo da aresta é a distância da água ao pino
    1. Essas são as arestas azuis da figura. Era pra ter aresta azul indo do B7 até todos os pinos (e depois de cada vértice de agua para todos os vértices de pinos), mas ia dar muito trabalho pra desenhar e o desenho ia ficar poluído... Mas acho que dá pra entender a idéia geral: ficará um grafo bipartido, onde cada vértice de água consegue acessar todos os vértices de pinos.
    2. A cada aresta desse grafo resultante será associado um custo, e teremos, então, um grafo com peso nas arestas.
  4. Aplicamos um algoritmo que percorre o grafo minimizando o custo (djkstra?)
  5. Obtemos assim o percurso total do robô pra conseguir colocar todos os pinos percorrendo a menor distância possível

Um problema com isso é que estamos considerando só uma metade do tabuleiro. Precisaríamos pensar em como fazer com a outra metade (principalmente no caso em que o pino desejado se encontra do outro lado do rio). Aí poderíamos embutir a cooperação entre os robôs...

Bom, é isso,

Abraços!

Em resposta à Rafael Lemes Beirigo

Re: Competição - Estratégia

por Thiago Figueiredo da Silva -

Não sei se essa é uma boa idéia, pois não sabemos a configuração inicial dos pinos e do transbordamento (serão sorteados). E acho que perderíamos muito tempo para percorrer o cenário inteiro antes de começar a movimentar os pinos.

Eu proporia algo como o algoritmo D* de inteligência artificial. E, como são 18 pinos vermelhos para 10 verdes, faria uma suposição de que todos são vermelhos. Só não sei como supor o transbordamento.

Em resposta à Thiago Figueiredo da Silva

Re: Competição - Estratégia

por Tiago Togores -

Primeiramente, acho que o robô deveria usar movimentação manhattan, senão fica muito fácil ele se perder no grid e mais difícil de se posicionar para pegar e soltar os pinos.

Eu também acho mais interessante usar um misto das duas ideias: varredura inicial e A* (que é melhor que dijkstra mas menos complexo que o D*). Eu sei que demora mais, porém não confio no D*. É muito fácil implementar errado.