Um den maximalen Fluss in einem Graph zu finden, warum reicht es nicht aus, nur alle augmentierenden Pfade mit der minimalen Kantenkapazität in diesem Pfad zu sättigen, ohne die hinteren Kanten zu berücksichtigen? Ich meine, was ist der Punkt, der es einen hinteren Rand nennt, wenn wir davon ausgehen, dass es fließt?Warum sind Rückkanten im Ford-Fulkerson-Algorithmus erforderlich?
Antwort
Rückkanten sind notwendig, wenn Sie den Ford-Fulkerson-Algorithmus ausführen, falls der ausgewählte Pfad nicht Teil des Gesamtflusses ist.
Als ein Beispiel, wo Hinterkanten erforderlich sind, sollten diese Strömung Netzwerk:
s
/\
a b
\/\
c d
\/
t
wird angenommen, dass alle Kanten nach unten zeigen und dass alle Kanten haben eine Kapazität 1 und dass Sie einen Fluss von s finden bis t . Angenommen, in der ersten Iteration von Ford-Fulkerson nehmen Sie den Weg s -> b -> c -> t. An dieser Stelle haben Sie eine Flusseinheit von s nach t geschoben. Wenn Sie nicht in irgendwelchen Hinterkanten hinzufügen, sind Sie mit dieser links:
s
/
a b
\ \
c d
/
t
Es gibt nicht mehr s-t Pfade, aber das bedeutet nicht, dass Sie einen maximalen Durchfluss haben. Sie können zwei Flusseinheiten von s nach t schieben, indem Sie eine entlang des Pfades s -> a -> c -> t und die andere entlang des Pfades s -> b -> d -> t senden. Ohne Rückflanken im Restflussnetzwerk würden Sie diesen anderen Pfad nie finden.
Hoffe, das hilft!
- 1. Sind Annotationsklassendateien im Laufzeitklassenpfad erforderlich?
- 2. Warum sind Destruktoren in C++ erforderlich?
- 3. Warum sind "UIExplorerBlock erforderlich" und "UIExplorerPage erforderlich" für einige Komponenten erforderlich?
- 4. Warum ECU-Kalibrierung erforderlich
- 5. Welche Tags sind im Manifest für registrierungsfreie COM erforderlich?
- 6. Warum sind Exponenten für hexadezimale Zahlen in Java erforderlich?
- 7. Warum sind Kanten in einer Relay/GraphQL-Verbindung erforderlich?
- 8. Sind .OCA-Dateien für die Programmausführung erforderlich?
- 9. Warum ist copy_to/from_user erforderlich?
- 10. Warum ist die onNothingSelected-Methode im Spinner-Listener erforderlich?
- 11. Welche Informationen sind in boot.properties erforderlich?
- 12. Sind Dateierweiterungen für Azure-Blobs erforderlich?
- 13. Optionale VB-Parameter sind in C erforderlich #
- 14. Warum sind Blockvariablen optional?
- 15. Sind Standardzuweiser erforderlich, um zusammenhängenden Speicher zuzuordnen?
- 16. Warum ist attr_accessor in Rails erforderlich?
- 17. Warum ist Kategorie HOME erforderlich?
- 18. Sind beim Verbinden eines Threads Speicherbarrieren erforderlich?
- 19. Sind Tastaturkürzel für 508 Compliance erforderlich?
- 20. Sind für die Spracherkennung MFCC-Funktionen erforderlich?
- 21. Welche Parameter sind für CMBufferQueueCreate erforderlich?
- 22. Sind Aktivierungsspezifikationen für Message-Driven Beans erforderlich?
- 23. Zwei Textfelder, eines oder beide, sind erforderlich
- 24. Sind Beziehungen in mysql/phpmyadmin erforderlich
- 25. Sind Middleware-Apps für die Geschäftslogik erforderlich?
- 26. Wie Klassen in Nodejs erforderlich sind
- 27. Welche Berechtigungen sind für subprocess.Popen erforderlich?
- 28. ASP.NET MVC Razor - Alle Formularfelder sind erforderlich?
- 29. Welche Protokolle sind für Kalenderserver erforderlich
- 30. Oracle sqlldr Trailing NULLCOLS erforderlich, aber warum?
Können Sie bitte näher darauf eingehen, was die Backedges in Ihrem speziellen Fall ausmacht? Vielen Dank! – bluejamesbond
@bluejamesbond Hier würden die hinteren Kanten von b nach s zeigen, von c nach b und von t nach c (es ist die Umkehrung der Kanten entlang des Weges). Diese Kanten ergeben dann einen augmentierenden Pfad von s nach t, der anzeigt, dass der Fluss nicht maximal ist. – templatetypedef
Wann wird es diese Wege jedoch nehmen? – bluejamesbond