Алгоритм пошуку в ширину (BFS) із ПРИКЛАДОМ

⚡ Розумний підсумок

Пошук у ширину (BFS) – це алгоритм, який проходить граф рівень за рівнем, відвідуючи всіх сусідів вузла, перш ніж рухатися вглиб. Він використовує чергу FIFO та знаходить найкоротший шлях у незважених графах без нескінченних циклів.

  • 📊 Порядок рівнів: BFS відвідує кожен вузол на поточній глибині, перш ніж перейти на наступний рівень.
  • 📥 На основі черги: Черга FIFO містить відвідані вузли, тому сусідні вузли обробляються по порядку.
  • 🎯 Найкоротший шлях: У незважених графах BFS знаходить найкоротший шлях за найменшу кількість ітерацій.
  • Без циклів: Маркування відвіданих вузлів запобігає застряганню BFS у нескінченному циклі.
  • 🌐 Область застосування: BFS забезпечує роботу веб-сканерів, P2P-мереж, навігацію та мережеве мовлення.

Алгоритм пошуку в ширину (BFS) з прикладом

Що таке алгоритм BFS (пошук у ширину)?

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

Алгоритм ефективно відвідує та точно позначає всі ключові вузли на графіку. Цей алгоритм вибирає один вузол (початкову або вихідну точку) на графіку, а потім відвідує всі вузли, суміжні з вибраним вузлом. Пам’ятайте, що BFS отримує доступ до цих вузлів один за іншим.

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

Що таке обхід графа?

Обхід графа — це широко використовувана методологія для визначення позиції вершини в графі. Це розширений алгоритм пошуку, який може швидко й точно аналізувати граф разом із позначенням послідовності відвіданих вершин. Цей процес дає змогу швидко відвідувати кожен вузол на графіку, не замикаючись у нескінченному циклі.

Архітектура алгоритму BFS

Archiтектура алгоритму BFS

  1. На різних рівнях даних ви можете позначити будь-який вузол як початковий або початковий вузол для початку проходження. BFS відвідає вузол, позначить його як відвіданий та помістить його в чергу.
  2. Тепер BFS відвідає найближчі та невідвідані вузли та позначить їх. Ці значення також додаються до черги. Черга працює на Модель FIFO.
  3. Аналогічним чином, решта найближчих та невідвіданих вузлів на графі аналізуються, позначаються та додаються до черги. Ці елементи видаляються з черги в міру їх надходження та друкуються як результат.

Для чого нам потрібен алгоритм BFS?

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

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

Як працює алгоритм BFS?

Обхід графа вимагає від алгоритму відвідування, перевірки та/або оновлення кожного окремого невідвіданого вузла в деревоподібній структурі. Обходи графа класифікуються за порядком, у якому вони відвідують вузли на графіку.

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

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

Крок 1)

Робота алгоритму BFS

Кожна вершина або вузол у графі відома. Наприклад, ви можете позначити вузол як V.

Крок 2)

Робота алгоритму BFS

Якщо доступ до вершини V не здійснюється, тоді додайте вершину V до черги BFS.

Крок 3)

Робота алгоритму BFS

Розпочніть пошук BFS, і після завершення позначте вершину V як відвідану.

Крок 4)

Робота алгоритму BFS

Черга BFS ще не порожня, тому видаліть вершину V графа з черги.

Крок 5)

Робота алгоритму BFS

Знайдіть усі вершини графа, що залишилися, які суміжні з вершиною V.

Крок 6)

Робота алгоритму BFS

Для кожної суміжної вершини, скажімо V1, якщо вона ще не відвідана, тоді додаємо V1 до черги BFS.

Крок 7)

Робота алгоритму BFS

BFS відвідає V1, позначить його як відвіданий та видалить з черги.

Приклад алгоритму BFS

Крок 1)

Приклад алгоритму BFS

У вас є графік із семи чисел у діапазоні від 0 до 6.

Крок 2)

Приклад алгоритму BFS

0 або нуль було позначено як кореневий вузол.

Крок 3)

Приклад алгоритму BFS

0 відвідується, позначається та вставляється в структуру даних черги.

Крок 4)

Приклад алгоритму BFS

Решта суміжних з 0 та невідвіданих вузлів відвідуються, позначаються та вставляються до черги.

Крок 5)

Приклад алгоритму BFS

Ітерації обходу повторюються, доки не будуть відвідані всі вузли.

Правила алгоритму BFS

Ось важливі правила використання алгоритму BFS:

  • Черга (FIFO – «перший прийшов, перший вийшов») структура даних використовується BFS.
  • Ви позначаєте будь-який вузол у графі як корінь і починаєте переглядати дані з нього.
  • BFS проходить через усі вузли графа та зберігає відкинуті елементи.ping їх як завершені.
  • BFS відвідує сусідній невідвіданий вузол, позначає його як виконаний і вставляє в чергу.
  • Він видаляє попередню вершину з черги, якщо сусідня вершина не знайдена.
  • Алгоритм BFS виконує ітерації, доки всі вершини графа не будуть успішно пройдені та позначені як завершені.
  • Немає петель, викликаних BFS під час проходження даних з будь-якого вузла.

Застосування алгоритму BFS

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

  • Незважені графіки: Алгоритм BFS може легко створити найкоротший шлях та мінімальне остовне дерево, щоб відвідати всі вершини графа за найкоротший можливий час з високою точністю.
  • Мережі P2P: BFS можна реалізувати для визначення місцезнаходження всіх найближчих або сусідніх вузлів у одноранговій мережі. Це дозволить швидше знаходити необхідні дані.
  • Веб-сканери: Пошукові системи або веб-сканери можуть легко створити кілька рівнів індексів, використовуючи BFS. Реалізація BFS починається з джерела, яким є веб-сторінка, а потім відвідує всі посилання з цього джерела.
  • Навігаційні системи: BFS може допомогти знайти всі сусідні місця з основного або вихідного розташування.
  • Мережеве мовлення: Пакет, який транслюється, керується алгоритмом BFS, щоб знайти та досягти всіх вузлів, для яких він має адресу.

Поширені запитання

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

Так. Помічники зі штучним інтелектом можуть писати BFS у Python, Javaабо C++ використовуючи чергу та відвідувану множину з простого опису. Перевірте це на зразках графів, оскільки граничні випадки, такі як роз'єднані вузли, легко пропустити.

BFS досліджує граф рівень за рівнем, використовуючи чергу, та знаходить найкоротший шлях у незважених графах. DFS досліджує якомога глибше вздовж кожної гілки, використовуючи стек або рекурсію, перш ніж повернутися назад.tracкороль.

BFS виконується за час O(V + E), де V – кількість вершин, а E – кількість ребер, оскільки кожна вершина та ребро перевіряються один раз. Його просторова складність для черги та відвіданої множини становить O(V).

Підсумуйте цей пост за допомогою: