Comment résoudre ce problème algorithmique - Gopher 2

voix
0

Je suis en train de résoudre ce problème https://open.kattis.com/problems/gopher2 :

La famille de gopher, ayant permis d'éviter la menace canine, doit faire face à un nouveau prédateur.

Le 𝑛 sont gophers et 𝑚 trous de Gopher, chaque point de coordonnées géographiques distincts (𝑥, 𝑦). Un faucon arrive et si une marmotte ne parvient pas à les secondes d'un trou est vulnérable à être mangé. Un trou peut sauver au plus un Gopher. Tous les Gopher fonctionnent à la même vitesse 𝑣. La famille Gopher a besoin d'une stratégie d'échappement qui réduit le nombre de vulnérables>> Gopher.

t minimise le nombre de Gopher vulnérables.

L'approche de la force brute serait de trouver tous les trous possibles accessibles pour chaque gopher, puis trouver toutes les paires (Gopher, trou).

Y at-il un algorithme plus rapide?

Créé 02/12/2019 à 23:57
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Cela peut être formulé comme une instance du problème de couplage maximum de cardinalité sur un graphe biparti.

Laissez - Ale ensemble de Gopher et Ble jeu de trous. Il y a un bord de gopher a ∈ Aà trou b ∈ Bsi la distance entre eux est au plus s*v, à savoir la distance maximale d' un gopher peut fonctionner dans le temps disponible.

Une solution est constituée d'un sous - ensemble de taille maximale des bords dans ce graphique, de telle sorte que (1) , chacun a ∈ Apossède au plus un bord (2) , chacun b ∈ Ba au plus une arête. Les contraintes représentent les règles que chaque Gopher ne peut aller à un trou, et chaque trou ne peut correspondre à l' une Gopher. Le nombre de gophers « vulnérables » est alors le nombre de gophers moins le nombre de bords dans la mise en correspondance.

Le graphique prend O ( mn ) temps de construction, et un couplage de cardinalité maximale peut être trouvée dans O ( mn ) Temps ou moins en utilisant un algorithme standard tel que Ford-Fulkerson , où m est le nombre de gaufres et n est le nombre de des trous.

Si cela ne suffit pas efficace pour le juge en ligne, vous pouvez utiliser un algorithme plus efficace pour trouver la correspondance, et un moyen de trouver plus efficace les bords du graphique, par exemple au moyen d' un quadtree de requête qui sont à distance des trous s*vd'un gopher en vertu de O ( n ) fois.

Créé 03/12/2019 à 00:29
source utilisateur

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