Опубликован: 05.01.2015 | Доступ: свободный | Студентов: 2178 / 0 | Длительность: 63:16:00
Лекция 22:

Потоки в сетях

< Лекция 21 || Лекция 22: 123456789101112

Перспективы

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

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

Задача о максимальном сопоставлении (maximum matching). В графах со взвешенными ребрами нужно найти подмножество ребер, в котором ни одна из вершин не появляется больше одного раза, и никакое другое множество ребер не имеет большего суммарного веса. Задачу о сопоставлении максимальной мощности (maximum cardinality matching) в невзвешенных графах можно непосредственно свести к этой задаче, присвоив всем ребрам единичные веса.

Задача о назначениях и задачи о двудольном сопоставлении максимальной мощности сводятся к задаче максимального сопоставления для графов общего вида. С другой стороны, максимальное сопоставление не сводится к потокам минимальной стоимости, поэтому и рассмотренные выше алгоритмы не применимы к нему. Эта задача разрешима, хотя трудоемкость ее решения в случае крупных графов весьма велика. Описание многочисленных методов, предложенных для решения задачи сопоставления на графах общего вида, заняло бы целый том: эта задача относится к числу наиболее интенсивно изучаемых в теории графов. В этой книге мы закончили изложение потоками минимальной стоимости, но мы еще вернемся к задаче о максимальном сопоставлении в части VIII.

Задача о многопродуктовом потоке (multicommodity flow). Предположим, что нам нужно вычислить второй поток, такой, что сумма обоих потоков в ребре ограничена пропускной способностью ребра, оба потока сбалансированы, а их суммарная стоимость минимальна. Такое изменение моделирует наличие двух различных типов материалов в задаче о распределении товаров. Например, следует ли загрузить больше гамбургеров или картошки в грузовик, который едет в ресторан быстрого питания? Это изменение существенно усложняет задачу и требует для ее решения более сложных алгоритмов, чем рассмотренные в этой книге. К примеру, для такого общего случая не известен какой-либо аналог теоремы о максимальном потоке минимальной стоимости. Формулировка этой задачи в виде LP-задачи - простое расширение примера с рис. 22.53, следовательно, эта задача разрешима (т.к. разрешима LP-задача).

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

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

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

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

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

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

Часто нам приходится искать более совершенные алгоритмы для важных специальных задач, особенно для крупных задач или большого количества мелких задач, когда вычислительные ресурсы становятся узким местом. Как мы могли убедиться на многочисленных примерах в этой книге и в частях I-IV, часто можно найти хитроумный алгоритм, который позволяет снизить затраты ресурсов в сотни и тысячи раз и даже больше, что исключительно важно при измерении затрат в часах или долларах. Общий подход, описанный в "Принципы анализа алгоритмов" , который мы успешно применяли во многих областях, исключительно полезен в таких ситуациях, и мы ожидаем появления более совершенных алгоритмов в области алгоритмов на графах и комбинаторных алгоритмов. Пожалуй, существенный недостаток слишком большого упора на специальные алгоритмы заключается в том, что часто небольшое изменение в модели приводит к непригодности алгоритма. А при использовании слишком обобщенной модели и алгоритма, обеспечивающего решение задачи, мы меньше подвержены такому влиянию.

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

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

Но какой бы подход мы ни выбрали, цель остается прежней: нам нужен широкий спектр моделей для решения задач, эффективные алгоритмы решения задач в рамках этих моделей, а также эффективные реализации этих алгоритмов, позволяющие решать практические задачи. Разработка все более универсальных моделей решения задач (таких как задачи вычисления кратчайших путей, максимальных потоков и потоков минимальной стоимости) и все более мощных алгоритмов общего характера (таких как алгоритм Беллмана-Форда для задачи вычисления кратчайших путей, алгоритм расширения путей для задачи о максимальном потоке и сетевой симплексный алгоритм для задачи о максимальном потоке минимальной стоимости) позволили нам существенно продвинуться в направлении этой цели. Значительная часть этой работы была выполнена в пятидесятые и шестидесятые годы. А позже появились фундаментальные структуры данных (части I-IV) и алгоритмы, обеспечивающие эффективные реализации этих общих методов (данная книга), ставшие мощной силой, которая привела нас к возможности решать такой широкий класс крупных задач.

Ссылки для части V

