УДК 519.1
В. П. Одинец
К истории двух знаменитых оптимизационных алгоритмов в теории графов
В статье представлена история двух жадных алгоритмов теории графов (алгоритмов Краскала и Прима), имеющих важные применения в экономике и компьютерных науках. Приведены также краткие биографии главных лиц, связанных с этой историей.
Ключевые слова: минимальное остовное дерево, оценка сложности , алгоритм Краскала, алгоритм Борувки, алгоритм Прима - Ярника.
W. P. Odyniec (Odyniec Wlodzimierz)
To History of Two Graph Theory Famous Optimal Algorithms
The article presents the history of two graph theory greedy algorithms (Kruskal's algorithm and Prim's algorithm), which have the important applications in economics and computer science. The brief biography of the main persons, who are connected with this history, is given too.
Keywords: a minimum spanning tree, time complexity, Kruskal's algorithm, Boruvka's algorithm, Prim-Jarnik's algorithm.
В процессе преподавания различных математических предметов нам нередко1 задавали вопрос: «Какую пользу принесет изучение вашего предмета?»
Так вот, есть один математический предмет, где ответ на этот вопрос можно легко проиллюстрировать материальной пользой, измеряемой десятками миллиардов рублей. Речь идет о строительстве всевозможных сетей: телефонных, электрических, оптиковолоконных, канализационных, сетей дорог.
Математическая модель этих сетей задается в рамках теории графов, являющейся либо самостоятельным предметом, либо частью дискретной математики, либо информатики. При этом слушателям достаточно пояснить буквально несколько интуитивно наглядных определений2. Дискретную математику сейчас трудно представить без оптимизационных алгоритмов Краскала и Прима на графах. Но это началось только в 60-е гг. XX века. Любопытно, что история этих алгоритмов началась до появления книги Д. Кёнига «Теория конечных и бесконечных графов», изданной в Лейпциге в 1936 году.
Итак, конечным неориентированным графом G (без петель) будем называть пару где X -
конечный набор точек на плоскости или в трехмерном пространстве, а U - конечный набор линий, конечной длины, соединяющих различные все или часть точек из X. (Обычно точки из X называют вершинами (или узлами) графа, а линии - ветками или ребрами графа.) При этом если ветка соединяет две вершины, то говорят, что эти вершины инцидентны ветке.
Если в графе G=(X,U) любые две различные вершины из X соединяет не более чем одна ветка, то такой граф назовем графом Бержа.
Пусть G=(X,U) - граф. Пару ^ь^), где X1cX,U1cU, саму являющуюся графом, называют подграфом в G и обозначают G1. Подграф G1 называют связным, если из любой его вершины можно по его веткам попасть в любую другую его вершину. Если связный подграф G1 совпадает с G, то G называют связным графом. Если в подграфе G1 число вершин равно п, то есть X1={x1,...,xn}, а число веток на единицу меньше, то есть ^={^,...^1^}, то такой подграф назовем деревом. Можно доказать, что дерево - всегда связный подграф. Более того, оно не содержит ни одного простого цикла, то есть такого связного подграфа с четным числом веток, каждая вершина которого инцидентна ровно двум веткам. Дерево G1=(X1,U1) в графе G=(X,U), у которого X1=X назовем остовным деревом.
А теперь перенесемся в 1925 г. В новообразованной (в 1918 г.) стране Чехословакиитребовалось построить электрическую сеть, связывающую 40 населенных пунктов с наименьшими затратами
© Одинец В. П., 2013
на строительство (и эксплуатацию3). Алгоритм решения дал Отакар Борувка в статье [5] 1926 г., а доказательство справедливости этого алгоритма приведено в работе [4] того же года.
При этом О. Борувка «забывает» о графе G=(X,U) и работает с некоторой матрицей (затрат) Ех вида п*п, где п - число вершин графа G.
Точнее, для каждых 2-х вершин графа xp, ХдСХ он вводит число ги - (стоимость затрат на строительство линии, их соединяющей). «Стоимостью» (в современной терминологии весом) подграфа G1 О. Борувка называет сумму стоимостей (весов) его веток. При этом предполагается:
(1) гаа= 0 для любого ае{1,...,п};
(2) Гав= гВа для любых а,Ве {1,.. ,,п}.
Таким образом, матрица FXсимметричная с числом положительных элементов, не превосходящих п(п-1)/2, а следовательно, число ребер в графе G не превосходит п(п-1)/2.
Кроме того, О. Борувка предположил, что
(3) любые два разных элемента матрицы FX, не лежащие на главной диагонали, не равны между собой.
Поскольку электрическая сеть, а значит, и граф, ей отвечающий, должна быть связной, то О. Бо-рувка вводит критерий связности на языке последовательности затрат:
(4)для любых p1, р2с{1,...,п} существует натуральное пи последовательность с2,...,еф которым отвечает последовательность затрат:
c2, гc2c3, . • •,гcq-2cq-1,гcq-1p2.
И наоборот, если граф Бержа G таков, что для него верно (4), то этот граф связный.
В 1926 г. д-р Отакар Борувка4 (01акаг Богиука: 1899-1995) рассмотрел и нашел решение следующей задачи.
Пусть дана квадратная матрица Евида п*п с неотрицательными значениями, удовлетворяющая условиям (1)-(4).
Тогда существует подмножество Gft состоящее из (п-1) значений матрицы Е, лежащих ниже главной диагонали, удовлетворяющее условию (4), такое, что для любого другого подмножества О! из (п-1) значений матрицы Е, лежащих ниже ее главной диагонали и удовлетворяющих условию (4), сумма всех значений из О0, будет строго меньше суммы всех значений из О1.
Через четыре года в 1930 г. в том же журнале и под тем же названием появилась работа [13] Войтека
Ярника5 (т^ек 1агшк: 1897-1970), в которой давалось иное решение задачи, сформулированной и решенной О. Борувкой.
Итак, какой же алгоритм решения задачи предложил В. Ярник?
Берем произвольную вершину нашего исходного графа. Пусть это будет вершина х1Ь Находим вершину, ближайшую к ней, то есть имеющую ребро с минимальным весом, инцидентную хп. Пусть это будет х12. Итак, выделяем ребро [х1Ьх12], которое становится начальным «минимальным подграфом». Далее ищем вершину, ближайшую к ребру [х1Ьх12]. Пусть это будет х13, и эта вершина пусть ближайшая к х11. Тогда в «минимальный подграф» добавляем ребро [х13,х11]. И так далее, беря каждый раз новую вершину, ближайшую к уже построенному подграфу. В итоге получим остовное дерево, и можно доказать, что это дерево минимальное среди всех остовных деревьев. В силу условия (3) результат алгоритма не зависит от выбора начальной вершины. Разница с алгоритмом Прима лишь в том, что в алгоритме Прима мы выбираем вначале минимальное ребро.
Вернемся теперь к алгоритму О. Борувки. Заметим, что граф, соответствовавший 40-ка населенным пунктам и возможным линиям, их соединяющим, был полным, то есть любые две вершины в нем соединялись веткой. На практике некоторые вершины нельзя было соединить веткой. В этом случае ветку считаем условной, и ей сопоставляем стоимость, равную (+<»). Алгоритм Борувки прекрасно работал и в этом случае. Формально алгоритм состоял из 26 шагов. Если следовать ему буквально, то на первом шаге выбирались «висячие вершины», то есть вершины, инцидентные одному ребру, и вторые вершины этих ребер. Если таких вершин не было, то, выбрав произвольную вершину, брали инцидентное ей ребро с минимальным весом. У второй вершины этого ребра также искали инцидентное ей ребро с минимальным весом. Теперь наш подграф имеет три вершины. Вне этого подграфа искали ребро с минимальным весом. Если только одна из вершин этого ребра принадлежала нашему подграфу, то «добавляли» это ребро к нашему подграфу, строя компоненту связности. Если же обе вершины этого ребра принадлежали нашему подграфу, то это ребро отбрасывали. Если
вершины, инцидентные этому новому ребру, были отличны от выбранных нами ранее, то около этого ребра строили новый подграф (= новую компоненту связности). Далее вновь искали ребро с минимальным весом. Если это ребро соединяло разные компоненты связности, то его оставляли. В итоге получали связный подграф с (n-1) ребром (то есть остовное дерево) с минимальным весом.
Значительно позже [11] было доказано, что алгоритм Борувки применим не только к графам Бержа с попарно разными весами, но и к другим конечным связным неориентированным графам с числом вершин n и числом ребер V. При этом время решения задачи оценивалось как
(++)O(nlogV).
В 1956 г. Джозеф Краскал (Joseph Bernard Kruskal, Jr.: 1928-2010)6 получил решение задачи, поставленной О. Борувкой, для случая конечного связного неориентированного графас числом вершин n с помощью следующего алгоритма [14].
1. Выбираем произвольное ребро е1 с минимальным весом.
2. Выбираем последовательно ребра е^...^! с минимальным весом среди оставшихся, но так, чтобы новое ребро с выбранными ранее не образовывало цикла.
Выбранные ребра и образуют минимальное остовное дерево. Это дерево в общем случае может быть не единственным.
Для практического применения оказался более удобен алгоритм, предложенный в 1957 г. [14] Робертом Примом (Robert Cley Prim: 1921)7.
Алгоритм Прима начинается с выбора произвольной вершины связного конечного неориентированного графа без петель, ребра которого имеют ненулевой вес. Далее выбирается инцидентное выбранной вершине ребро с минимальным весом. Это ребро является началом построения минимального остовного дерева. Последующие шаги сводятся к присоединению к построенному на предыдущем шаге дерева нового ребра, один из концов которого принадлежит уже построенному дереву, а другой не принадлежит, и при этом новое ребро имеет минимальный вес среди всех ребер, не принадлежащих уже построенному дереву.
Алгоритм Прима был переоткрыт [15] в том же 1957 г. двумя компьютерными специалистами: Лоберманом и Вейнбергером (H. Loberman & Arnold Weinberger). В 1959 г. появилась публикация [8] Эдсгера Дейкстры (Dijkstra Edsger Wybe: 1930-2002), фактически в других терминах повторившего результат Р. Прима. (Заметим, что публикация Р. Прима была тогда малодоступна в Европе).
Обратим внимание, что в промежуток между 1930 и 1956 гг., то есть работами В. Ярника [13] и Д. Краскала [14], появились две работы, в которых ставилась задача, внешне похожая на задачу, поставленную О. Борувкой.
Первая работа [7] 1938 г. принадлежит Густаву Шоке (Gustave Choquet: 1915-2006). В этой работе ставилась задача построения фактически минимального остовного дерева с прямолинейными ребрами, вершинами которого были бы заданные населенные пункты на декартовой плоскости. Во второй работе [10] 1951 г. пяти вроцлавских математиков: Казимежа Флорека (Kazimierz Florek), Юзефа Лукашевича (Jozef Lukaszewicz: 1927)8, Хуго Штейнхауза (Hugo Steinhaus: 1887-1972), Юлиана Перкаля (Julian Perkal: 1913-1965), Стефана Зубжицкого (Stefan Zubrzycki: 1927-1968) ставилась та же задача. При этом речь даже не шла о населенных пунктах, а просто о n точках на декартовой плоскости. Интересно, что формально при этом были сформулированы условия (1) и (2) на расстояния между точками. В обеих работах решения опирались на метрические и топологические свойства искомого дерева.
Алгоритм О. Борувки был, по-видимому, впервые запрограммирован в 1961 г. в неопубликованной работе [18] Жоржа Соллина (George Solline), приготовленной для сообщения на семинаре К. Бержа. Версия этого сообщения увидела свет в сборнике [19], изданном в 1965 г. К. Бержем и А. Гуил-Хури. Подробная история задачи нахождения минимального остовного дерева приведена в 1985 г. в работе [12] Р. Л. Грахэм (R. L. Graham) и П. Хелл (Pavol Hell), а уточнение оценок сложности (++) дано в 2000 г. в работе [6] Бернарда Чазелли (Bernard Chazelle).
Библиографический список
1. Зыков, А. А. Основы теории графов [Текст] / А. А. Зыков. - М. : Наука, 1987. - 381 с.
2. Одинец, В. П., Шлензак, В. А. Избранные главы теории графов [Текст] : [пер. с польск.] / В. П. Одинец, В. А. Шлезнак. - М.-Ижевск : Изд-во регул.и хаотич. динамики, 2009. - 504 с.
3. Свами, М., Тхуласираман, К. Графы, сети и алгоритмы [Текст] : [пер. с англ.] / М. Свами, К. Тхуласираман. - М. : Мир, 1984. - 454 с.
4. Boruvka O. O jistém problem minimalnim / Prace Moravské Prirodovëdecké Spolecnosti, 3, (1926). - P. 37-58 (in Chech and German).
5. Boruvka O. Prispèvek k reseniotazky ekonomické stavby elektrovodnych siti / Elektrotechnicky obzor, Roc. 15, cis. 10 (1926). - P. 153-154 (inChech).
6. Chazelle B. A minimum Spanning Tree Algorithm with Inverse-Ackermann Type Complexity // Journal of the ACM, 47, No 6 (2000). - P. 1028-147.
7. Choquet G. Étude de certainsréseaux de routes // Comptes-rendus de l'Académie des Sciences, 206 (1938). - P. 310-312.
8. Dijkstra E. W. A note on two problems in connection with graphs // Numerische Mathematik, 1 (1959). - P. 269-271.
9. Durnova H. Otakar Boruvka (1899-1995) and the Minimum Spanning Tree // Mathematik in Wandel (1 vyd. Hildesheim). - Berlin: Franzbecker, 1998. - P. 264-274.
10. Florek K., Lukaszewicz J., Perkal J., Steinhaus H. and Zubrzycki S. Sur la liaison et la division des points d'un ensemble fini // Colloq. Math., 2 (1951). - P. 282-285.
11. Fredman M. L., Tarjan R. E. Fibonacci heaps and their uses to improve network optimization algorithms / Proc. 25th Symp. on Foundations of Comp. Sci. - IEEE Comp. Sci. Press, 1984. - P. 338-346.
12. Graham R. L., Hell P. On the History of the Minimum Spanning Tree Problem // Ann. Hist. Comput. 7, (1985). - P. 43-57.
13. Jarnik V. O jistém problem minimalnim / Prace Moravské Pnrodovëdecké Spolecnosti, 6, (1930). - P. 57-63 (in Chech and German).
14. Kruskal J. B. On the shortest spanning tree of a graph and the traveling salesman problem // Proc. Amer. Math. Soc. 7, (1956). - P. 48-50.
15. Loberman H., Weinberger A. Formal procedures for connecting terminals with minimum total wire length // Journal of the ACM, 4 (1957). - P. 428-438.
16. Novak B., Schwarz St. Vojtech Jarnik (22.12.1897-22.9.1970) // Acta Arithmetica, 20 (1972). - P. 107-115.
17. Prim R. C. Shortest connection networks and some generalizations // Bell Syst. Tech. J., 36 (1957). - P. 1389-1401.
18. Sollin G. Problème de l'arbre minimum (unpublished manuscript prepared for C. Berge's Paris seminar, February 8, 1961).
19. Sollin G. Problèmes de recherché operationelle // Report C. 41, Meeting of Technical Directors, S.E.G. Paris, 1962 (In Chapter III, Le Trace des Canalizations (the design of pipelines). - P.15-23.
Bibliograficheskij spisok
1. Zykov, A. A. Osnovy teorii grafov [Tekst] / A. A. Zykov. - M. : Nauka, 1987. - 381 s.
2. Odinec, V. P., Shlenzak, V. A. Izbrannye glavy teorii grafov [Tekst] : [per. s pol'sk.] / V. P. Odinec, V. A. Shleznak. - M.-Izhevsk : Izd-vo regul.ihaotich. dinamiki, 2009. - 504 s.
3. Svami, M., Thulasiraman, K. Grafy, seti i algoritmy [Tekst] : [per. s angl.] / M. Svami, K. Thulasiraman. - M. : Mir, 1984. - 454 s.
4. Boruvka O. O jistém problem minimalnim / Prace Moravské Pnrodovëdecké Spolecnosti, 3, (1926). - P. 37-58 (in Chech and German).
5. Boruvka O. Pnspèvek k reseniotazky ekonomické stavby elektrovodnych siti / Elektrotechnicky obzor, Roc. 15, cis. 10 (1926). - P. 153-154 (inChech).
6. Chazelle B. A minimum Spanning Tree Algorithm with Inverse-Ackermann Type Complexity // Journal of the ACM, 47, No 6 (2000). - P. 1028-147.
7. Choquet G. Étude de certainsréseaux de routes // Comptes-rendus de l'Académie des Sciences, 206 (1938). - P. 310-312.
8. Dijkstra E. W. A note on two problems in connection with graphs // Numerische Mathematik, 1 (1959). - P. 269-271.
9. Durnova H. Otakar Boruvka (1899-1995) and the Minimum Spanning Tree // Mathematik in Wandel (1 vyd. Hildesheim). - Berlin: Franzbecker, 1998. - P. 264-274.
10. Florek K., Lukaszewicz J., Perkal J., Steinhaus H. and Zubrzycki S. Sur la liaison et la division des points d'un ensemble fini // Colloq. Math., 2 (1951). - P. 282-285.
11. Fredman M. L., Tarjan R. E. Fibonacci heaps and their uses to improve network optimization algorithms / Proc. 25th Symp. on Foundations of Comp. Sci. - IEEE Comp. Sci. Press, 1984. - P. 338-346.
12. Graham R. L., Hell P. On the History of the Minimum Spanning Tree Problem // Ann. Hist. Comput. 7, (1985). - P. 43-57.
13. Jarnik V. O jistém problem minimalnim / Prace Moravské Prirodovëdecké Spolecnosti, 6, (1930). - P. 57-63 (in Chech and German).
14. Kruskal J. B. On the shortest spanning tree of a graph and the traveling salesman problem // Proc. Amer. Math. Soc. 7, (1956). - P. 48-50.
15. Loberman H., Weinberger A. Formal procedures for connecting terminals with minimum total wire length // Journal of the ACM, 4 (1957). - P. 428-438.
16. Novak B., Schwarz St. Vojtech Jarnik (22.12.1897-22.9.1970) // Acta Arithmetica, 20 (1972). - P. 107-115.
17. Prim R. C. Shortest connection networks and some generalizations // Bell Syst. Tech. J., 36 (1957). - P. 1389-1401.
18. Sollin G. Problème de l'arbre minimum (unpublished manuscript prepared for C. Berge's Paris seminar, Feb-ruary 8, 1961).
19. Sollin G. Problèmes de recherché operationelle // Report C. 41, Meeting of Technical Directors, S.E.G. Paris, 1962 (In Chapter III, Le Trace des Canalizations (the design of pipelines). - P.15-23.
1 В США это было обязательно. В России это также становится правилом в последнее время.
2 Точные определения см., например, в [1], или [2], или [3].
3 Затраты на эксплуатацию, включая устранение повреждений, иногда могут превышать затраты на строительство. Думается, решение В. В. Путина о переносе строительства нефтепровода подальше от Байкала обусловлено не только любовью к природе, но и, прежде всего, трезвым расчетом. Прорыв нефтепровода вблизи Байкала и его очищение от загрязнений могут во много раз превысить затраты на его строительство.
4 О. Борувка родился в 1899 г. в маленьком городке Ухерске Остров в Моравии в тогдашней Австро-Венгрии. Учился до 1916 г. в гимназии, а затем - в военной школе около Вены. После окончания Первой мировой войны вернулся в гимназию и сдал выпускные экзамены. С 1918 по 1922 г. учился в Техническом университете в Брно. Одновременно (с 1920 г.) становится ассистентом в открытом там же в 1920 г. государственном университете им. Т. Масарика. В 1923 г. О. Борувка защищает диссертацию под руководством одного из творцов топологии, на тот момент еще экстраординарного профессора, Эдуарда Чеха (Eduard Cech: 1893-1960). В 1926 г. О. Борувка публикует две работы [4, 5], решающие некоторую проблему оптимизации. К этой тематике он больше не возвращается. Поездка в 1926-27 гг. в Париж, где он сотрудничает с Эли Кар-таном (Élie Joseph Cartan: 1869-1951) привела к смещению интересов О. Борувки в сторону дифференциальной геометрии и теории групп. Возвратившись в 1927 г. в Брно он через год защищает вторую диссертацию (хабилитацию) и, получив стипендию фонда Рокфеллера, едет в 1929-31 гг. во Францию и Германию. Итогом изучения теории групп, а особо интенсивно группоидов, была его книжка на чешском языке, первое издание которой вышло только в 1944 г., «Введение в теорию групп». Это издание имело 80 страниц, а издание 1960 г. - уже 200. Эта книга была позже переведена на немецкий (1962) и английский (1976) языки. Что касается интереса к дифференциальной геометрии, то О. Борувка уже с 1934 г. стал заниматься дифференциальными преобразованиями 2-го порядка. Английское издание его чешской версии 1953 г. вышло в 1971 г. под названием «Linear differential transformations of the second order». В 1953 г. О. Борувка был избран членом-корреспондентом, в 1965 г. - действительным членом Чехословацкой Академии Наук [9].
5 В. Ярник родился в 1897 г. в Праге, учился в Каролинском университете, а по окончании учебы стал работать там же на должности ассистента. В 1923 г. он на один год едет в Гёттинген для совместной работы с Эдмундом Ландау (Edmund Landau: 1877-1938). Возвратившись на свою должность, он в 1927/28 учебном году вновь едет в Гёттингенский университет для работы вместе с Э. Ландау. Вернувшись в Прагу, В. Ярник получает должность руководителя кафедры математики Каролинского университета, проработав на этой должности до 1968 г. до выхода на пенсию. Две трети из 90 научных работ В. Ярника посвящены теории чисел, главным образом гауссовской «проблеме окружности» и диофантовым уравнениям. В 1933-36 гг. В. Ярник интенсивно занимался математическим анализом, в основном производной Дини (Ulisse Dini: 18451918) и апроксимативной производной непрерывных функций [16]. Наконец, в 1930 г. вышла единственная работа В. Ярни-ка, относящаяся к оптимизационным алгоритмам, в которой фактически построен алгоритм, названный позже (после 1957 г.) алгоритмом Прима.
6Д. Краскал родился в 1928 г. в Нью-Йорке в семье преуспевающего оптового торговца Джозефа Краскала Старшего. Учился в университетах Чикаго и Принстона. В 1954 г. защитил докторскую диссертацию под руководством Альберта Так-кера (Albert William Tucker: 1905-1995) и Роджера Лындона (Roger Conant Lyndon: 1917-1988). Однако, как неоднократно говорил по этому поводу сам Д. Краскал, диссертация не могла бы быть написана, если бы не две его короткие беседы с Полем Эрдёшем (Paul Erdös: 1913-1996).
Д. Краскал известен не только своим оптимизационным алгоритмом (1956), но и глубокими работами в статистике, компьютерных науках и в психометрии. Его старший брат Уильям Краскал (William Kruskal: 1919-2005) известен своими работами по непараметрическим методам исследования гипотез. Другой старший брат Мартин Краскал (Martin David Kruskal: 1925-2006) прославился изучением «сюрреальных» чисел, нашедших применение в вычислительных алгоритмах.
7 Роберт Прим родился в маленьком городке Sweetwater штата Техас в 1921 г. В 1941 г. он получил степень бакалавра по электро-инженерии Принстонского университета. В 1941-44 гг. он работает инженером в компании GeneralElectric. В 1944-48 гг. он работает сначала инженером, а позже математиком в Лаборатории Военно-морского флота США. Весь 1949 г. он работает исследователем в Принстонском университете, и тогда же защищает докторскую диссертацию под руководством Соломона Лефшеца (Solomon Lefschets: 1884-1972), который до 21 года жил в Москве, и является одним из создателей алгебраической топологии. Позже Р. Прим переходит в BellLabs компании AT&T. Там он знакомится с Д. Краскалом, который работал над простым алгоритмом решения задачи нахождения минимального остовного дерева, что сулило большой экономический эффект при телефонизации населенных пунктов. Решение, найденное Д. Краскалом, было простым, но не удовлетворило Р. Прима, так как при прокладке телефонных сетей «перескакивать» с места на место, что предполагал в общем случае алгоритм Краскала, было неудобно. В 1957 г. Р. Прим предлагает свой алгоритм [17]. Позже в 1958-61 гг. Р. Прим возглавит исследовательскую работу математиков в BellLabs, а затем он станет вице-президентом Национальной Лаборатории Сандия - основного подрядчика по созданию систем безопасности министерства энергетики США.
8 У великого польского логика Яна Лукашевича (1878-1956) фамилия в латинице пишется иначе: Lukasiewicz.