Визначення мінімального шляху на графі з ребрами довільної довжини

Графічне зображення графа та інші способи його представлення, відношення інцидентності. Дослідження оптимального шляху графа. Проведення синтезу графа, визначення ваги ребер та індексів вершин, що має задану структуру та заданий оптимальний шлях.

Рубрика Математика
Вид лабораторная работа
Язык украинский
Дата добавления 06.06.2015
Размер файла 209,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Лабораторна робота № 3

Визначення мінімального шляху на графі з ребрами довільної довжини

граф інцидентність ребро вершина

Мета роботи - навчитися визначати оптимальний шлях (мінімальної довжини) у заданого графа, а також виконувати синтез графа (визначення ваги всіх ребер та індексів всіх вершин), що має задану структуру та заданий оптимальний шлях.

Короткі теоретичні відомості

Є багато підходів до визначення поняття “граф”. Наведемо одне з таких визначень. Нехай V - довільна множина, E - деяка сукупність пар вигляду (vi, vj), де vi, vj V (тобто сукупність пар елементів, що входять до множини V), причому в сукупності E можуть зустрічатися однакові пари. Тоді упорядкована пара G=(V, E), що складається з множини V та сукупності E, називається графом із множиною вершин V та множиною ребер E. Іншими словами, граф - це дві множини, що взаємно відповідають одна інший, - множина вершин та множина ребер (множина бінарних відношень вершин), кожне (ребро) з яких відповідає парі елементів (допускаються однакові елементи) з множини вершин.

Графи зручно зображати графічно (малюнком), що спричинило появу їхньої назви. При цьому елементи множини вершин V зображають крапками на площині, а ребра (vi, vj) - відрізками (прямолінійними або криволінійними), які з'єднують крапки vi та vj. Граф називається скінченним, якщо множини його вершин та ребер є скінченими (надалі розглядаються лише такі графи). Множину вершин графа G позначають V(G), а множину ребер - E(G). Кількість вершин графа n(G)=|V(G)| (кількість елементів V(G)). Кількість ребер графа m(G)=|E(G)| (кількість елементів E(G)). Кількість вершин графа називають його порядком.

Якщо елемент e (ребро) сукупності E є парою елементів (вершин) v та w: e=(v, w), то кажуть:

– вершини v та w суміжні;

– вершини v та w є кінцями ребра e;

– вершини v та w - інцидентні ребру e;

– ребро e - інцидентне вершинам v та w.

Іншими словами, якщо вершини є кінцями ребра, то вони інцидентні цьому ребру, а ребро - інцидентне їм. Два ребра називають суміжними, якщо обидва вони є інцидентними одній вершині (тобто мають спільну вершину). Кількість ребер, інцидентних деякій вершині v, називається локальним степенем або просто степенем вершини v.

Графічне представлення деяких прикладів графів наведено на рис. 1.

Рис. 1

Якщо множина ребер E порожня (рис.1, а), граф називається нуль-графом. Якщо множина вершин V є порожньою, то порожньою є також множина ребер E. Такий граф називається порожнім. Лінії, що зображають ребра графа, можуть перетинатися, але точки перетину не є вершинами (рис.1, б). Різні ребра можуть бути інцидентні одній і тій самій парі вершин (рис.1, в), такі ребра називаються кратними (випадок наявності однакових пар (vi, vj)). Граф, що містить кратні ребра, називається мультиграфом. Ребро може з'єднувати вершину саму з собою (рис.1, г), таке ребро називається петлею. Це випадок наявності пар (vi, vi). Граф із петлями та кратними ребрами називається псевдографом.

Якщо пара e=(v, w)E вважається впорядкованою, тобто суттєвим є порядок розташування кінців ребра (іншими словами, важливим є, яка вершина ребра є початком, а яка - кінцем), то таке ребро називається орієнтованим. В такому випадку (w, v)?(v, w). Граф, що містить лише орієнтовані ребра, називається орієнтованим.

