Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Рассмотрим нагруженные графы , в которых каждой дуге поставлено в соответствие число . Очевидно, что если граф связный и существуют не единственные пути (маршруты), соединяющие вершины s и t, то интересует вопрос об отыскании пути из s в t минимальной длины. Если, конечно, в графе существуют циклы отрицательного веса, то минимального пути не существует. Поэтому имеет смысл задача поиска минимальных путей (маршрутов), число дуг (ребер) которых ограничено сверху. Приведем некоторые свойства минимальных путей в орграфе : 1. если для любого , то минимальный путь является простой цепью; 2. если – «минимальный» путь, то для любых i,j таких, что , путь также минимален; 3. если – минимальный путь среди путей из в , содержащих не более k дуг, то - минимальный путь среди путей из в , содержащих не более k-2 дуг. Все сказанное справедливо и для неориентированных графов. Рассмотрим несколько вариантов задач поиска кратчайших путей. Случай неотрицательной матрицы весов. Один из наиболее эффективных алгоритмов решения задачи о кратчайшем (s-t) – пути дал Дейкстра. Он основан на приписывании вершинам временных пометок, дающих верхнюю границу длины пути от s к этим вершинам. В итерационном процессе эти пометки уменьшаются, причем на каждом шаге одна из пометок обязательно становится постоянной, что указывает на равенство пометки кратчайшему пути от s к указанной вершине. Тогда можем ввести пометку вершины в виде , где – величина пометки, – признак пометки: , если пометка временная; , если пометка постоянная. Алгоритм Дейкстры. Шаг 1. Присвоение начальных значений. Положить и для всех . Положить p=s. Шаг 2. Обновление пометок. Все вершины такие, что ( и ) приобретают пометки в соответствии с правилом: . Шаг 3. Превращение пометки в постоянную. Находим . Шаг 4. Полагаем и . Шаг 5. а) (Если надо найти лишь путь от s к t) Если p=t, является длиной кратчайшего пути. Останов. б) (Если требуется найти пути от s ко всем остальным вершинам.) Если все , то – дают длины кратчайших путей. Останов. Если найдется такое, что перейти к шагу 2. Если требуется найти кратчайшие пути между s и всеми другими вершинами полного связного графа с числом вершин |X|=n, то в процессе работы алгоритма выполняется n(n-1)/2 операций сложения (шаг 2), и вдвое больше число операций сравнения (шаг 2 и шаг 3). Таким образом, общее число операций пропорционально . Случай общей матрицы весов. Если матрица весов дуг является произвольной матрицей, то дуги, «приносящие доход», должны иметь отрицательные «стоимости». В этом случае можно воспользоваться эффективным алгоритмом Форда - Беллмана. В этом алгоритме никакая из меток не является окончательной. В конце k-й итерации пометки равны длинам тех кратчайших путей (от s ко всем остальным вершинам), которые содержат не более k+1 дуг. Пометка вершины в этом алгоритме имеет смысл длины пути и имеет структуру: , где i - индекс вершины, l - численная величина пути в конце k+1 - й итерации. Описание алгоритма. Присвоение начальных значений. Шаг 1. Полагаем для всех и для . Обновление пометок. Шаг 2. Для изменить пометку следующим образом: (2), где . S содержит теперь все вершины, для которых кратчайшие пути из s состоят из k дуг, - содержит те вершины, для которых текущие кратчайшие пути из s состоят из k дуг и для которых существуют дуги к вершине . Если , то кратчайший путь от s к не может состоять из k+1 дуг, и поэтому изменять пометку не нужно. Для вершин положить . Проверка на окончание. Шаг 3. а) Если и для , то получим оптимальный ответ, и пометки равны длинам кратчайших путей. Останов. б) Если , то перейти к шагу 4. в) Если , то в графе существует цикл отрицательного веса и задача не имеет решения. Останов. Подготовка к следующей итерации. Шаг 4. Обновить множество S следующим образом: . Шаг 5. Положить k=k+1 и перейти к шагу 2. Как только получено решение исходной задачи, сами веса (длины) кратчайшего пути получаются из соотношения (2). Пути можно получить, если в дополнение к пометке для каждой вершины хранить и другую пометку . Пометка указывает вершину, непосредственно предшествующую вершине в кратчайшем пути от s к на k-й итерации. Начать можно так . Пометки ищем в соответствии с выражением (2): (3). Если – вектор, составленный из пометок q при завершении работы алгоритма, то кратчайший путь от s к получается в обратном порядке, при прохождении последовательно от до предшествующей, содержащейся в метке q, и так далее до s. Описанный алгоритм можно применять и в случае неотрицательной матрицы весов. Нужно учесть, что для алгоритма Дейкcтры требуется операций, а для приведенного . Если требуется найти кратчайшие пути между всеми парами вершин графа, то можно воспользоваться n-кратным повторением одного из рассмотренных алгоритмов в зависимости от значений весов матрицы. Для положительно взвешенных графов алгоритм Дейкстры даст затраты, пропорциональные , а для произвольных весов дуг (ребер) алгоритм Форда-Беллмана – . Более эффективным в поставленной задаче является алгоритм Флойда, вычислительные затраты которого для отыскивания кратчайших путей между всеми парами вершин составляет величину, пропорциональную , и на положительно взвешенных графах более эффективнее алгоритма Дейкстры. Исходными данными для алгоритма является матрица весов , в которой и , если в графе . Алгоритм Флойда. Шаг 1. Формирование начальных установок. Создадим рабочую матрицу кратчайших путей T=C, т.е. . Покажем k=0. Шаг 2. Рабочая итерация. Полагаем k=k+1. Для всех i=k, таких что , и для всех , таких, что , выполним операцию . Шаг 3. а) Если , то в графе G существует цикл отрицательного веса, содержащий вершину , и решения нет. Останов. б) Если и k=n, то получено решение задачи и значение кратчайших путей. Останов. в) Если , но , то перейти к шагу 2.
Задача№1
Задача №2
1. Оценка уравнения регрессии.
Определим вектор оценок коэффициентов регрессии. Согласно методу наименьших квадратов, вектор s получается из выражения:
s = (XTX)-1XTY
Матрица X
3.1 | 0.8 | |
3.5 | 0.5 | |
3.5 | 0.8 | |
4.4 | 0.8 | |
4.9 | 0.8 | |
6.1 | 2.2 | |
6.8 | 1.4 | |
10.4 | 2.3 | |
18.4 | 6.4 | |
19.6 | 5.3 |
Матрица Y
Матрица XT
3.1 | 3.5 | 3.5 | 4.4 | 4.9 | 6.1 | 6.8 | 10.4 | 18.4 | 19.6 |
0.8 | 0.5 | 0.8 | 0.8 | 0.8 | 2.2 | 1.4 | 2.3 | 6.4 | 5.3 |
Умножаем матрицы, (XTX)
В матрице, (XTX) число 10, лежащее на пересечении 1-й строки и 1-го столбца, получено как сумма произведений элементов 1-й строки матрицы XT и 1-го столбца матрицы X
Умножаем матрицы, (XTY)
Находим обратную матрицу (XTX)-1
0.4 | -0.0934 | 0.21 |
-0.0934 | 0.0482 | -0.14 |
0.21 | -0.14 | 0.43 |
Вектор оценок коэффициентов регрессии равен
s = (XTX)-1XTY =
Уравнение регрессии (оценка уравнения регрессии)
Y = -3.9558 + 8.2279X1 + 2.8434X2
Дата публикования: 2015-02-18; Прочитано: 547 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!