Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по исследованию операций.doc
Скачиваний:
98
Добавлен:
02.05.2014
Размер:
2 Мб
Скачать
☆

2.2. Постановка задачи маршрутизации в им

Пусть [A, R] – орграф без контуров, и пусть на дугах этого графа задана некоторая арифметическая функция v(ai aj) (заданы веса на дугах).

Пример (продолжение предыдущего):

||v(ai aj)|| =

1

2

3

4

5

6

7

1

×

4

5

9

2

2

×

5

6

3

×

3

7

4

10

×

8

5

×

1

6

×

3

7

×

Требуется определить оптимальный путь от начальной вершины а0 до конечной аn. Это означает: определить последовательность вершин а0, а1,… аn, оптимизирующих целевую функцию F = = S (а0, аn), т.е.

2.3. Идея решения задачи

Идея решения задачи состоит в присвоении каждой вершине заданного графа некоторого числа, называемого индексом и равного величине пути от начальной вершины до фиксированной (или от фиксированной до конечной). Присвоение индекса осуществляется с помощью дерева, в котором от начальной вершины до любой фиксированной существует путь, причем единственный, содержащий промежуточные вершины только по одному ряду.

Очевидно, что существует дерево, в котором все вершины имеют opt индексы. Такое дерево можно построить преобразованием любого исходного дерева для заданного графа с корнем в начальной или конечной вершине, испытывая поочередно все дуги исходного графа, не вошедшие в данное дерево.

Определение. Любой граф без циклов называется деревом.

Любое дерево обладает замечательным свойством: всякий путь на дереве определяется однозначно. Чтобы построить дерево для орграфа, нужно отвлечься от ориентации его дуг.

Дадим индуктивное определение индекса (по рекуррентной схеме). Положим, что на всех дугах (ai, aj) орграфа заданы веса v(ai, aj) и последовательность вершин а0,…, аn. Тогда при прямом ходе:

I(а0) ≡ |S(а0, а0) ≡ 0,

I(а1) ≡ |S(а0, а1) ≡ I(а0) + v(a0, a1) = v(a0, a1),

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

I(ai) ≡ |S(а0, аi) = I(ai–1) + v(ai–1, ai),

i = 2,…, n;

при обратном ходе:

I(an) ≡ |S(аn, аn) ≡ 0,

I(an–1) ≡ |S(аn–1, аn) = I(an) + v(аn–1, аn) = v(аn–1, аn),

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

I(ai) ≡ |S(ai, an) = I(ai+1) + v(ai, ai+1),

i = n – 2,…, 0.

Однако при реализации такой схемы необходимо потребовать выполнения следующего условия: подпуть оптимального пути есть путь оптимальный (это условие не работает, когда проявляется последействие, т.е. когда для I(ai) нет выбора).