2.1 Практическое применение жадного алгоритма
На территории некого города N размещены заводы и магазины, в которые поставляется продукция с этих заводов. В результате разработки были определены возможные трассы для прокладки коммуникаций и оценена стоимость их создания для каждой трассы. Стоимость прокладки коммуникаций для трассы между заводом №1 и магазином удобрений составляет 15 у.е., между заводом №1 и заводом №3 – 85 у.е., между заводом №1 и хлебозаводом – 20 у.е. Между магазином №1 и заводом №2 составит 25 у.е., между магазином №1 и обувной фабрикой – 65 у.е. Стоимость прокладки коммуникаций для трассы, соединяющей хлебозавод и магазин №2 - 5 у.е., между хлебозаводом и кафе – 50 у.е., между заводом №2 и кафе - 20 у.е., между магазином №2 и продуктовым магазином - 20 у.е., между продуктовым магазином и обувной фабрикой - 25 у.е, между продуктовым магазином и кафе – 35 у.е., между обувной фабрикой и магазином №3 - 15 у.е, между обувной фабрикой и аптекой – 40 у.е., между кафе и аптекой - 10 у.е., между магазином №3 и торговым центром - 20 у.е., между аптекой и заводом №3 составит 30 у.е, между аптекой и торговым центром – 45 у.е., между заводом №3 и торговым центром, - 25 у.е. Необходимо, чтобы коммуникации связали все объекты, затраты на прокладку данных коммуникаций должны быть минимальны.
Для удобства записи вводятся следующие обозначения:
V1 – завод №1, V2 – магазин №1, V3 – хлебозавод, V4 –завод №2, V5 – магазин №2 V6 –продуктовый магазин, V7 – обувная фабрика, V8 –кафе, V9 – магазин №3, V10 – аптека, V11 –завод №3, V12 – торговый центр.
Если создать графическую интерпретацию данной модели, то видно что получился граф с 12 вершинами и 18 ребрами.
Рисунок 1– Графическая интерпретация задачи о оптимальной структуре сети
Из вышесказанного следует, что данную экономическую задачу можно решить с помощью теории графов. Требуется найти дерево покрытия минимального веса. Задача решается с помощью разновидности «жадного» алгоритма, алгоритма Краскала.
Пусть имеется конечное множество Е, |E|=18, весовая функция w: E®R+ и семейство ℇ⊂ 2Е. Требуется найти ХÎЕ, такое что :
Пусть Е – непустое конечное множество, w: E®R+ - функция, ставящая в соответствие каждому элементу е этого множества неотрицательное действительное число w(e) – вес элемента е. Для ХÍЕ вес w(Х)определим как сумму весов всех элементов множества Х:
где
Другими словами, необходимо выбрать в данном семействе непустое подмножество наименьшего веса.
Сопоставим каждому пункту сети вершину графа G. А каждому ребру этого графа сопоставим число, равное стоимости строительства соответствующей коммуникации: (рисунок 1).
Примером жадного алгоритма служит алгоритм Краскала /3/.
Существует теорема, которая утверждает, что алгоритм Краскала всегда приводит к ребру, имеющему минимальный вес.
Согласно алгоритму Краскала, выбирается ребро минимального веса. В данном случае это будет ребро е1 = {3,5}, получаем граф Т1.
Строится граф Т2 = Т1 + е2, где е2 - ребро, имеющее минимальный вес среди ребер, не входящих в Т1 и не составляющий циклов с ребрами Т1, е2 {8,10}.
Т3 = Т2 + е3, где е3 = {7,9}.
Т4 = Т3 + е4, где е4 = {1,2}.
Т5 = Т4 + е5, где е5 = {1,3}.
Т6 = Т5 + е6, где е6 = {5,6}.
Т7 = Т6 + е7, где е7 = {4,8}.
Т8 = Т7 + е8, где е8 = {9,12}
Т9 = Т8 + е9, где е9 = {2,4}.
Т10 = Т9 +е10, где е10 = {6,7}.
Т11 = Т10 + е11, где е11 = {11,12}.
Найдено минимальное дерево покрытия взвешенного графа, следовательно, найдена и оптимальная структура сети, где общая стоимость затраченная на прокладку коммуникаций составит:
и это минимальная сумма затрат из всех возможных. При прокладке коммуникационной сети, соединяющей все данные пункты затрачивается 200 у.е.
Рисунок 2 – Решение задачи о оптимальной структуре сети
Коммуникации проложат между следующими пунктами: аптека – кафе - завод №2 – магазин №1 - завод №1 – хлебозавод – магазин №2 - продуктовый магазин – обувная фабрика – магазин №3 – торговый центр.
2.2 Применение алгоритма Дейкстры
Фирме, занимающейся перевозкой скоропортящихся товаров, необходимо доставить товар из Суйфэньхе в Хабаровск, причем маршрутов, по которым можно произвести доставку несколько. Расстояние между Суйфэньхе и городом 2 составляет 15 км, между Суйфэньхе и городом 3 – 20 км, между Суйфэньхе и городом 11 – 85 км. Между городом 2 и городом 4 - 25 км, между городом 2 и городом 7 - 65 км. Между городом 3 и городом 5 составляет 5 км, между городом 3 и городом 8 - 50 км. Между городом 4 и городом 8 - 20 км. Между городом 5 и городом 6 - 20 км. Между городом 6 и городом 7 - 25 км, между городом 6 и городом 8 - 35 км. Между городом 7 и городом 9 - 15 км, между городом 7 и городом 10 - 40 км. Между городом 9 и городом 12 - 20 км. Между городом 10 и городом 11 - 30 км, между городом 10 и городом 12 - 45 км. Между городом 11 и городом 12 - 25 км. Требуется найти кратчайший путь из Суйфэньхе в Хабаровск
Строится граф G, в котором город Суйфэньхе обозначается цифрой 1, Хабаровск - 12. Остальные пункты маршрута обозначаются цифрами 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. Каждому ребру графа сопоставляется число, которое будет равняться расстоянию между пунктами. Требуется найти минимальный маршрут. Алгоритм Дейкстры находит кратчайший путь между двумя вершинами в графе /3/. Следовательно, можно воспользоваться им, при решении данной экономической задачи.
Рисунок 3– Графическая интерпретация задачи о нахождении минимального маршрута доставки
Если вершина v лежит на кратчайшем пути от начальной вершины к конечной, то T[v] – длина кратчайшего пути от начальной вершины к конечной.
С помощью алгоритма Дейкстры находится единственный минимальный маршрут, соединяющий вершины 1и 12 графа G (рисунок 3).
Пусть вершина – номер 1 – начальная вершина. Для неё назначается постоянный ярлык L(к) = 0. Конечной вершиной будет считаться вершина номер 1. Рассматриваются вершины, смежные с вершиной 12, и назначим им временные ярлыки: L(2) = 25 , L(3) = 20 , L(11) = 85.
Нужно выбирать вершину с самым маленьким ярлыком – это вершина номер 3, и её ярлык L(3) = 20 становится постоянным.
Повторяя этот процесс для вершины номер 3, вершинам присваиваются временные ярлыки: L(5) = 5 , L(8) = 50.
Среди всех временных ярлыков минимальный будет у L(5) = 5. Этот ярлык становится постоянным.
С вершиной 5 смежна только вершина 6. L(6) = 20.
Повторяя этот процесс для вершины номер 6, вершинам присваиваются временные ярлыки: L(7) = 25 , L(8) = 35.
Среди всех временных ярлыков минимальный будет у L(7) = 25. Этот ярлык становится постоянным.
Повторяя процесс, рассматриваются вершины, смежные с вершиной 7. Это 2, 9 и 10. Для которых временные ярлыки будут: L(2) = 65, L(9) = 15, L(10) = 40. Находится наименьший временный ярлык. Он будет у: L(9) = 20.
С вершиной 9 смежна только вершина 12. L(12) = 20.
Теперь, когда дерево сформировано, мы можем определить самый короткий путь от 1 до 12. Этот путь дерева, соединяющий вершины 1 и 12. И он проходит через вершины 3, 5, 6, 7 и 9. Длина этого пути - L(v') = 20 + 5 + + 20 + 25 + 15 + 20 = 105 (км.).
Рисунок 4 - Решение задачи о нахождении минимального маршрута доставки
Маршрут из города Суйфэньхе в Хабаровск, при котором время доставки товара будет наименьшим, включает город 3, город 5, город 6, город 7 и город 9.Длина маршрута составит 105 километров.
2.3 Задача коммивояжера
Коммивояжер желает посетить 6 городов. Они соединены сетью дорог
Расстояние между городом 1 и городом 2 составляет 6 км, между городом 1 и городом 3 - 7 км, между городом 1 и городом 4 - 20 км, между городом 1 и городом 5 - 12 км, между городом 1 и городом 6 - 10 км. Расстояние между городом 2 и городом 3 составляет 5 км, между городом 2 и городом 4 - 7 км, между городом 2 и городом 5 - 9 км, между городом 2 и городом 6 - 16 км. Расстояние между городом 3 и городом 4 составляет 4 км, между городом 3 и городом 5 - 10 км, между городом 3 и городом 6 - 12 км. Расстояние между городом 4 и городом 5 составляет 3 км, между городом 4 и городом 6 - 15 км. Расстояние между городом 5 и городом 4 составляет 6 км, между городом 5 и городом 6 - 4 км, между городом 6 и городом 3 - 11 км, между городом 6 и городом 5 - 21 км. Коммивояжёр должен посетить все 6 городов по одному разу, вернувшись в тот, с которого начал. Требуется найти такой маршрут движения, при котором суммарное пройденное расстояние будет минимальным