Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции САОД.docx
Скачиваний:
17
Добавлен:
25.11.2019
Размер:
3.28 Mб
Скачать

Использование атд для реализации стратегии исчерпывающего перебора.

Стратегия поиска в глубину.

Так как стратегия поиска в глубину пересматривает при возврате состояние порождённое последним в первую очередь то для поддержки этой й стратегии удобно использовать абстрактный тип стек.

АТД стек используется для сохранения контекста текущего состояния.

Контекст состояния включает в себя номер текущей вершины и индекс вершины-продолжения.

Псевдокод:

  1. Инициализировать стек. Инициализируемый список ребер пути.

  2. Сформировать начальный контекст.(индекс исходной вершины и индекс неисследованной вершины продолжения)

  3. Сохранить контекст в стеке.

  4. Пока стек не пуст выполнять.

    1. Если найдено состояние-приемник то

      1. Если это состояние целевое то

        1. Включить ребро между текущей вершиной и вершиной приемника в путь

        2. Вывести вариант пути

        3. Выполнить возврат

      2. Иначе

        1. Сохранение текущего контекста в стеке

        2. Формирование нового контекста

    2. Иначе

      1. Возврат

Детализация процедур возврата.

  1. Удалить последнее ребро из списка.

  2. Восстановить последний контекст из стека.

Использование атж при реализации стратегии поиска в ширину.

Для реализации стратегии поиска в ширину используется АТД очередь.

  1. Инициализировать очередь.

  2. Сохранить в очереди текущий контекст (индекс исходной вершины)

  3. Инициализировать список ребер пути.

  4. Пока очередь не пуста выполнять

    1. Взять текущий контекст из очереди

    2. Для всех вариантов продолжения пути выполнять

    3. Если состояние-приемник целевое то

      1. Добавить ребро в список

      2. Вывести решение.

    4. Иначе поместить ребро в список, поместить контекст в очередь

Стратегия ограниченного перебора метод ветвей и границ.

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

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

Для настройки метода ветвей и границ на конкретную задачу необходимо для этой задачи решить вопросы 1 и 2.

Понятие оценочной функции.

Оценочная функция определена на подмножестве вариантов решения и позволяет оценить наличие или отсутствие оптимального варианта в соответствующем подмножестве.

Свойства оценочной функции.

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

Оценочная функция определяет нижнюю границу критерия оптимальности в соответствующем подмножестве.

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

Применение метода ветвей и границ для решений задач Гамильтона.

Найти цикл в графе, сумма весов ребер которого минимальна.

Алгоритм Литла.

Граф является полно связанным и не содержит петель. На множестве ребер графа определена функция веса.

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

Пример алгоритма Литла.

-

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

-

Процедура приведения

1 этап приведение по строкам.

-

2

0

4

3

10

0

-

1

5

1

4

1

4

-

1

0

7

4

7

0

-

1

7

4

4

0

1

-

4

7

3

3

4

0

-

Найти в i-ой строке минимальный элемент

Уменьшить значение всех элементов строки на найденную величину.

В результате должен появится, по крайней мере, 1 ноль.

Определим процедуру приведения по столбцам.

-

0

0

3

3

6

0

-

1

4

1

0

1

2

-

0

0

3

4

5

0

-

1

3

4

2

0

0

-

0

7

1

3

3

0

-

Константы приведения, т.е. которые вычитают числа

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

  2. Константа приведения строки i это весь кратчайшего ребра, который входит в вершину i. Константа приведение константы столбца j это весь кратчайшего ребра, которое выходит из вершины j. Т.к. при построении цикла мы должны войти в каждую вершину и выйти из нее (не обязательно по кратчайшему ребру) то сумма констант приведения является нижней границей длин циклов на рассматриваемом множестве вершин. Сумма констант приведения это оценочная функция.

Понятие веса нуля.

Весом нуля называется сумма минимальных элементов строки и столбца содержащего ноль.

Вес нуля это минимальная плата за отказ от включения в маршрут ребра соответствующего нулю.

Ноль максимального веса.

Соответствует ребру отказ от включения, которого в маршрут обходится дороже всего.

Правило ветвления.

Множество циклов разбивается на 2 непересекающихся подмножества по признаку вхождения и не вхождения ребра соответствующему нулю с максимальным весом.

Расчет оценочной функции для множества циклов включающих ребро с нулем максимального веса.

Системы массового обслуживания.

Пример

Кассовый терминал супермаркета

  1. Среднее время ожидания обслуживания

  2. Степень занятости обслуживающих устройств.

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

Математический аппарат исследования система массового обслуживания.

Очередь – хранятся такие атрибуты заявок как 1) уникальный номер 2) время поступления заявки в систему.

Событие – мгновенный акт, который изменяет состояние СМО.

Параметры состояния.

Состояние очереди (пустая или нет), состояние обслуживающих устройств

Типы событий

Поступление заявки в систему.

Окончание обслуживания заявки.

Календарь будущих событий

Календарь событий это набор данных, который

1) содержит записи с атрибутами

а) время

б) тип

2) обеспечивает приоритетное извлечение записи по минимуму значения атрибута…

Планирование будущих событий.

Определение времени наступления и типа события.

Включение записи о событии в календарь.

Обработчики событий.

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

Событие поступления заявки в систему:

  1. Присвоить заявке уникальный идентификатор.

  2. Зафиксировать время поступления заявки.

  3. Если обслуживающее устройство свободно то

    1. Запланировать событие окончания обслуживания.

    2. Иначе поставить заявку в очередь

  4. Планирование события поступления заявки.