Якщо немає різниці, яку вершину ребра вважати початком, а яку - кінцем, тобто (w, v)=(v, w), ребро є неорієнтованим. Граф, що містить тільки неорієнтовані ребра - неорієнтований. Іноді граф може містити як орієнтовані, так і неорієнтовані ребра (змішаний граф). Ребра орієнтованого графа прийнято називати дугами і позначати направленими відрізками (рис.1, д-з). Напрямки орієнтованих ребер позначаються стрілками. Орієнтований граф може мати кратні ребра (рис.1, е), петлі (рис.1, ж), а також петлі, що з'єднують одні й ті самі вершини, але у зворотних напрямках (рис.1, з). Кожному неорієнтованому графу можна поставити у відповідність орієнтований граф з тією самою множиною вершин та множиною ребер, в якій кожне ребро замінено двома орієнтованими ребрами, що є інцидентними тим самим вершинам та мають зворотні напрямки. Про дугу (w, v) кажуть, що вона виходить з вершини w та приходить в вершину v. Вершини w та v називають відповідно початком та кінцем дуги (w, v).

Задати граф означає задати множини його вершин та ребер, а також відношення інцидентності. Крім графічного, є інші способи задання графа. Якщо граф скінчений, для опису його вершин та ребер достатньо їх занумерувати. Нехай v1, v2, … vn - вершини графа, e1, e2, … em - його ребра. Відношення інцидентності можна визначити матрицею, що має m рядків та n стовпчиків і складається з елементів еij. Стовбці відповідають вершинам графа, а рядки - його ребрам. Якщо ребро ei є інцидентним вершині vj, тоді елемент еij = 1, інакше еij = 0. Така матриця називається матрицею інцидентності звичайного графа і є одним зі способів його визначення. Для графа на рис. 2 - матриця інцидентності наведена в табл.1.

Рис. 2

Для орієнтованого графа прийнято, що елемент еij = -1, якщо вершина vj є початком ребра ei; еij = 1, якщо вершина vj є кінцем ребра ei; еij = б(-1, 0, 1), якщо ei - петля інцидентної вершини vj; інакше еij = 0.

Граф можна задати матрицею суміжності - квадратною матрицею дij, стовпцям і рядкам якої відповідають вершини графа. Для неорієнтованого графа дij дорівнює кількості ребер, інцидентних i-тій та j-тій вершинам (кількості ребер, що їх з'єднують), для орієнтованого графа цей елемент відповідає кількості ребер з початком в i-тій вершині та кінцем в j-тій вершині. Таким чином матриця суміжності неорієнтованого графа є симетричною (дij = дji), а орієнтованого - необов'язково. Якщо ж вона є все-таки симетричною, то для кожної дуги орієнтованого графа існує дуга, що з'єднує ті ж вершини, але в зворотному напрямку.

Матриця суміжності для графа на рис.2 наведена в таблиці 2.

Таблиця 1. Матриця інцидентності

v1

v2

v3

v4

v5

v6

e1

1

1

0

0

0

0

e2

0

1

1

0

0

0

e3

0

0

1

0

1

0

e4

0

0

0

1

1

0

e5

0

0

0

0

1

1

e6

1

0

0

0

0

1

e7

1

0

0

0

1

0

e8

0

1

0

0

0

1

Таблиця 2. Матриця суміжності

v1

v2

v3

v4

v5

v6

v1

0

1

0

0

1

1

v2

1

0

1

0

0

1

v3

0

1

0

0

1

0

v4

0

0

0

0

1

0

v5

1

0

1

1

0

1

v6

1

1

0

0

1

0

Маршрутом (шляхом) у графі називається така скінченна або нескінченна послідовність вершин і ребер, що чергуються: (… v1, e1, v2, e2, …, vn-1, en-1, vn, …), що кожні два сусідні ребра ei-1 та ei мають спільну інцидентну вершину vi. В скінченних маршрутах існує перше та останнє ребра, а також перша (початок маршруту) та остання (кінець маршруту) вершини.

Граф називається зваженим, якщо на множині ребер визначено вагову функцію (кожному ребру поставлена у відповідність вага). Для будь-якого шляху М зваженого графу позначимо через l(M) суму ваг ребер, що входять у М. Величину l(M) будемо називати вагою (або довжиною) шляху М у зваженому графі. Шлях у зваженому графі з вершини w в вершину v, де w v, називається мінімальним, якщо він має найменшу вагу серед усіх шляхів з вершини w в вершину v.

Існує багато практичних задач, що зводяться до пошуку мінімального шляху на графах (задачі мінімізації транспортних, енергетичних, інформаційних тощо потоків, пошуку оптимальних послідовностей виконуваних дій, наприклад оптимальної послідовності запуску партій виробів тощо).

Розглянемо алгоритм знаходження оптимального за мінімумом довжини (найкоротшого) шляху в неорієнтованому графі з ребрами довільної довжини (ваги). Нехай задано граф, у якого відомо ваги всіх ребер та вершини якого пронумеровано за порядком. Також задано початкову та кінцеву вершини шляху (яка точка є початком, а яка є кінцем, значення не має). Позначимо початок шляху - А, кінець - В. Нехай вага ребра, що з'єднує i-ту та j-ту вершини, буде позначатися Lij. Алгоритм передбачає присвоєння кожній вершині певного індексу (аналог потенціалу в електричних схемах) та має два етапи - етап визначення індексів всіх вершин та етап прокладання шляху по ребрам, вага яких рівна різниці індексів інцидентних вершин (вершин, які з'єднуються даним ребром). Отже,

