– Definisali su ih Gibs i Sedžvik 1978. godine; Crveno-crna ......Crveno-crna stabla –...

15
Overviev Stražar u crveno-crnom stablu Ubacivanje ˇ cvora Brisanje ˇ cvora Crveno-crna stabla – Definisali su ih Gibs i Sedžvik 1978. godine; Crveno-crna stabla su binarna stabla, kod kojih je za skladištenje svakog ˇ cvora potreban još jedan bit: njegova boja koja može biti crvena ili crna. Vode´ ci raˇ cuna o boji ˇ cvorova na putu od korena do bilo kog lista, u crveno-crnom stablu mora biti ispunjen uslov da je taj put najviše dva puta duži od bilo kog drugog. To znaˇ ci da su ova stabla na neki naˇ cin izbalansirana. Svaki ˇ cvor ima pet atributa: color, key, left, right, p.

Transcript of – Definisali su ih Gibs i Sedžvik 1978. godine; Crveno-crna ......Crveno-crna stabla –...

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Crveno-crna stabla

    – Definisali su ih Gibs i Sedžvik 1978. godine;

    Crveno-crna stabla su binarna stabla, kod kojih je zaskladištenje svakog čvora potreban još jedan bit:

    njegova boja koja može biti crvena ili crna.

    Vodeći računa o boji čvorova na putu od korena do bilo koglista, u crveno-crnom stablu mora biti ispunjen uslov da je tajput najviše dva puta duži od bilo kog drugog.

    To znači da su ova stabla na neki način izbalansirana.

    Svaki čvor ima pet atributa:

    – color, key, left, right, p.

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Crveno-crna stabla (cont.)

    Ako neki čvor nema roditelja ili dete pokazivač na njih je NIL.

    Pretpostavićemo da NIL pokazivači ukazuju i na listove stabla,dok je svaki čvor koji ima neki sadržaj unutrašnji čvor stabla.

    Crveno-crno stablo se karakteriše sledećim osobinama:

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Crveno-crna stabla (cont.)

    Svaki čvor u stablu je ili crven ili crn;

    Koren je crn;

    Svaki list (NIL) je crn;

    Akoje čvor crven oba deteta su mu crna;

    Putevi od svakog lista do korena imaju isti broj crnihčvorova;

    Crveno-crna stabla se pretražuju od korena do mesta na kometreba da se nalazi element koji se ubacuje ili izbacuje, a zatimse vraća prema korenu i uspostavlja se crveno-crna strukturaukoliko je narušena.

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Crveno-crna stabla (cont.)

    Teorema:Visina crveno-crnog stabla koje ima n čvorova jeste najviše2 log2 (n + 1).

    Dokaz ćemo izvesti indukcijom po visini čvora x. Odredićemonajpre crnu visinu stabla sa korenom u x, koju ćemo označiti sabh(x). To je broj crnih čvorova od korena stabla do lista, neračunajući koren. Indukcijom se lako dokazuje da stablo crnevisine bh(x), sa korenom u proizvoljnom čvoru x ima najmanje2bh(x) − 1 čvorova.

    Ako je bh(x) = 0, jasno je da je x list (T.NIL) i podstablo sakorenom u x sadrži 2bh(x) − 1 = 20 − 1 = 1 − 1 = 0 čvorova,ako izuzmemo x.

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Crveno-crna stabla (cont.)

    Za induktivni korak pretpostavimo da je x unutrašnji čvor stablasa dvoje dece. Svako dete ima crnu visinu bh(x) ili bh(x) − 1,zavisno od toga dali je crveno ili crno, redom. Kako je visinasvakog deteta od x manja od visine čvora x, možemo primenitiindukcijsku pretpostavku, pa svako dete odredjuje podstablo sanajmanje 2bh(x)−1 − 1 čvorova.

    Dakle, podstablo sa korenom u x ima najmanje2(2bh(x)−1 − 1) + 1 = 2bh(x) − 1 čvorova.

    Da bi upotpunili dokaz, pretpostavimo da stablo sa korenom xima visinu h. Prema osobinama crveno-crnog stabla barpolovina čvorova na putu od korena do lista je crna, pa jebh(x) > h2 . Tada je broj čvorova u stablu

    n > 2h2 −1 ⇔ h 6 2 log2 (n + 1)

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Stražar (sentinel) u crveno-crnom stablu

    Da bi pojednostavili granične uslove u crveno-crnom stablumožemo koristiti jednog stražara koji predstavlja NIL.

    U crveno-crnom stablu stražar T.NIL je objekat sa istimatributima kao običan čvor u stablu. Njegova boja je crna, dokostali atributi- p, left, right i key- mogu uzeti proizvoljnevrednosti.

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Stražar u crveno-crnom stablu (cont.)

    Svi pokazivači na listove, zamenjuju se pokazivačem nasentinel T.NIL.

    Kao što se vidi, kada koristimo stražara, NIL dete čvora xmožemo smatrati običnim detetom čiji je roditelj x. T.NIL uovom slučaju se koristi i kao roditelj korena stabla.

    U opštem slučaju, u radu sa crveno-crnim stablima, nama suvažniji unutrašnji čvorovi, jer oni nose vrednosti ključeva. Zatolistove možemo izostaviti pri crtanju ovih stabala.

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Ubacivanje čvora u crveno-crno stablo

    Procedura ubacivanja čvora u crveno-crno stablo sa n čvorovazahteva O(log2 n) vremena.

    Procedura ubacivanja čvora u crveno-crno stablo je malomodifikovana procedura ubacivanja elementa z u uredjenobinarno stablo, posle čega se čvor z boji crveno.

    Kako se, pri tom, može narušiti crveno-crna struktura,neophodno je primeniti levu ili desnu rotaciju za preuredjenječvorova.

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Ubacivanje čvora u crveno-crno stablo (cont.)

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Ubacivanje čvora u crveno-crno stablo (cont.)

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Ubacivanje čvora u crveno-crno stablo (cont.)

    U opštem slučaju se crveno-crna struktura može narušiti samoako je z koren stabla ili u koliko je roditeljski čvor od z crven.

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Ubacivanje čvora u crveno-crno stablo (cont.)

    Ako je čvor z.p crven, onda on nije koren stabla, pa sigurnopostoji z.p.p.

    Trebalo bi da posmatramo šest slučajeva u WHILE petlji, ali trisu simetrična, zavisno od toga da li je roditeljski čvor z.p levo ilidesno dete praroditelja z.p.p od z (zato se posmatra samojedan slučaj, kada je z.p levo dete).

    Zatim se proverava ujak čvora z čiju vrednost pamti promenljivay. Ako je y crven imamo Case 1, dok u protivnom algoritamprelazi na Case 2 i Case 3. Jasno da je u sva tri slučaja čvorz.p.p crn.

    Na slici je data situacija kada su i z.p i y crveni. Prebojavamo ihu crno, dok z.p.p bojimo u crveno i pomeramo y do z.p.p dvakoraka ponavljajući tako WHILE petlju.

    Case 2. Ujak od z je crn, a z je desno dete roditelja;

    Case 3. Ujak od z je crn, a z je levo dete roditelja;

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Brisanje čvora iz crveno-crnog stabla

    Kao i druge osnovne operacije u crveno-crnom stablu sa nčvorova, brisanje čvora zahteva Olog2 n vremena.

    Brisanje čvora je malo složenija operacija od ubacivanja čvora.

    Procedura za brisanje čvora iz crveno-crnog stabla zasniva sena proceduri brisanja čvora iz binarnog stabla.

    Najpre ćemo napisati proceduru TRANSPLANT:

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Brisanje čvora iz crveno-crnog stabla (cont.)

  • OvervievStražar u crveno-crnom stabluUbacivanje čvoraBrisanje čvora

    Brisanje čvora iz crveno-crnog stabla (cont.)

    Grafovski (GRAF) algoritmiStražar u crveno-crnom stabluUbacivanje cvoraBrisanje cvora