Шептунов М. В.етодичка по лабораторным работам по дискретке, страница 5
Описание файла
Документ из архива "Шептунов М. В.етодичка по лабораторным работам по дискретке", который расположен в категории "". Всё это находится в предмете "дискретная математика" из 4 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "дискретная математика" в общих файлах.
Онлайн просмотр документа "Шептунов М. В.етодичка по лабораторным работам по дискретке"
Текст 5 страницы из документа "Шептунов М. В.етодичка по лабораторным работам по дискретке"
2. Разработка и отладка программы определения метрических параметров графов.
3. Проверка программы на примере заданного графа.
Краткие теоретические сведения
Обозначим через d(a,b) длину (число ребер или дуг) кратчайшего маршрута между вершинами a и b.
Для d(a,b) справедливы следующие утверждения
1) d ( a,a ) = 0,
2) d (a,b ) 0,
3) d (a,b) = 0 a = b.
Для неорграфа расстояния симметричны:
4) d (a,b) = d (b, a),
5) d (a, b) d (a, c) + d (c,b).
П
ример:
Рассмотрим вершину х1:
d(x1, x2) = d(x1, x4) = d(x1, x5) = 1,
d(x1, x3 )= 2,
max d(x1, xi) = d(x1, x3) = 2.
xi X
Результаты расчетов для других вершин представлены в матрице D, а максимальные кратчайшие расстояния – в столбце e(xi):
e(xi)
D =
Для каждой вершины xi существует максимальный кратчайший маршрут до некоторой вершины xj, он называется эксцентриситетом вершины и обозначается e(xi). (См. столбец справа от матрицы D).
Максимальный из всех эксцентриситетов графа – это диаметр графа
D(G) = max e(xi).
для графа примера D(G) = 2.
Минимальный из эксцентриситетов – это радиус графа
r(G) = min e(xi).
для графа примера r(G) = 1.
Вершины, у которых e(xi) = r(G) называются центральными.
Вершины периферийные – те, у которых e(xi) = D(G).
Множество центральных вершин – центр, множество периферийных вершин – окраина.
Следовательно, вершина х5 – центр графа, так как e(x5) = r(G) = 1. Вершины x1, x2, x3, x4 – окраина.
Под средним диаметром графа понимают величину
Dср= ,
где С – сумма кратчайших расстояний между всеми парами вершин графа, n – число вершин графа.
D (G)=max d(xi, xj) = 3, где G – данный граф с X={a, b, c, d, e, f}.
Например, d(a, e) = 3 одно из максимальных значений.
d(a, f) = d(b, e) = d(b, f) =…= 3.
Найдем кратчайшие расстояния между всеми парами вершин графа G(6, 7):
d(a, b) = d(a, c) = d(b, a) = d(b, c) = d(c, a) = d(c, b) = d(c, d) = d(d, c) =
d(d, e) = d(d, f) = d(e, d) = d(e, f) = d(f, d) = d(f, e) = 1,
d(a, d) = d(b, d) = d(c, e) = d(c, f) = d(d, a) = d(d, b) = d(e, c) = d(f, c )= 2,
d(a, e )= d(a, f) = d(b, e) = d(b, f) = d(e, a) = d(e, b) = d(f, a) = d(f, b) = 2.
Найдем сумму С всех этих расстояний: С = 1∙14 + 2∙8 + 3∙8 = 54.
n = 6 – число вершин графа G(6, 7).
Найдем средний диаметр Dср= = =1,8.
Содержание отчёта
1. Текст программы на C++ либо Delphi (допускается в среде Visual Basic);
2. Результаты выполнения программы для заданного графа.
Лабораторная работа №11
Кратчайший маршрут во взвешенном графе
Цель работы: Изучение алгоритмов построения кратчайших маршрутов в графах.
Содержание работы:
1. Разработка алгоритмов построения кратчайших маршрутов в графах.
2. Разработка и отладка программы для построения кратчайших маршрутов в графах.
3. Проверка программы на примере нахождения кратчайших маршрутов в заданном графе.
Краткие теоретические сведения
Предварительное замечание:
Если имеем орграф, то так как кратчайший путь не проходит дважды ни через дугу, ни через вершину, то дуги, входящие в вершину начала пути и выходящие из конца пути, можно исключить.
После их исключения могут оказаться изолированные, тупиковые, преходящие вершины. Их также можно исключить.
(преходящие, есть выход, нет входа).
В неорграфе никаких упрощений делать нельзя.
Волновой алгоритм
Вариант 1
Вес ребра – 1 (нет ребра – 0).
S – начало маршрута,
t – конец маршрута.
Ищем маршрут между S и T.
Прямая фаза:
Сначала все вершины не имеют меток.
-
Положим i = 0, присвоим вершине S вес W(S) = i (т.е. W(S) = 0) .
-
Находим все не помеченные вершины, связанные ребром с вершиной (вершинами) с меткой i.
-
Если такие вершины есть, то помечаем их метками i = i + 1. Если вершина T помечена, то к п. 4. Если – нет, то к п. 2. Если таких вершин нет, а вершина T не помечена, то T недостижима из S. СТОП.
-
Длина кратчайшего маршрута от S к T равна W(T). СТОП.
Обратная фаза (начинается с конца):
Принадлежность вершин кратчайшему маршруту определяется из условий: Конечная вершина Vk = T. Для Vk–1 должно выполняться условие W(T) – W(Vk–1) = 1. Для Vk–2 W(Vk–1) – W(Vk–2) = 1 и т.д. пока не придем в вершину S.
Пример: На рисунке показан граф с разметкой вершин.
Маршрут найдите самостоятельно.
Длина маршрута (S,T) равна 3.
Вариант 2
Каждое ребро имеет вес ℓij, ℓii = 0.
ℓij – число, если ребро есть, или = , если ребра нет.
Ищем кратчайший маршрут между вершинами V1 и Vk.
1) Пометить вершины с номерами 1…n метками 1 = 0, i = , i = , n – число вершин. Метки вершин V2…Vn считаем временными.
2) Рассматриваем V1. У вершин, смежных с V1, временные метки меняем по следующему правилу:
– если i – 1 ℓ1,i (ℓ1,i – длина ребра, соединяющего вершину V1 с вершиной Vi), то заменяем i на i = 1 + ℓ1,i
– если i – 1 ℓ1,i , то i не изменяем.
3) Среди вершин с временными метками выбираем вершину Vi с минимальным значением метки i. Метку этой вершины делаем постоянной.
4) Рассматриваем вершины Vj, смежные с Vi, и изменяем временные метки Vj:
– если λj – λί > ℓij, то λj = λί + ℓij,
– если λj – λί ℓij, то не меняем.
-
Если метка конечной вершины Vk – постоянная, то к пункту 6, если нет, то к пункту 3.
-
Строим маршрут, начиная с Vk.
λk – длина маршрута.
Принадлежность вершины Vk–1 маршруту определяется равенством
λk – k–1 = ℓk, k–1
Вершина Vk–2 должна удовлетворять условию
k–1 – k–2 = ℓk–1, k–2 и т.д.
Алгоритм пригоден для орграфа и для весов (расстояний) отрицательных, но таких, чтобы не было в графе циклов с отрицательным весом.
Отрицательный цикл может сделать длину маршрута как угодно малой.
Пример: Дан граф с весами ребер, показанными на рисунке.
Найдите кратчайший маршрут (1,4) самостоятельно.
Ответ: 1,5,3,4; ℓ1,4 = 2.
Содержание отчёта
1. Текст программы на C++ либо Delphi (допускается в среде Visual Basic);
2. Результаты выполнения программы для заданного графа.
ЛИТЕРАТУРА
1. Судоплатов С. В., Овчинникова Е. В. Элементы дискретной математики: Учебник. – М.: ИНФРА-М, Изд-во НГТУ, 2002. – 280 с.
-
Новиков Ф. А. Дискретная математика для программистов. – СПб.:
Питер, 2001. – 304 с.
-
Ашинянц Р. А. Логические методы в искусственном интеллекте. –
М.: МГАПИ, 2001. – 223 с.
-
Кук Д., Бейз Г. Компьютерная математика: Пер. с англ. – М.:
Наука, 1990. – 384 с.
-
Иванов Б. Н. Дискретная математика. Алгоритмы и программы. –
М.: Лаборатория Базовых Знаний, 2003. – 288 с.
-
Редькин Н. П. Дискретная математика: Курс лекций для
студентов-механиков. – СПб.: Изд-во “Лань”, 2003. – 96 с.
-
Харари Ф. Теория графов: Пер. с англ. Под ред. Г. П. Гаврилова.
Изд. 2-е. – М.: Едиториал УРСС, 2003. – 296 с.