Главная страница
Навигация по странице:

  • Поиск в ширину

  • Кратчайший путь

  • Обнаружение циклов

  • Минимальное остовное дерево

  • Алгоритм и структура данных. 1 Базовый процедурноориентированный алгоритмический язык


    Скачать 1.16 Mb.
    Название1 Базовый процедурноориентированный алгоритмический язык
    АнкорАлгоритм и структура данных
    Дата03.11.2022
    Размер1.16 Mb.
    Формат файлаdocx
    Имя файлаАлгоритм и структура данных.docx
    ТипДокументы
    #768957
    страница11 из 11
    1   2   3   4   5   6   7   8   9   10   11

    Применяется:


    Поиск в ширину (DFS)

    Обход или поиск — это одна из фундаментальных операций, выполняемых на графах. Поиск в ширину начинается с определённой вершины, затем исследуются все её соседи на данной глубине и происходит переход к вершинам следующего уровня. В графах, в отличие от деревьев, могут быть циклы — пути, в которых первая и последняя вершины совпадают. Поэтому необходимо отслеживать посещённые алгоритмом вершины. При реализации алгоритма поиска в ширину используется структура данных «очередь».

    На рисунке 2 показан пример того, как выглядит поиск в ширину на графе. Жёлтым цветом помечаются обнаруженные вершины, красным — посещённые.

    Применяется для:


    • определения кратчайших путей и минимальных остовных деревьев;

    • индексации веб-страниц поисковыми ботами;

    • поиска в соцсетях;

    • нахождения доступных соседних узлов в одноуровневых сетях, таких как BitTorrent.


    Кратчайший путь




    Рис. 4. Визуальное отображение кратчайшего пути от вершины 1 к вершине 6

    Кратчайший путь от одной вершины графа к другой — это путь, при котором сумма весов рёбер, его составляющих, должна быть минимальна.

    На рисунке 4 показан кратчайший путь на графе от вершины 1 до вершины 6.

    Алгоритмы нахождения кратчайшего пути:


    Алгоритм Дейкстры.

    • https://ru.wikipedia.org/wiki/Алгоритм_Дейкстры#Формулировка_задачи

    • https://prog-cpp.ru/deikstra/

    1. Алгоритм Беллмана-Форда. https://medium.com/nuances-of-programming/наглядное-объяснение-алгоритма-беллмана-форда-775a32db3c77#::text=Алгоритм%20Беллмана-Форда%20находит%20в,в%20таблице%20в%20алфавитном%20порядке.

    Применяются в:


    • картографических сервисах типа Google maps или Apple maps для прокладки маршрутов и определения местоположения;

    • сетях для решения проблемы минимальной задержки пути;

    • абстрактных автоматах для определения через переход между различными состояниями возможных вариантов достижения некоторого целевого состояния, например минимально возможного количества ходов, необходимого для победы в игре.


    Обнаружение циклов




    Рис. 5. Цикл

    Цикл — это путь, в котором первая и последняя вершины графа совпадают. То есть путь, начинающийся и завершающийся в одной и той же вершине, называется циклом. Обнаружение циклов — это процесс выявления таких циклов. На рисунке 5 показано, как происходит обнаружение цикла.

    Алгоритмы обнаружения цикла:


    1. Алгоритм Флойда. https://foxford.ru/wiki/informatika/algoritm-floyda

    2. Алгоритм Брента.

    Применяются:


    • в распределённых алгоритмах, использующих сообщения;

    • для обработки крупных графов с использованием распределённой системы обработки в кластере;

    • для обнаружения взаимоблокировок в системах с параллельным выполнением;

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

    Минимальное остовное дерево




    Рис. 6. Визуальное отображение минимального остовного дерева

    Минимальное остовное дерево — это подмножество рёбер графа, которое соединяет все вершины, имеющие минимальную сумму весов рёбер, и без циклов.

    На рисунке 6 показан процесс получения минимального остовного дерева.

    Алгоритмы поиска минимального остовного дерева:


    1. Алгоритм Прима.

    • https://habr.com/ru/post/569444/

    • https://ru.wikipedia.org/wiki/Алгоритм_Краскала

    1. Алгоритм Крускала.

    • https://habr.com/ru/post/569444/

    • https://ru.wikipedia.org/wiki/Алгоритм_Краскала#::text=Алгоритм%20Краскала%20—%20эффективный%20алгоритм%20построения,некоторых%20приближений%20для%20задачи%20Штейнера.

    Применяются:


    • для создания деревьев для распределения данных в компьютерных сетях;

    • в кластерном анализе с использованием графов;

    • при сегментации изображений;

    • при социально-географическом районировании, когда смежные регионы объединяются.
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта