Алгоритам обрнутог брисања је алгоритам у теорији графова који се користи за добијање минималног разапињућег стабла из датог повезаног тежинскоg графа . Он се први пут појавио kод Kрускалa 1956, али то не треба мешати са алгоритмом Крускала који се помиње у овој области. Уколико граф није повезан, овај алгоритам ће наћи минимално разапињуће стабло, одвојено за сваки део графа. Скуп ових минималних разапињућих стабала се зове минимална разапињућа шума, која садржи сваки чвор графа.
Овај алгоритам је похлепни алгоритам, бира најбољи избор у сваком тренутку у задатој ситуацији. То је супротно од Крускаловог алгоритма, што је још један похлепни алгоритам који проналази минимално Разапињуће стабло. Крускалов алгоритам почиње са празним графом и додаје гране, док обрнуто брисање почиње са оригиналном графом и брише из њега гране. Алгоритам ради на следећи начин: Почиње са графом Г, који садржи листу грана Е. Иде до Е по опадајућем редоследу тежине грана. За сваку грану, проверите да ли ће брисање направити неповезан граф. Извршите брисања која не доводе до додатних искључења.
Псеудокод 1 function ReverseDelete(edges[] E) 2 sort E in decreasing order 3 Define an index i ← 0 4 while i < size(E) 5 Define edge temp ← E[i] 6 delete E[i] 7 if temp.v1 is not connected to temp.v2 8 E[i] ← temp 9 i ← i + 1 10 return edges[] E
Горњи граф је скуп грана Е где свака грана има тежину и повезује чворове v1 и v2.
Пример У следећем примеру зелене гране се процењују у алгоритму а црвене гране су избрисане. 200pxОво је наш оригинални граф. Бројеви на грани говоре тежину гране.200pxАлгоритам ће почети са граном максималне тежине, што је у ово случају DE тежине 15. Пошто брисање грана DE не узрокује распадање графа, грана се брише.200pxСледећа највећа грана је FG , алгоритам ће проверити да ли брисањем ове гране долази до распада графа. Пошто брисање гране неће довести дотле, грана је тада обрисана.200pxСледећа највећа грана је BD, па ће алгоритам проверити ову грану и избрисати је.200pxСледећа грана је да проверите грану EG, која неће бити избрисана јер би искључили чвор G из графа. Дакле, следећа грана за брисање је BC.200pxСледећа највећа грама је грана ЕF, тако ће алгоритам проверити ову грану и избрисати је.200pxАлгоритам ће онда тражити преостале гране и неће наћи другу грану да обрише, па ово је коначни граф који нам враћа алгоритам.
Време извршавања За алгоритам се може доказати да ради у О (E log V (log log V)3) времену, где јеЕ је број грама и V је број чворова. Ова граница се достиже на следећи начин: Сортирање грана по тежини помоћу поређења у О ( Е лог Е) времену Е итерације петље Брисање уО (1) времену Повезивање проверити у O(logV (log log V)3) времену .
Исто тако, време рада може се сматрати О (E log E (log log E)3) јер највећи Е може се V 2. Запамтите да logV 2 = 2 * log V, па 2 је мултипликативна константа која ће бити игнорисана у нотацији великог O.
Референце
Литература
Категорија:Графовски алгоритми