
- •Предмет изучения дисциплины "Структуры и алгоритмы обработки данных на эвм". Абстрактные типы данных. Классификация структур данных.
- •Хеширование. Хеш-функции. Коллизии и методы их устранения. Сферы применения хеширования, достоинства метода.
- •Деревья: поисковое дерево, идеально - сбалансированное дерево, сбалансированное поисковое дерево, в-дерево. Рекурсивные методы прохождения деревьев. Алгоритмы построения деревьев.
- •Сферы применения графов. Способы машинного представления графов, их достоинства и недостатки.
- •Алгоритмы поиска в графе: поиск в ширину, поиск в глубину.
- •Эйлеров путь, эйлеров цикл, эйлеров граф. Алгоритм нахождения эйлерова цикла.
- •Нахождение кратчайших расстояний. Алгоритм Дейкстры.
- •Алгоритмы с возвратом.
- •Алгоритм нахождения гамильтоновых циклов в графе.
- •Метод ветвей и границ.
- •Остовные деревья графа. Алгоритмы нахождения дерева минимального веса: алгоритм Прима, алгоритм Крускала.
- •Эффективность алгоритмов и её составляющие. Алгоритмы и их сложность. Доминирование. О-функции и их особенности.
- •Правила для определения сложности. Функции, часто используемые для оценки сложности алгоритмов (список функционального доминирования). Сравнение алгоритмов с различными порядками сложности.
- •Анализ алгоритмов и определение их сложности по управляющим структурам. Контрольные замеры. Критический взгляд на о-анализ. (ограниченность о-анализа).
- •Полиномиальные алгоритмы и труднорешаемые задачи. Два аспекта труднорешаемости задач. Недетерминированное вычисление и класс np.
- •Теория np-полных задач. Структура класса np.
- •Методы решения np-полных задач. Применение теории np-полноты для анализа задач.
Метод ветвей и границ.
Метод ветвей и границ является специальным частным случаем метода поиска с ограничением. Этот метод успешно применяется ко многим задачам, в том числе и к NP-полным. Основная идея метода такова: необходимо все огромное количество переборов разделить на классы и определить оценки для этих классов (снизу – для задач минимизации, сверху – для задач максимизации), для того чтобы иметь возможность отбрасывать возможные решения не по одному варианту, а сразу целыми классами.
Трудность этого метода заключается в том, чтобы найти такое разбиение на классы (ветви) и так определить для них оценки (границы), чтобы процедура была эффективной. По сути метод ветвей и границ представляет собой организованный перебор, в ходе выполнения которого исходная задача делится на множество подзадач, которые, в свою очередь, также делятся на подзадачи и так далее, до тех пор, пока не будет найдено решение.
Например, при
применении этого метода к задаче о
коммивояжере для
городов данная задача разбивается на
подзадачу. Первая подзадача – должна
содержать траектории с ребром между
городами
,
вторая - с ребром
.
Затем первое множество разбивается на
подзадачи, первая из которых должна
содержать траектории с ребрами
,
,
а вторая
,
.
Для каждой из подзадач (ветви) вычисляются два числа – оценки (границы). Нижняя граница – это лучшее решение, верхняя граница – это худшее решение. Далее, перед следующим разбиением, на основе полученных чисел возникает возможность исключения некоторых подзадач, если полученная нижняя граница меньше верхней. В этом случае, решения для этой подзадачи не являются оптимальными для исходной задачи.
Ограничения в методе ветвей и границ основываются на предположении, что на множестве возможных и частичных решений задана некоторая функция цены и, что нужно найти решение наименьшей стоимости. Для применения этого метода функция цены должна обладать тем свойством, что стоимость частичного решения не может быть выше, чем стоимость расширения данного частичного решения.
В большинстве
случаев функция цены не является
отрицательной и даже удовлетворяет
более сильному требованию:
.
Это свойство позволяет отбрасывать те решения, стоимость которых оказалась выше, чем стоимость решения, полученного на предыдущем шаге. В этом случае в качестве кандидата на новое ветвление выбирается множество с наименьшей оценкой. На каждой итерации алгоритма и для каждого подмножества вычисляется верхняя и нижняя оценки. Нижнюю оценку получают решением задачи точным методом, верхнюю оценку - с помощью какого-либо эвристического алгоритма.
Метод ветвей и границ – это не один специальный вид алгоритмов, это целый класс алгоритмов. Его эффективное использование зависит от разработки способов разбиения пространства решение, то есть от структуры ветвления и от используемых алгоритмов для определения оценок.
ЛАСКОВЫЙ МАЙ:
Алгоритм ветвей и границ схож с алгоритм с возватом, где так же на каждом шаге алгоритма откидывается явно не оптимальные решения.
Пусть S(0) – множество маршрутов, n – множество городов, c – матрица затрат.
Данный метод основан на разбиении множества на 2 подмножества которые не пересекаются и вычислении оценок каждого из них. Далее множество с минимальной оценкой разбивается на 2 подмножества и вычисляются их оценки. И так далее в выбирается подмножество с наименьшей оценкой и разбивается на 2 подмножества. Пока не получим подмножество, содержащее один цикл стоимостью последнего(?) множества.