Разапињуће стабло минималног степена

Из Википедије, слободне енциклопедије
Ed NL icon.png
Овај чланак је део пројекта семинарских радова на Математичком факултету у Београду.
Датум уноса: март—мај 2016.
Википедијанци: Ова група студената ће уређивати у ГИП-у и молимо вас да не пребацујете овај чланак у друге именске просторе Википедије.
Позивамо вас да помогнете студентима при уређивању и допринесете да њихови уноси буду што квалитетнији.
Планаран граф на коме је подебљаном линијом означено његово минимално разапињуће стабло

Минимално разапињуће стабло је разапињуће стабло неког повезаног, тежинског и неусмереног графа које садржи све чворове тог графа, а збир тежина његових грана је минималан.

Један граф може имати више оваквих стабала, зависно од своје конфигурације. Уколико свакој грани доделимо одређену тежину онда је збир тежина грана у неком разапињућем стаблу уствари тежина тог стабла. Минимално разапињуће стабло или минимално тежинско разапињуће стабло је разапињуће стабло чија је тежина мања или једнака у односу на остала разапињућа стабла неког графа. Уопштеније, сваки неусмерен граф (не нужно повезан) има минималну разапињућу шуму, која је унија минималних разапињућих стабала.

Постоји доста случајева када се користе минимална разапињућа стабла. Типичан проблем који се везује за ово стабло је достављање услуга телекомуникационе компаније на више локација на што исплатљивији начин. Ако се претпостави да се каблови закопавају дуж одређених путева (нпр. дуж коловоза) онда бисмо могли направити граф који представља које локације су повезане тим путевима. Неки од путева су дужи, или захтевају да каблови буду дубље закопани, због чега су и скупљи; ти путеви су представљени гранама веће тежине. Тежина гране одговара трошковима постављања каблова - није неопходно да се дужине грана придржавају правила геометрије као што је неједнакост троуглова. Разапињуће стабло тог графа је подскуп оних путева који не образују циклус, а ипак повезују све локације; могуће је да постоји неколико разапињућих стабала. Минимално разапињуће стабло је оно разапињуће стабло које има најмању тежину, односно чији је трошак постављања каблова најмањи.

Особине[уреди]

Могућност многобројности[уреди]

Ова слика показује да граф може имати више од једног минималног разапињућег стабла. На слици, два стабла испод графа су у ствари две могућности минималног разапињућег стабла за дати граф.

Могуће је да у неком графу постоји неколико минималних разапињућих стабала исте тежине са минималним бројем грана; посебно, ако су све гране задатог графа исте тежине, онда је свако разапињуће стабло тог графа минимално.

Ако граф има чворова, тада свако разапињуће стабло има грана.

Јединственост[уреди]

Уколико свака грана има различиту тежину, тада граф садржи само једно јединствено минимално разапињуће стабло. Ово је најчешћи случај у реалним ситуацијама, као што је горе наведени пример телекомуникационе компаније, где је мало вероватно да два пута сносе потпуно исте трошкове. Општије гледано ово важи и за разапињуће шуме.

Ако тежине грана нису јединствене, онда је само мултискуп тежина у минималном разапињућем стаблу јединствен, то је заједничко за сва минимална разапињућа стабла.[1]


Доказ:

  1. Претпоставимо супротно, да постоје два различита минимална разапињућа стабла и .
  2. Нека је грана најмање тежине која се налази само у једном минималном разапињућем стаблу. Без губитка општости, претпоставимо да се налази у и не налази у .
  3. Како јесте минимално разапињуће стабло мора садржати циклус .
  4. Тада садржи неку грану чија је тежина већа од тежине гране , с обзиром да све гране које су мање од {} и налазе се у садрже се и у , и циклус мора имати барем једну грану која није у јер у супротном би садржало циклус што је контрадикција са тим да је оно и минимално разапињуће стабло.
  5. Заменом са у добија се разапињуће стабло мање тежине.
  6. Ово је у супротности са претпоставком да је минимално разапињуће стабло.

Подграф минималне тежине[уреди]

Ако су све тежине позитивне тада је минимално разапињуће стабло у ствари подграф минималне тежине који садржи све чворове, како подграфови садрже циклусе углавном су и веће тежине.

