Дискретная математика (Обход графа, Алгоритм Форда – Фалкерсона и т.д. и т.п), страница 3

2015-11-15СтудИзба

Описание файла

Файл "Дискретная математика" внутри архива находится в папке "Обход графа, Алгоритм Форда - Фалкерсона и т.д. и т.п". Документ из архива "Обход графа, Алгоритм Форда – Фалкерсона и т.д. и т.п", который расположен в категории "". Всё это находится в предмете "дискретная математика" из 3 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "дискретная математика" в общих файлах.

Онлайн просмотр документа "Дискретная математика"

Текст 3 страницы из документа "Дискретная математика"

Элементы множества  называются независимыми, а остальные подмножества Е (2Е \ )– зависимыми. Пусть множество Х (произвольное множество) содержится в множестве Е. Максимальным независимым подмножеством множества Х называется множество Y такое, что если множество Y, принадлежащее независимому множеству , содержится в множестве Х и Z, принадлежащем независимому множеству , содержится в множестве Х, то множество Z содержится в множестве Y (YХY  ZXZY) . Множество максимальных независимых подмножеств множества Х обозначим Х.

Рассмотрим следующее утверждение, справедливое для любого Х:

М4: максимальные независимые подмножества данного множества равномощны ( Y ХZ Х  Y= Z).

Пусть М = < E,  > и выполнены аксиомы М1 и М2 . Тогда аксиома М3 и утверждение М4 эквивалентны, то есть М1, М2, М4 - эквивалентная система аксиом матроида.

Пусть имеются конечное множество Е, весовая функция  и семейство   2E. Необходимо выбрать в указанном семействе  подмножество Х наибольшего веса. Для решения этой задачи будем считать, что множество Е упорядочено в порядке убывания весов элементов. В начале множество Х пусто. Затем проверяем каждый элемент множества Е, начиная с первого: если объединение его с множеством Х принадлежит указанному семейству , то добавляем его в множество Х, если не принадлежит семейству , то рассматриваем следующий элемент, и так до n-го.

Алгоритм такого типа называется жадным. Очевидно, что жадный алгоритм является очень эффективным, он за наименьшее количество шагов находит искомое подмножество. Жадные алгоритмы и их свойства исследованы сравнительно недавно, но их значение в практике программирования чрезвычайно велико. Если удается свести конкретную экстремальную задачу к такой постановке, где множество допустимых вариантов (из которых необходимо выбрать наилучший) является матроидом, то в большинстве случаев следует сразу применять жадный алгоритм, поскольку он достаточно эффективен в практическом смысле. Если же наоборот, оказывается, что множество допустимых вариантов не образует матроида, то это «плохой признак». Скорее всего, данная задача окажется труднорешаемой. В этом случае целесообразно тщательно исследовать задачу для предварительного получения теоретических оценок сложности, чтобы избежать бесплодных попыток «изобрести» эффективный алгоритм там, где это на самом деле невозможно.

Другими словами, если М = < E,  > - матроид, то для любой весовой функции  жадный алгоритм находит независимое множество Х с наибольшим весом; если же М = < E,  > не является матроидом, то существует такая функция , что множество Х, найденное жадным алгоритмом, не будет максимальным.

Пусть G (V,E) – граф. Остовной подграф G (V,E) – это подграф, содержащий все вершины. Остовной подграф, являющийся деревом, называется остовом. Несвязный граф не имеет остова, связный граф может иметь много остовов. Если задать длины рёбер, то можно поставить задачу нахождения кратчайшего остова. Существует множество различных способов найти какой-то остов графа. Множество кратчайших путей из заданной вершины ко всем остальным тоже образует остов. Однако этот остов может не быть кратчайшим. На рис. 13 показаны диаграмма графа, дерево кратчайших путей из вершины один с суммарным весом 5 и два кратчайших остова этого графа.

Рис. 13

Одним из способов нахождения кратчайшего остова в связном графе является алгоритм Краскала. Он является частным случаем жадного алгоритма. Заметим, что множество подмножеств множества рёбер, не содержащих циклов, образует матроид.

Алгоритм Краскала

