Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БИЛЕТЫ 25-26 уч.г..docx
Скачиваний:
0
Добавлен:
19.06.2026
Размер:
42.25 Mб
Скачать
  • 15. Поиск путей в графе: как завершается формирование пути (при списке ветвей, при списке узлов)? Фрагменты примеров.

Формирование пути можно реализовать через поиск от начальной точки, но при такой реализации потребуется функция для разворота маршрута, т.к. сборка маршрута производится по типу стека.

Формирование пути можно реализовать через поиск от конечной точки, при такой реализации функция для разворота маршрута не требуется.

Когда формируем маршрут, то заносим ветвь сначала последнюю, затем предпоследнюю, …, первую.

Чтобы соблюдалась логика, на каждом шаге дублируется начальный узел (b,b,c), т.к он становится текущим и уже от него будет искаться следующая ветвь (а,а,b) и тд до того момента, пока не придем в начальный узел. Завершается формирование маршрута, когда сопоставим маршрут с фактом – истина (текущий узел = начальному).

Как осуществляется выбор ветви:

1. Один узел известен, второй находим (первый попавшийся).

2. Известны сразу оба узла (весь маршрут из одной ветви).

3. Начальный узел и конечный совпадают. В этом случае из запроса сразу обращаемся к факту. Факт дает решение, при этом маршрут равен пустому списку.

Рассмотрим пример (маршрут из списка ветвей):

Завершает рекурсию, если текущий узел совпадает с начальным узлом A. На этом этапе путь завершён, и он возвращается без изменений.

В новый маршрут добавляются два узла Х: 1ый для соблюдения логики поиска, 2ой — для построения пути, т.к. он становится следующим Текущим узлом.

Если цель — избежать дублирования узлов (предоставить список узлов), то в рекурсивном правиле нужно убрать повторное добавление B. Правило будет выглядеть так (слева для узлов, справа для ветвей):

Пример разбора

  • 16. Стратегии поиска. Классификация. Параметры. Сравнение стратегий.

Стратегии поиска разбивают на 2 большие группы:

  • Слепые методы (не учитывают положение целевого узла)

  • Направленные методы (учитывают положение целевого узла)

Основные параметры (критерии, по которым сравнивают) стратегий поиска

  • Временная сложность (потребность во времени): количество шагов, необходимых для достижения решения.

  • Пространственная сложность (потребность в памяти): объем памяти, требуемый для хранения промежуточных данных.

  • Полнота (возможность нахождения цели)

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

  • Минимальность (гарантия нахождения наилучшего решения)

Слепой поиск: (движется в хаотичном направлении, которое определяется записью ветвей в списке)

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

  • Монотонный поиск в ширину — модификация поиска в ширину, при которой для каждой вновь достигнутой вершины вычисляется цена пути от начальной вершины. Путь продолжается, если его цена меньше цен уже найденных альтернативных путей; в противном случае поиск вершин на этом пути откладывается, а продолжается на путях, цена которых меньше данного.

  • Двунаправленный поиск в ширину — одновременно выполняет поиск от начального и от целевого узлов до их встречи.

  • Поиск в глубину — углубляется по первой найденной ветви до конца, затем возвращается и перебирает альтернативы.

  • Ограниченный поиск в глубину — поиск в глубину с введённым пределом максимальной глубины.

  • Итеративный поиск в глубину — многократно выполняет ограниченный поиск в глубину с постепенным увеличением предела глубины.

Направленный поиск:

  • Поиск по критерию близости к цели — направленный поиск, при котором на каждом шаге выбирается ветвь, ведущая к вершине, наиболее близкой к целевой по заданной эвристике (например, геометрическому расстоянию).

  • Поиск по критерию “цена пути” – направленный поиск, при котором выбор ветви осуществляется по минимальной суммарной стоимости пути от начальной вершины. Обозначим g(b) – критерий цены пути из корневой вершины в вершину b, a h(b) – уже рассмотренный критерий близости к цели. Пусть оба критерия имеют одну и ту же размерность. Функцию f(b)=g(b)+h(b) можно считать критерием цены пути из корневой вершины в целевую. Идея этого ограничения состоит в том, чтобы выбирать критерий h(b) таким образом, чтобы не переоценивать близость к цели, т.е. не выбирать значение h(b) меньше, чем оно есть на самом деле.

Сравнение стратегий направленного поиска:

l - количество ветвей,

