У меня задача вычислить максимальную пропускную способность на графике.Алгоритм пропускной способности графика
Самый простой способ описания графика - int[][]
. Внутренний массив узлов в графике, и внешний массив является расстоянием между подключением каждого узла в графе, например:
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")
}
Таким образом, чтобы получить от node 0
(источник), чтобы node 3
(конечного пункта «максимальная пропускная способность» будет 4 в свою очередь, потому что:
- 5 пакетов могут перейти от узла 0 к узлу 1
- 4 пакетов могут идти от узла 1 к узлу 2
- 8 пакеты могут идти от узла 2 к узлу 3
На основе «в свою очередь», узкое место между node 1
и node 2
, где максимальная пропускная способность равна 4.
Может кто-то момент мне алгоритм, который позволит решить эту «максимальная пропускная способность» проблему любой заданный граф, определенный таким образом как int[][]
и заданный source
и destination
узлов?
Примерный граф должен быть расширен несколькими «источниками» и «пунктами назначения», где мне нужно будет вычислить максимальную пропускную способность всей системы при любом заданном «повороте».
Буду признателен за помощь в виде алгоритмов для изучения или «псевдокода».
Я думаю, что то, что вы описываете, обычно называется максимальным потоком. Вероятно, есть много легко доступной для поиска информации, когда у вас есть имя. – moreON
, если вы ищете один из шеек бутылки, вы можете использовать алгоритм минимального разреза (который использует максимальный поток и просто ищет первые ребра, которые находятся в емкости) – bigballer
Обычно хорошим алгоритмом для максимального потока является Edmons-Karp. Это не очень сложно реализовать. – Gene