Wie dieses algorithmische Problem zu lösen - Gopher 2

stimmen
0

Ich versuche , dieses Problem zu lösen https://open.kattis.com/problems/gopher2 :

Die Gopher Familie, nachdem die Hunde Gefahr abgewendet, muss ein neues Raubtier konfrontiert.

Das sind n Gopher und Gopher m Löcher, die jeweils an unterschiedlichem (x, y) Koordinaten. Ein Falke kommt und wenn ein Gopher kein Loch in s Sekunden erreicht, ist es anfällig für gefressen zu werden. Ein Loch kann höchstens eine Gopher speichern. Alle gophers laufen mit der gleichen Geschwindigkeit v. Die Gopher Familie braucht eine Escape-Strategie, die die Anzahl der gefährdeten>> Gopher minimiert.

t minimiert die Anzahl der gefährdeten Gopher.

Der Brute-Force-Ansatz wäre, alle möglichen Löcher für jeden Gopher erreichbar zu finden, findet dann alle unterschiedlichen (Gopher, Loch) Paare.

Gibt es einen schnelleren Algorithmus?

Veröffentlicht am 02/12/2019 um 23:57
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Dies kann als eine Instanz der formuliert werden maximale Kardinalität Einstimmungsproblem auf einem zweiteiligen Graphen.

Lassen Sie Adie Menge von Gopher und Bder Satz von Löchern sein. Es ist eine Kante von Gopher a ∈ Azu Loch , b ∈ Bwenn der Abstand zwischen ihnen maximal ist s*v, dh der maximale Abstand ein Gopher in der verfügbaren Zeit ausgeführt werden kann.

Eine Lösung besteht aus einer Maximalgröße Teilmenge der Kanten in dieser grafischen Darstellung ist , so dass (1) jeweils a ∈ Ahöchstens eine Kante hat, (2) , die jeweils b ∈ Bhat höchstens eine Kante. Die Einschränkungen stellen die Regeln , dass jeder Gopher nur ein Loch gehen, und jedes Loch kann nur eine Gopher passen. Die Anzahl der „anfällig“ Gopher ist dann die Anzahl der gophers minus die Anzahl der Kanten in dem passenden.

Der Graph nimmt O ( mn ) Zeit zu konstruieren, und eine maximale Kardinalität Anpassung kann in O (gefunden werden mn ) Zeit oder weniger unter Verwendung eines Standard - Algorithmus , wie beispielsweise Ford-Fulkerson , wobei m die Anzahl der Gopher ist und n ist die Anzahl der Löcher.

Wenn das nicht effizient genug für den Online - Richter ist, können Sie einen effizienteren Algorithmus die passenden zu finden, und eine effizientere Art und Weise die Kanten in der Grafik zu finden, zum Beispiel unter Verwendung eine Quadtree zu Abfrage , die Löcher im Abstand s*vvon einem Gopher in unter O ( n ) Zeit.

Beantwortet am 03/12/2019 um 00:29
quelle vom benutzer

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