Ich habe die Aufgabe, den maximalen Durchsatz in einem Diagramm zu berechnen.Graph Throughput Algorithmus
Die einfachste Art, das Diagramm zu beschreiben, ist . Die innere Anordnung ist die Knoten in Graphen und die äußere Anordnung ist der Abstand jeder Knoten in dem Graphen verbinden, zum Beispiel:
new int[][] {
{0, 5, 0, 0}, // node 0 (the "source")
{0, 0, 4, 0}, // node 1
{0, 0, 0, 8}, // node 2
{0, 0, 0, 0} // node 3 (the "destination")
}
So von node 0
(Quelle) zu node 3
(das Ziel zu erhalten, die „maximale Durchsatz“ wäre 4 pro Umdrehung, weil:
- 5 Pakete vom Knoten 0 zum Knoten gehen kann 1
- 4 Pakete von Knoten 1 zu Knoten gehen kann 2
- 8 Pakete von Knoten 2 zu Knoten gehen kann 3
Auf einer „pro Umdrehung“ Basis ist der Engpass zwischen node 1
und node 2
, wo die maximalen Durchsatzleistung 4.em
Kann mich jemand einen Algorithmus zeigen, dass dieses „maximalen Durchsatz“ würde lösen Problem für jeder gegebene Graph, der auf diese Weise als int[][]
definiert ist, und source
und destination
Knoten?
Das Beispieldiagramm soll um mehrere "Quellen" und "Ziele" erweitert werden, wo ich den maximalen Durchsatz des gesamten Systems für jede gegebene "Runde" berechnen muss.
Ich würde Hilfe in Form von Algorithmen zu studieren oder "Pseudocode" schätzen.
Ich denke, dass das, was du beschreibst, typischerweise maximaler Fluss genannt wird. Es gibt wahrscheinlich viele leicht durchsuchbare Informationen, wenn Sie den Namen haben. – moreON
Wenn Sie nach einem der Flaschenhälse suchen, können Sie einen minimalen Schnittalgorithmus verwenden (der maximalen Fluss verwendet und nur nach den ersten Kanten sucht, die ausgelastet sind). – bigballer
Ein typischer guter Algorithmus für maximalen Fluss ist Edmons-Karp. Es ist nicht sehr schwer zu implementieren. – Gene