Das minimale Zap-Problem unten ist Übung 11 in Jeff Ericksons Vortrag über "Greedy Algorithm" .
Das minimale Zap-Problem kann formeller wie folgt angegeben werden. Gegeben ein Satz von Kreise in der Ebene, jeweils angegeben durch ihren Radius und die Berechnen Sie die minimale Anzahl von Strahlen vom Ursprung, die jeden Kreis in schneiden . Ihr Ziel ist es, einen effizienten Algorithmus für dieses Problem zu finden. (Siehe ein Beispiel "9-Ballons mit 4 Strahlen" in der folgenden Abbildung)
Frage: Angenommen, es ist möglich, einen Strahl zu schießen, der keine Ballons schneidet. Beschreiben und analysieren Sie einen gierigen Algorithmus, der das Minimum-Zap-Problem in diesem speziellen Fall löst.
Ich habe Probleme, mich diesem Problem zu nähern. Ich dachte, ein gieriger Ansatz wäre es, den Strahl zu verwenden, der die meisten Kreise schneidet und wiederkehrt, aber mir wurde gesagt, dass dies falsch sei. Warum ist das?
Und wozu dient ein Strahl, der keine Luftballons schneidet? Soll ich beweisen, dass eine optimale Lösung diese Tatsache nutzt?
Jede Hilfe wäre dankbar! Ich habe erst kürzlich angefangen, Algorithmen zu lernen :)
Algorithmus basierend auf der Antwort von hengxin: https://cs.stackexchange.com/a/52293/42816
Beweis durch mathematische Induktion
Hinweis: Die Implementierung von O (n log n) wurde nicht verwendet
Nun werden wir die Richtigkeit dieses Algorithmus durch mathematische Induktion beweisen. Wir werden zeigen, dass unser gieriger Algorithmus nicht schlechter abschneiden kann als die optimale Lösung.
Lassen sei die Menge der Strahlen, die von unserem gierigen Algorithmus geschossen werden. Lassen sei der Satz von Strahlen, die von einer anderen optimalen Lösung aufgenommen werden.
Unser Basisfall ist wann . Es gibt nur ein Objekt zu zerstören, und unser gieriger Algorithmus verwendet 1 Strahl, was ebenfalls optimal ist. Das checkt also aus.
Für unsere Induktionshypothese gehen wir nun davon aus, dass unser Greedy-Algorithmus für bis zu optimal ist Objekte.
Wir behaupten nun, dass der erste Strahl von von kann nicht schlimmer machen als das von .
Betrachten wir nun eine Objektsituation. Dann sortieren wir und gemäß im Uhrzeigersinn. Untersuchen wir nun den ersten Strahl, der von auftrittim Uhrzeigersinn. Im, dieser erste Strahl, nenne es , kann unmöglich schlimmer machen als das von , nennen , weil unser gieriger Algorithmus besagt, dass dieser Strahl die meisten Objekte schneidet, einschließlich des ersten von . Deshalb, schneidet entweder genauso viele oder weniger Objekte als . Somit können wir ersetzen mit in der optimalen Lösung .
Jetzt müssen wir herausfinden, ob der Rest von ist optimal, ausschneiden , die wir anrufen werden . Da gibt es jetzt aber höchstens Objekte, sagt unsere Induktionshypothese, dass unser gieriger Algorithmus eine optimale Lösung für findet . Als solches ist dieProblem hat eine optimale Lösung von unserem gierigen Algorithmus. QED