Ich habe mich gerade mit dynamischer Programmierung befasst, als ich auf folgendes Zitat gestoßen bin
Ein dynamischer Programmieralgorithmus untersucht alle Möglichkeiten zur Lösung des Problems und wählt die beste Lösung aus. Daher können wir uns die dynamische Programmierung grob als intelligente Brute-Force-Methode vorstellen, die es uns ermöglicht, alle möglichen Lösungen durchzugehen, um die beste auszuwählen . Wenn der Umfang des Problems so ist, dass alle möglichen Lösungen möglich und schnell genug durchlaufen werden, garantiert die dynamische Programmierung, dass die optimale Lösung gefunden wird
Das folgende Beispiel wurde gegeben
Angenommen, Sie müssen in einer bestimmten Stadt während der Hauptverkehrszeit so schnell wie möglich von Punkt A nach Punkt B gelangen. Ein dynamischer Programmieralgorithmus untersucht den gesamten Verkehrsbericht und alle möglichen Kombinationen von Straßen, die Sie nehmen könnten, und zeigt Ihnen dann an, welcher Weg der schnellste ist. Natürlich müssen Sie möglicherweise eine Weile warten, bis der Algorithmus abgeschlossen ist, und erst dann können Sie losfahren. Der Weg, den Sie einschlagen werden, ist der schnellste (vorausgesetzt, dass sich in der äußeren Umgebung nichts geändert hat).
Brute Force versucht jede mögliche Lösung, bevor es sich für die beste Lösung entscheidet.
Was unterscheidet Dynamic Programming von Brute Force, wenn es auch alle möglichen Lösungen durchläuft, bevor es die beste auswählt . Der einzige Unterschied, den ich sehe, ist, dass Dynamic Programming die zusätzlichen Faktoren (in diesem Fall die Verkehrsbedingungen) berücksichtigt.
Bin ich richtig zu sagen, dass Dynamic Programming eine Teilmenge der Brute-Force-Methode ist?
intelligent, brute force
, vergisst dann aber, den "intelligenten" Teil zu beschreiben