Алгоритм Краскала основан на выборе ребер графа, составляющих его наикратчайший остов. Изначально известен список ребер графа с их длинами. Выбор происходит по двум критериям:

  1. так как остов должен быть кратчайшим, выбор начинается с ребер минимальной длины;

  2. так как остов – это дерево (структура, не содержащая циклов), каждое выбранное ребро проверяется: не составляет ли оно цикла с ранее выбранными ребрами.

Цикл проходит n = v - 1 раз, где v – количество вершин графа.

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

Пример

На рис. 14 задан граф. Необходимо найти его минимальный остов при помощи алгоритма Краскала.

Решение:

Представим список ребер исходного графа с указанием длины каждого из них. Затем отсортируем ребра в порядке возрастания их длин.

Рис. 14

Исходный список

Отсортированный список

(1,2) - 2

(2,3) - 1

(1,4) - 3

(4,5) - 1

(2,3) - 1

(8,9) - 1

(2,5) - 2

(1,2) - 2

(3,6) - 3

(2,5) - 2

(4,5) - 1

(6,9) - 2

(4,7) - 4

(1,4) - 3

(5,6) - 4

(3,6) - 3

(5,8) - 3

(5,8) - 3

(6,9) - 2

(4,7) - 4

(7,8) - 4

(5,6) - 4

(8,9) - 1

(7,8) - 4

Для решения задачи с помощью алгоритма Краскала составим таблицу, отражающую шаги выполнения алгоритма для рассматриваемого примера.

Шаг

Массив ребер

Компонента связности

Во втором столбце формируем массив ребер по принципу:

Шаг 1. Помещаем в первый столбец первое ребро отсортированного списка. Компонента связности данного ребра будет соответствовать вершинам, которые данное ребро связывает.

Шаг 2…Шаг N. Рассматриваем n-е ребро отсортированного списка:

  1. добавляем ребро в массив, если оно удовлетворяет условию ацикличности;

  2. пропускаем ребро в противном случае.

И так далее до конца списка ребер.

Проверка ацикличности формируемого массива производится при помощи третьего столбца таблицы, в который помещаются компоненты связности «леса», разрастающегося во втором столбце. Компоненты связности формируются следующим образом:

  1. Если вершины добавляемого ребра не входят ни в одну из уже существующих компонент связности, то формируется новая компонента связности из двух вершин.

Шаг

Массив ребер

Компонента связности

1

(2,3)

2

(2,3); (4,5)

3

(2,3); (4,5); (8,9)

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

Шаг

Массив ребер

Компонента связности

4

(2,3); (4,5); (8,9); (1,2)

  1. Если одна вершина рассматриваемого ребра входит в одну из имеющихся компонент связности, а вторая – в другую, то компоненты связности и массивы ребер объединяются.

Шаг

Массив ребер

Компонента связности

5

(2,3); (4,5); (8,9); (1,2); (2,5)

4) Если обе вершины рассматриваемого ребра принадлежат одной компоненте связности, то ребро исключается из рассмотрения, в таблицу изменения не вносятся. В рассматриваемом примере такими ребрами являются (1,4), (5,8), (5,6) и (7,8).

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

Шаг

Массив ребер

Компонента связности

6

(2,3); (4,5); (8,9); (1,2); (2,5); (6,9)

7

(2,3); (4,5); (8,9); (1,2); (2,5); (6,9) [(1,4)]

Шаг

Массив ребер

Компонента связности

8

(2,3); (4,5); (8,9); (1,2); (2,5); (6,9); (3,6)

9

(2,3); (4,5); (8,9); (1,2); (2,5); (6,9); (3,6) [(5,8)]

10

(2,3); (4,5); (8,9); (1,2); (2,5); (6,9); (3,6); (4,7)

11

(2,3); (4,5); (8,9); (1,2); (2,5); (6,9); (3,6); (4,7) [(5,6)]

12

(2,3); (4,5); (8,9); (1,2); (2,5); (6,9); (3,6); (4,7) [(7,8)]

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

В результате рассмотрения всех ребер отсортированного списка получим строку таблицы, определяющую минимальный остов графа (шаг 12).

