Материал: Sb97309

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Порядок расчета длины зависит от математического описания среды, которая до сих пор принималась несущественной. Возможны следующие варианты описания среды:

плоскость;

трехмерная поверхность;

трехмерное пространство.

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

z f x, y ,

где x, y – координаты точки пространства в декартовой плоскости; z – высота (глубина), определяемая координатами x, y.

Таким образом, математическая модель для поставленной задачи включает:

описание неориентированного графа;

описание среды движения;

порядок определения весов (длин) ребер графа;

описание графа с учетом длин.

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

Средством математического описания графов с взвешенными ребрами служат матрицы весов (длин), похожие по структуре на матрицы смежности, но имеющие веса в качестве элементов. Элементы матрицы длин вычисляются следующим образом:

6

 

0, i j,

 

Lij

 

, aij

1 ,

(1.1)

lij

 

 

 

0,

 

 

, a

 

 

 

ij

 

 

где aij – элементы матрицы смежности. Для графов на рис. 1.1 матрицы имеют вид

 

0

3

3

 

12

 

 

0

3

8

 

 

 

 

 

6

0

5

9

 

 

 

 

 

3

0

2

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

0

 

4

 

 

 

 

2

0

2

 

 

L1

 

 

 

0

 

4

 

;

L2

 

8

2

0

1

6

 

,

 

 

 

 

 

 

 

 

 

 

 

 

7

0

2

 

 

 

 

8

1

0

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

0

 

 

 

6

2

0

 

 

где L1 и L2 – матрицы длин для графов на рис. 1.1, а и б соответственно.

Уточнение математической модели. Простые математические модели описывают идеализированное поведение процессов и систем. Для учета реальных факторов, влияющих на поведение объекта, модель уточняют, добавляя различные физические эффекты.

Допустим, предложенную ранее модель для решения траекторной задачи нужно использовать для оценки общего времени пути из начальной точки в конечную. Расчет не представляет сложности, однако модель не учитывает времени, затраченного на подзарядку аккумуляторов (или дозаправку) подвижного объекта. Если считать пункты подзарядки идентичными по времени подзарядки, то учет этого времени сделает модель более реалистичной без существенных усложнений.

В данной задаче полагаем, что время подзарядки аккумуляторов одинаковое для всех пунктов и не зависит от текущего состояния аккумулятора. Можно далее уточнять модель: ввести подзарядку с учетом разрядки или задавать разное время подзарядки на разных пунктах. Правда, в последнем случае придется отказаться от метрических весов графа и рассчитывать веса ребер пропорционально затраченному времени на путь и подзарядку.

Итак, для формализации задачи получения математической модели и численного решения требуются следующие исходные данные:

скорость подвижного объекта;

время работы аккумулятора;

7

время подзарядки аккумулятора;

координаты начальной и конечной точек объекта;

координаты промежуточных точек – пунктов подзарядки.

На основе этих данных можно построить неориентированный граф и сформировать матрицу длин для его описания в вычислительной машине. Теперь задача поиска минимального пути на графе справедлива.

2. АЛГОРИТМЫ ПОИСКА ОПТИМАЛЬНОЙ ТРАЕКТОРИИ

Задача поиска оптимальной траектории, соответствующей минимальной длине на взвешенном графе, широко известна. Наиболее популярны следующие алгоритмы поиска:

алгоритм Форда–Беллмана;

алгоритм Дейкстры;

алгоритм Флойда.

Существуют и другие алгоритмы, но они, как правило, представляют собой модифицированные варианты вышеприведенных.

2.1. Алгоритм Форда–Беллмана

Алгоритм Форда–Беллмана основан на теореме, согласно которой любой участок минимального пути, соединяющий некоторые вершины графа, представляет минимальный путь между этими вершинами. Алгоритм предполагает вычисление всех минимальных путей из начальной вершины.

Исходные данные: матрица длин L, начальная вершина имеет индекс 1. Требуется выполнить следующие действия:

1. Определить для каждой вершины набор величин ik , означающих длину пути от 1-й до і-й вершины, состоящего не более чем из k рeбeр. Набор формируется по правилу

k 1

k

0

0, i 1,

 

i

min i

lij , k 0 n 1, i

 

(1.2)

 

j

 

, i 1,

 

где k – число ребeр; n – число вершин.

