- •Орієнтовні теоретичні питання до іспиту з курсу “Комп’ютерна дискретна математика”
- •1 Семестр 2012-2013 навчального року викл. Кублій л.І.
- •Типи задач, які подано в екзаменаційних білетах (аналогічні задачі розв’язуються на практичних заняттях і подано в домашніх завданнях)
- •Властивості операцій над множинами
- •Основна література.
- •Розміщення з повтореннями
- •Перестановки
- •Сполуки (комбінації)
- •Кількість способів розбиття множини́ на підмножи́ни
- •Сполуки (комбінації) з повтореннями
- •Формула включень і виключень
- •Метод математичної індукції
- •Домашнє завдання до теми “Основи комбінаторики.
- •Декартів добуток множин
- •Потужність множини. Рівнопотужні множини
- •Спеціальні бінарні відношення на множині
- •Замикання відношення
- •Перетворення формул в днф і кнф. Поліноми Жегалкіна
- •4. Метод перетворення вектора значень функції до вектора коефіцієнтів полінома Жегалкіна.
- •Функціональна повнота
- •1 Дослідження повноти системи шляхом зведення до повної системи.
- •3 Лінійність функції
- •4 Критерій Поста
- •5 Виділення базису повної системи: метод Петрика
- •Побудова тупикових, мінімальних, найкоротших днф
- •Ейлерові цикли
- •Префіксна й постфіксна форми запису виразів
Ейлерові цикли
Ейлеровим циклом у зв’язному неорієнтованому мультиграфі називають простий цикл (усі його ребра різні), утворений всіма ребрами графа.
Граф, який має ейлерів цикл, називається ейлеровим.
Ейлеровим ланцюгом (ще кажуть: ейлеровим шляхом) у зв’язному неорієнтованому мультиграфі називають простий ланцюг (усі його ребра різні), утворений всіма ребрами графа.
В ейлерових циклі й ланцюгу ребра мають бути різними, але вершини можуть повторюватися. Ейлерів цикл можна намалювати, не відриваючи ручки від паперу, причому малювання починається і закінчується в тій самій точці. Ейлерів ланцюг теж можна намалювати не відриваючи ручки, але при цьому початок буде в одній вершині, а кінець в іншій.
Приклад.
Серед поданих нижче графів перший граф
має ейлерів цикл
(або цикл
,
якщо в іншому порядку обійти вершини
графа; або можна вибрати іншу початкову
вершину і побудувати інший простий
цикл), другий має ейлерів ланцюг
,
а третій не має ні ейлерового ланцюга,
ні ейлерового циклу.
Теорема 1. Зв’язний мультиграф має ейлерів цикл тоді і тільки тоді, коли степені всіх його вершин парні.
Алгоритм побудови
ейлерового циклу.
Нехай дано зв’язний граф G
з парними степенями вершин. Обхід графа
почнемо з будь-якої вершини
і виберемо будь-яке ще не пройдене ребро
;
далі виберемо будь-яке не пройдене
ребро, інцидентне вершині
(таке ребро обов’язково існує: увійшовши
в будь-яку вершину, яка має парний
степінь, завжди можна вийти з неї через
ще не пройдене ребро), і т.д. Побудова
циклу
закінчиться у вершині
.
Якщо побудований цикл містить всі ребра,
то маємо ейлерів цикл; якщо не всі, то
вилучаємо з графа всі ребра побудованого
циклу
і всі вершини, які стали ізольованими.
Оскільки граф G
зв’язний, то цикл
і граф G
мають принаймні одну спільну вершину
.
Із цієї вершини побудуємо цикл
і вставимо його в цикл
замість вершини
.
Якщо побудований цикл містить всі ребра,
то маємо ейлерів цикл; якщо не всі, то
вилучаємо з графа всі ребра циклу
і всі вершини, які стали ізольованими,
і т.д.
Приклад.
Для розглянутого вище графа, використовуючи
наведений алгоритм, побудуємо ейлерів
цикл. Відповідно до теореми ейлерів
цикл побудувати можна, бо всі вершини
графа мають парні степені. Починаючи з
вершини а,
побудуємо, наприклад, цикл
.
Цей цикл не містить всіх ребер графа.
Тому вилучимо ребра, які ввійшли в граф,
а потім вилучимо вершини, які стали
ізольованими:
Побудований цикл
і частина графа, яка залишилася мають
спільну вершину b.
Із цієї вершини побудуємо цикл
і вставимо його замість вершини b
в цикл
і одержимо цикл:
який містить всі ребра графа і ребра не повторюються, а, отже, цей цикл є ейлеровим.
Теорема 2. Зв’язний мультиграф має ейлерів ланцюг, але не має ейлерового циклу тоді і тільки тоді, коли він має рівно дві вершини непарного степеня.
В ейлеровому ланцюгу одна з вершин з непарними степенями буде початком, а інша кінцем цього ланцюга.
Домашнє завдання
1.
Довести,
що ізоморфізм є відношенням еквівалентності
на множині всіх графів (рефлексивність
— граф G
ізоморфний
сам собі; симетричність — якщо граф
ізоморний графові
,
то і
ізоморний
;
транзитивність — якщо граф
ізоморний графові
,
а граф
ізоморний графові
,
то
ізоморфний графові
).
2. Встановити, чи є гомеоморфними графи , , . (перший і другий????, третій — ні)
3. Навести приклади елементарного, простого і складного: а) шляхів із а в е в орієнтованому графі ; визначити довжини цих шляхів; б) контурів у графі ; в) ланцюгів із а в е у співвіднесеному до графі; визначити довжини цих ланцюгів; г) циклів у співвіднесеному до графі.
4. Навести по одному прикладу: а) ейлерового графа; б) графа, який містить ейлерів ланцюг.
Практичне № 17
Матриця досяжності. Дводольні графи. Методи обходу графів
Цикломатичне число графа
Якщо незв’язний
граф має n
вершин, m
ребер і k
компонент зв’язності, то число
називають цикломатичним
числом графа.
Якщо граф зв’язний, тобто має одну
компоненту зв’язності, то його
цикломатичним числом буде
.
Цикломатичне число зв’язного графа
дорівнює найбільшій кількості незалежних
циклів у графі.
1)
,
,
,
отже,
;
2)
,
,
,
отже,
;
Ланцюги між вершинами графа
У графах між двома
різними вершинами елементарні ланцюги
(шляхи) можуть мати довжину 1, 2, …,
,
тобто бути одно-, дво-, …,
-кроковими.
Для будь-якого
неорієнтованого
чи орієнтованого графа, який не має
кратних ребер і петель,
матриця суміжності В
(у такому випадку вона є матрицею
бінарного відношення і містить лише 1
і 0) описує всі однокрокові елементарні
ланцюги (шляхи) між двома різними
вершинами, матриця
,
яка є другим булевим степенем матриці
В, —
двокрокові, …, матриця
—
-крокові.
► Приклад. За допомогою матриці суміжності з’ясувати, чи існують елементарні дво- і трикрокові шляхи із вершини а у вершину d у графі:
Розв’язання. Для заданого орієнтованого графа побудуємо матрицю суміжності:
і знайдемо її другий і третій степені:
,
.
Оскільки в одержаних
булевих степенях матриці суміжності
елементи
,
,
то із вершини а у вершину d
елементарного двокрокового шляху немає,
а трикроковий є. ◄
Матриця досяжності
Граф можна
характеризувати за допомогою матриці
досяжності
.
Рядки і стовпчики цієї матриці, як і
матриці суміжності, позначають елементами
множини вершин V.
При цьому
;
,
якщо в графі існує ланцюг (шлях) із
вершини
у вершину
;
,
якщо в графі не існує ланцюга (шляху) із
вершини
у вершину
.
У неорієнтованого зв’язного і
орієнтованого сильно зв’язного графа
матриця досяжності містить тільки
одиниці.
Приклад. Для поданих нижче орієнтованих графів А, В і С
відповідні матриці досяжності мають вигляд:
Д
ля
неорієнтованих графів Х і Y
матриці досяжності будуть симетричними:
◄
Теорема. У будь-якому графі без кратних ребер і без петель матриця досяжності D визначається матрицею суміжності B за формулою:
,
де Е — одинична матриця.
Кількість
каркасів графа. Кількість
різних каркасів простого зв’язного
графа можна визначити за матрицею
Кірхгофа
.
Рядки і стовпчики цієї матриці, як і
матриці суміжності, позначають елементами
множини вершин V.
При цьому
дорівнює степеневі вершини
;
,
якщо вершини
і
суміжні;
,
якщо вершини
і
не суміжні. У такій матриці сума елементів
кожного рядка, а також кожного стовпчика
дорівнює нулеві, а алгебраїчні доповнення
всіх елементів рівні.
Теорема (Кірхгофа, 1847). Кількість каркасів простого неорієнтованого зв’язного графа дорівнює алгебраїчному доповненню будь-якого елемента матриці Кірхгофа.
Алгоритми обходу вершин графа називають методами пошуку. Розглянемо пошук вглиб і вшир.
Нехай дано простий зв’язний неорієнтований граф .
Пошук вглиб. В алгоритмі пошуку вглиб використовується стек, який працює за принципом LIFO (last in — first out), тобто додавання й вилучення елементів стеку відбувається з одного кінця — верхівки стеку.
Для простого зв’язного неорієнтованого графа алгоритм пошуку вглиб передбачає таку послідовність кроків:
К1. Довільній вершині v присвоюємо номер 1 і записуємо позначку цієї вершини в стек;
К2. Нехай у верхівці стеку є вершина . Якщо всі ребра, інцидентні вершині , позначено, то переходимо на К4, інакше — на К3;
К3. Нехай — непозначене ребро. Якщо вершині номер присвоєно, то ребро позначаємо, наприклад, пунктиром (- - -) і переходимо на К2. Якщо вершині номер не присвоєно, то присвоюємо їй поточний номер і записуємо її позначку в стек; ребро позначаємо, наприклад, суцільною товстою лінією (——) і переходимо на К2.
К4. Виключаємо з верхівки стеку позначку вершини . Якщо стек порожній, то каркас побудовано (його вершини перенумеровано, а ребра позначено суцільною товстою лінією); інакше переходимо на К2.
Пошук вшир. В алгоритмі пошуку вшир використовується список-черга, яка працює за принципом FIFO (first in — first out), тобто елементи додаються в хвіст черги, а вилучаються з голови. При виборі вершин з голови розглядаються всі ще не занумеровані її сусіди.
Для простого зв’язного неорієнтованого графа алгоритм пошуку вшир передбачає таку послідовність кроків:
К1. Довільній вершині v присвоюємо номер 1 і записуємо позначку цієї вершини в чергу;
К2. Нехай на початку черги є вершина . Якщо всі ребра, інцидентні вершині , позначено, то переходимо на К4, інакше — на К3;
К3. Нехай — непозначене ребро. Якщо вершині номер присвоєно, то ребро позначаємо, наприклад, пунктиром (- - -) і переходимо на К2. Якщо вершині номер не присвоєно, то присвоюємо їй поточний номер і записуємо її позначку в чергу; ребро позначаємо, наприклад, суцільною товстою лінією (——) і переходимо на К2.
К4. Вилучаємо з початку черги позначку вершини . Якщо черга порожня, то каркас побудовано (його вершини перенумеровано, а ребра позначено суцільною товстою лінією); інакше переходимо на К2.
Роботу алгоритмів пошуку вглиб і вшир зручно подавати за допомогою таблиці з чотирма колонками: вершина — інцидентне ребро, номер вершини, стек чи черга, коментар.
Приклад. Дано простий зв’язний неорієнтований граф:
Визначити, скільки каркасів має цей граф, і побудувати його каркаси, використовуючи методи пошуку вглиб і вшир.
Розв’язання. Щоб визначити, скільки каркасів має даний граф, побудуємо для нього матрицю Кірхгофа:
і знайдемо
алгебраїчне доповнення, наприклад,
елемента
(вибір цього елемента зумовлено тим, що
відповідний визначник можна легко
порахувати):
.
Отже, заданий граф має 3 різні каркаси.
Побудуємо каркас графа, використовуючи метод пошуку вглиб.
Початковою виберемо вершину а. Протокол обходу графа подамо в таблиці:
Вершина — інцидентне ребро |
Номер вершини |
Стек
|
Коментар |
а |
1 |
а |
К1 — вибираємо вершину а, їй присвоюємо номер 1, позначку а записуємо в стек. |
b — (a, b) |
2 |
ab |
К2 — у верхівці стеку вершина а; К3 —вибираємо інцидентне вершині а ребро (a, b); вершина b не має номера, присвоюємо їй номер 2 і позначку b записуємо в стек; (a, b) позначаємо — . |
c — (b, c) |
3 |
abс |
К2 — у верхівці стеку вершина b; К3 — вибираємо інцидентне вершині b ребро (b, c); вершина с не має номера, присвоюємо їй номер 3 і позначку с записуємо в стек; (b, c) позначаємо — . |
— |
— |
ab |
К2 — у верхівці стеку вершина с, єдине інцидентне їй ребро (b, c) вже позначено; К4 — вилучаємо з верхівки стеку елемент с. |
d — (b, d) |
4 |
abd |
К2 — у верхівці стеку вершина b; К3 — вибираємо інцидентне вершині b ребро (b, d); вершина d не має номера, присвоюємо їй номер 4 і позначку d записуємо в стек; (b, d) позначаємо — . |
e — (d, e) |
5 |
abde |
К2 — у верхівці стеку вершина d; К3 — вибираємо інцидентне вершині d ребро (d, e); вершина e не має номера, присвоюємо їй номер 5 і позначку e записуємо в стек; (d, e) позначаємо — . |
b — (e, b) |
— |
abde |
К2 — у верхівці стеку вершина е; К3 — вибираємо інцидентне вершині d ребро (e, b); вершина b має номер, тому (e, b) позначаємо - - -, а вміст стеку не змінюємо. |
— |
— |
abd |
К2 — у верхівці стеку вершина e; ребра, інцидентні вершині e, позначено; К4 — вилучаємо з верхівки стеку елемент e. |
— |
— |
ab |
К2 — у верхівці стеку вершина d; ребра, інцидентні вершині d, позначено; К4 — вилучаємо з верхівки стеку елемент d. |
— |
— |
a |
К2 — у верхівці стеку вершина b; ребра, інцидентні вершині b, позначено; К4 — вилучаємо з верхівки стеку елемент b. |
— |
— |
X |
К2 — у верхівці стеку вершина a; ребра, інцидентні вершині a, позначено; К4 — вилучаємо з верхівки стеку елемент a; стек став порожнім. Отже, каркас побудовано. |
Побудований каркас має вигляд:
Тепер побудуємо каркас графа, використовуючи метод пошуку вшир.
Виберемо початковою вершину а. Послідовність обходу графа подамо в таблиці:
Вершина — інцидентне ребро |
Номер вершини |
|
Коментар |
а |
1 |
а |
К1 — вибираємо вершину а, їй присвоюємо номер 1, позначку а записуємо в чергу. |
b — (a, b) |
2 |
ab |
К2 — на початку черги вершина а; К3 —вибираємо інцидентне вершині а ребро (a, b); вершина b не має номера, присвоюємо їй номер 2 і позначку b записуємо в кінець черги; (a, b) позначаємо — . |
— |
— |
b |
К2 — на початку черги вершина а; єдине інцидентне їй ребро (а, b) вже позначено; К4 — вилучаємо з початку черги елемент а. |
с — (b, с) |
3 |
bс |
К2 — на початку черги вершина b; К3 — вибираємо інцидентне вершині b ребро (b, с); вершина с не має номера, присвоюємо їй номер 3 і позначку с записуємо в кінець черги; (b, с) позначаємо — . |
d — (b, d) |
4 |
abd |
К2 — у верхівці стеку вершина b; К3 — вибираємо інцидентне вершині b ребро (b, d); вершина d не має номера, присвоюємо їй номер 4 і позначку d записуємо в стек; (b, d) позначаємо — . |
e — (b, e) |
5 |
bсde |
К2 — на початку черги вершина b; К3 — вибираємо інцидентне вершині b ребро (b, e); вершина e не має номера, присвоюємо їй номер 5 і позначку e записуємо в кінець черги; (b, e) позначаємо — . |
— |
— |
cde |
К2 — на початку черги вершина b; усі інцидентні їй ребра вже позначено; К4 — вилучаємо з початку черги елемент b. |
— |
— |
de |
К2 — на початку черги вершина c; єдине інцидентне їй ребро (b, c) вже позначено; К4 — вилучаємо з початку черги елемент c. |
е — (d, е) |
— |
de |
К2 — на початку черги вершина d; К3 — інцидентне їй ребро (d, е) ще не позначене, але вершині е вже присвоєно номер 5, тому (d, е) позначаємо - - -, а вміст черги не змінюємо. |
— |
— |
e |
К2 — на початку черги вершина d; усі інцидентні їй ребра вже позначено; К4 — вилучаємо з початку черги елемент d. |
— |
— |
X |
К2 — на початку черги вершина e; усі інцидентні їй ребра вже позначено; К4 — вилучаємо з початку черги елемент e; черга стала порожньою. Отже, каркас побудовано. |
Побудований каркас має вигляд:
Домашнє завдання до теми “Ізоморфізм графів. Ланцюги, цикли. Дводольні графи ”
16.12.11
1. Довести, що ізоморфізм є відношенням еквівалентності на множині всіх графів.
2 . Встановити, чи є гомеоморфними графи , , .
3. Навести приклади елементарного, простого і складного: а) шляхів із а в е в орієнтованому графі ; визначити довжини цих шляхів; б) контурів у графі ; в) ланцюгів із а в е у співвіднесеному до графі; визначити довжини цих ланцюгів; г) циклів у співвіднесеному до графі.
4. Для поданих графів А, В, С, Х, Y, використовуючи матрицю суміжності: а) визначити, чи існують 1-, 2- і 3-крокові ланцюги (шляхи) із вершини а у вершину d; б) матриці досяжності побудувати вручну і знайти за формулою .
5. Навести по одному прикладу: а) ейлерового графа; б) графа, який містить ейлерів ланцюг.
6. Дослідити, чи є графи Х, Y, Z дводольними.
Домашнє завдання до теми “Шлях, ланцюг, контур, цикл. Обхід графів”
16.12.11
1.
Навести приклади елементарного, простого
і складного: а) шляхів із а
в е
в орієнтованому графі
;
визначити довжини цих шляхів; б) контурів
у графі
;
в) ланцюгів із
а
в е
у співвіднесеному (неорієнтованому) до
графі; визначити довжини цих ланцюгів;
г) циклів у співвіднесеному до
графі.
2. Для поданих графів А, В, С, Х, Y, використовуючи матрицю суміжності: а) визначити, чи існують 1-, 2- і 3-крокові ланцюги (шляхи) із вершини а у вершину d; б) матриці досяжності побудувати вручну і знайти за формулою .
Алгоритм Краскала побудови мінімального каркасного дерева зваженого графа
Алгоритм Краскала побудови мінімального каркасного дерева зваженого графа дає можливість побудувати мінімальний каркас, тобто каркас з найменшою сумою ваг ребер, у зваженому неорієнтованому графі.
Нехай G — зв’язний зважений неорієнтований граф з вершинами і ребрами. Відповідно до алгоритму Краскала треба в графі вибрати ребро з найменшою вагою і далі на кожному корці треба серед ще не вибраних ребер вибрати ребро з найменшою вагою, яке не утворює простих циклів з уже вибраними ребрами. Одержане таким чином дерево буде мінімальним каркасом.
Алгоритм Краскала:
К1. Впорядковуємо множину ребер за зростанням ваг.
К2. Розбиваємо
множину вершин на одноелементні
підмножини
.
К3. Вибираємо з впорядкованої послідовності ребер таке наступне ребро, що його кінці належать різним підмножинам розбиття (це дає можливість уникнути простих циклів). Якщо вибрано ребро , то підмножини розбиття, які містять вершини і , об’єднуємо в одну підмножину.
К4. Якщо вибрано ребро, тобто всі підмножини розбиття об’єднано в одну множину, то каркас побудовано. Інакше перейти на К3.
Цей алгоритм дає можливість на кожному кроці вибрати найкращий з усіх варіантів.
П
риклад.
Знайти мінімальний каркас для
неорієнтованого зваженого графа (на
графі числами позначено ваги ребер).
Розв’язання.
Для знаходження мінімального каркасу
скористаємося алгоритмом Краскала.
Впорядкуємо множину ребер за зростанням
їхніх ваг: 1 —
,
2 —
,
3 —
,
4 —
,
5 —
,
6 —
,
7 —
,
8 —
,
9 —
,
10 —
.
Протокол побудови мінімального каркасу
подамо в таблиці:
Вага — поточне ребро |
Відбір ребра в мінімальний каркас |
Розбиття множини вершин |
— |
— |
|
1 — |
|
,
,
,
, |
2 — |
|
|
3 — |
|
|
4 — |
|
, |
5 — |
|
|
6 — |
в каркас не відбираємо, бо вершини а і е належать одній підмножині розбиття |
— |
7
—
|
в каркас не відбираємо, бо вершини b і е належать одній підмножині розбиття |
— |
8 — |
|
|
Р
ебра
,
,
,
,
і
,
які утворюють мінімальний каркас,
позначимо ——. Ребра
,
,
а також ребра
і
які не ввійшли в мінімальний каркас,
позначимо - - -. Побудований каркас
має вигляд:
Практичне 18
Зважені графи. Підготовка до МКР
Найефективнішим алгоритмом знаходження найкоротшого шляху (ланцюг) від однієї вершини до іншої, якщо вага кожного ребра (дуги) додатна, є алгоритм Дейкстри.
При виконанні
цього алгоритму вершинам графа
приписуються тимчасові (їх, наприклад,
будемо брати в дужки) і постійні (їх,
наприклад, будемо обводити кружечками)
позначки. Для подання алгоритму введемо
позначення:
— вага, тобто довжина дуги (ребра)
;
— довжина шляху (ланцюга) із початкової
вершини
у вершину
,
а також позначка вершини
на виконуваному кроці;
— довжина шляху (ланцюга) із початкової
вершини
у вершину
,
а також позначка вершини
на попередньому кроці; р
— ім’я останньої вершини, позначка
якої стала постійною. При виконанні
алгоритму, щоб у кінці легше було записати
знайдений мінімальний шлях (ланцюг),
також можна заповнювати таблицю, яка
має три рядки: вершина (у цьому рядку
записуються імена всіх вершин від
до
),
мінімальна довжина
шляху (ланцюга) від
до даної відміченої постійною позначкою
вершини р,
попередня суміжна до р
вершина, через яку проходить мінімальний
шлях (ланцюг).
Алгоритм Дейкстри передбачає таку послідовність кроків.
К1. Присвоюємо
початкові значення і розставляємо
позначки:
і вважаємо позначку 0 вершини
постійною, тому останньою позначеною
вершиною є
;
також записуємо відповідну інформацію
в таблицю;
(
)
і вважаємо позначки
вершин
тимчасовими.
К2. Оновлюємо
позначки: для кожної вершини
з тимчасовою позначкою, в яку з вершини
р
іде дуга (ребро)
,
позначку
замінюємо позначкою:
.
К3. Перетворюємо
одну з позначок на постійну: серед усіх
вершин з тимчасовими позначками знаходимо
вершину
з мінімальним значенням позначки і це
значення позначки робимо постійним,
останньою позначеною за допомогою
постійної позначки вершиною стає
;
відповідні дані записуємо в таблицю.
К4. Якщо остання
помічена постійною позначкою вершина
р
є вершиною
,
то
— довжина найкоротшого шляху (ланцюга)
із вершини
у вершину
,
а найкоротший шлях (ланцюг) легко
записати, проходячи з кінця таблиці і
враховуючи відповідні суміжні вершини;
інакше — переходимо на К2.
Зауважимо, що найкоротших (з однаковою довжиною) шляхів (ланцюгів) із однієї вершини до іншої у графі може бути кілька. Алгоритм Дейкстри дає можливість знайти один із них.
Щоб знайти найкоротші шляхи (ланцюги) від до всіх решти вершин ( ) графа G, то наведений алгоритм треба виконувати доти, поки всі вершини не одержать постійних позначок.
Приклад. Дано зважений зв’язний орієнтований граф:
Знайти найкоротший шлях від вершини а до вершини g.
Розв’язання. Маємо орієнтований граф без петель і кратних ребер з додатними вагами. Тому можна застосувати алгоритм Дейкстри для знаходження найкоротшого шляху.
К1 — присвоюємо
початкові значення і розставляємо
позначки:
і вважаємо позначку 0 вершини а
постійною,
,
а також записуємо відповідну інформацію
в таблицю:
і біля вершин ставимо позначки:
К2 — з вершини ідуть дуги і і тому попередні позначки біля вершин b і e замінюємо позначками:
;
;
К3 — тимчасові позначки мають вершини b, c, d, e, f, g. Найменшим значенням їхніх позначок є:
.
Тому позначку вершини е робимо постійною:
Останньою позначеною
(постійною позначкою) вершиною стає
.
Відповідні дані вносимо в таблицю:
К2 — з вершини
ідуть дуги
і
і тому попередні позначки
біля вершин d і f
замінюємо позначками:
;
;
К3 — тимчасові позначки мають вершини b, c, d, f, g. Найменшим значенням їхніх позначок є:
Тому позначку вершини b робимо постійною:
Останньою позначеною
(постійною позначкою) вершиною стає
.
Відповідні дані вносимо в таблицю:
К2 — з вершини
ідуть дуги
,
і
;
перерахуємо значення позначок:
;
;
.
Тому попередню позначку біля вершини с замінюємо на 5, позначку 8 біля вершини f замінюємо на 7, а позначку 6 біля вершини d не замінюємо:
К3 — тимчасові позначки мають вершини c, d, f, g. Найменшим значенням їхніх позначок є:
Тому позначку вершини с робимо постійною:
Останньою позначеною
(постійною позначкою) вершиною стає
.
Відповідні дані вносимо в таблицю:
К2 — з вершини виходить одна дуга ; перерахуємо значення позначки вершини f:
.
Оскільки значення позначки вершини d не змінилося, то на графі ніякі зміни не відобразяться.
К3 — тимчасові позначки мають вершини d, f, g. Найменшим значенням їхніх позначок є:
.
Тому позначку вершини d робимо постійною:
Останньою позначеною
(постійною позначкою) вершиною стає
.
Позначки 6 вершина d
набула при підході до неї з вершини е
і з вершини с, тому в таблицю як
попередню суміжну до d
вершину можна внести або с, або
е; внесемо, наприклад, е:
К2 — з вершини
ідуть дуги
і
;
перерахуємо значення позначок:
.
;
Т
ому
попередню позначку
біля вершини g замінюємо
на 9, а позначку 7
біля вершини f не
замінюємо:
К3 — тимчасові позначки мають дві вершини f і g. Менше значення позначки має вершина f:
Тому позначку вершини f робимо постійною:
Останньою позначеною
(постійною позначкою) вершиною стає
.
Позначки 7 вершина f
набула при підході до неї з вершини b;
у таблицю внесемо відповідну інформацію:
К2 — з вершини
виходить одна дуга
;
перерахуємо значення позначки біля
вершини g:
.
Попередню позначку 9 біля вершини g замінюємо на 8:
К
3
— тимчасову позначку має лише вершина
g.
Тому останньою позначеною (постійною
позначкою) вершиною стає вершина
:
У таблицю внесемо відповідну інформацію:
К4 — оскільки
,
то
— довжина найкоротшого шляху із вершини
а в вершину g. Найкоротший
шлях одержимо за таблицею, починаючи з
її кінця:
Отже,
найкоротшим шляхом із вершини а в
вершину g є шлях:
,
який має довжину 8.
Оскільки в даному
прикладі всі вершини помічено постійними
позначками, то, користуючись таблицею,
можна знайти шляхи із вершини а в
будь-яку іншу вершину:
(має довжину 4),
(5),
(6; знайдений шлях не єдиний мінімальний
— таку ж довжину має шлях
),
(2),
(7).