Таким образом, минимальным остовом исходного графа является остов, состоящий из ребер (2,3); (1,2); (2,5); (4,5); (8,9); (6,9); (3,6); (4,7).

Задания

Найти минимальный остов графа, заданного списком ребер, при помощи алгоритма Краскала.

  1. (1,2) – 3; (1,3) – 6; (1,4) – 2; (1,5) – 5; (2,3) – 4; (2,4) – 3; (2,5) – 1;
    (3,4) – 2; (3,5) – 5; (4,5) – 2.

  2. (1,2) – 6; (1,6) – 5; (1,8) – 5; (2,3) – 4; (3,4) – 1; (3,8) – 3; (4,5) – 1;
    (4,7) – 2; (5,6) – 2; (6,7) – 4; (7,8) – 1.

  3. (1,2) – 5; (1,3) – 3; (1,6) – 4; (2,3) – 6; (2,6) – 1; (3,4) – 2; (3,5) – 5;
    (4,5) – 1; (4,6) – 1; (5,6) – 4.

  4. (1,2) – 1; (1,3) – 7; (1,6) – 5; (2,3) – 4; (2,6) – 2; (3,4) – 3; (3,5) – 6;
    (3,6) – 1; (4,5) – 2; (4,6) – 5; (5,6) – 3.

  5. (1,2) – 1; (1,8) – 2; (2,3) – 2; (2,4) – 7; (2,8) – 3; (3,4) – 5; (4,5) – 5;
    (4,6) – 6; (5,6) – 3; (6,7) – 4; (6,8) – 1; (7,8) – 1.

  6. (1,2) – 4; (1,3) – 5; (1,4) – 2; (1,5) – 3; (2,3) – 1; (2,4) – 2; (2,5) – 3;
    (3,4) – 5; (3,5) – 6; (4,5) – 7.

  7. (1,2) – 4; (1,6) – 1; (1,8) – 6; (2,3) – 5; (3,4) – 2; (3,8) – 7; (4,5) – 2;
    (4,7) – 3; (5,6) – 3; (6,7) – 5; (7,8) – 5.

  8. (1,2) – 1; (1,3) – 7; (1,6) – 5; (2,3) – 4; (2,6) – 2; (3,4) – 3; (3,5) – 6;
    (4,5) – 2; (4,6) – 5; (5,6) – 3.

  9. (1,2) – 5; (1,3) – 3; (1,6) – 4; (2,3) – 6; (2,6) – 1; (3,4) – 2; (3,5) – 5;
    (3,6) – 2; (4,5) – 1; (4,6) – 1; (5,6) – 4.

  10. (1,2) – 5; (1,8) – 1; (2,3) – 1; (2,4) – 3; (2,8) – 2; (3,4) – 1; (4,5) – 4;
    (4,6) – 5; (5,6) – 4; (6,7) – 6; (6,8) – 2; (7,8) – 2.

  11. (1,2) – 5; (1,3) – 3; (1,4) – 7; (1,5) – 2; (2,3) – 2; (2,4) – 1; (2,5) – 2;
    (3,4) – 4; (3,5) – 5; (4,5) – 2.

  12. (1,2) – 5; (1,6) – 2; (1,8) – 5; (2,3) – 3; (3,4) – 1; (3,8) – 2; (4,5) – 7;
    (4,7) – 2; (5,6) – 2; (6,7) – 4; (7,8) – 1.

  13. (1,2) – 2; (1,3) – 2; (1,6) – 4; (2,3) – 5; (2,6) – 1; (3,4) – 2; (3,5) – 5;
    (4,5) – 7; (4,6) – 1; (5,6) – 3.

  14. (1,2) – 3; (1,3) – 1; (1,6) – 4; (2,3) – 7; (2,6) – 2; (3,4) – 5; (3,5) – 4;
    (3,6) – 1; (4,5) – 3; (4,6) – 2; (5,6) – 1.

  15. (1,2) – 3; (1,8) – 2; (2,3) – 3; (2,4) – 1; (2,8) – 5; (3,4) – 2; (4,5) – 4;
    (4,6) – 4; (5,6) – 1; (6,7) – 7; (6,8) – 1; (7,8) – 5.

  16. (1,2) – 2; (1,3) – 4; (1,4) – 1; (1,5) – 1; (2,3) – 3; (2,4) – 5; (2,5) – 2;
    (3,4) – 3; (3,5) – 4; (4,5) – 6.

  17. (1,2) – 2; (1,6) – 3; (1,8) – 4; (2,3) – 4; (3,4) – 5; (3,8) – 6; (4,5) – 1;
    (4,7) – 2; (5,6) – 1; (6,7) – 3; (7,8) – 1.

  18. (1,2) – 3; (1,3) – 6; (1,6) – 3; (2,3) – 2; (2,6) – 5; (3,4) – 1; (3,5) – 4;
    (4,5) – 1; (4,6) – 1; (5,6) – 2.

  19. (1,2) – 2; (1,3) – 2; (1,6) – 4; (2,3) – 5; (2,6) – 1; (3,4) – 2; (3,5) – 5; (3,6) – 3; (4,5) – 7; (4,6) – 1; (5,6) – 3.

  20. (1,2) – 2; (1,8) – 1; (2,3) – 7; (2,4) – 2; (2,8) – 2; (3,4) – 1; (4,5) – 4; (4,6) – 5; (5,6) – 3; (6,7) – 5; (6,8) – 3; (7,8) – 4.

  21. (1,2) – 7; (1,3) – 1; (1,4) – 3; (1,5) – 5; (2,3) – 3; (2,4) – 2; (2,5) – 2; (3,4) – 4; (3,5) – 4; (4,5) – 1.

  22. (1,2) – 7; (1,6) – 3; (1,8) – 4; (2,3) – 1; (3,4) – 2; (3,8) – 1; (4,5) – 3; (4,7) – 2; (5,6) – 5; (6,7) – 4; (7,8) – 2.

  23. (1,2) – 3; (1,3) – 1; (1,6) – 4; (2,3) – 7; (2,6) – 2; (3,4) – 5; (3,5) – 4; (4,5) – 3; (4,6) – 2; (5,6) – 1.

  24. (1,2) – 2; (1,3) – 7; (1,6) – 4; (2,3) – 1; (2,6) – 3; (3,4) – 5; (3,5) – 6; (3,6) – 5; (4,5) – 4; (4,6) – 7; (5,6) – 2.

  25. (1,2) – 2; (1,8) – 3; (2,3) – 4; (2,4) – 7; (2,8) – 5; (3,4) – 7; (4,5) – 4; (4,6) – 6; (5,6) – 2; (6,7) – 1; (6,8) – 5; (7,8) – 5.

  26. (1,2) – 1; (1,3) – 2; (1,4) – 4; (1,5) – 5; (2,3) – 2; (2,4) – 3; (2,5) – 1; (3,4) – 4; (3,5) – 6; (4,5) – 7.

  27. (1,2) – 1; (1,6) – 2; (1,8) – 6; (2,3) – 2; (3,4) – 3; (3,8) – 7; (4,5) – 4; (4,7) – 1; (5,6) – 5; (6,7) – 4; (7,8) – 7.

  28. (1,2) – 2; (1,3) – 7; (1,6) – 4; (2,3) – 1; (2,6) – 3; (3,4) – 5; (3,5) – 6; (4,5) – 4; (4,6) – 7; (5,6) – 2.

  29. (1,2) – 3; (1,3) – 1; (1,6) – 4; (2,3) – 7; (2,6) – 2; (3,4) – 5; (3,5) – 4; (3,6) – 5; (4,5) – 3; (4,6) – 2; (5,6) – 1.

  30. (1,2) – 3; (1,8) – 2; (2,3) – 3; (2,4) – 1; (2,8) – 5; (3,4) – 2; (4,5) – 4; (4,6) – 4; (5,6) – 1; (6,7) – 7; (6,8) – 5; (7,8) – 5.

Нахождение кратчайшего пути

в сети без контуров

Задача о нахождении кратчайшего пути имеет столько практических применений и интерпретаций, что важность её не нуждается в обсуждении. Ниже рассматриваются классические алгоритмы, которые должен знать каждый программист.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5250
Авторов
на СтудИзбе
422
Средний доход
с одного платного файла
Обучение Подробнее