Использование атд для реализации стратегии исчерпывающего перебора.
Стратегия поиска в глубину.
Т к стратегия поиска в глубину пересматривает при возврате состояние порождённое последним в первую очередь то для поддержки этой й стратегии удобно использовать абстрактный тип стек.
АТД стек используется для сохранения контекста текущего состояния.
Контекст состояния включает в себя номер текущей вершины и индекс вершины-продолжения.
Инициализировать стек. Инициализируемый список ребер пути.
Сформировать начальный контекст.(индекс исходной вершины и индекс неисследованной вершины продолжения)
Сохранить контекст в стеке.
Пока стек не пуст выполнять.
Если найдено состояние-приемник то
Если это состояние целевое то
Включить ребро между текущей вершиной и вершиной приемника в путь
Вывести вариант пути
Выполнить возврат
Иначе
Сохранение текущего контекста в стеке
Формирование нового контекста
Иначе
Возврат
Детализация процедур возврата.
Удалить последнее ребро из списка.
Восстановить последний контекст из стека.
Использование АТЖ при реализации стратегии поиска в ширину.
Для реализации стратегии поиска в ширину используется АТД очередь.
Инициализировать очередь.
Сохранить в очереди текущий контекст (индекс исходной вершины)
Инициализировать список ребер пути.
Пока очередь не пуста выполнять
Взять текущий контекст из очереди
Для всех вариантов продолжения пути выполнять
Если состояние-приемник целевое то
Добавить ребро в список
Вывести решение.
Иначе поместить ребро в список, поместить контекст в очередь
Стратегия ограниченного перебора метод ветвей и границ.
Предполагается что существует способ разбиения множества решений на непересекающиеся подмножества.
Для каждого из подмножеств существует эффективный способ проверки наличия в этом множестве оптимального решения. (отсечение бесперспективных подмножеств)
Для настройки метода ветвей и границ на конкретную задачу необходимо для этой задачи решить вопросы 1 и 2.
Понятие оценочной функции.
Оценочная функция определена на подмножестве вариантов решения и позволяет оценить наличие или отсутствие оптимального варианта в соответствующем подмножестве.
Свойства оценочной функции.
Значение оценочной функции для подмножества не меньше чем значение оценочной функции для полной функции.
Оценочная функция определяет нижнюю границу критерия оптимальности в соответствующем подмножестве.
Если в множестве решений присутствует оптимальное то значение критерия для него не меньше значения оценочной функции для множества.
Применение метода ветвей и границ для решений задач Гамильтона.
Найти цикл в графе, сумма весов ребер которого минимальна.
Алгоритм Литла. Граф является полно связанным и не содержит петель. На множестве ребер графа определена функция веса.
Отсутствующие ребра реального графа дополняются фиктивными ребрами большого веса. Если полученный цикл содержит такие ребра то в исходном графе нет цикла Гамильтона.
Пример алгоритма Литла.
- |
6 |
4 |
8 |
7 |
14 |
6 |
- |
7 |
11 |
7 |
10 |
4 |
7 |
- |
4 |
3 |
10 |
8 |
11 |
4 |
- |
5 |
11 |
7 |
7 |
3 |
5 |
- |
7 |
14 |
10 |
10 |
11 |
7 |
- |
Процедура приведения