Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
317250_88DC9_shpory_po_tpr_2010_g.doc
Скачиваний:
8
Добавлен:
18.11.2018
Размер:
446.98 Кб
Скачать

17 Алгоритм Флойда нахождения кратчайшего пути

Позволяет нати путо между любыми 2 узлами одновременно.

D — м-ца расстояний, S — м-ца узлов

М-ца D строится: В строке i, столбце j пишется dij, кот-ый приписывается ребру i, если это ребро есть в графе

Ш0. D0, S0, k=1;

Шk. Задается k как ведущая строка и столбец. Для всех эл-в м-цы, не входящих в эту строку и столбец проверяем условие dik+dkj < dij ( i!=j; j!=k; i!=k)

Если выполняется, то

а) формир м-цу Dk из Dk-1 путем замены dij на сумму dik+dkj

б) Sk из Sk-1 ; Sij=k; k=k+1 ; Если k<n , то повторяем шаг k

Такая схема исп-ся в маршрутизаторах, IP-сетях, при маршрутизации источника.

18. Задача о максимальном потоке.

Задана сеть опред-й конфигурации. Для каждого участка известны пропускные способности. Решением такой задачи является опред-е максимального потока, который можно передать м/у 2 заданными узлами. Требования : один источник и один сток.

Для реш-я предложено множество алг-в, которые делятся на 2 группы:

  1. Базируются на построении и переборе разрезов

  2. Основан на выдел путей с положит пропускной способностью от истока к стоку

Разрезом считается такой набор ребер, который полностью прекращ поток от истока к стоку.

Алгоритмы перебора разрезов не эффективны с вычисл точки зрения

19. Метод Форда-Фалкерсона.

Перебор сквозных путей от истока к стоку с вычислением пропускных способностей этих путей.

(Сij, Cji) – текущая или остаточная пропускная способность; (неСij, неCji) - начальная

Шаг 1: Для всех ребер положим остаточную пропускную способность равной первоначальной пропускной способности. (Сij, Cji) = (неСij, неCji). Для начального узла: [∞, -] ; i=1

Шаг2: Определяем множество Si, как множество узлов j, в который можно будет перейти из узла i с положительной остаточной пропускной способностью, т.е. Cij>0 .

Если Si ≠ Ø, то выполняем ш3, иначе переходим к ш4.

Шаг 3: на множ-ве Si выбираем k, такое, что

Cik=max{Cij}

Если k=n, то сквозной путь найден, переходим к ш5, иначе присваиваем i=k и переходим к ш2.

Шаг 4: (откат назад)

Если i=1, то сквозной путь невозможен → Шаг 6

Если i!=1, то вводим узел r ( узел, предшеств i ).Удаляем узел i из множ-ва Sr, полагаем i=r и →ш2

Шаг 5: (Определение остаточной сети)

Np={1,k1,k2,…,n}

исток сток

Np – множество узлов, входящих в p-ый сквозной путь от истока к стоку n.

Тогда максимальный поток, проходящий по этому пути определяется:

Остаточные пропускные способности ребер, составляющих сквозной путь уменьшаются на величину fp в направлении движения потока и увеличения на эту же величину в обратном направлении. Полагаем i=1 → ш2

Шаг 6: Решение

При m найденных сквозных путях макс поток определяется следующим образом:

Оптимальный поток через ребро (i,j) определяется:

а) m

б) Эти разности дожны быть одинаковы по модулю. Напр-е потока определяет положительная разность

20 Динамическое программирование. Рекуррентные алгоритмы прямой и обратной прогонки.

ДП находит оптим решение n-мерной задачи путем декомпозиции на n этапов, каждый из котор представ собой задачу от 1 переменной. Эти задачи должны быть связаны между собой общим условием. Вычисления выполняются рекурентно. Решение одной подзадачи явл исходными данными для другой. Решив последнюю получим оптим решение.

Для решения задач динамического программирования необходимо сформулировать следующие основные элементы задачи:

1. Этапы и подзадачи

2. Множество вариантов решений для каждого этапа

3. Состояние для каждого этапа и его возможное значение

  1. Управляющая функция

  2. Рекуррентное выражение

Два метода: прямой и обрат прогонки.

Рекурентные вычисления производятся от начальной вершины до конечной, а выписывание оптимального решения проиходит в обратном порядке. Как правило в задачах ДП используется алгоритм обратной погонки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]