Перечисленные ниже учебники по алгоритмам охватывают большую часть алгоритмов обработки графов из глав 17-21. Эти книги - основные справочники, в которых всесторонне описаны фундаментальные и дополнительные алгоритмы обработки гра-форв с обширными ссылками на современную литературу. В книге Ивена (Even) и монографии Тарьяна (Tarjan) всесторонне освещены многие рассмотренные нами темы. Стоит прочитать и первоначальную статью Тарьяна о применении поиска в глубину для решении задачи сильной связности и других задач. Реализация топологической сортировки с очередью истоков из "Орграфы и DAG-графы" взята из книги Кнута. Ниже приведен список литературы по некоторым другим рассмотренным нами алгоритмам.

Алгоритмы для вычисления минимальных остовных деревьев в насыщенных графах из "Минимальные остовные деревья" имеют солидный возраст, но все-таки интересно прочитать исходные статьи Дейкстры (Dijkstra), Прима (Prim) и Крускала (Kruskal). Обзор Грэма и Хелла (Graham and Hell) содержит исчерпывающую и увлекательную историю предмета. Статья Шазель (Chazelle) - шедевр в области линейных алгоритмов построения MST-дерева.

Книга Агуджи, Магнанти и Орлина (Ahuja, Magnanti and Orlin) - исчерпывающий текст по алгоритмам вычисления сетевых потоков (и алгоритмов поиска кратчайших путей). В этой книге имеется более подробная информация практически по каждой теме из глав 21 и 22. Еще один источник дополнительного материала - классическая книга Пападимитриу и Штайглица (Papadimitriou and Steiglitz). Хотя большая часть книги посвящена более сложным темам, в ней тщательно описаны и многие рассмотренные нами алгоритмы. Обе книги содержат обширную и подробную информацию об исходном материале из исследовательской литературы. Классическая работа Форда и Фалкерсона (Ford and Fulkerson) до сих пор достойна чтения, т.к. содержит введение во многие фундаментальные понятия.

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

1. R. K. Ahuja, T. L. Magnanti, and J. B. Orlin, Network Flows: Theory, Algorithms, and Applications, Prentice Hall, 1993.

2. Chazelle, "A minimum spanning tree algorithm with inverse-Ackermann type complexity," Journal of the ACM, 47 (2000).

3. Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн, Алгоритмы: построение и анализ, 2-е издание, ИД "Вильямс", 2009 г.

4. E. W. Dijkstra, "A note on two problems in connexion with graphs," Numerische Mathematik, 1 (1959).

5. P. Erdos and A. Renyi, "On the evolution of random graphs," Magyar Tud. Akad. Mat. Kutato Int Kozl, 5 (1960).

6. S. Even, Craph Algorithms, Computer Science Press, 1979.

7. L. R. Ford and D. R. Fulkerson, Flows in Networks, Princeton University Press, 1962.

8. H. N. Gabow, "Path-based depth-first search for strong and bicon-nected components," Information Processing Letters, 74 (2000).

9. R. L. Graham and P. Hell, "On the history of the minimum spanning tree problem," Annals of the History of Computing, 7 (1985).

10. D. B. Johnson, "Efficient shortest path algorithms," Journal of the ACM, 24(1977).

11. Д.Э. Кнут, Искусство программирования, том 1: Основные алгоритмы, 3-е издание, ИД "Вильямс", 2008 г.; Д.Э. Кнут, Искусство программирования, том 2: Получисленные алгоритмы, 3-е издание, ИД "Вильямс", 2008 г.; Д.Э. Кнут, Искусство программирования, том 3. Сортировка и поиск, 2-е издание, ИД "Вильямс", 2008 г.

12. J. R. Kruskal Jr., "On the shortest spanning subtree of a graph and the traveling salesman problem," Proceedings AMS, 7, 1 (1956).

13. K. Mehlhorn, Data Structures and Algorithms 2: NP-Completeness and Graph Algorithms, Springer-Verlag, 1984.

14. H. Papadimitriou and K. Steiglitz, Combinatorial Optimization: Algorithms and CompleXity, Prentice-Hall, 1982.

15. R. C. Prim, "Shortest connection networks and some generalizations," Bell System Technical Journal, 36 (1957).

16. R. E. Tarjan, "Depth-first search and linear graph algorithms," SIAM Journal on Computing, 1, 2 (1972).

17. R. E. Tarjan, Data Structures and Network Algorithms, Society for Industrial and Applied Mathematics, Philadelphia, PA, 1983.

< Лекция 21 || Лекция 22: 123456789101112
Бактыгуль Асаинова
Бактыгуль Асаинова

Здравствуйте прошла курсы на тему Алгоритмы С++. Но не пришел сертификат и не доступен.Где и как можно его скаачат?

Александра Боброва
Александра Боброва

Я прошла все лекции на 100%.

Но в https://www.intuit.ru/intuituser/study/diplomas ничего нет.

Что делать? Как получить сертификат?