Kruskalov algoritem


Glavna stran

Evidenca o poddrevesih - prvič

Kako naj torej vodimo evidenco o že povezanih vozliščih?

Ena možnost je, da vsako poddrevo predstavimo s svojo tabelo.

Na začetku je graf popolnoma nepovezan (diskreten), vsako vozlišče predstavlja svoje poddrevo. Imamo torej n poddreves. Potrebovali bi n tabel velikosti n, v začetku bi bil v vsaki en element - indeks ustreznega vozlišča.

Ko želimo dodati povezavo (i, j), moramo preveriti, ali sta vozlišči i in j že v isti tabeli. Če nista, je izbira dopustna.

Ko združimo vozlišči i in j, moramo elemente iz j-te tabele prenesti v i-to tabelo, j-to tabelo pa moramo "izprazniti".

Da nam ni treba fizično brisati podatkov iz tabel, raje žrtvujemo prvo celico vsake tabele in vanjo zapišemo, ali je tabela prazna (vrednost 0) ali ne (vrednost 1). Še bolje je, če v tej celici hranimo število elementov tabele. Tako imamo dvojno korist. Poleg tega, da nam ni treba brisati podatkov, prihranimo tudi precej časa pri pregledovanju tabel: ker ne pregledujemo praznih tabel, za vsak pregled potrebujemo samo O(n), v n korakih torej O(n2). Porabimo pa veliko prostora, O(n2).

Kaj pa drugi način?