Особина циклуса[уреди]

За сваки циклус у неком графу важи да ако је грана која се налази у циклусу веће тежине од свих других грана тог циклуса, онда та грана не може припадати минималном разапињућем стаблу.

Доказ: Претпоставимо супротно, тј. да припада минималном разапињућем стаблу . Тада брисањем гране се дели на два подстабла код којих се један крај гране налази у једном, а други крај у другом подстаблу. Остатак циклуса поново повезује подстабла, пошто постоји грана из која има крајеве у различитим подстаблима, тј. она поново повезује подстабла у стабло тежине мање него , јер је тежина мања од тежине .

Особина одсецања[уреди]

На слици се види особина одсецања за минимално разапињуће стабло.

За сваки одсечак из неког графа важи да ако је тежина гране (која се налази у том одсечку ) стриктно мања од тежина свих грана из тог одсечка, онда та грана припада свим минимално разапињућим стаблима тог графа.

Грана минималне тежине[уреди]

Ако је грана јединствена грана минималне тежине неког графа, онда се она налази у свим минималним разапињућим стаблима тог графа.

Доказ: Претпоставимо да се не налази у минималном разапињућем стаблу, тада уклањањем било које гране (веће тежине) из циклуса који је формиран након што је грана додана у минимално разапињуће стабло се формира ново разапињуће стабло мање тежине.

Контракција[уреди]

Ако је стабло састављено од грана из минималног разапињућег стабла, онда можемо контраховати у један чвор док одржавамо инваријанту да минимално разапињуће стабло контрахованог графа заједно са даје минимално разапињуће стабло графа пре контракције.

Алгоритми[уреди]

У свим алгоритмима испод представља број грана у графу док представља број чворова.

Класичани алгоритми[уреди]

Први алгоритам за тражење минималног разапињућег стабла је развио Чешки научник Отакар Борувка 1926. године (видети Борувкин алгоритам). Његова сврха је била изградња електричне мреже за Моравску. Алгоритам се извршава у неколико фаза. У свакој фази, названој Борувкин корак, идентификује се шума која се састоји од грана инцидентних са сваким чвором у графу , затим формира граф као улаз у следећем кораку. Овде означава граф добијен од одсецањем грана у (Особина одсецања). Сваки Борувкин корак је линеарне сложености. Пошто је број чворова редукован за барем половину у сваком кораку, Борувкин алгоритам је сложености .

Други алгоритам је Примов алгоритам, који је 1930. године изумео Војтех Јарник, а касније независно од њега информатичар Роберт Прим 1957, и поново Едсгер Дајкстра 1959. Алгоритам постепено повећава величину стабла почевши од једног чвора, док не повеже све чворове. Сложеност Примовог алгоритма је ) или у зависности од структуре података која се користи.

Трећи алгоритам који се често користи је Крускалов алгоритам који такође има сложеност .

Четврти не тако често коришћен алгоритам је Алгоритам обрнутог брисања који је супротан Крускаловом алгоритму. Његова сложеност је .

Сва четири алгоритма спадају у похлепне алгоритме.

Бржи алгоритми[уреди]

Неколико истраживања су покушала да пронађу више рачунски-ефикаснијих алгоритама.

У моделу поређења, у ком су једине дозвољене операције над тежинама грана операције поређење парова, Каргер, Клејн и Тарџан 1995. године пронашли су насумични алгоритам у линеарном времену базиран на комбинацији Борвукиног алгоритма и алгоритма обрнутог брисања.[2][3]


Најбржи ненасумични базиран на поређењу алгоритам са познатом сложеношћу направљен од стране Бернард Шазела је базиран на приближном приоритету софт хипа.[4][5] Његово време извршавања је , где представља класичну инверзну функцију Акерманове функције. Функција расте екстремно споро, тако да се за све практичне сврхе може посматрати као константа не већа од 4; стога је Шазелов алгоритам веома близу линеарне сложености.

Алгоритам линеарне слоеонсти у специјалним случајевима[уреди]

Густи графови[уреди]