Величины ik можно представить в виде квадратной матрицы . Если значение in1 отлично от , значит, оно равно длине минимального пути в вершину і, в противном случае данная вершина недостижима (граф несвязный).

8

2. Определить последовательность ребер, приводящих из 1-й в і-ю вер-

шину за путь ik . Для этого нужно определить номера i1, i2, , ik , для которых выполняются соотношения

k

 

k 1

li1, i ;

 

i

 

i1

 

 

 

 

k 1

k 2

li2 , i1

 

i

 

 

i

2

 

 

;

1

 

 

 

 

 

 

(1.3)

 

 

 

 

 

 

 

 

 

1

 

0

lik , ik 1 .

 

i

k 1

i

k

 

 

 

 

 

 

 

Для графов, приведенных на рис. 1.1, по алгоритму Форда–Беллмана матрицы минимальных путей имеют вид

 

0 0

0 0 0

0

 

0 0

0

0

0

0

 

 

3

3

3

3

3

 

 

 

3

3

3

3

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

3

3

3

3

3

 

2

 

 

5

5

5

5

 

 

 

8

8

8

8

;

 

8

8

7

7

7

.

 

 

 

 

 

 

 

 

 

7

7

7

7

 

 

 

 

9

9

8

8

 

 

 

 

 

 

 

 

 

 

 

 

 

14

 

 

 

 

 

 

12 12 9

9

9

 

 

 

11

11

10

Для графа, приведенного на рис. 1.1, а, минимальный путь до любой вершины достигается максимум за три ребра. По формулам (1.3) легко вос-

становить,

что путь до 6-й вершины

с

конца проходит через 5-ю

3

2

2

 

1

l35 вершины. Таким образом,

6

5

l56 , а далее – через 3-ю 5

3

искомый минимальный путь имеет вид 1–3–5–6. Длина минимального пути равна 9.

Минимальный путь для графа на рис. 1.1, б содержит 5 ребер. Аналогично (1.3) можно восстановить в обратном порядке искомую последовательность вершин 1–2–3–4–5–6, длина минимального пути равна 10.

2.2. Алгоритм Дейкстры

Алгоритм, предложенный в 1959 г. Дейкстрой, считается одним из наиболее эффективных алгоритмов решения задачи нахождения в графе минимальных путей от начальной вершины до всех остальных при положительных длинах дуг.

9

Алгоритм также использует принцип формирования минимального пути из минимальных участков. Однако итерационный процесс алгоритма основан на формировании последовательности вершин, для которых гарантированно известны минимальные пути. Алгоритм фактически строит минимальное дерево (под деревом понимается связный граф без циклов), добавляя на каждой итерации к дереву одну вершину и одно ребро.

Для реализации алгоритма Дейкстры требуется итерационно сформировать два вектора: вектор минимальных путей D и вектор индексов учтенных

вершин Ind, изначально не содержащий элементов.

 

Требуется выполнить следующие действия:

 

 

1. Проинициализировать начальные значения векторов (для

j 1):

 

 

0,

i 1,

Ind1 1.

 

 

di1

i 1,

(1.4)

 

 

,

 

 

 

 

2. Пересчитать вектор D j и Ind для следующих итераций по выражениям:

 

d j ,

i Ind;

 

 

 

 

 

 

i

 

 

 

 

 

 

d j 1

min

d j l

 

,

i Ind;

 

i

 

ki

 

 

1, , n

k

 

 

(1.5)

 

k

 

 

 

 

 

 

 

j

 

 

 

j 2, , n,

 

Ind j index min d

 

, k Ind ;

 

 

 

k

k

 

 

 

 

 

где index – индекс минимального элемента вектора D j , не считая элементов, индексы которых уже присутствуют в векторе Ind; n – число вершин графа.

Если в векторе D j есть несколько элементов с минимальными значениями, нужно выбрать наименьший индекс.

Элементы вектора din содержат длину минимального пути от первой вершины до i-й. Если в векторе остались элементы со значением бесконечности, значит, граф несвязный и вершины с соответствующим индексом недостижимы.

3. Восстановить последовательность ребер, приводящих из первой вершины в искомую, аналогично выражениям (1.3), так как последний столбец

матрицы Λ алгоритма Форда–Беллмана идентичен вектору D n алгоритма Дейкстры.

10

Источник: https://studfile.net/preview/16439023/