Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Поточная сеть Теория графов

В этом уроке мы разберем, что такое поточная сеть. Вы узнаете, как строятся такие сети и как диграфы помогают в этом.

Как строится поточная сеть

Представим, что у нас есть диграф и две вершины — источник и сток. У каждого ребра есть вес, который называется его пропускной способностью. Нам нужно пропустить как можно больше материала через диграф от источника к стоку. Это называется потоком, а взвешенный диграф — сетью. Таким образом мы строим сетевой поток.

Например, источник — это , а сток — :

eyJpZCI6Ijg0OWE2N2ZhMmQxYWM4YzNjZGM0ZWI1ODVkZDg5ZTkyLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=89ab9534f302580ce994bd3d71e0a5b2b728a096a3df8cade6b898d4fbb627ff

Первое число, выделенное красным на каждом ребре — это значение потока, а второе — пропускная способность. В этом случае поток не оптимальный, так как через сеть можно пропустить больше вещей, чем единиц.

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

Общее объем потока, который проходит через сеть, называется величиной потока. Это количество можно найти, если посчитать:

  • Общий поток, который выходит из источника

  • Общий поток, который входит в сток

Многие реальные проблемы можно смоделировать с помощью сетей потоков. Например, источник — это место, где мы добываем сырье. Его нужно доставить на завод — сток. Края — это различные маршруты, по которым мы можем отправить сырье, а мощность — сколько материала можно доставить по этим маршрутам.

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

Многие несвязанные проблемы теории графов можно преобразовать в проблемы сетевых потоков.

Теорема о максимальном потоке и минимальном разрезе

С потоками тесно связаны разрезы. Разрез — это набор ребер, удаление которых делает невозможным путь от источника к стоку. Нас интересует сумма мощностей ребер в разрезах. Например, ниже показан разрез из ребер и . Его общая емкость равна :

eyJpZCI6ImI0ODAwNGEwYTI1ZjY3NmFhN2E0NGUyOTA3OGUxYmYwLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=5d53eacc4ee8f4c9c4474cb920cf95e7c9bf12e63886d44390350507d3349391

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

В любой сети ценность каждого потока меньше или равна пропускной способности каждого разреза

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

Если мы можем найти поток и разрез одинакового размера, то мы знаем, что наш поток — максимальный, а разрез минимальный.

И у нас есть сетевой аналог теоремы Кенига-Эгервари — теорема Max-flow min-cut:

В любой сети максимальное значение потока равно минимальному значению разреза

Например, на схеме ниже изображен максимальный поток:

eyJpZCI6IjExNDFhMGZlOTVlM2Q2Y2JkZmVkNDdiMzAxMGI2NzgxLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=bbf31bb69bb1c3a315131180262cb3f8113e0f06856dc47d7e77228396bccca5

Всего по сети движется восемь единиц потока. Это видно, если сложить поток из источника и поток в сток. Минимальный разрез в этой сети состоит из ребер и . Их общая пропускная способность равна . Поскольку у нас есть поток и разрез одинакового размера, наш поток максимален, а разрез минимален.

Итоги курса

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

В этом курсе все важные темы мы изучили на вводном уровне. Этого уже хватит, чтобы вы смогли применять теорию графов к реальным проблемам. Но если вы хотите погрузиться в теорию графов подробнее, вы можете изучить дополнительную литературу:

  1. Graph Theory: A Problem Oriented Approach by Daniel A. Marcus, Mathematical Association of America, 2008

  2. Introduction to Graph Theory, 2nd ed. by Douglas B. West, Prentice Hall, 2001

  3. Introduction to Graph Theory by Gary Chartrand and Ping Zhang, Dover Publications, 2012

  4. Graph Theory and Its Applications, 2nd ed. by Jonathan Gross and Jay Yellen, Chapman and Hall/CRC 2005


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по-максимуму!

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

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

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