1. Визначення індексів вершин (позначатимемо лi індекс вершини vi).

1.1. Приймаємо індекс вершини кінця шляху (В), рівний 0: л(B) = 0.

1.2. Починаємо цикл по всім вершинам, починаючи з вершини В. Для кожної вершини, індекс якої відомий, виконуємо визначення індексів всіх суміжних вершин. Якщо індекси всіх суміжних вершин для даної буде визначено, то така вершина буде вважатися “пройденою” і біля неї поставимо галочку.

1.2.1. Починаємо цикл індексації по всім вершинам, сусіднім з даною. Для кожної сусідньої вершини виконуємо:

1.2.1.1. Визначення можливого індексу чергової вершини:

лj = лi + Lij

i - індекс вершини, відносно якої визначаємо);

1.2.1.2. Якщо індекс даної вершини, яку розраховуємо, ще не був визначений або є більший, ніж нове розраховане значення лj, приймаємо його рівним новому значенню лj, інакше - не змінюємо.

1.2.2. Повторюємо пп.1.2.1.1-1.2.1.2 для всіх вершин, сусідніх з даною. Після цього дану вершину вважаємо “пройденою” і біля неї поставимо галочку. Якщо при розрахунку індексів сусідніх вершин змінився індекс вершини, яка буда “пройденою”, вона перестає бути “пройденою” і галочка біля неї знімається.

1.2.3. Повторюємо п.1.2.1-1.2.2 доки всі вершини (крім А) не будуть “пройдені” (біля них будуть стояти галочки). Довжина шляху рівна індексу вершини А.

2. Визначення шляху.

2.1. Починаючи з вершини, що є початком шляху (А), визначаємо чергове ребро, по якому іде шлях. Це буде ребро, що з'єднує дану вершину vj з вершиною vi, різниця індексів яких в точності рівна вазі ребра:

лj - лi = Lij

j - останньої знайденої вершини, лi - індекс вершини, що перевіряється на предмет того, щоб вона стала наступною в мінімальному шляху). Завжди знайдеться принаймні одне таке ребро, що з'єднує дану вершину з вершиною, відносно якої був порахований індекс даної.

2.2. Повторюємо п.2.1., поки не прийдемо в вершину В. Якщо на якомусь кроці пункту 2.1 задовольняє декілька ребер, маємо альтернативні шляхи і виконуємо далі п.2.1 для кожного із шляхів.

Цікавою представляється задача синтезу графа - побудови такого графа, в якому оптимальний шлях має бути таким, як заздалегідь визначено (наприклад, якщо треба спроектувати транспортну або інформаційну мережу так, щоб в ній певний потік проходив саме так, як визначено). Розглянемо алгоритм побудови (синтезу) графа (визначення ваги всіх ребер та індексів всіх вершин), що має задану структуру, заданий оптимальний шлях та якомога меншу сумарну вагу всіх ребер. Структура графу (набір вершин та ребер, що їх з'єднує), береться як у графа в задачі визначення оптимального шляху. Заданий шлях отримується дзеркальним відображенням знайденого шляху відносно горизонтальної прямої. Довжина шляху береться більшою (меншою) довжини знайденого шляху на константу, вказану викладачем. Алгоритм полягає в наступному:

1. Малюємо дзеркальний граф, на якому позначаємо заданий шлях. Розподіляємо загальну довжину заданого шляху по ребрам, що його складають (приблизно рівномірно).

2. Приймаємо індекс кінця шляху (В), рівний 0: л(B) = 0.

3. Визначаємо індекси вершин, по яким проходить оптимальний шлях:

лj = лi + Lij (поки не дійдемо до вершини А).

4. Визначаємо ваги інших ребер та індекси вершин (що не належать оптимальному шляху):

4.1.Для ребра, що має визначені індекси обох кінців:

4.1.1. Якщо вершина, якій відповідає більший індекс, належить оптимальному шляху - вага ребра рівна різниці індексів вершин плюс 1. Інакше - вага ребра рівна різниці індексів вершин (але не менша 1):

Lij = лj - лi+1,

якщо лj > лi то лj (AB)min, інакше:

Lij = max((лj - лi), 1).

4.2. Для вершини, індекс якої невідомий, визначаємо сусідню з мінімальним індексом. Індекс даної вершини буде на 1 більше індексу сусідньої вершини з мінімальним індексом.

4.3. Виконуємо 4.1-4.2 поки всі індекси вершин та ваги ребер не будуть визначені.

Виконання роботи

1. Виконано вручну пошук шляху мінімальної довжини між двома заданими викладачем вершинами А та В на графі, заданому за варіантом(Рис.3) .

Рис.3. Малюнок графу, на якому виконано пошук оптимального маршруту вручну

2. Виконано перевірку правильності вирішення задачі пошуку мінімального шляху на ЕОМ (Рис.4).

3. Виконано вручну синтез графа із оптимальним маршрутом, отриманим як дзеркальне відображення маршруту, знайденого в п.1 та п.2. Довжину маршруту прийняти більшою на 7 довжини знайденого шляху на константу, що вказується викладачем(Рис.5).

4. Виконано перевірку правильності синтезу графа на ЕОМ (Рис.6).

Рис.4. Знімок графу з програми, що засвідчує правильність вирішення задачі пошуку мінімального шляху на заданому графі.

Рис.5. Малюнок графа, на якому показано вирішення задачі синтезу графа вручну.

Рис.6.Знімок графу з програми, що засвідчує правильність вирішення задачі синтезу графа

Висновок

У ході лабораторної роботи було ознайомлено з визначенням оптимального шляху (мінімальної довжини) у заданого графа, а також з виконанням синтезу графа. Під час виконання даної лабораторної роботи було виконано пошук оптимального маршруту вручну, знайдено мінімальний шлях на заданому графі. Виконавши пошук мінімального шляху на ЕОМ, правильність вирішення задачі вручну підтвердилась. Було виконано вручну синтез графа із оптимальним маршрутом, отриманим як дзеркальне відображення вибраного маршруту, що був одержаний. При перевірці синтезу графа на ЕОМ, правильність виконаного вручну синтезу графа підтвердилась.

Размещено на Allbest.ru

...

Подобные документы

  • Побудування графа та матриці інцидентності. Перетворення графа у зважений за допомогою алгоритму Дейкстри, знаходження довжини найкоротшого шляху між двома вершинами та побудування дійсного шляху. Обхід дерева у прямому та зворотному порядках.

    курсовая работа [144,1 K], добавлен 03.07.2014

  • Алгоритм перехода к графическому представлению для неориентированного графа. Количество вершин неориентированного графа. Чтение из матрицы смежностей. Связи между вершинами в матрице. Задание координат вершин в зависимости от количества секторов.

    лабораторная работа [34,0 K], добавлен 29.04.2011

  • Доказательство тождества с помощью диаграмм Эйлера-Венна. Определение вида логической формулы с помощью таблицы истинности. Рисунок графа G (V, E) с множеством вершин V. Поиск матриц смежности и инцидентности. Определение множества вершин и ребер графа.

    контрольная работа [463,0 K], добавлен 17.05.2015

  • Розв'язання задач з теорії множин та математичної логіки. Визначення основних характеристик графа г (Х,W). Розклад функцій дискретного аргументу в ряди по базисним функціям. Побудова та доведення діаграми Ейлера-Вена. Побудова матриці інцидентності графа.

    курсовая работа [988,5 K], добавлен 20.04.2012

  • Восстановление графов по заданным матрицам смежности вершин. Построение для каждого графа матрицы смежности ребер, инцидентности, достижимости, контрдостижимости. Поиск композиции графов. Определение локальных степеней вершин графа. Поиск базы графов.

    лабораторная работа [85,5 K], добавлен 09.01.2009

  • Метод Форда-Беллмана для нахождения расстояния от источника до всех вершин графа. Алгоритмы поиска расстояний и отыскания кратчайших путей в графах. Блочно-диагональный вид и матрица в исследовании системы булевых функций и самодвойственной функции.

    курсовая работа [192,1 K], добавлен 10.10.2011

  • Понятие "граф" и его матричное представление. Свойства матриц смежности и инцидентности. Свойства маршрутов, цепей и циклов. Задача нахождения центральных вершин графа, его метрические характеристики. Приложение теории графов в областях науки и техники.

    курсовая работа [271,1 K], добавлен 09.05.2015

  • Описание заданного графа множествами вершин V и дуг X, списками смежности, матрицей инцидентности и смежности. Матрица весов соответствующего неориентированного графа. Определение дерева кратчайших путей по алгоритму Дейкстры. Поиск деревьев на графе.

    курсовая работа [625,4 K], добавлен 30.09.2014

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

    контрольная работа [1,3 M], добавлен 05.05.2013

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

    презентация [258,0 K], добавлен 23.06.2013

  • История возникновения, основные понятия графа и их пояснение на примере. Графический или геометрический способ задания графов, понятие смежности и инцидентности. Элементы графа: висячая и изолированная вершины. Применение графов в повседневной жизни.

    курсовая работа [636,2 K], добавлен 20.12.2015

  • Алгоритм, использующий метод Магу-Вейссмана. Общие сведения, описание, вызов и загрузка, функциональное назначение и программный код программы. Описание логической структуры и инструкция пользователю, решение контрольных примеров раскраски графа.

    курсовая работа [350,5 K], добавлен 20.12.2009

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

    курсовая работа [423,7 K], добавлен 21.02.2009

  • Основні положення теорії графов. Алгоритм розфарбування графу методом неявного перебору. Задання графу матрицею суміжності. Особливості програмної реалізації на мові Turbo Pascal алгоритму оптимального розфарбування вершин завантаженого з файлу графа.

    курсовая работа [557,1 K], добавлен 15.06.2014

  • Понятие "граф". Отношения между разнородными элементами. Матричное представление графов. Операции над графами. Маршруты, цепи, циклы. Метрические характеристики графа. Приложение теории графов в различных областях науки и техники. Листинг программы.

    курсовая работа [725,8 K], добавлен 15.12.2008

  • Алгоритм построения минимального остовного дерева. Последовательность выполнения алгоритма Прима, его содержание и назначение. Процедура рисования графа. Порядок составления и тестирования программы, ее интерфейс, реализация и правила эксплуатации.

    курсовая работа [225,0 K], добавлен 30.04.2011

  • Історія виникнення графів, основні поняття теорії та різновиди: повні, регулярні, платонові, двочастинні. Маршрути, ланцюги і цикли. Означення гамільтонового та напівгамільтонового графа, достатні умови. Задача побудови гамільтонових циклів у графі.

    курсовая работа [327,7 K], добавлен 22.01.2013

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

    курсовая работа [185,3 K], добавлен 24.05.2015

  • Поняття про бінарні відношення, способи їх задання, існуючі операції, характерні властивості. Відношення еквівалентності, порядку, домінування й переваги. Поняття та значення R-оптимальності, найкращого, найгіршого, максимального й мінімального елементів.

    реферат [1,3 M], добавлен 04.10.2015

  • Ориентированные и неориентированные графы: общая характеристика, специальные вершины и ребра, полустепени вершин, матрицы смежности, инцидентности, достижимости, связности. Числовые характеристики каждого графа, обход в глубину и в ширину, базис циклов.

    курсовая работа [225,5 K], добавлен 14.05.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.