
- •Міністерство освіти і науки, молоді та спорту України
- •Державний вищий навчальний заклад
- •“Калуський політехнічний коледж”
- •Методичні вказівки
- •До виконання лабораторних робіт
- •З дисципліни «Програмне забезпечення ііс»
- •Калуш – 2011
- •Мета виконання лабораторних робіт
- •Порядок виконання лабораторних робіт
- •Примірні інструкції до виконання лабораторних робіт
- •Теоретичні відомості
- •Індивідуальне завдання
- •Варіанти індивідуальних завдань
- •Контрольні питання
- •Теоретичні відомості
- •Індивідуальне завдання
- •Теоретичні відомості
- •Індивідуальне завдання
- •Варіанти індивідуальних завдань
- •Контрольні питання
- •Теоретичні відомості
- •Індивідуальне завдання
- •Варіанти індивідуальних завдань
- •Контрольні питання
- •Теоретичні відомості
- •Індивідуальне завдання
- •Контрольні питання
Контрольні питання
-
Дайте визначення орієнтованого графа.
-
Обгрунтуйте поняття суміжності вершин у графі. Наведіть приклади.
-
Що таке шлях в орграфі?
-
Чому рівна довжина шляху в орграфі?
-
Який шлях називається простим?
-
Що таке цикл? Наведіть приклади.
-
Який граф називається поміченим?
-
Які структури даних використовують для представлення орієнтованих графів?
-
Дайте визначення матриці вартостей і матриці суміжності.
-
Від чого залежить час доступу до елементів матриці суміжності? Поясніть.
-
В яких алгоритмах застосовують представлення орграфа у вигляді матриці суміжності? Обгрунтуйте свою відповідь.
-
Яким основним недоліком володіє, на Вашу думку, матриця суміжності?
-
Що таке список суміжності?
-
Які представлення через списки суміжності Ви знаєте?
-
Перелічіть спільні оператори, що виконуються орієнтованими графами, та дайте їм коротку характеристику.
-
В чому полягає задача знаходження найкоротшого шляху до однієї вершини в орграфі?
-
Для яких цілей на кожному кроці алгоритму Дейкстри використовується масив D?
-
Який шлях називається особливим?
-
Дайте обґрунтування алгоритму Дейкстри.
-
Якими величинами обмежується час виконання алгоритму Дейкстри?
Лабораторна робота № 4
Тема: Складення графіку проведення тенісного турніру (алгоритм «поділяй та
володій»)
Мета: Навчитись складати графік проведення тенісного турніру, використовуючи
алгоритм «поділяй та володій».
Теоретичні відомості
Метод декомпозиції одержав широке застосування не тільки при розробці алгоритмів, але і в проектуванні електронних схем, побудові математичних доведень та в інших сферах. В якості ілюстрації наведемо лише один приклад. Розглянемо складення розкладу проведення тенісного турніру за круговою схемою для n = 2k гравців. Кожен гравець повинен зіграти із всіма іншими гравцями, при цьому кожен гравець повинен зіграти по одному матчу в день протягом (n–1) днів – мінімальної кількості днів, необхідних для проведення всього турніру.
Розклад проведення турніру, таким чином, являє собою таблицю, яка складається з n рядків та n-1 стовпчиків; елементом на перетині рядка і та стовпчика j є номер гравця, з яким гравець і повинен провест матч в j-й день.
Метод декомпозиції дозволяє скласти розклад для половини гравців. Цей розклад складається на основі рекурсивного застосування даного алгоритму для половини цієї половини гравців і т.д. Коли кількість гравців зменшиться до двох, виникає «базова ситуація», в якій ми просто встановлюємо порядок проведення зустрічей між ними.
Допустимо, в турнірі беруть участь вісім гравців. Розклад для гравців 1 – 4 заповнює верхній лівий кут (4 рядки х 3 стовпчики) розкладу, який формується. Нижній лівий кут (4 рядки х 3 стовпчики) цього розкладу повинен звести між собою гравців з вищими номерами (5 – 8). Ця частина розкладу одержується шляхом додавання числа 4 до кожного елемента в верхньому лівому куті.
Тепер необхідно звести між собою гравців з низькими і вищими номерами. Зробити це неважко: потрібно на 4-й день звести в пари гравців, які мають номери 1 – 4, з гравцями 5 – 8 відповідно, а в наступні просто циклічно переставляти номери 5 – 8. Цей процес показано на Рис.4.1.
1 2 3 1 2 3 4 5 6 7
1 2 3 4 |
2 1 4 3 |
3 4 1 2 |
4 3 2 1 |
5 6 7 8 |
6 7 8 5 |
7 8 5 6 |
8 5 6 7 |
5 6 7 8 |
6 5 8 7 |
7 8 5 6 |
8 7 6 5 |
1 2 3 4 |
4 1 2 3 |
3 4 1 2 |
2 3 4 1 |
1 2 |
2 |
1 |
1 2 3 4 |
2 1 |
3 4 |
4
3 |
4 3 |
1 2 |
2 1 |
Рис. 4.1. Організація кругового турніру для восьми гравців.
Обчислимо шанси на перемогу команд в спортивних турнірах.
Допустимо, дві команди А і В проводять між собою турнір. Переможцем вважається той, хто першим виграє n матчів. Можна припустити, що сили команд А і В приблизно рівні, тобто у кожної з них є 50% шансів виграти черговий матч. Припустимо, P(i, j) – ймовірність того, що якщо А для перемоги потрібно провести і матчей, тоді в кінцевому рахунку перемогу на турнірі одержить А. Наприклад, якщо в турнірі команда А виграла два матчі, а команда В – один, то і = 2, j = 3 і, як ми переконаємося пізніше, Р(2, 3) =11/16.
Для того, щоб обчислити P(i, j), можна скористатися рекурентним рівнянням з двома змінними. По-перше, якщо і = 0 і j > 0, то команда А вже виграла турнір, тому P(0, j) = 1. Аналогічно, P(i, 0) = 0 для всіх і > 0. Якщо, як і, так і j більші за нуль, командам прийдеться провести, принаймні, ще один матч з рівними шансами виграти цю гру. Таким чином, P(i, j) повинно бути середнім значенням P(i - 1, j) та P(i, j - 1), перший з цих виразів є ймовірністю того, що команда А виграє турнір, навіть якщо програє наступний матч. Отже, отримаємо рекурентні співвідношення:
P(i, j) = 1, якщо і = 0 і j > 0,
P(i, j) = 0, якщо і > 0 і j = 0, (4.1)
P(i, j) = (P(i - 1, j) + P(i, j - 1)) /2, якщо і > 0 і j > 0.
Проблема з рекурентними обчисленнями заключається в тому, що потрібно періодично обчислювати одне і те ж значення P(i, j) декілька раз. Якщо, наприклад, потрібно обчислити Р(2, 3), то у відповідності з (4.1) необхідно спочатку обчислити Р(1, 3) і Р(2, 2). А для обчислення Р(1, 3) і Р(2, 2) потрібно обчислити Р(1, 2), тобто одне і те ж значення Р(1, 2) потрібно обчислити двічі.
|
Рис. 4.2.Шаблон
обчислень
елемента.
Таким чином, таблицю слід заповнювати, починаючи з її нижнього правого кута і рухатися вверх і вліво вздовж діагоналей, що представляють елементи з постійним значенням i + j, як показано на Рис.4.2.
Таблиця 4.1.
Таблиця ймовірностей
1/2 |
21/32 |
13/16 |
15/16 |
1 |
4 |
|
11/32 |
1/2 |
11/16 |
7/8 |
1 |
3 |
|
3/16 |
5/16 |
1/2 |
3/4 |
1 |
2 |
↑ |
1/16 |
1/8 |
1/4 |
1/2 |
1 |
1 |
j |
0 |
0 |
0 |
0 |
|
0 |
|
4 |
3 |
2 |
1 |
0 |
|
|
← і |
|
|