k – глубина поиска

Критерий

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

Монотонный поиск в ширину

Двунаправленный поиск в ширину

Поиск в глубину

Ограниченный поиск в глубину

Итеративный поиск в глубину

Поиск по близости к цели

Поиск по критерию цены пути

Тип поиска

слепой

направленный

Потребность в памяти

O( )

O( )

2*O( )

O(l*k)

O(l*k)

O(l*k)

O(l*k)

O(l*k)

Потребность во времени

O( )

O( )

O( )

O(l*k)

O(l*k)

O(l*k)

O(l*k)

O(l*k)

Оптимальность

Да + минимальный

Да

Да

Нет

Нет

Да

Нет

Да

Полнота

Да

Да

Да

Нет

Да, если выбрать правильный kmax

Да

Нет

Да

17. Классификация и основные параметры (с их обоснованием) алгоритма поиска, реализованного в программе на прологе в ЛР 3. Какие исходные и промежуточные данные необходимы для организации алгоритма?

Ограниченный поиск в глубину не по Девяткову ( отличие: обычный на втором шаге сращу уходит до грницы графа. В девяткове проверяются все инцендентные вершины начальной точки)

Классификация алгоритма поиска

Алгоритм поиска, реализованный в программе ЛР 3, относится к слепым стратегиям поиска, так как при выборе ветви не используется информация о положении целевой вершины.

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

Важно отметить, что реализованный алгоритм не соответствует варианту Девяткова. В классическом варианте Девяткова на каждом уровне сначала перебираются все инцидентные вершины (вершины графа, непосредственно соединённые с данной вершиной одной ветвью) текущего узла, и лишь затем осуществляется углубление.

В данной программе используется стандартный для Пролога механизм глубинного перебора: уже на втором шаге алгоритм углубляется по первой найденной ветви до достижения ограничения глубины

Запреты на повторное прохождение Используются предикаты not(поиск_ветви(...)), которые предотвращают: повторное прохождение одной и той же ветви в прямом направлении; в прямом и обратном; повторное прохождение узла.

Исходные данные алгоритма

Для организации алгоритма требуются следующие исходные данные:

  • граф в виде списка ветвей (ветви/1);

  • начальная вершина;

  • целевая вершина (косвенно задаётся через базовое правило);

  • максимальная глубина поиска (Счетчик).

Промежуточные данные алгоритма

В процессе работы алгоритма используются следующие промежуточные данные:

  • Стек для хранения текущего пути (ЧастьМаршрута);

  • Текущая глубина узла.

18. Поиск в глубину. Ограниченный поиск в глубину. Какие исходные и промежуточные данные потребуются дополнительно по сравнению с поиском в глубину для организации алгоритма ограниченного поиска в глубину? Графические примеры

  • П оиск в глубину

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

Исходные данные:

  • Граф (или дерево), представленный в виде смежности или списков рёбер.

  • Начальная вершина.

  • Условие завершения (например, достижение целевой вершины).

Промежуточные данные:

  • С тек для хранения текущего пути.

  • Ограниченный поиск в глубину

Модификация поиска в глубину (частный случай), в котором вводится максимальная глубина L. Алгоритм прекращает углубление, если достигнут уровень L, даже если цель не найдена.

Дополнительно требуется:

Исходные данные (+ исходные данные из поиска в глубину):

  • Параметр L: ограничение на максимальную глубину поиска.

Промежуточные данные (+ промежуточные данные из поиска в глубину): Текущая глубина узла.

19. Итеративный поиск в глубину. Какие исходные и промежуточные данные потребуются дополнительно по сравнению с поиском в глубину для организации алгоритма итеративного поиска в глубину? Графический пример.

Итеративный поиск в глубину

Э тот алгоритм сочетает преимущества поиска в глубину и поиска в ширину. Он выполняет несколько запусков ограниченного поиска в глубину, увеличивая уровень (глубину) L с каждым шагом.

Дополнительно требуется:

Исходные данные (+ исходные данные из поиска в глубину):

Параметр L, который постепенно увеличивается на каждом итерационном шаге.

Промежуточные данные(+ промежуточные данные из поиска в глубину):

  • Текущая глубина узла для сравнения с текущим L

Пример: Ищем вершину 5. В начале пройдёт 0,1 итерации, далее на середине 2 итерации достигнем целевой вершины.

Соседние файлы в предмете Теория обработки информации