Урок 67. Пошук у глибину та ширину
Прочитайте!
У процесі опрацювання графів часто доводиться виконувати обхід усіх його вершин. Існують декілька алгоритмів перегляду вершин графу, розглянемо два з них: алгоритми пошуку у глибину та пошуку в ширину.
Алгоритм пошуку в глибину. Для реалізації алгоритму пошуку в глибину використовують дві структури даних: стек для запам’ятовування ще не опрацьованих вершин і список для запам’ятовування вже опрацьованих вершин.
Стек — лінійний список, у якому всі операції вставки і знищення елементів виконуються лише на одному з кінців списку (вершини зі стека можна брати лише з кінця).
Розглянемо сутність алгоритму пошуку в глибину: спочатку занурюємось максимально по ребрах, а тоді повертаємось та починаємо відвідувати інші вершини.

Використовуючи алгоритм виконаємо пошук у ширину:

Наведемо пояснення до цього алгоритму
Якщо стартовою є вершина V, то вибираємо вершину U, що суміжна з вершиною V. На наступному кроці для вершини U вибираємо суміжну з нею вершину. Якщо на черговому кроці розглядається вершина Q і немає вершин, суміжних із нею, і таких, що не переглядалися раніше, то повертаємося з вершини Q до тієї вершини, з якої потрапили у вершину Q і т. д. Якщо це вершина, з якої починався перегляд, тобто вершина V, і непеглянутих суміжних з нею вершин немає, то процес перегляду завершений.
Розглянемо порядок перегляду вершин графу в глибину на прикладі 1 неорієнтованого незваженого графу
Приклад 1. Перегляд вершин можна розпочати з будь-якої вершини, наприклад із вершини 3. Із неї можна рухатися і у вершину 2, і у вершину 7. Потім перейдемо до вершини 2, з якої рухаємося до вершини 1. Але у вершини 1 відсутня суміжна для неї вершина, яка ще не розглядалася.
Повертаємося у вершину 2 і рухаємося до вершини 4. У вершини 4 також відсутні суміжні вершини, які ще не
розглядалися. Повертаємося ще раз у вершину 2 і рухаємося у вершину 5. З неї рухаємося у вершину 6, потім у вершину 7.
Для реалізації алгоритму пошуку мовою Python нумерацію вершин графу доцільно починати з 0. Суміжні вершини графу можна подавати списками (приклад 2).
Приклад 2. Список [[1, 2], [0, 2], [0, 1]] вказує, що вершина 0 має зв’язок із вершинами 1 і 2, вершина 1 — з вершинами 0 і 2, а вершина 2 — з вершинами 0 і 1.
Приклад 3. Нехай дано граф із шістьма вершинами, які мають між собою такі зв’язки: [[4, 5], [5], [3, 4], [2, 4], [0, 2, 3], [0, 1]]. Програму обходу вершин графу в глибину, починаючи з нульової вершини.

Результат виконання програми:

Алгоритм пошуку в ширину. Спочатку опрацьовуються всі вершини, суміжні з поточною, а потім — «нащадки». Замість стека для збереження ще не опрацьованих вершин використовується черга. Черга (одностороння черга) — лінійний список, у якому всі операції вставки здійснюються на одному з кінців списку, а всі операції знищення — на іншому (останній прийшов – останній пішов).
Сутність алгоритму пошуку в ширину така.

Використовуючи алгоритм виконаємо пошук у ширину:

Наведемо пояснення до цього алгоритму.
Наприклад, якщо стартовою є вершина А0, то опрацьовуються всі суміжні з нею вершини А1, А2, …, АK, далі — суміжні вершини для кожної із вершин А1, А2, …, АK і т. д. Будуть перебрані всі вершини, і пошук завершиться.
Розглянемо процес пошуку в ширину на прикладі графу (рис. 8.16, б). Порядок обходу вершин із вершини 3: з вершини 3 переглядаються вершини 2 і 7; з вершини 2 — вершини 1, 4, 5, 6, а з вершини 7 — вершина 6.
Приклад 4. Нехай дано граф із шістьма вершинами, які мають такі зв’язки між собою: [[1, 3], [0, 3, 4, 5], [4, 5], [0, 1, 5], [1, 2], [1, 2, 3]]. На рис. 8.18 зображено програму обходу вершин графу в ширину, починаючи з нульової вершини.

Увага!!! Код програми містить помилку, яку потрібно виправити, після виправлення помолки результат виконання програми матиме вигляд:

Завдання для самостійного виконання
Завдання 1. Модифікуйте програму, зображену на рис. 8.18, так, щоб обхід починався з вершини 2. Виконайте програму і доведіть правильність отриманих результатів.
Завдання 2. Модифікуйте програму (рис. 8.17) так, щоб обхід починався з вершини 3.
Завдання 3. Виконайте програму, зображену на рис. 8.18, для нового списку суміжних вершин, розробленого самостійно. Доведіть правильність отриманих результатів.
-
Тема 1.Бази даних
- Урок 1. Поняття бази даних. Поняття, призначення й основні функції систем управління базами даних.
- Урок 2. Поняття моделі подання даних, основні моделі подання даних. Проектування баз даних. Поняття сутності, атрибута, ключа, зв’язку. Модель «сутність-зв’язок» предметної області. Класифікація зв’язків за множинністю та обов’язковістю. Бази даних в інформаційних системах.
- Урок 3. Основні відомості про СУБД MS Access. Створення й уведення структури таблиць. Поняття таблиці, поля, запису. Створення таблиць, означення полів і ключів у середовищі СКБД. Властивості полів, типи даних.
- Урок 4. Модифікація структури таблиць. Ключові поля, індекси, зв’язування таблиць.
- Урок 5. Уведення, пошук і редагування даних у таблиці.
- Урок 6. Інструктаж з БЖД Практична робота 1. Створення структури таблиць і введення вмісту.
- Урок 7. Сортування та фільтрація записів. Операції над таблицями.
- Урок 8. Розв’язання задач на створення таблиць та зв’язків
- Урок 9. Розв’язання задач на створення таблиць та зв’язків
- Урок 10. “ЗАПИТИ Загальні відомості про запити. Створення й виконання запитів на вибірку даних.”
- Урок 11. Запити з функціями і з полями, що обчислюються.
- Урок 12. Запити з параметрами. Перехресні запити.
- Урок 13. Інструктаж з БЖД. Практична робота 3.Запити з функціями та з полями, що обчислюються.
- Урок 14. Запити на змінення даних.
-
Тема 2. Форми. Звіти. Імпорт та експорт даних.
- Урок 18. Створення форм за допомогою простих засобів. Елементи керування та властивості форм.
- Урок 19. Поняття звіту. Автоматичне створення звіту. Створення звіту за допомогою конструктора звітів.
- Урок 20. Інструктаж з БЖД Практична робота 4. Створення форм, звітів, запитів..
- Урок 21. Призначення, основні поняття та терміни мови SQL. Найпростіші запити мовою SQL у системі Access.
- Урок 22. Запити з умовою. Групування запитів.
- Урок 23. Сутність імпорту та експорту об’єктів. Імпорт об’єктів з однієї бази даних в іншу. Експорт об’єктів з однієї бази даних в іншу.
- Урок 25. Інструктаж з БЖД. Практична робота 5. Основи мови запитів SQL. Імпорт та експорт об’єктів бази даних.
- Урок 30. Практикум з використання інформаційних технологій
-
Тема 3. Алгоритми
- Урок 31. Повторення теми «алгоритми» вивченої в 10 класі. Методи проектування і подання алгоритмів.
- Урок 32. Кодування алгоритмів. Поняття складності алгоритмів. Математична модель, вибір структури даних
- Урок 33. Пошук оптимального алгоритму розв’язання
- Урок 34. Оцінка та аналіз ефективності алгоритму
- Урок 35. Інструктаж з БЖД. Практична робота 6. Реалізація алгоритму мовою програмування
- Урок 36. Розв’язання задач на оцінку аналізу ефективності алгоритму
- Урок 37. Основні поняття теорії чисел: системи числення
- Урок 38. Робота з великими числами
- Урок 39. Факторизація чисел. Інструктаж з БЖД. Практична робота 7. Основні поняття теорії чисел.
- Урок 42. Алгоритми сортування. Квадратичні алгоритми сортування. Алгоритми сортування вибором.
- Урок 43. Алгоритм сортування методом обміну
- Урок 44. Сортування вставленням
- Урок 45. Сортування злиттям.
- Урок 48. Бінарний пошук
- Урок 49. Пошук максимального і мінімального елементів у масиві
- Урок 50. Поняття про пошук із поверненням і тернарний пошук.
- Урок 51. Інструктаж з БЖД. Практична робота 9. Розв’язування практичних завдань
- Урок 52. Практикум з використання інформаційних технологій
- Урок 53. Практикум з використання інформаційних технологій
-
Тема 4. Обробка рядків
- Урок 61. Обробка рядків. Основні відомості про рядки й операції над ними
- Урок 62. Функції і методи опрацювання рядків
- Урок 63. Функції і методи опрацювання рядків
- Урок 64. Приклади програм обробки рядків
- Урок 65. Основні поняття і терміни теорії графів.
- Урок 66. Способи подання графів у комп’ютері.
- Урок 67. Пошук у глибину та ширину
- Урок 68. Визначення найкоротшого шляху у графі. Алгоритм Дейкстри та його реалізація
- Урок 69. Алгоритм Флойда-Уоршела та його реалізація. Інструктаж з БЖД. Практична робота №10 “Реалізація алгоритму пошуку”
- Урок 70. Динамічне програмування.
- Урок 71. Жадібні алгоритми
- Урок 72. Критерії застосування задач динамічного програмування
- Урок 74. Базові поняття обчислювальної геометрії
- Урок 75. Операції над векторами. Векторний добуток
- Урок 76. Обчислення площі многокутника
- Урок 79. Інструктаж з БЖД. Практична робота №12 “Основи обчислювальної геометрії”
-
Веб-технології
- Урок 85. Основні тренди у веб-дизайні.
- Урок 86. Види і типи сайтів. Цільова аудиторія.
- Урок 87. Інформаційна структура сайта.
- Урок 88. Системи керування вмістом
- Урок 89. Запуск проекту «Розробка власного сайта»
- Урок 90. Адміністрування сайта
- Урок 91. Інструменти веб-розробника
- Урок 92. Інструктаж з БЖД. Практична робота №13 “Створення макету інформаційної структури сайта”
- Урок 93. Мова гіпертекстової розмітки.
- Урок 94. Мова гіпертекстової розмітки. Списки на веб-сторінках
- Урок 95. Каскадні таблиці стилів
- Урок 96. Проектування та верстка веб-сторінок. Адаптивна верстка.
- Урок 97. Кросбраузерність.
- Урок 98. Інструктаж з БЖД. Практична робота №14 “Створення веб-сторінок”
- Урок 99. Графіка для веб-середовища.
- Урок 100. Анімаційні ефекти.
- Урок 103. Інструктаж з БЖД. Практична робота №15 “Графіка та мультимедіа для веб-середовища”
- Урок 105. Веб-програмування та інтерактивні сторінки.
- Урок 106. Хостинг сайта. Інструктаж з БЖД. Практична робота №16 “Розміщення сайту на сервері”
- Урок 108. Валідація та збереження даних форм.
- Урок 110. Правила ергономічного розміщення відомостей на веб-сторінці.
- Урок 111. Пошукова оптимізація та просування веб-сайтів. Інструктаж з БЖД. Практична робота №17 “Оцінка сайту. Просування сайту”
-
Парадигми програмування. повторення вивченого матеріалу
0.00 на основі 0 рейтингів