Примов алгоритам

From Wikipedia, the free encyclopedia

Примов алгоритам
Remove ads

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

Thumb
Демо за Примов алгоритам заснован на еуклидској удаљености.
Remove ads

Опис

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

  • Улаз: Повезан тежински граф
  • Иницијализација: , где је произвољан чвор из
  • понављање док не постане :
    • Изабери грану из са минималном тежином, такву да је u из а v није из (ако има више грана исте тежине, изабрати произвољну)
    • Додај у , и у
  • Излаз: је минимално разапињуће стабло

Временска комплексност

Више информација Структура података грана минималне тежине, Временска комплексност (укупно) ...

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

Remove ads

Пример

Више информација Слика, Опис ...

Доказ коректности

Нека је повезан, тежински граф. У свакој итерацији Примовог алгоритма, мора се наћи грана која спаја чвор у подграфу са чвором ван подграфа. Како је повезан, увек ће постојати путања до сваког чвора. Излаз Примовог алгоритма, је стабло, јер су грана и чвор додати повезани. Нека је 1 минимално разапињуће стабло од . Ако је 1= онда је минимално разапињуће стабло. У супротном, нека је прва грана додата током конструкције која није у 1, а је скуп чворова повезаних гранама додатим пре . Тада је једна страна гране у а друга није. Како је 1 разапињуће стабло од , постоји путања у 1 која спаја две крајње тачке. Док се пролази ова путања, мора се проћи грана која спаја чвор у са неким који није у . Сада, у итерацији када се додаје , смо такође могли да додамо, и додали бисмо је уместо да је њена тежина била мања од . Како није додата, закључујемо да

. ( је тежина од )

Нека је 2 граф добијен уклањањем и додавањем у 1. Лако је показати да је 2 повезан, има исти број грана као 1, и његова укупна тежина није већа од 1, стога је такође минимално разапињуће стабло од и садржи и све гране додате пре њега током консрукције . Понављањем ових корака ће се коначно добити минимално разапињуће стабло од које је идентично . Ово показује да је минимално разапињуће стабло.

Неки од других алгоритама који решавају овај проблем су Крускалов алгоритам и Борувкин алгоритам.

Remove ads

Литература

  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill. 2001.  978-0-262-03293-3.. Section 23.2: The algorithms of Kruskal and Prim, pp.567-574.
Remove ads

Спољашње везе

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads