Опубликован: 22.12.2006 | Уровень: специалист | Доступ: платный

Лекция 5: Параллельные методы расчета транспортной сети

Пример

Продолжим исследование приведенной выше сети.

  1. Заносим в стек первую строку матрицы S. Находим первый нуль после обязательного нуля в первой позиции. Этот нуль указывает, что каналы 1 и 2 взаимно независимы (параллельны). Складываем логически строки, соответствующие каналам 1 и 2. Получаем новую строку s1 в вершине стека

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_1 & & & & & 1 & 1 & & & 1 & 1 \\
\cline{2-11}
\end{array}
    Она содержит нули правее позиции 2. Это говорит о том, что 1 и 2 не исчерпывают ПМВНК.

  2. Находим первый нуль правее позиции 2 — нуль в позиции 3. Складываем логически s2 = s1 \vee "3". Получаем новую строку в вершине стека и весь стек в виде

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_2 & & & & 1& 1 & 1 & 1& 1& 1 & 1 \\
\cline{2-11}
s_1 & & & & & 1 & 1 & & & 1 & 1 \\
\cline{2-11}
"1" & & & & & 1 &  & & & 1 &  \\
\cline{2-11}
\end{array}
    Строка в вершине стека содержит нули только в тех позициях, которые соответствуют образующим ее каналам 1, 2, 3. Это означает, что мы нашли ПМВНК {1, 2, 3}, т.е. некоторый разрез сети. Минимальный поток, проходящий через него, составляет d1 + d2 + d3.

  3. Исключаем из стека строку s2 и в строке s1 испытываем следующий нуль правее позиции 2. Это нуль в позиции 4. Формируем новую вершину стека s3 = s1 \vee "4".

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_3 & & & 1& & 1 & 1 & & & 1 & 1 \\
\cline{2-11}
\end{array}
    Строка s3 содержит нули не только в позициях 1, 2, 4. Первый такой нуль правее позиции 4 — в позиции 7.

    Формируем новую вершину стека s4 = s3 \vee "7". Стек принимает вид

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_4 & & & 1 & & 1 & 1 & & 1 & 1 & 1 \\
\cline{2-11}
s_3 & & & 1 & & 1 & 1 & &   & 1 & 1 \\
\cline{2-11}
s_1 & & &    & & 1 & 1 & &    & 1 & 1 \\
\cline{2-11}
"1" & & & &    & 1 &    & &    & 1 &  \\
\cline{2-11}
\end{array}
    Строка s4 содержит нули только в позициях, соответствующих каналам, "участвующим" в ее формировании. Значит, найдено еще одно ПМВНК {1, 2, 4, 7}. Оно определяет разрез сети с пропускной способностью d1 + d2 + d4 + d7.

  4. Исключаем s4 из стека. Следующий испытываемый нуль в строке s3 занимает позицию 8. Формируем новую вершину стека s5 = s3 \vee "8".

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_5 & & & 1 & & 1 & 1 & 1 &   & 1 & 1 \\
\cline{2-11}
\end{array}
    Строка s5 содержит нули только в позициях 1, 2, 4, 8. Следовательно, найдено ПМВНК {1, 2, 4, 8} с пропускной способностью d1 + d2 + d4 + d8.

  5. Исключаем s5 из стека. Находим, что в s3 все нули исследованы. Исключаем s3 из стека. В s1 следующий нуль, подлежащий испытанию, занимает позицию 7. Формируем новую вершину стека — строку s6 = s1 \vee "7".

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_6 & & & 1 & & 1 & 1 & & 1 & 1 & 1 \\
\cline{2-11}
\end{array}
    Строка s6 не содержит нулей правее позиции 7. Исключаем s6 из стека.

  6. Следующий испытываемый нуль в s1 занимает позицию 8. Находим s7 = s1 \vee "8"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_7 & & & 1 & & 1 & 1 & 1 &   & 1 & 1 \\
\cline{2-11}
\end{array}
    Строка также не содержит нулей правее позиции 8. Исключаем ее из стека.

    Все нули строки s1 испытаны. Исключаем s1 из стека. В стеке остается лишь строка "1".

  7. Следующий испытываемый нуль в строке "1" занимает позицию 3. Формируем новую вершину стека — строку s8 = "1" \vee "3"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_8 & & &  & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
\cline{2-11}
\end{array}
    Строка s8 не содержит нулей правее позиции 3. Исключаем ее из стека.

  8. Следующий нуль в первой строке занимает позицию 4. Формируем новую вершину стека — строку s9 = "1" \vee "4"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_9 & & & 1 & & 1 & 1 & &  & 1 & 1 \\
\cline{2-11}
\end{array}
    Строка содержит нули не только в позициях 1 и 4. Первый же "дополнительный" нуль занимает позицию 2. Это говорит о повторном формировании уже сформированных ПМВНК. Исключаем строку из стека.

  9. Следующий испытываемый нуль первой строки занимает позицию 6. Формируем s10 = "1" \vee "6"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{10} & & 1 & 1 & 1 & 1 &  & &  & 1 & 1 \\
\cline{2-11}
\end{array}
    Строка не содержит "дополнительных" нулей до позиции 6. Первый испытываемый нуль занимает позицию 7. Формируем новую вершину стека s11 = s10 \vee "7", а стек принимает вид
    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{11} & & 1 & 1 & 1 & 1 & & & 1 & 1 & 1 \\
\cline{2-11}
s_{10} & & 1 & 1 & 1 & 1 & & &    & 1 & 1 \\
\cline{2-11}
 "1" & & & &  & 1 &  & &  & 1 &  \\
\cline{2-11}
\end{array}
    Строка s11 содержит нули только в позициях каналов, участвующих в ее формировании. Найдено очередное ПМВНК {1, 6, 7} с потоком d1 + d6 +d7.

  10. Исключаем s11 из стека. Следующий испытываемый нуль в s10 занимает позицию 8. Формируем s12 = s10 \vee "8".

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{12} & & 1 & 1 & 1 & 1 & & 1 & & 1 & 1 \\
\cline{2-11}
\end{array}
    Строка определяет очередное ПМВНК {1, 6, 8} с потоком d1 + d6 +d8.

  11. Исключаем s12 из стека. Строка s10 испытана полностью. Исключаем ее из стека. Следующий испытываемый нуль в строке "1" занимает позицию 7. Формируем строку s13 = "1" \vee "7"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{13} & & & 1 & 1& & & & 1 & 1 & 1 \\
\cline{2-11}
\end{array}
    Она не содержит "дополнительные" нули правее позиции 7. Исключаем строку из стека.

  12. Испытание нуля в позиции 8 первой строки приводит к тому же результату.

  13. Все комбинации каналов с участием канала 1 исчерпаны. Выбираем следующий канал. Т.е. загружаем в стек вторую строку матрицы S. Первый нуль в позиции, не меньшей 2, занимает позицию 3. Формируем новую вершину стека s14 = "2" \vee "3"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{14} & & & & 1 &  & 1 & 1 & 1 & & 1 \\
\cline{2-11}
\end{array}

  14. Первый нуль правее позиции 3 в строке s14 занимает позицию 5. Формируем s15 = s14 \vee "5"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{15} & 1 & & & 1 & & 1 & 1 & 1 &  & 1 \\
\cline{2-11}
\end{array}
    Строка содержит нули только в позициях 2, 3, 5. Это определяет ПМВНК {2, 3, 5} с потоком d2 + d3 + d5.

  15. Следующий нуль в строке s14 занимает позицию 9. Формируем s16 = s14 \vee "9"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{16} & 1 & & & 1 & 1 & 1 & 1 & 1 &  & 1
\\
\cline{2-11}
\end{array}
    Строка содержит нули только в позициях 2, 3, 9. Это определяет ПМВНК {2, 3, 9} с потоком d2 + d3 + d9.

  16. Формируем s17 = "2" \vee "4"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{17} & & & 1 & & & 1 & & & & 1 \\
\cline{2-11}
\end{array}
    Первый "дополнительный" нуль занимает позицию 5. Формируем s18 = s17 \vee "5"
    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{18} & 1 & & 1 & & & 1 & & & 1 & 1 \\
\cline{2-11}
\end{array}
    Строка s18 содержит нули не только в позициях 2, 4, 5. Первый "дополнительный" нуль занимает позицию 7. Формируем s19 = s18 \vee "7" = "2" \vee "4" \vee "5" \vee "7"
    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{19} & 1 & & 1 &  & & 1 & & 1 & 1 & 1 \\
\cline{2-11}
\end{array}
    Строка содержит нули только в позициях 2, 4, 5, 7, что определяет ПМВНК {2, 4, 5, 7} с потоком d2 + d4 + d5 + d7.

  17. Следующий (последний) "дополнительный" нуль строки s18 занимает позицию 8. Формируем s20 = s18 \vee "8"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{20} & 1 & & 1 & & & 1 & 1 &  & 1 & 1 \\
\cline{2-11}
\end{array}
    и находим ПМВНК {2, 4, 5, 8} с потоком d2 + d4 + d5 + d8.

  18. Следующий нуль в строке s17 занимает позицию 7. Формируем s21 = s17 \vee "7"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{21} & & & 1 & & & 1 & & 1 &  & 1 \\
\cline{2-11}
\end{array}
    Единственный нуль правее позиции 7 занимает позицию 9. Формируем s22 = s21 \vee "9"
    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{22} & 1 & & 1 & & 1 & 1 & & 1 &  & 1 \\
\cline{2-11}
\end{array}
    и получаем следующее ПМВНК {2, 4, 7, 9} с потоком d2 + d4 + d7 + d9.

  19. Следующий нуль в строке s17 занимает позицию 8. Формируем s23 = s17 \vee "8"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{23} & & & 1 & & & 1 & 1 & &  & 1 \\
\cline{2-11}
\end{array}
    Единственный "дополнительный" нуль, правее позиции 8, занимает позицию 9. Формируем s24 = s23 \vee "9"
    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{24} & 1 & & 1 & & 1 & 1 & 1 & &  & 1 \\
\cline{2-11}
\end{array}
    Т.к. позиции нулей совпадают с позициями всех каналов, участвующих в комбинации, получаем ПМВНК {2, 4, 8, 9}, определяющее разрез с потоком d2 + d4 + d8 + d9.

  20. Последний "дополнительный" нуль в s17 занимает позицию 9. Формируем s25 = s17 \vee "9"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{25} & 1 & & 1 & & 1 & 1 & & & & 1 \\
\cline{2-11}
\end{array}
    Строка содержит нули не только в позициях 2, 4, 9. Однако все "дополнительные" нули занимают позиции левее позиции 9. Это говорит о повторном нахождении ПМВНК.

  21. Возвращаемся к анализу второй строки матрицы S. Следующий нуль этой строки занимает позицию 5. Формируем s26 = "2" \vee "5"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{26} & 1 & & & & & 1 & & & 1 & 1 \\
\cline{2-11}
\end{array}
    Первый "дополнительный" нуль правее позиции 5 занимает позицию 7. Формируем s27 = s26 \vee "7"
    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{27} & 1 & & 1 & & & 1 & & 1 & 1 & 1 \\
\cline{2-11}
\end{array}
    Наличие "дополнительных" нулей только левее позиции 7 говорит о повторном нахождении ПМВНК.

  22. Второй, последний, "дополнительный" нуль в строке s26, правее позиции 5, занимает позицию 8. Его анализ также приводит к повторному нахождению ПМВНК.

  23. Следующий нуль второй строки матрицы S занимает позицию 7. Формируем s28 = "2" \vee "7"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{28} & & & 1 & & & 1 & & 1 &  & 1 \\
\cline{2-11}
\end{array}
    Первый "дополнительный" нуль в этой строке, правее позиции 7, занимает позицию 9. Формируем s29 = s28 \vee "9"
    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{29} & 1 & & 1 & & 1 & 1 & & 1 &  & 1 \\
\cline{2-11}
\end{array}
    Строка не содержит нули правее позиции 9, но содержит нули левее этой позиции. Это значит, что мы на пути повторного формирования уже найденного ПМВНК ( {2, 4, 7, 9} ).

  24. Следующий нуль второй строки S занимает позицию 8. Формируем s30 = "2" \vee "8"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{30} & & & 1 & & & 1 & 1 & &  & 1 \\
