- •О.Н. Ванеев, д.Е. Турчин
- •Лабораторный практикум
- •Кемерово 2013
- •Описание лабораторного практикума
- •1.2.2. Множества и операции над ними
- •1.2.3. Декартово произведение множеств. Соответствия и отношения на множествах
- •1.2.4. Основные понятия теории графов
- •1.2.5. Анализ модели системы
- •1. Определение цели системы.
- •2. Выделение подсистем.
- •3. Выделение внешних систем.
- •4. Выделение входов, ресурсов и затрат.
- •5. Выделение выходов, результатов и прибыли.
- •1. Определение цели системы.
- •2. Выделение подсистем.
- •3. Выделение внешних систем.
- •4. Выделение входов, ресурсов и затрат.
- •5. Выделение выходов, результатов и прибыли.
- •1.3. Порядок выполнения работы
- •2.3. Порядок выполнения работы
- •3.3. Порядок выполнения работы
- •4.3. Порядок выполнения работы
- •5.2.2. Метод ранжирования вариантов
- •2.2.3. Метод парных сравнений
- •5.3. Порядок выполнения работы
- •Основные положения объектной модели.
- •6.2.2. Общая характеристика объектов и классов. Отношения между объектами и классами Общая характеристика объектов.
- •Общая характеристика классов.
- •6.2.2. Понятие о языке uml. Диаграммы классов Понятие о языке uml.
- •Диаграммы классов uml.
- •6.2.3. Реализация класса и его элементов на языке программирования c# Состав класса. Описание класса.
- •Поля и константы. Методы.
- •Свойства.
- •6.3. Порядок выполнения работы
- •6.4. Контрольные вопросы
- •Диаграммы последовательностей.
- •7.2.2. Отношения между классами. Моделирование наследования Отношение между классами. Ассоциация, агрегация и зависимость.
- •7.2.3. Реализация отношений между классами на языке c#
- •7.3. Порядок выполнения работы
- •8.4. Контрольные вопросы
- •Рекомендуемая литература
- •Приложение п.1. Значения статистических критериев
2.3. Порядок выполнения работы
Данная лабораторная работа предполагает выполнение следующих этапов:
Изучить методические указания к лабораторной работе.
Используя алгоритм поиска в глубину, построить ориентированное остовное дерево на основе графа, полученного при выполнении работы №1.
На основе схемы неориентированного взвешенного графа (таблица 2.2) построить вариант наименьшего остовного дерева.
Оформить и защитить отчет по лабораторной работе.
Таблица 2.2
Схемы неориентированных взвешенных графов
№ вар. |
Схема графа |
№ вар. |
Схема графа |
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
2.4. Контрольные вопросы
?
?
3. Поиск кратчайшего пути на графе с помощью алгоритма Дейкстры
3.1. Цель работы
Цель работы – приобрести умение производить поиск кратчайшего пути от одной вершины графа до другой с помощью алгоритма Дейкстры.
Работа рассчитана на 2 часа.
3.2. Основные теоретические сведения
Задача поиска кратчайшего пути на графе хорошо исследована и имеет алгоритм решения, известный как алгоритм Дейкстры.
Алгоритм поиска кратчайшего пути на взвешенном графе построен в виде пошагового пересчета расстояний от начальной S-й до всех вершин графа. Отдельный шаг алгоритма включает вычисление новых длин путей от начальной до каждой Vj-й вершины и сравнение их с длинами путей между этими же вершинами, принятыми на предшествующих шагах. Для дальнейшего рассмотрения в качестве длины пути принимается меньшая из двух сравниваемых величин. Новая длина пути от начальной до рассматриваемой вершины Vj вычисляется как сумма расстояния от вершины S до вершины, оказавшейся к ней ближайшей на предыдущем шаге (эта вершина будет обозначаться U), и расстояния между вершинами U и Vj, равного весу соответствующей дуги на ГВСП.
Выбор на каждом шаге для каждой вершины кратчайшего из двух сравниваемых вариантов путей позволяет в конце работы алгоритма найти самые кратчайшие расстояния от начальной – S до всех остальных вершин, в том числе от S до Т.
Формула пересчета расстояния от S-й до Vj-й вершины на i-м шаге будет выглядеть следующим образом:
L(i,Vj)=min[L(i-1,Vj),L(i-1,U)+T(U,Vj)],
где i – номер шага; Vj – номер вершины; L(i,Vj) – расстояние от начальной вершины до вершины Vj, вычисленное на i-м шаге; L(i-1,Vj) – расстояние от начальной вершины до вершины Vj, вычисленное на предшествующем (i-1-м) шаге; L(i-1,U) – расстояние от начальной вершины до вершины, ближайшей к ней, выявленное на предыдущем, i-1-м, шаге; T(U,Vj) – вес дуги U,Vj по матрице смежности Т.
Таблица 3.1
Матрица смежности для графа возможного состава переходов
-
S
A1
B1
A3
B3
C3
A2
B2
C2
B4
C4
T
S
8
12
A1
17
12
11
B1
12
10
15
A3
13
18
16
B3
23
13
16
C3
18
16
13
A2
10
12
B2
10
12
C2
12
17
B4
0
C4
0
T
Данная задача в теории графов известна как задача поиска пути с самым узким широким местом. Ее можно рассматривать как разновидность задачи поиска кратчайшего пути. На каждом шаге алгоритма ее решения пересчитывается характеристика самого широкого места (в данном случае трудоемкость самой трудоемкой операции).
В алгоритме поиска кратчайшего пути на взвешенном графе можно выделить следующие этапы.
Этап 0. Все вершины помещаются во множество И (множество исходных вершин). Устанавливается номер шага – 0 (i=0).
В качестве исходных расстояний от начальной вершины S до всех вершин записывается . Для начальной вершины это значение устанавливается равным 0.
В качестве вершины U, то есть вершины, ближайшей к S, берем саму вершину S.
Этап 1. Устанавливается следующий номер шага (i = i + 1).
Пересчитывается расстояние от начальной вершины до вершин графа по формуле (3).
Этап 2.. Выбирается вершина, ближайшая к началу. Данная вершина принимается в качестве вершины U. Вершина U вычеркивается из И.
Этап 3. Если И = О, то перейти к Э4. Найденный путь L(i,T) – искомый кратчайший путь между начальной вершиной и конечной.
Иначе переход к Э1.
Этап 4. Обратным ходом выявить полученный кратчайший маршрут.
Этап 5. Работу алгоритма закончить.
Таблица 3.2
Матрица пошагового вычисления кратчайших расстояний
до вершин графа
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
|
0` |
-- |
---- |
---- |
--- |
--- |
-- |
--- |
--- |
--- |
---- |
-- |
A1 |
|
8` |
--- |
---- |
-- |
--- |
-- |
--- |
--- |
--- |
---- |
--- |
B1 |
|
12 |
12` |
-- |
-- |
--- |
-- |
--- |
--- |
--- |
---- |
---- |
A3 |
|
|
25 |
24 |
24 |
24` |
|
--- |
--- |
--- |
---- |
---- |
B3 |
|
|
20 |
20 |
20` |
-- |
-- |
--- |
--- |
--- |
---- |
---- |
C3 |
|
|
19 |
19` |
-- |
--- |
-- |
--- |
--- |
--- |
---- |
-- |
A2 |
|
|
|
|
37 |
37 |
37 |
37 |
37' |
--- |
---- |
- |
B2 |
|
|
|
|
35 |
33 |
33 |
33' |
--- |
--- |
---- |
- |
C2 |
|
|
|
|
32 |
32 |
32' |
---- |
----- |
----- |
---- |
-- |
B4 |
|
|
|
|
|
|
|
44 |
43 |
43' |
----- |
----- |
С4 |
|
|
|
|
|
|
|
49 |
45 |
45 |
45 |
45 |
T |
|
|
|
|
|
|
|
|
|
|
43' |
----- |
U |
S |
A1 |
B1 |
C3 |
B3 |
A3 |
C2 |
B2 |
A2 |
B4 |
T |
|
Обратный ход
Оптимальный маршрут, полученный по алгоритму, выявляется на основе обратного хода по матрице кратчайших расстояний. Необходимо последовательно выявить: относительно какой вершины получено последнее значение расстояния до конечной вершины, относительно какой - до вершины, предшествующей конечной, и так до вершины S. Для поиска вершины, относительно которой получено рассматриваемое значение, необходимо проследить по строке, на каком шаге данное значение появилось. Вершина, ближайшая к началу на предшествующем шаге, и будет искомой.

S