Задача поиска наибольшего паросочетания в двудольном графе

Целью данной курсовой работы является разработка программы для поиска наибольшего паросочетания в двудольном графе
Author image
Timur
Тип
Курсовая работа
Дата загрузки
06.10.2022
Объем файла
821 Кб
Количество страниц
12
Уникальность
Неизвестно
Стоимость работы:
560 руб.
700 руб.
Заказать написание работы может стоить дешевле

Введение

Актуальность темы курсовой работы определяется тем, что в наше время вопрос поиска пары через брачные агентства остается очень востребованным.
 Многие брачные агентства, занимающиеся поиском пар для своих клиентов, озадачены тем, что для каждого нужно найти лучший, выигрышный вариант. Сотрудники должны наиболее эффективным образом организовать вечер встреч, таким образом, чтобы состоялось максимальное количество свиданий. Задача выглядит на первый взгляд очень простой, но таковой она будет являться лишь при небольшом количестве клиентов агентства. В данном случае сотрудники агентства решают задачу поиска наибольшего паросочетания в двудольном графе.
В данной курсовой работе будет представлена теоретическая и практическая информация об одном из способов решения задачи поиска наибольшего паросочетания в двудольном графе.
Целью данной курсовой работы является разработка программы для поиска наибольшего паросочетания в двудольном графе.
Объект исследования – двудольный граф.
Предмет исследования – решение задачи наибольшего паросочетания в двудольном графе.

СОДЕРЖАНИЕ

Оглавление

Введение 3

1. Основные термины теории графов, постановка задачи и методы решения 5

1.1  Основные термины теории графов 5

1.2  Постановка задачи поиска наибольшего паросочетания в двудольном графе 8

1.3  Методы решения задачи 9

2. Реализация алгоритма решения задачи поиска наибольшего паросочетания в двудольном графе 14

2.1 Ручной расчёт задачи 14

2.2 Реализация программы 15

Заключение 21

Не найдено 

Алгоритм Куна просматривает все вершины v первой доли графа: v=1…n_1. Так, если данная вершина уже насыщена текущим паросочетанием (выбрано какое-то проблема смежное ребро данной вершине), то её мы пропускаем. Иначе – алгоритм попытается насытить эту вершину, для этого запускается поиск увеличивающей цепи, начиная с данной вершины.
Утром нас разбудили Маринет и Эрнест, которые прибежали в комнату все в слезах. Мы с Дэном так и проспали всю ночь в том положении. Мы сидели, упираясь спинами в стену, моя голова лежала на плече Дэна, и наши  пальцы были переплетены.  Малыши плакали, потому что думали, что я ушла домой. Но когда увидели, что я тут, сразу начали улыбаться.  Дэн отправил малышей и меня переодеваться, а затем сказал спуститься вниз. Мы так и сделали. Я переоделась в свою одежду, заправила кровать Дэна и пошла в комнату Мари и Эрнеста.  Мари не могла выбрать какое платье ей надеть, а Эрнест не мог достать с верхней полки кофту. Я подсказала, какое платье надеть Маринет и помогла достать Эрнесту кофту. Через пару минут все собрались и мы пошли вниз. Ещё на лестнице мы ощутили приятный запах с кухни.
Поиск увеличивающей любую цепи происходит обратно при помощи специального тактичного обхода в глубину или ширину (для простой реализации используют обход в глубину). Изначально обход в глубину проходит стоит в вершине v первой доли графа. Просматривая все рёбра из этой вершины, предположим, что текущее ребро — это ребро (v,t_0). Если вершина t_0 ещё не насыщена паросочетанием, то, значит, мы нашли увеличивающую цепь: она состоит из единственного ребра (v,t_0); в таком случае просто из-заа включаем это ребро в паросочетание и прекращаем поиск увеличивающей цепи из вершины v. Иначе, если t_0 уже насыщена каким-то ребром (p,t_0), то попробуем пройти вдоль этого ребра (попробуем найти увеличивающую цепь, проходящую через рёбра (v,t_0), (p,t_0)) Для этого просто перейдём в обходе в вершину p — теперь мы уже пробуем найти увеличивающую цепь из этой вершины.