\cline{2-11}
\end{array}
    Нуль в позиции 9 — правее позиции 8. Однако ситуация аналогична рассмотренной на шаге 23.

  25. Вторая строка исчерпана. Переходим к анализу третьей строки матрицы S. Правее третьей позиции в этой строке есть нуль в позиции 5. Формируем s31 = "3" \vee "5"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{31} & 1 & & & 1 & & 1 & 1 & 1 & 1 & 1 \\
\cline{2-11}
\end{array}
    Строка не содержит "дополнительных" нулей правее позиции 5, хотя содержит нули не только в позициях 3 и 5. Значит, мы не получим новых ПМВНК.

  26. Следующий (последний) нуль в третьей строке занимает позицию 9. Формируем s32 = "3" \vee "9"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{32} & 1 & & & 1 & 1& 1 & 1 &  & 1 & 1 \\
\cline{2-11}
\end{array}
    Исключаем строку из стека, т.к. она имеет нули только левее позиции 9.

  27. Анализируем четвертую строку и убеждаемся, что новых ПМВНК мы не получим.

  28. Анализируем пятую строку, Она содержит нули правее пятой позиции - в позициях 6, 7, 8, 10. Формируем s33 = "5" \vee "6"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{33} & 1 & 1& 1& 1 & &  & & & 1 & 1 \\
\cline{2-11}
\end{array}
    Первый "дополнительный" нуль, правее позиции 6, занимает позицию 7. Формируем s34 = s33 \vee "7"
    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{34} & 1 & 1& 1& 1 & & & & 1 & 1 & 1 \\
\cline{2-11}
\end{array}
    Строка содержит нули только в позициях 5, 6, 7. Найдено ПМВНК {5, 6, 7} с потоком d5 + d6 + d7.

  29. Следующий нуль — в позиции 8. Формируем s35 = s33 \vee "8"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{35} & 1 & 1 & 1 & 1 & & & 1 & & 1 & 1 \\
\cline{2-11}
\end{array}
    Строка содержит нули только в позициях 5, 6, 8, что соответствует ПМВНК {5, 6, 8} с потоком d5 + d6 + d8.

  30. Анализ позиций 7 и 8 пятой строки приводит к повторному нахождению ПМВНК.

  31. Последний "дополнительный" нуль пятой строки занимает позицию 10. Формируем s36 = "5" \vee "10"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{36} & 1 & 1 & 1 & 1 & & 1 & 1 & 1 &  1
& \\
\cline{2-11}
\end{array}
    Строка содержит нули в позициях 5 и 10. Найдено очередное ПМВНК {5, 10} с потоком d5 + d10.

  32. Переходим к анализу шестой строки матрицы S. Она содержит нули правее шестой позиции в позициях 7, 8, 9. Формируем s37 = "6" \vee "7"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{37} & & 1 & 1 & 1 & & & & 1 &  & 1 \\
\cline{2-11}
\end{array}
    Правее седьмой позиции "дополнительный" нуль занимает позицию 9. Формируем s38 = s37 \vee "9"
    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{38} & 1 & 1& 1& 1 & 1& & & 1 &  & 1 \\
\cline{2-11}
\end{array}
    Строка содержит нули в позициях 6, 7, 9. Найдено ПМВНК {6, 7, 9} с потоком d6 + d7 + d9.

  33. Формируем s39 = "6" \vee "8"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{39} & & 1 & 1 & 1 & & & 1 & &  & 1 \\
\cline{2-11}
\end{array}
    Правее восьмой позиции "дополнительный" нуль занимает позицию 9. Как и на предыдущем шаге, находим следующее ПМВНК {6, 8, 9} с потоком d6 + d8 + d9.

  34. 34. Можно убедиться в том, что анализ седьмой и восьмой строк не приведет к получению новых ПМВНК.

  35. Девятая строка содержит единственный нуль правее позиции 9 - в позиции 10. Формируем s40 = "9" \vee "10"

    \begin{array}{c|c|c|c|c|c|c|c|c|c|c|}
\cline{2-11}
s_{40} & 1 & 1& 1& 1 & 1& 1 & 1 & 1 &  & \\
\cline{2-11}
\end{array}

Найдено последнее ПМВНК {9, 10} с потоком d9 + d10.

Mardon Madrahimov
Mardon Madrahimov
Узбекистан, nukus, qmu, 2013
Mardon Madraximov
Mardon Madraximov
Узбекистан, ellikqala