Como resolver este problema algorítmico - Gopher 2

votos
0

Estou tentando resolver este problema https://open.kattis.com/problems/gopher2 :

A família Gopher, tendo evitado a ameaça canino, deve enfrentar um novo predador.

O são 𝑛 Gopher e furos Gopher 𝑚, cada um em (𝑥, 𝑦) coordenadas distintas. Um falcão chega e se um Gopher não alcança segundos uma em buracos 𝑠 é vulnerável a ser comido. Um buraco pode salvar no máximo um Gopher. Todos os esquilos correr ao mesmo 𝑣 velocidade. A família Gopher precisa de uma estratégia de escape que minimiza o número de vulneráveis>> Gopher.

t minimiza o número de roedores vulneráveis.

A abordagem de força bruta seria encontrar todos os orifícios possíveis alcançáveis ​​para cada Gopher, em seguida, encontrar tudo (Gopher, buraco) pares distintos.

Existe um algoritmo mais rápido?

Publicado 02/12/2019 em 23:57
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Isto pode ser formulado como um exemplo do problema máxima cardinalidade correspondente num gráfico bipartido.

Let AÉ o conjunto de roedores e Bser o conjunto de furos. Existe uma borda de Gopher a ∈ Aao furo b ∈ Bse a distância entre elas é no máximo s*v, isto é, a distância máxima que um Gopher pode ser executado no tempo disponível.

Uma solução consiste em um subconjunto tamanho máximo de um dos bordos, neste gráfico, de tal modo que (1) cada um a ∈ Atem, no máximo, uma borda (2), cada um b ∈ Btem, no máximo, uma borda. As restrições representam as regras que cada Gopher só pode ir para um buraco, e cada buraco só pode caber um Gopher. O número de Gopher "vulneráveis" é, então, o número de Gopher menos o número de arestas no correspondente.

O gráfico leva O ( mn ) Tempo de construção, e uma correspondência máxima cardinalidade pode ser encontrado em O ( mn ) Tempo de ou menos usando um algoritmo de padrão, tais como Ford-Fulkerson , onde m é o número de roedores e n é o número de buracos.

Se isso não for suficiente eficiente para o juiz on-line, você pode usar um algoritmo mais eficiente para encontrar a correspondência, e uma forma mais eficiente de encontrar as margens do gráfico, por exemplo, usando uma quadtree a consulta que buracos estão dentro da distância s*vde um gopher em menos de O ( n ) de tempo.

Respondeu 03/12/2019 em 00:29
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more