
- •31. Биологический подход к решению задач искусственного интеллекта. Генетические алгоритмы и их использование. Нейронные сети и их использование.
- •1. Модель Персептрона.
- •2. Сигмоидальный нейрон.
- •3. Модель Видроу.
- •4. Wta (победитель получает все).
- •5. Нейроны Хебба.
- •6. Стохастическая модель.
- •32.Экспертные системы: структура, назначение, классификация. Методы построения экспертных систем. Понятие о инженерии знаний.
- •Методы построения эс и классификация эс по методам построения
- •33.Математические модели в физике, химии, биологии и экономике
- •2. Модель колебательной системы
- •1) Проверка равномерности распределения генератора случайных чисел.
- •2) Вычисление интеграла.
- •3) Методы случайного поиска
- •36.Основы теории погрешности. Прямая и обратная задача теории погрешности. Оценка погрешности. Понятие погрешности.
- •37.Численные методы решения нелинейных уравнений с одним неизвестным.
- •Оценка погрешности для полинома Лагранжа
- •Разделенные разности
- •40.Численное интегрирование и дифференцирование. Формулы численного дифференцирования. Метод Ньютона-Котеса.
- •Численное интегрирование
- •41.Основные виды задач оптимизации и методы их решения. Линейное программирование. Основные этапы решения задачи симплекс-методом.
- •В задаче линейного программирования (лп) целевая функция может быть представлена как сумма произведений переменных на некие константы:
- •Требования к стандартному виду задачи лп:
- •2.Приведение задачи линейного программирования к стандартной форме
- •2. Алгоритм симплекс-метода
- •42.Основные понятия теории игр. Чистые и смешанные стратегии игры. Седловая точка игры и её поиск.
- •43.Транспортная задача: постановка задачи, поиск опорного плана, оптимизация решения.
- •2.Табличный метод решения транспортной задачи
- •44 Понятие графа, методы описания графа, виды графов. Эйлеровы и гамильтоновы графы.
- •45. Комбинаторные объекты дискретной математики. Алгоритмические задачи комбинаторики. Задача коммивояжера.
- •Разбиения
- •Числа Стирлинга второго рода
- •Числа Белла
- •Разбиение чисел
- •Биноминальные коэффициенты
- •Рекуррентные соотношения.
- •Задача коммивояжера. Общее описание
- •Методы решения зк Жадный алгоритм
- •Деревянный алгоритм.
- •46. Алгоритмические задачи поиска в графах: задачи Прима-Краскала, Дейкстры, Форда-Фалкерсона.
- •47 Рекурсивные функции
- •48. Виртуальные машины Тьюринга. Нормальные алгорифмы Маркова.
- •49. Формальные языки и грамматики.
- •Классификация языков
46. Алгоритмические задачи поиска в графах: задачи Прима-Краскала, Дейкстры, Форда-Фалкерсона.
Классификация алгоритмических задач на графах
Задача сетевого планирования:
Пусть задана транспортная сеть с ориентированными дугами. У дуг заданы их длины. Требуется решить одну из следующих задач:
А) Найти длиннейший путь (без повторения) от входа к выходу вдоль направления стрелок. Путь считается больше, если сумма длин его дуг больше;
В) Определение длиннейшего или кратчайшего пути от входа к вершинам по направлению;
С) Определение тупиков и контуров в сети.
Тупик - висячая вершина, у которой есть входящий поток и нет выходящего.
Контур – простой цикл, построенный по направлению.
Задача поиска:
алгоритмы
поиска тупиков являются алгоритмами
поиска всех вершин с определением
степени входа и выхода для всех вершин
Эти значения не могут быть = 0найдя
нулевую степень мы найдем вершину,
являющуюся тупиком.
Поиск контуров более сложная задача. Обычно решается удалением крайних вершин. Этот алгоритм убирает вершины и дуги, кот. не входят в цикл, а оставляя те, кот. входят. Как только мы не можем удалить ни одной дуги, то все оставшиеся являются циклическими. Тупики и контуры это ошибки при построении сетевого графика.
Задача о максимальном потоке
Сеть – связный граф, часть вершин которого выделена и наз-ся полюсами. Различают однополюсные и двухполюсные сети.
Транспортной сетью наз-ют двухполюсную сеть, в одном – исток, в другом – сток, они имеют направление и длину (пропускная способность сети).
Поток –
это функция, которая определена на
ребрах или дугах таким образом. Что она
всегда положительна для любого ребра
и
его пропускной способности.
Для потоков должны выполняться законы Кирхгофа:
в любой вершине сумма входящих потоков = сумме выходящих
входной поток всей сети = выходному потоку данной сети
Сечением сети – наз-ся такое множество ребер, которые делят сеть на две части, со входом в одной стороне, с выходом – в другой. У каждого сечения можно просуммировать пропускную способность ребер. Эта величина наз-ся пропускной способностью сечения.
В задачах max и min пропускной способности сети требуется определить в соответствии с теоремой Форда-Фолкерсона, min пропускную способность простого сечения.
Простое сечение – сечение. У которого нет ребер, которые можно исключить.
Задача о максимальном потоке или задача Форда-Фалкерсона
Возьмем сеть, как в теории графов, то ребра – это трубы, а числа на них – пропускные способности (измеряемые, скажем в ведрах в минуту).
Вершины бывают трех сортов: источники, стоки, просто соединения труб. Про источники (соответственно, стоки) известно, сколько ведер в минуту они подают (соответственно, отводят).
Задача – наладить максимальный поток из источников в стоки.
Теорема Форда-Фолкерсона
вх.вых
Max поток через сеть = min потоку через простое сечение.
Док-во: (методом моделирования).
Max поток через сеть существует и конечен, т.к. пропускная способность и кол-во дуг – конечные величины. Дуга наз-ся насыщенной, если max = пропускной способности.
Если бы все дуги
были насыщены. То в сети был бы максимально
возможный поток, но в реальности должны
выполняться законы Кирхгофа,
дуги не будут насыщены. Пусть в сети
будет установлен максимальный поток.
Проанализируем ситуацию, когда сеть
разделена различными простыми сечениями.
Т.к. простые сечения делят на две части,
то входящий поток в сечение = max
потоку. Расставим эти сечения по
пропускной способности, в порядке
убывания,
,
найдем сечение с min
пропускной способностью. Докажем, что
это сечение будет иметь только насыщенные
ребра. Пусть одно ребро из min
сечения не насыщенно, тогда
возможность увеличить поток через
данное сечение, сделав это ребро
насыщенным. Т.о. min
пропускная способность данного сечения
позволит наращивать поток через него
до тех пор, пока все ребра не будут
насыщенными. Дальнейшее увеличение
потока невозможно.
Ч.Т.Д.
Алгоритм получения максимального потока
В соответствии с теоремой существует 2 варианта:
Найти все простые сечения и найти между них наименьшее.
Строится какой-либо поток через сеть. Двигаясь от выхода, стараемся увеличить данный поток путем перераспределения по ребрам. Как только получается простое сечение, у которого ребра насыщенны
найдем простое сечение.
Задача Прима-Краскала
Эта задача определения остовного дерева в полном графе с заданными длинами ребер такое, что это остовное дерево имеет min длину.
В терминах теории графов задача Прима-Краскала выглядит следующим образом:
Дан полный граф с n вершинами, длины ребер заданы. Найти остовное дерево минимальной длины.
В таком виде задача была поставлена и решена Примом в 1961 г.
Краскал одновременно и независимо поставил и решил задачу не для плоского случая, где расстояния определяются по формуле (1), а для произвольных положитедьных dij, I,j = 1,.., n. При этом для некоторых пар индексов dij бесконечно, что означает отсутствие ребра, т.е. рассматривает любой граф, а не только полный.
Есть n городов, кот-ые нужно соединить телефонной сетью с min затратами. Затраты определяются длиной кабеля. Известно расстояние между городами. Требуется построить телефонную линию так, чтобы не было дублирования и длина была минимальной.
Для решения данной задачи существует 1 алгоритма: алгоритм Прима и алгоритм Краскала.
Алгоритм Прима.
Строятся все вершины для графа без ребер.
Выбирается самое короткое ребро
Теперь имеем некоторое дерево, к которому нужно добавлять вершины и ребра, пока не будут связаны все вершины.
Добавляется только висячая вершина с ребром.
В результате добавления алгоритм строится по следующим шагам:
Рассматриваем все кол-во ребер, кот. не связаны с построенным деревом.
Определяем длины ребер, которыми эти вершины могут быть присоединены. Оставляем у каждой вершины кратное ей ребро.
Выбираем ребро. У которого длина кратчайшая и соединяем его с деревом. В результате дерево увеличится на одно ребро.
Первые три пункта повторяются, пока не останется изолированных вершин.
Алгоритм Краскала
Алгоритм Краскала противоположен алгоритму Прима. Здесь удаляются длиннейшие ребра по следующему правилу:
Определяем в графе циклические ребра.
Определяется наибольшее циклическое ребро и удаляется.
Повторяем первые 2 пункта до полного исчезновения циклических ребер.
Замечание: можно несколько изменить алгоритм, просто расположив ребра в порядке убывания их длины и последовательно удалять те ребра, кот. не нарушают связность.
Теорема Прима-Краскала
Оба алгоритма дают одно и то же дерево, которое имеет min длину.
Док-во.
Алгоритмы Прима-Краскала удаляют только циклические ребра или добавляют антициклические
в результате должно получится дерево, соединяющее все вершины графа, т.е. остовное дерево.
Докажем, что алгоритмы П-К дают одинаковое дерево. Используем метод от противного.
Пусть Краскал дал
дерево Гк, а Прим – Гп., кот. не равны.
Сравним эти деревья и возьмем произвольную
вершину А. По алгоритму Прима она
соединена с остальными вершинами только
одним ребром, кот. имеет min
длину. А- последняя вершина алгоритма
Прима. Найдем эту вершину в дереве
Краскала. Если эта вершина соединена с
остальными вершинами другим ребром, то
образуется цикл, в кот. по алгоритму
Краскала, мы должны удалить длиннейшее
ребро
получено противоречие. Поскольку удалено
не длиннейшее ребро
предположение о неравенстве деревьев
ошибочно. Деревья одинаковы.
Задача Дейкстры
Задача Дейкстры – это задача поиска кратчайшего пути между вершинами графа с заданными длинами ребер. Обычно находятся кратчайшие пути между всеми вершинами.
Алгоритм Дейкстры
Пусть задан граф из n вершин и длина ребер.
Строим таблицу, где столбцы будут относиться к вершинам. Но на одном шаге таблица пуста.
Выбираем вершину, кот. будет основной на данном шаге из условия такой близости к исходной (вначале это вершина А).
Проставим расстояния от выделенной вершины до остальных (если вершины не соединены, то ставится «-», знак
или Б).
Прекращаем заполнение столбца, у кот. была выделена вершина.
Среди оставшихся столбцов находим наименьшее значение. Вершина данного столбца будет выделена.
Повторяем шаг 2-5, но с условием: цифру, кот. мы записываем в расстояние от данной вершины, надо выбирать наименьшую из 2-х выше лежащей цифры или сумму цифр выбранной вершины + расстояние от выбранной вершины.
Построение таблицы завершается, когда выделена последняя вершина, расстояние которой не уменьшается.
Теорема Дейкстры
Алгоритм Дейкстры корректен, дает правильный результат для любого графа.
В качестве док-ва можно рассмотреть простые соображения – методом от противного.
Если бы из А в X
существовал более короткий путь, то он
обязательно отражался бы в одной из
строчек столбца X0,
т.к. путь в X
рассматривается из всех вершин. Т.о.,
наличие непроверенного короткого пути
в X
требует наличие таких же непроверенных
путей для всех вершин этого пути, что в
принципе невозможно
Ч.Т.Д.
Существует удобный алгоритм Флойда-Уоршела Для решения задачи Дейкстры.
,
где
- матрица кратчайших путей между вершинами
и
.
Вычисление по этой формуле в цикле по i , по j и внутри цикла k.
Этот алгоритм является следствием алгоритма Дейкстры, но находит расстояние между всеми вершинами. В результате он гораздо менее эффективен с точки зрения затраты времени на выполнение.
Алгоритм Уоршелла
удобный алгоритм
Флойда-Уоршелла для решения задачи
Дейкстры
,
где
- матрица кратчайших
расстояний между вершинами
и
.
Вычисление по этой формуле в цикле по
,
по
и внутри цикла
.