Ако је граф густ тј. , oнда Фредманов и Тарџанов детерминистички алгоритам проналази минимално разапињуће стабло за време .[6] Алгоритам извршава низ фаза. Свака фаза извршава Примов алгоритам много пута, сваки пут за ограничен број корака. Време извршавања сваке фазе је . Ако је број чворова пре извршавања фазе , онда је број чворова након извршавања фазе . Стога је потребно да се изврши највише фаза, што нам даје линеарно време извршавања за густе графове.

Постоје и други алгоритми који раде са густим графовима.[7]

Целобројне тежине[уреди]

Ако је тежина гране цео број представљен у бинарном запису, онда је познато да детерминистички алгоритми решавају проблем у целобројних операција. Иако се проблем може решити детерминистички за општи граф у линеарној сложености, за алгоритме базиране на поређењу то остаје отворено питање.

Стабла одлучивања[уреди]

За задат граф код кога су чворови и гране фиксиране али је тежина непозната, могуће је конструисати бинарно стабло одлучивања за рачунање минималног разапињућег стабла за било коју пермутацију тежина. Сваки унутрашњи чвор из стабла одлучивања садржи поређење између две гране, нпр. „ Да ли је тежина гране између чворова и већа од тежине гране између чворова и ?“. Два детета чвора одговарају одговорима „да“ или „не“. У сваком листу стабла одлучивања постоји листа грана која одговара минималном разапињућем стаблу. Сложеност извршавања стабла одлучивања једнака је највећем броју упита потребним да се нађе минимално разапињуће стабло, што је у ствари дубина стабла одлучивања. Стабло одлучивања за граф је оптимално ако има најмању дубину у односу на сва исправна стабла одлучивања из графа .

За сваки цео број , могуће је пронаћи оптимална стабла одлучивања за све графове са чворова, помоћу исцрпне претраге.

А. Генерисање свих потенцијалних стабала одлучивања[уреди]

  • Постоји различитих графова са чворова.
  • За сваки граф, минимално разапињуће стабло се може наћи помоћу поређења, нпр. помоћу Примовог алгоритма.
  • Стога, дубина оптималног стабла одлучивања је .
  • Дакле, број чворова у оптималном стаблу одлучивања је мањи од .
  • Сваки унутрашњни чвор пореди две гране. Број грана је највише , тако да постоји највише различитих поређења.
  • Дакле, број потенцијалних стабала одлучивања је мањи од: .

Б. Проналажење исправних стабала одлучивања[уреди]

Да бисмо проверили да ли је стабло одлучивања исправно, потребно је проверити га за све могуће пермутације тежина грана.

  • Број таквих пермутација је највише .
  • За сваку пермутацију решава се проблем минималног разапињућег стабла за дат граф користећи било који постојећи алгоритам, и резултат се пореди са одговором добијеним из стабла одлучивања.
  • Време извршавања било ког алгоритма за минимално разапињуће стабло је највише , тако да је укупно време да се провере све пермутације највише .

Стога, укупно време које је потребно да се пронађе оптимално стабло одлучивања за све графове са чворова износи: што је мање од: .

Оптималан алгоритам[уреди]

Сетх Петит и Виџаја Рамачандран су пронашли оптимални детерминистички базиран на компарацији алгоритам који проналази минимално разапињуће стабло. У наставку је описан поједностављен приказ алгоритма.

  1. Нека је , где представља број чворова. Потребно је пронаћи сва оптимална стабла одлучивања са . Ово се може урадити за време .
  2. Поделити граф на компоненте, тако да у свакој компоненти има највише чворова. Ова подела се може извршити за времена.
  3. Користимо оптимално стабло одлучивања да бисмо нашли минимално разапињуће стабло у свакој компоненти.
  4. Контрахујемо сваку повезану компоненту обухваћену минималним разапињућим стаблом у по један чвор.
  5. Могуће је доказати да добијени граф има највише чворова. Дакле, граф је густ и ми можемо користити било који алгоритам који се користи код густих графова у времену .

Време извршавања свих корака у алгоритму је , изузев корака где се користе стабла одлучивања. Ми не знамо време извршавања овог корака, али знамо да је оптимално - ниједан алгоритам не може дати бољи резутат од оптималног стабла одлучивања.

