Deoarece un heap binomial este o colec ie de arbori binomiali, vom prezenta mai inti arborii binomiali i demonstra unele propriet i esen iale ale acestora. Arborele binomial B k este un arbore ordonat definit recursiv. Dup cum se vede n figura de mai jos, arborele binomial B 0
const dintr-un singur nod. Arborele binomial B k const din doi arbori binomiali B k- 1 care sunt nln ui i: rdcina unui dintre ei este fiul situat cel mai n stnga rdcinii celuilalt arbore. Figura prezint arborii binomiali de la B 0 la B 4 . Lema urmtoare con ine cteva propriet i ale arborilor binomiali. Arborele binomial B k are: 1. 2 k noduri, 2. nl imea k, 3. exact 2 i noduri, la adncimea i, pentru i=0,1,,k. 4. rdcina de grad k, grad mai mare dect al oricrui alt nod; mai mult, dac fii rdcinii sunt numerota i de la stnga spre dreapta prin k-1, k-2,,0 atunci fiul i este rdcina subarborelui B i .
Reprezentarea logica a arborilor binomiali
Definitia recursiva a arborelui binomial B k . Triunghiurile reprezinta subarborii radacinii. Arborii binomiali B 0 pana la B 4 .
Corolar Gradul maxim al nodurilor unui arbore binomial avnd n noduri este lg n.
Structura unui nod dintr-un arbore binomial
typedef struct BinomialNode { int inf,rank; BinomialNode *llink,*rlink,*down; }*pBinomialNode;
Reprezentarea fizica a arborilor binomiali
1.2 Heap-uri binomiale Un heap binomial H este format dintr-o mul ime de arbori binomiali care satisfac urmtoarele propriet i de tip binomial. 1. Fiecare arbore binomial din H satisface proprietatea de ordonare a unui heap: cheia unui nod este mai mare sau egal dect cheia printelui su. 2. Exist cel mult un arbore binomial n H a crui rdcin are un grad dat. Conform primei propriet i, rdcina unui arbore cu proprietatea de heap ordonat, con ine cea mai mic cheie din arbore. Proprietatea a doua implic faptul c un heap binomial H avnd n noduri con ine cel mult [lg n]+1 arbori binomiali. Pentru o justificare a acestei afirma ii se observ c reprezentarea binar a lui n are [lg [lg n] n]+1 bi i, fie ace tia <b [lg n] , b [lg n]-1 ,,b 0 >, astfel nct n i
0 b i 2 i . Din proprietatea 1 a lemei de mai sus rezult c arborele binomial B i apare n H dac i numai dac bitul b i =1. Astfel heap-ul H con ine cel mult [lg n]+1 arbori binomiali. n figura de mai jos este prezentat un heap binomial H avnd 13 noduri. Reprezeantarea binar a numrului 13 este 1101, iar H con ine arborii binomiali cu proprietatea de heap B 3 , B 2 i B 0 avnd 8, 4 i respectiv un nod, n total fiind 13 noduri.
Reprezentarea fizica a heap-urilor binomiale
Dup cum ilustreaz i figura de mai sus, fiecarea arbore binomial al unui heap binomial este memorat conform reprezentrii stnga-fiu, dreapta-frate. Fiecare nod are un cmp cheie plus alte informa ii specifice aplica iei care folose te heap-ul. n plus, fiecare nod x con ine pointerii p[x] spre printele lui, fiu[x] spre fiul situat cel mai n stnga i frate[x] spre fratele lui x, situat imediat n dreapta. Dac nodul x este o rdcin atunci p[x]=NIL. Dac nodul x nu are fii atunci fiu[x]=NIL, iar dac x este fiu situat cel mai n dreapta, atunci frate[x]=NIL. Fiecare nod con ine de asemenea cmpul grad[x], care reprezint numrul fiilor lui x. Rezult din figur c rdcinile arborilor binomiali con inu i de un heap binomial sunt pstrate ntr-o list nln uit pe care o vom numi n continuare list de rdcini. La o traversare a listei de rdcini gradul rdcinilor formeaz un ir strict cresctor. Din a doua proprietate de heap binomial, rezult c gradele rdcinilor unui heap binomial avnd n noduri formeaz o submul ime a mul imii {0,1,,[lg n]}. Cmpul frate are semnifica ii diferite dup cum nodurile sunt rdcini sau nu. Dac x este rdcin atunci frate[x] refer rdcina urmtoare n lista de rdcini. (dac x este ultima rdcin din list atunci, ca de obicei, frate[x]=NIL.) Un heap binomial dat H este referit prin pointerul cap[H] spre prima rdcin din lista de rdcini a lui H. Dac heap-ul binomial H nu are elemente, atunci cap[H]=NIL.