Према томе, овај алгоритам има чудну особину да је доказиво оптималан иако је његова сложеност непозната.

Паралелни и расподељени алгоритми[уреди]

При истраживању проблема минималног разапињућег стабла узети су у обзир и паралелни алгоритми. Са линеарним бројем процесора могуће је решити овај проблем за времена. Бадер и Чонг 2006. године су демонстрирали алгоритам који може да пронађе минимална разапињућа стабла 5 пута брже на 8 процесора него оптимизовани секвенцијални алгоритам.

Остали специјализовани алгоритми дизајнирани за налажење минималног разапињућег стабла су толико велики да већим делом морају бити чувани на диску све време. Ови алгоритми са спољашњим складиштењем, као на пример они који су описани у раду „Конструкција алгоритма за проналажење минималног разапињућег стабла који користи екстерну меморију“ од Романа Дементијева могу, се извршавати, како аутор тврди, 2 до 5 пута спорије него традиционални алгоритми који користе унутрашњу меморију. Они се ослањају на ефикасно спољашње сортирање и на контракцију графа - технику за ефикасно смањење величине графа.

Проблему се такође може приступити помоћу расподељеног израчунавања. Ако се сваки чвор посматра као рачунар и ниједан чвор не зна ништа сем веза са којима је повезан, један сигурно може пронаћи дистрибуирано минимално разапињуће стабло.

Минимално разапињуће стабло у комплетним графовима[уреди]

Алан М. Фриз је показао да задат комплетан граф са чворова, који има гране чије су тежине независне идентично распоређене случајне променљиве са функцијом расподеле задовољава , и како прилази +∞ очекивана тежина минималног разапињућег стабла се приближава , где представља Риманову зета-функцију. Фриз и Стил су такође доказали конвергенцију у вероватноћи. Сванте Јансон је доказао централну граничну теорему за тежину минималног разапињућег стабла.

За насумично одабране тежине из интервала ,тачна очекивана величина минималног разапињућег стабла је израчуната за мале комплетне графове.

Чворови Очекивана величина Апроксимативна очекивана величина
2 1 / 2 0.5
3 3 / 4 0.75
4 31 / 35 0.8857143
5 893 / 924 0.9664502
6 278 / 273 1.0183151
7 30739 / 29172 1.053716
8 199462271 / 184848378 1.0790588
9 126510063932 / 115228853025 1.0979027

Апликације[уреди]

Сродни проблеми[уреди]

Референце[уреди]

  1. Do the minimum spanning trees of a weighted graph have the same number of edges with a given weight?
  2. Karger, David R.; Klein, Philip N.; Tarjan, Robert E. (1995), „A randomized linear-time algorithm to find minimum spanning trees”, Journal of the Association for Computing Machinery 42 (2): 321—328, doi:10.1145/201019.201022, MR 1409738 
  3. Pettie, Seth; Ramachandran, Vijaya (2002), „Minimizing randomness in minimum spanning tree, parallel connectivity, and set maxima algorithms”, Proc. 13th ACM-SIAM Symposium on Discrete Algorithms (SODA '02), San Francisco, California, стр. 713—722 .
  4. Chazelle, Bernard (2000), „A minimum spanning tree algorithm with inverse-Ackermann type complexity”, Journal of the Association for Computing Machinery 47 (6): 1028—1047, doi:10.1145/355541.355562, MR 1866456 .
  5. Chazelle, Bernard (2000), „The soft heap: an approximate priority queue with optimal error rate”, Journal of the Association for Computing Machinery 47 (6): 1012—1027, doi:10.1145/355541.355554, MR 1866455 .
  6. Fredman, M. L.; Tarjan, R. E. (1987). „Fibonacci heaps and their uses in improved network optimization algorithms”. Journal of the ACM 34 (3): 596. doi:10.1145/28869.28874. 
  7. Gabow, H. N.; Galil, Z.; Spencer, T.; Tarjan, R. E. (1986). „Efficient algorithms for finding minimum spanning trees in undirected and directed graphs”. Combinatorica 6 (2): 109. doi:10.1007/bf02579168.