Problema della Rcerca Pag. /59 Problema della Rcerca U dzoaro rappreseta u seme d formazo suddvso per elemet ad oguo de qual è assocata ua chave. Esempo d dzoaro è l eleco telefoco dove la chave è costtuta dalla coppa cogome, ome e gl elemet dalle formazo qual umero telefoco ed drzzo. Altro esempo classco d dzoaro è rappresetato dal vocabolaro della lgua talaa dove ad og parola, chave del dzoaro, è assocato u sgfcato. L seme mmo d operazo attuabl su u dzoaro è costtuto dalle operazo d rcerca, sermeto e cacellazoe dove, la rcerca resttusce u elemeto assocato ad ua chave, l sermeto sersce all tero del dzoaro ua uova coppa, chave ed elemeto, e la cacellazoe cacella la coppa, chave ed elemeto. Tratteremo questa sezoe alcue possbl mplemetazo d u dzoaro che s dstguoo ell orgazzazoe delle formazo e qud ella complesstà delle tre operazo. Vedremo ad esempo che ua possble soluzoe d mplemetazoe d u dzoaro è la lsta ordata e che tal caso l operazoe d rcerca ha ua complesstà Olog ) metre le operazo d sermeto e cacellazoe hao ua complesstà O). Così come vedremo che gl alber AVL costtuscoo ach ess ua valda alteratva d mplemetazoe d u dzoaro e che tal caso, vece, le tre operazo hao tutte complesstà Olog ). E bee evdezare, s da ora, che o esste assoluto la mglore soluzoe per l mplemetazoe d u dzoaro. La scelta della struttura dat dpede fatt da molteplc fattor ed emerge solo a seguto d u aals volta ad dvduare sa le operazo maggormete rcorret che l grado d complesstà che s vuol affrotare fase d realzzazoe. Ad esempo, se a seguto d u aals emergesse che durate l propro cclo d vta l dzoaro o sarà partcolarmete damco elle sue compoet, potrebbe rsultare preferble pealzzare le operazo d cacellazoe ed Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. /59 sermeto a scapto d ua maggore semplctà d realzzazoe e qud magar rcorrere alla mplemetazoe tramte lsta ordata. Caso opposto, vece, è quello cu rcerca, cacellazoe ed sermeto hao smle grado d rcorreza. Potrebbe tal caso rsultare opportuo rcorrere ad ua mplemetazoe medate alber AVL, affrotado qud ua fase d realzzazoe pù laborosa ma asscurados el cotempo per tutte e tre le operazo ua complesstà logartmca el umero degl elemet. Prma d trodurre le possbl mplemetazo descrvamo l ADT Dzoaro. Tpo d dat: Dzoaro Iseme d coppe Chave, Elemeto) Operazo: Isersc Chave k, Elemeto e ) Agguge ua coppa Chave, Elemeto) al dzoaro Cacella Chave k ) Cacella dal dzoaro la coppa Chave, Elemeto) dvduata dalla chave k Cerca Chave k ) Elemeto Resttusce l elemeto del dzoaro al quale è assocata la chave k Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 3/59. Lste e Bt Vector Le lste ed bt vector rappresetao due soluzo faclmete attuabl per l mplemetazoe dell ADT Dzoaro. Come vedremo, bt vector soo applcabl solo u cotesto be defto.. Lste Possamo mplemetare u dzoaro medate l utlzzo dell ADT lsta ordata o dell ADT lsta o ordata. I ambedue cas, l record rappresetate u elemeto della lsta sarà formato da u campo chave, da u campo elemeto ed fe dal campo rappresetate l putatore all elemeto successvo. Nel seguete prospetto soo rportat temp d esecuzoe delle operazo d rcerca, sermeto e cacellazoe. Rcerca Isermeto Cacellazoe Lsta Ordata Logartmca el umero d elemet Olog ) Leare el umero d elemet O) Leare el umero d elemet O) Lsta o ordata Leare el umero d elemet O) Costate O) Leare el umero d elemet O). Bt Vector I bt vector rappresetao ua soluzoe applcable per l mplemetazoe d u dzoaro quado le chav assumoo valor apparteet ad u sottoseme lmtato dell tero seme uverso ed oltre tal valor soo rappresetabl medate umer ter. L mplemetazoe medate bt vector rchede l utlzzo d u array d boolea, bt vector, dove lo -esmo bt è posto a true se lo -esmo elemeto è presete el dzoaro altrmet è posto a false. L operazoe d sermeto può avvere seredo og uova coppa come ultmo elemeto della lsta Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 4/59 Avremo qud che per: - rcercare l elemeto, valutamo semplcemete se lo -esmo elemeto del bt vector è true o false; - serre l elemeto : poamo lo -esmo elemeto del bt vector uguale a true; - cacellare l elemeto, poamo lo -esmo elemeto del bt vector uguale a false. Cosderado che l accesso allo -esmo elemeto d u array ha tempo costate rspetto al umero d elemet esso coteut, abbamo che le operazo d rcerca, sermeto e cacellazoe hao tutte complesstà costate. Esempo S pred cosderazoe la gestoe delle preotazo delle camere d u albergo. Ad og camera è assocato u valore tero rappresetate l umero d staza. E possble creare, qud, u vettore d bt avete dmesoe par al umero d staze dell albergo e: - quado seramo ua preotazoe per la staza poamo lo -esmo elemeto del vettore uguale a true; - quado cacellamo ua preotazoe per la staza poamo lo -esmo elemeto del vettore uguale a false; - quado s deve verfcare se la staza è preotata valutamo l valore assuto dallo -esmo elemeto del vettore booleo. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 5/59. Alber Bar d Rcerca BST) Vedremo questo paragrafo come orgazzare le formazoe del dzoaro medate la struttura dat Albero Baro d Rcerca. Credamo opportuo sottoleare che, ache se all tero del corso tratteremo gl alber bar d rcerca solamete ello studo dell ADT Dzoaro, o bsoga ad og modo commettere l errore d cofare l loro utlzzo esclusvamete all tero d tale ambto. Gl alber bar d rcerca soo strutture dat valde oltre che per la realzzazoe degl operator base dell ADT Dzoaro, rcerca, sermeto e cacellazoe, ache per l mplemetazoe d altr operator qual la rcerca del successvo, la rcerca del predecessore, la rcerca del massmo o la rcerca del mmo, operator applcabl ad ADT d altro tpo qual ad esempo l ADT Coda a Prortà. Defzoe: u albero baro d rcerca è u albero baro che soddsfa le seguet propretà:. og odo dell albero è coteuta la coppa chave, elemeto);. le chav soo estratte da u seme totalmete ordato; 3. og chave del sottoalbero sstro del odo v è more o al massmo uguale alla chave coteuta el odo v; 4. og chave del sottoalbero destro del odo v è maggore o al massmo uguale alla chave coteuta el odo v. Esempo Solo la prma raffgurazoe rappreseta u albero baro d rcerca. 40 40 0 60 0 60 0 30 55 80 0 50 55 80 5 5 5 5 Volazoe della terza propretà Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 6/59 Nota Ua caratterstca dell albero d rcerca è che l path della vsta order è rappresetato dalle chav dell albero rportate orde crescete. Ad esempo s cosder l albero baro d rcerca dell esempo sopra s ha che l path della vsta order è: 5, 0, 5, 0, 30, 40, 55, 60, 80. Rcerca Facedo leva sulle propretà 3 e 4, apputo chamate propretà d rcerca, rcerchamo ua chave all tero d u albero baro d rcerca seguedo ua metodologa che rchama l algortmo d rcerca bara. Sa v u odo dell albero e k l valore della chave da rcercare, damo luogo a seguet pass:. se la chave d v è uguale a k allora stop: chave trovata!. se la chave d v è maggore d k allora cotuamo la rcerca sottoalbero sstro 3. se la chave d v è more d k allora cotuamo la rcerca sottoalbero destro Alber bar d Rcerca- Algortmo d rcerca chave Cerca Chave k, Nodo v ) Nodo { Nodo r _ se v NULL ) allora rtora NULL se v.chave k ) allora rtora v se v.chave > k ) allora r v.sstro altrmet r v.destro } rtora Cerca k, r ) Aalzzamo la complesstà dell algortmo. Esso scorre d lvello lvello l albero baro d rcerca. Il peggore de cas è rappresetato dalla dscesa lugo u tero verso dell albero, fo ad arrvare ad ua fogla. Tale caso occorre quado l elemeto o è trovato ed al suo verfcars l algortmo esegue qud u umero d pass drettamete proporzoal co l altezza dell albero. Pertato se dchamo co h l altezza dell albero baro d rcerca, possamo dre che l algortmo el caso pessmo, elemeto o trovato, ha ua complesstà leare rspetto ad h: Oh). Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 7/59 Isermeto I u albero baro, seramo u uovo odo sempre come fogla. Damo luogo ad u sermeto cosderazoe de seguet macro pass: Rcerca del gusto padre, dvduamo l odo v che possede le propretà adatte per essere getore del uovo odo. La rcerca del gusto padre avvee scededo lugo l albero, co la stessa metodologa utlzzata per l operazoe d rcerca, f quado o s cotra u odo v che o ha fglo sstro ed ha la chave maggore d quella dell elemeto da serre oppure u odo v che o ha fglo destro ed ha la chave more d quella dell elemeto da serre. Isermeto odo: trovato l gusto padre seramo l uovo odo come fglo destro o sstro el rspetto delle propretà d rcerca Aalzzamo la complesstà. Poché l algortmo scorre lugo u tero verso l albero baro d rcerca, s ha che la complesstà ache questo caso è leare rspetto all altezza dell albero: Oh). Esempo Isermeto elemeto co chave 4. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 8/59 Cacellazoe Prma d procedere ella cacellazoe d u odo all tero d u albero baro d rcerca vedamo le seguet due procedure poste al servzo dell operazoe d cacellazoe. Rcerca del massmo Le propretà d rcerca garatscoo che per l dvduazoe della chave pù grade presete u albero baro d rcerca dobbamo scedere, quato pù possble, lugo l verso destro dell albero. Alber bar d Rcerca- Rcerca del massmo max Nodo u ) Nodo { Nodo v _ v u whle v.destro! NULL ) v v.destro } rtora v L algortmo d rcerca del massmo ha, el caso pessmo, ua complesstà leare rspetto all altezza dell albero. Rcerca del predecessore Idchamo co l terme d predecessore d u odo v quel odo coteete come chave l massmo dell seme delle chav pù pccole d quella coteuta v. I u albero baro d rcerca l predecessore d u odo v è:. l massmo del sottoalbero sstro, se v ha u fglo sstro;. l pù basso ateato d u l cu fglo destro è ach esso ateato d u rsal l albero f quado o cotr ua svolta a sstra ), altrmet; Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 9/59 Alber bar d Rcerca- Rcerca del predecessore predecessore Nodo u ) Nodo { se u ha fglo sstro ) allora rtora max u ) _ whle padreu)! NULL e u e fglo sstro del padre ) u padre u } rtora l padre u L algortmo d rcerca del predecessore rsale l albero e pertato esso, el caso pessmo, ha complesstà leare rspetto all altezza dell albero. Esempo Rcerca del predecessore Samo prot per aalzzare l operazoe d cacellazoe. Sa u l odo dell albero d rcerca da cacellare, s possoo verfcare seguet tre cas:. u è ua fogla: tal caso dstacchamo semplcemete la fogla dall albero;. u ha u uco fglo fgura.) e sa v l uco fglo d u a. se u è radce allora v dvee la uova radce dell albero; b. se u o è radce allora sa w l padre d u, sosttuamo l arco w,u) co l arco w,v); Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 0/59 3. u ha due fgl fgura.): tal caso sa v l predecessore d u. Poché u ha due fgl l predecessore sarà l massmo del sottoalbero sstro d u e pertato v sarà ua fogla oppure u odo tero avete al max u solo fglo: quello sstro. La cacellazoe d u pertato può avvere copado la chave d v u ed elmado v cadedo per quest ultma operazoe e due cas precedet. La cacellazoe al par delle altre due operazo, rcerca ed sermeto, ha ua complesstà proporzoale all altezza dell albero poché el caso pessmo potremmo muoverc su l tera altezza dell albero alla rcerca del predecessore. Fgura. Elmazoe odo co u solo fglo Se v avesse ua fglo destro essterebbe ua chave pù grade d v e qud v o rappreseterebbe l massmo del sottoalbero sstro d u. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. /59 u v Passo Copa delle t t v v w w v Passo Elmazoe d v t v w Fgura. Elmazoe odo co due fgl Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. /59 Esempo Raffguramo d seguto la cacellazoe d u odo co u fglo. 80 50 0 0 60 0 30 Uco fglo del odo da cacellare 54 Nodo da cacellare 80 50 0 0 60 0 30 54 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 3/59 Vedamo fe la cacellazoe d u odo co due fgl 80 Nodo da cacellare 50 0 0 60 0 30 Uco fglo del predecessore 54 Predecessore d 80 60 50 0 0 54 0 30 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 4/59. Aals dell altezza d u albero baro d rcerca Come vsto precedetemete, medate la struttura dat alber bar d rcerca samo grado d mplemetare algortm d sermeto, cacellazoe e rcerca avet complesstà leare co l altezza dell albero. L aals che c accgamo a svolgere all tero del presete paragrafo ha come obettvo quello d esprmere tale complesstà term d umero d od del grafo ovvero term d umero d elemet preset el dzoaro. Vedamo prma alcue ozo propedeutche all aals. Defzoe: u albero baro s defsce completo se og odo tero ha due fgl e tutte le fogle appartegoo allo stesso lvello. Esempo Albero baro completo Albero baro o completo, v o ha due fgl v Albero baro o completo, tutt od ter hao due fgl ma le fogle o appartegoo allo stesso lvello Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 5/59 S dmostra l seguete teorema valdo per gl alber bar complet. Teorema... Sa T u albero baro completo. S dch co fogle T) l umero d fogle dell albero T e co h l altezza dell albero, allora s ha che: fogle T) h. Dmostrazoe. Il teorema s dmostra per duzoe. Sa h0, allora T è formato dalla sola radce che è pertato ache l uca fogla per cu: fogle T) 0. Poamo qud vero l teorema per u albero completo, che dchamo co T, avete altezza h-. Allora fogle T ) h-. Costruamo qud, a partre da T, u albero completo d altezza h che dchamo co T. Affché T sa completo ad og fogla d T dobbamo aggugere due fgl. Tal fgl rappreseterao le fogle d T. Pertato le fogle d T sarao: fogle T) * fogle T ) * h- h. Estededo l rsultato del teorema a tutt od dell albero abbamo che: Teorema... Sa T u albero baro completo. Sa l umero d od d T e h l altezza d T allora h coè h log. Aals della complesstà - Caso : albero d altezza mma La defzoe d albero baro completo c auta ella ostra aals quado l albero baro d rcerca ha altezza mma. Sao l umero d elemet del dzoaro, l albero baro d rcerca coteete le coppe ed avete altezza mma è dato da u albero baro d rcerca d altezza h completo almeo fo a lvello h-. I tal caso abbamo, dal teorema.. che: h h-) log-). Pertato, avedo le operazo d rcerca, sermeto e cacellazoe tutte complesstà Oh) possamo affermare che tale complesstà espressa term d umero d od è Olog ) el caso cu l albero ha altezza mma. Aals della complesstà - Caso : albero d altezza massma Caso opposto a quello appea esamato è dato da u albero completamete sblacato, u albero avete altezza uguale al umero d od meo uo 3. I tal caso la complesstà degl algortm d rcerca, cacellazoe ed sermeto è baalmete proporzoale al umero d elemet del dzoaro: O). 3 S cade tale potes quado l sermeto degl elemet all tero dell albero è ordato. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 6/59 Aals della complesstà - Caso : altezza meda Presupposto dell aals dell altezza meda d u albero baro d rcerca è l sermeto orde puramete casuale de od all tero dell albero. Tutt gl elemet del dzoaro hao uguale probabltà d essere scelt e qud sert. Sulla base d tale potes dmostreremo che l altezza dell albero è Olog ) e pertato el caso medo le tre operazo del dzoaro hao tutte complesstà Olog ). Teorema..3. sa T u albero baro d rcerca otteuto medate ua sere d sermet d coppe chave, elemeto). Sa oltre l orde d sermeto degl elemet puramete casuale. S dch fe co P) l altezza meda dell albero T, allora s ha che: P) O log ) Dm: dchamo co {a,..., a } l seme degl elemet da serre all tero dell albero. Affchè l orde d sermeto sa rteuto puramete casuale dobbamo avere che la probabltà d scelta degl elemet sa equdstrbuta, ovvero che essa sa uguale ad / per og elemeto. Idchamo co a l prmo elemeto che vee prelevato dalla lsta per essere serto all tero dell albero. Essedo la probabltà d scelta equ dstrbuta abbamo che la probabltà che a sa uguale ad u qualuque a è par ad / per og,...,. Al terme dell sermeto d tutt gl elemet è lecto raffgurare l albero baro d rcerca el seguete modo: a chav mor d a -- chav maggor d a dove el sottoalbero sstro soo coteut gl elemet assocat alle chav pù pccole d a e el sottoalbero destro gl elemet assocat alle chav pù grad d a. Idchamo qud co l umero d chav pù pccole d a e co -- quelle pù grad d a. Idchamo oltre co P) e co P--) rspettvamete le altezze mede del sottoalbero sstro e destro quado l elemeto a è radce dell albero. Abbamo che l altezza meda dell tero albero, P), sarà calcolable a partre dalla seguete formula: P ) P ) ) P ) ) dove: Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 7/59 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI P ): è l altezza meda dell tero albero coteete elemet ed avete la radce a a. /: è la probabltà d aver pescato elemet pù pccol d a dopo l sermeto d a; P): è l altezza meda del sottoalbero sstro pù l odo a; --)/: è la probabltà d aver pescato -- elemet pù grad d a dopo l sermeto d a; P--): è l altezza meda del sottoalbero destro pù l odo a; /: è la probabltà d aver pescato a come prmo elemeto. Pertato cosderado che la probabltà che u elemeto sa radce dell albero è par ad / abbamo: P P P P o ) ) ) ) ) ) 0 P P o ) ) P P o ) ) ) ) P P o ) ) P P o ) ) ) P P o ) ) ) P P o ) P o ) P o ) P Quest ultma uguaglaza è gustfcata dal fatto che per uguale a zero P)0. Rcaptolado abbamo che: ) ) P P Ora, procededo per duzoe su, dmostramo che: P log 4 ) )
Problema della Rcerca Pag. 8/59 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI Poamo. I tal caso l altezza meda d u albero formato da u odo è obblgatoramete uguale ad uo e pertato P) 4 log. Poamo vera l potes per tutt valor mor d, avremo qud che: ) ) P P ) 4log log 4 log 4 Ora essedo ) s ha che: log 4 ) P log 4 log 8 Aalzzamo ora gl dc della sommatora, dvdamol due rage:,..., / -) e /,..., -) e rscrvamo la dsuguaglaza. P log log 8 ) Essedo ora due logartm calcolat sul valore cremetale d possamo affermare che: ) log log pochè l valore d è sempre more d / ) log log pochè l valore d è sempre more d
Problema della Rcerca Pag. 9/59 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI e pertato rscrvere la dsuguaglaza come: P log log 8 ) Aalzzamo ora separatamete le due sommatore cosderado due dvers cas: è par ed è dspar. par 8 ) 8 4 4 8 4 ) 8 3 8 3 dspar 8 8 8 ) ) ) 8 ) ) ) ) 8 3 8 4 3 8 ) 4 4 8 ) ) ) 4
Problema della Rcerca Pag. 0/59 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI Dall aals fatta sopra sulle sommatore e derva che: P log 8 3 log 8 8 log log 8 ) 4log 3log log 3log log log 3log log
Problema della Rcerca Pag. /59 3. Alber AVL Nel precedete captolo abbamo vsto come l blacameto d u albero fluez le operazo d rcerca, cacellazoe e sermeto. U albero perfettamete blacato garatsce per ogua d queste operazo ua complesstà logartmca el umero d elemet del dzoaro. Sulla base d questa cosderazoe, Adel so, Velsk e Lads A.V.L.) hao deato ua famgla d alber, gl Alber AVL. Caratterstca d tal alber è quella d mateere u perfetto blacameto ache dopo aver dato luogo ad operazo d sermeto e cacellazoe, ovvero dopo aver apportato modfche alla struttura dell albero. Vedremo come l esecuzoe d opportue operazo, che chameremo rotazo d rblacameto, rappreseterà la chave d volta per l matemeto del blacameto dell albero. Defzoe: u albero baro è blacato altezza se le altezze del sottoalbero sstro e destro dfferscoo al pù d ua utà. Esempo Alber blacat Albero baro blacato Albero baro o blacato h- h- h - h h Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. /59 Defzoe: sa v u odo, defamo fattore d blacameto, β v ), del odo v la dffereza tra l altezza de sottoalber sstro e destro radcat v: β v ) h s v )) h des v )). Notamo che u albero baro d rcerca, pù l fattore d blacameto de od è basso è maggormete effcet soo le operazo d rcerca, sermeto e cacellazoe. Defzoe. U Albero AVL è u albero baro d rcerca cu:. og odo dell albero cotee oltre alla coppa chave, elemeto) formazo sul blacameto del odo;. per og odo v s ha che: β v ) ; U Albero AVL è pertato u albero baro che matee le propretà d rcerca ed oltre è blacato. S dmostra l seguete: Teorema fodametale degl alber AVL: sa T u Albero AVL. Idchamo co l umero d od dell albero T e co h l altezza dell albero T. S ha che: h Olog ). Dm: omessa. 3. Rotazo per l rblacameto dell albero Le rotazo d rblacameto rappresetao u seme d tecche applcabl agl Alber AVL og qual volta, dopo aver dato luogo ad operazo che apportao modfche alla struttura dell albero, l fattore d blacameto d u odo rsult o essere pù more o uguale ad uo. Le rotazo d rblacameto mrao a rprstare l fattore d blacameto de od dell Albero AVL. Vedamo come. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 3/59 Sa v u odo sblacato, ovvero u odo tale che βv) è maggore o uguale a due. Sa u l odo fglo d v cu è radcato l albero avete altezza maggore. Sao fe Tu) s e Tu) des rspettvamete l sottoalbero sstro e destro d u. S possoo verfcare seguet quattro cas:. u è fglo sstro d v e Tu) s ha altezza maggore o uguale a Tu) des.. u è fglo sstro d v e Tu) des ha altezza maggore d Tu) s. 3. u è fglo destro d v e Tu) des ha altezza maggore o uguale a Tu) s. 4. u è fglo destro d v e Tu) s ha altezza maggore Tu) des. Per facltà d esposzoe, cosdereremo ella ostra aals solo prm due cas, poché rmaet cas soo smmetrc rspetto ad ess. Caso Osservamo la fgura basso. Idchamo co v l odo avete fattore d blacameto maggore d uo, co u l fglo sstro d v ed oltre co T 3 l albero destro radcato v. Sao fe T e T rspettvamete l sottoalbero sstro e destro d u. Assumamo qud che l altezza dell albero radcato u è maggore d due utà rspetto all altezza del sottoalbero T 3. Ioltre che l altezza d T è maggore o uguale all altezza d T. Tale dffereza o può superare l valore uo, altrmet l odo u sarebbe u odo sblacato. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 4/59 I tal caso possamo rblacare l albero sul odo v dado luogo ad ua rotazoe destra su v, ovvero poamo u padre d v e spostamo l sottoalbero T come sottoalbero sstro radcato v. Esempo 3.. Cosderamo l seguete Albero AVL dove tra paretes rportamo l fattore d blacameto d og odo. La radce dell albero rappreseta u odo sblacato. Operamo qud la rotazoe come descrtto el caso. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 5/59 Esempo 3.. Cosderamo l seguete Albero AVL. v 60 ) u 40 ) 90 ) 0 ) 44 0) 88 0) 00 0) 8 ) 8 ) 43 0) 50 0) 95 0) 8 0) 0 ) 9 0) 30 0) 5 0) Ache questo caso rcorramo alla rotazoe verso destra per rstablre gl equlbr d blacameto. Notamo come l operazoe d blacameto applcata al odo v rstablsce ache l fattore d blacameto della radce dell albero. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 6/59 Caso Smlmete a quato fatto sopra, osservamo la fgura basso dove dchamo co v l odo avete fattore d blacameto maggore d uo, co u l fglo sstro d v ed oltre co T 5 l albero destro radcato v. Sao fe T l sottoalbero sstro radcato u, w l fglo destro d u e T 3, T 4 rspettvamete sottoalber sstro e destro radcat w. Assumamo qud che l altezza dell albero radcato u sa maggore d due utà rspetto all altezza del sottoalbero T 5. Ioltre che l altezza d T è more dell altezza del sottoalbero radcato w. Notamo, smlmete al caso sopra affrotato che tale dffereza o può superare l valore uo, altrmet l odo u sarebbe u odo sblacato. v Nodo sblacato u Altezza h w T 5 Altezza h Altezza h T Altezza h Altezza h oppure Altezza h- Altezza h oppure Altezza h- T 3 T 4 I tal caso rblacamo l albero sul odo v eseguedo cosecutvamete le seguet due rotazo: Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 7/59 Rotazoe : rotazoe verso sstra su u, poamo w padre d u ed l sottoalbero T 3 come sottoalbero destro radcato u Rotazoe : rotazoe verso destra su v, poamo w padre d v ed l sottoalbero T4 come sottoalbero sstro radcato v. w u v Altezza h Altezza h Altezza h Altezza h oppure Altezza h- Altezza h oppure Altezza h- Altezza h T T 4 T 3 T 5 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 8/59 Esempo 3..3 Cosderamo l seguete Albero AVL. Rcadamo el caso e pertato per rstablre gl equlbr d blacameto eseguamo la doppa rotazoe: Prma rotazoe Secoda rotazoe Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 9/59 3. Gl operator del dzoaro Prma d focalzzare la ostra attezoe sugl operator del dzoaro, osservamo dapprma che le sgole tecche d rblacameto descrtte el Paragrafo 3. hao ua complesstà dpedete dal umero d elemet preset el dzoaro. La loro complesstà è pertato costate: O). Rcerca Pochè u Albero AVL soo comuque rspettate le propretà d rcerca trodotte per BST, l algortmo d rcerca d u elemeto all tero d u Albero AVL è detco all algortmo CercaChave vsto per BST. La complesstà dell algortmo rmae pertato par a Oh) e sulla base del teorema fodametale degl alber AVL possamo affermare che tale complesstà term d od è par a Olog ). Isermeto L sermeto u albero AVL prevede l esecuzoe d tre macro pass dstt:. sermeto del odo come fogla, modaltà detca a quella gà descrtta ell albero baro d rcerca;. aggorameto de fattor d blacameto d tutt od preset el cammo che collega l odo appea serto co la radce dell albero, cammo crtco; 3. rblacameto dell albero, medate le tecche d rotazoe sopra descrtte. Tecche da applcare solo qualora almeo u odo dell albero presetasse u fattore d blacameto maggore d uo. Aalzzamo l ultmo passo. Sa l prmo odo d lvello pù basso che cotramo lugo l cammo crtco e avete u fattore d blacameto maggore d uo. Chamamo tale odo odo crtco. Come abbamo gà vsto ell esempo 3.. s ha che: Lemma: ua rotazoe semplce o doppa sul odo crtco è suffcete a rblacare altezza u albero AVL dopo l sermeto d u uovo elemeto. Pertato dopo aver applcata l opportua tecca d blacameto al odo crtco o occorre pù rsalre l albero ed effettuare ulteror blacamet. I fattor d blacameto de od pù alto vegoo d cosegueza rstablt. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 30/59 Il costo dell operazoe d sermeto è pertato proporzoale all altezza dell albero, Oh), e sulla base del teorema fodametale degl alber AVL possamo affermare che tale complesstà term d od è par a Olog ). Cacellazoe Smlmete all sermeto la cacellazoe d u odo avvee tre pass dstt:. cacellazoe del odo come descrtto per gl alber bar d rcerca. aggorameto de fattor d blacameto de od preset lugo l cammo crtco, rappresetato questa volta dal cammo che collega l padre del odo cacellato e la radce dell albero; 3. rblacameto dell albero, medate le tecche d rotazoe sopra descrtte. Tecche da applcare solo qualora almeo u odo dell albero presetasse u fattore d blacameto maggore d uo. Dversamete dall sermeto, ella cacellazoe d u elemeto l algortmo d rblacameto potrebbe essere applcato pù d ua volta. Possamo correre uo sblacameto a cascata che el caso pessmo obblgherebbe l esecuzoe d Oh) rblacamet. Ad og modo tale coveete rede partcolarmete laboroso la procedura d cacellazoe, ma term d complesstà possamo comuque affermare che la cacellazoe d u odo ha complesstà par a Oh) e qud dal teorema fodametale par a Olog ). Esempo 3.. Cosderamo l seguete albero AVL. 30 ) 5 0) 40 0) 0 0) 8 0) Rappresetamo tutte le modfche apportate all albero seguto all applcazoe della seguete sequeza d operazo: sert9), sert4), sert53), sert4). Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 3/59 Isert 9 Rblacameto sulla radce Isert 4 Isert 53 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 3/59 Rblacameto Isert 4 8 ) Nodo crtco 5 ) 30 ) 0 0) 9 0) 4 ) 40 ) 53 0) 4 0) Rblacameto Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 33/59 4. Realzzazoe medate Alber -3 Studeremo questo captolo ua orgazzazoe dat che forsce maggore lbertà sul grado uscete de od: l Albero -3. Dmostreremo che, smlmete agl Alber AVL, u Albero -3 possede tra le sue peculartà ache quella d avere ua altezza lmtata superormete, a meo d ua costate, dal logartmo del umero de od: Olog ). Vedremo come tale caratterstca rappreset ua garaza per ua effcete mplemetazoe degl operator d sermeto, rcerca e cacellazoe, che cotuerao ad avere ache questo caso complesstà par a Olog ). Vedremo oltre come tale garaza potrebbe ver meo a seguto d ua operazoe d sermeto o cacellazoe e, tal caso, a qual operazo dovremo ecessaramete dar luogo al fe d rstablre u equlbro sulla dstrbuzoe altezza de od. Chameremo tal operazo splt e fuse. Defzoe. U Albero -3 è u albero cu:. og odo tero ha due o tre fgl;. tutte le fogle appartegoo allo stesso lvello; 3. le chav e gl elemet del dzoaro soo coteute esclusvamete all tero de od fogla: 4. le chav, preset e od fogla, appaoo orde crescete da sstra verso destra; 5. og odo tero v matee la chave massma del sottoalbero sstro e la chave massma del sottoalbero cetrale se ha tre fgl. Altrmet matee solamete la chave massma del sottoalbero sstro. Esempo I basso ua raffgurazoe de u Albero -3. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 34/59 Il seguete teorema troduce ua mportate propretà d u albero così strutturato: l altezza, a meo d ua costate, è lmtata superormete dal umero d od preset ell albero. Teorema Fodametale Alber -3. Sa T u Albero -3. Idchamo co l umero de od, co f l umero delle fogle ed fe co h l altezza. S ha che: h h 3 a) b) h f 3 h Dm. Procedamo per duzoe sull altezza dell Albero -3. Per h uguale a zero abbamo che esso è composto dalla sola radce. Tale odo è ache fogla e qud le due asserzo a) e b) soo baalmete verfcate. Poamo vere le due asserzo ache per u altezza h-. Idchamo co T l Albero -3 d altezza h-, co od dell albero T e co f l umero delle fogle d T. Avremo che: h h 3 ) ) h- f 3 h- Costruamo ora u Albero -3 d altezza h, che chameremo T, sulla base dell Albero -3 T. Aggugamo qud u ulterore lvello a T seredo ad og fogla d T mmo due o massmo tre fgl. Otteamo gà u prmo rsultato. Dalla ) abbamo che l umero d fogle d T, che dchamo co f, sarà el caso mmo maggore o uguale * h- h o el caso massmo more o uguale a 3*3 h- 3 h, coè: ) h f 3 h. Idchamo ora co l umero d od d T. Abbamo che f. Coè l umero d od d T è par al umero d od dell albero T pù l umero d fogle che ad esso abbamo agguto per aumetare l altezza. Pertato dalla ) e dalla ) abbamo prma che: f h h h ) - h - e qud che: h h h h h 3 h 3 *3 ) 3 3 3 f 3 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 35/59 Come gà ampamete detto precedeza, ua struttura dat ha flueza sulla complesstà degl operator. Vedamo qud come l orgazzazoe dat suggerta dall Albero -3 flueza gl operator del dzoaro: rcerca, sermeto e cacellazoe. Rcerca La rcerca d u elemeto avvee sulla base delle formazo coteute all tero de od ter. Idchamo co v u odo tero dell Albero -3, dchamo co S[v] l massmo del sottoalbero sstro radcato v, metre dchamo co M[v] l massmo del sottoalbero cetrale radcato v. Ambedue valor soo memorzzat all tero del odo v. Possamo descrvere, maera del tutto geerca, l algortmo d rcerca d ua chave medate l seguete eleco d pass:. cofrotamo la chave da rcercare, k, co S[v] e M[v];. se k è more o uguale a S[v] proseguamo el sottoalbero sstro; 3. se k è compreso tra S[v] e M[v] proseguamo el sottoalbero cetrale; 4. se cas e 3 o soo verfcat proseguamo el sottoalbero d destra. Alber -3, rcerca d ua chave Search Nodo v, chave k) Nodo { se v è fogla allora { se k v.chave allora rtora v altrmet rtora ull } _ } se k < S[v] allora Search v.sstro, k ) altrmet { se v ha tre fgl e S[v] < k < M[v] allora Search v.cetro, k ) altrmet Search v.destro, k ) } Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 36/59 Nel caso pessmo, elemeto o trovato, l algortmo d rcerca scederà lugo u tero verso dell Albero -3. Possamo qud affermare che la complesstà dell operatore è par a Oh). Da qu, e sulla base del teorema fodametale per gl Alber -3, possamo cocludere che term d od dell albero, ovvero d umero d elemet del dzoaro, la complesstà dell operatore d rcerca è Olog ). Esempo Rcerca della chave 47 9 34 Poché 34 <47 5 3 45 47 Poché 47 47 5 9 3 34 45 47 50 Rcerca della chave 3. 9 34 Poché 9<3<34 5 3 45 47 5 9 3 34 45 47 50 Poché 3 3 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 37/59 Esempo Rcerca dell elemeto 45. Rcerca dell elemeto 85 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 38/59 Isermeto Poché l operatore d sermeto apporta ua modfca alla struttura dell albero, dobbamo essere cert che tale operazoe vega eseguta el rspetto delle propretà d u Albero -3. Come vedremo, c garatremo la pea compatbltà co tal propretà eseguedo, qualora ecessaro, ua sere d operazo volte a requlbrare la dstrbuzoe altezza de od. Per serre u Albero -3 u uovo odo, u, avete chave k, rcerchamo prma l odo tero che potrebbe rappresetare l gusto getore d u. Damo luogo a tale operazoe applcado medesm pass vst ell algortmo d rcerca d ua chave. Applcheremo la rcerca sulla chave k e c fermeremo solo quado gugeremo ad u odo tero avete altezza h-. Sa qud v l odo che potrebbe rappreseta l gusto getore del odo da serre, u. S possoo verfcare seguet due cas:. v ha due fgl, tal caso l uovo odo verrà serto come fglo d v, facedo attezoe a mateere alterato l orde crescete delle fogle.. v ha tre fgl: tal caso o è possble aggugere altr fgl a v. Rcorramo pertato alla tecca della suddvsoe splt): creamo u uovo odo w avete come fgl le due fogle mme d v, poamo w come fglo del padre d v e aggoramo le formazo coteute v. Ife, se l padre d v aveva precedeza due fgl c fermamo, altrmet eseguamo uovamete lo splt sul padre d v. Applcheremo quest ultmo passo ache al padre d v e così ma mao che rsalamo l albero. Alber -3, operazoe d splt Splt Nodo v) { Nodo w Sa v l -esmo fglo d v, 4 _ } po v v fgl d w se padre v è NULL ) allora { crea u uovo odo po sa v che w fgl d } altrmet { po ache w come fglo del padre d v se padre d v ha quattro fgl ) allora splt padre d v) Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 39/59 Aalzzamo la complesstà dell operazoe d sermeto. Essa s svluppa essezalmete ell applcazoe d due macro pass: rcerca del gusto getore e collocazoe del uovo odo. La rcerca del gusto getore, come abbamo gà vsto, ha ua complesstà par a Oh). Aalzzamo pertato la collocazoe del uovo odo. Valutamo l caso pessmo: dobbamo dar luogo ad ua successoe d operazo d splt. Se cosderamo che u operazoe d splt ha complesstà costate rspetto al umero d od preset ell albero, O), ed l umero d operazo d splt è al massmo par all altezza dell albero 4, h, possamo dre che l sermeto el caso pessmo ha ach esso complesstà par a Oh), coè cosderazoe del teorema prcpale par a Olog ). Esempo Iseramo la chave 6 all tero del seguete Albero -3 Il gusto getore è rappresetato dal odo coteete valor e 5. 6<9 9 34 5 3 45 47 5 6 9 3 34 45 47 50 Esso però gà possede tre fgl. Dobbamo qud rcorrere ad uo splt. 4 Ua volta arrvat alla radce c fermamo comuque Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 40/59 Nuovo odo serto 9 34 SPLIT 6 3 45 47 Veccho odo 5 6 9 3 34 45 47 50 La radce dell albero possede, a questo puto, quattro fgl. Dobbamo dar luogo ad ua ulterore operazoe d splt Nuovo odo serto Nuovo odo serto 9 5 SPLIT 34 Veccho odo 6 3 45 47 5 6 9 3 34 45 47 50 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 4/59 Esempo Iseramo la chave 44 all tero del seguete Albero -3. Il gusto getore è rappresetato dal odo coteete valor 45 e 47 Il odo ha gà tre fgl, rcorramo allo splt. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 4/59 Cacellazoe Smlmete all operatore d sermeto, quello d cacellazoe apporta ua modfca alla struttura dell albero. Pertato, al fe d garatre l rspetto delle propretà d u Albero -3 eseguremo, ache questa volta, ua sere d operazo volte a requlbrare la dstrbuzoe altezza de od. Idchamo co v l odo da elmare, s possoo verfcare seguet tre cas:. v è radce, rmuovamo l odo otteedo u albero vuoto. l padre d v ha tre fgl, rmuovamo semplcemete v e aggoramo le formazo coteute e od preset lugo l percorso che collega l padre d v e la radce; 3. l padre d v ha due fgl. Se l padre d v è radce del sottoalbero s elmao sa v che l padre d v. Defamo tal modo u albero la cu radce sarà l altro fglo del padre d v. Altrmet, sa w l padre d v, eseguamo u cotrollo su fratell d w. S possoo verfcare seguet due sottocas: a. w ha u fratello sstro destro) avete tre fgl. Sa z tale odo. Spostamo l fglo pù a destra sstra) d z rededolo fglo sstro destro) d w. b. essu fratello d w ha tre fgl. I tal caso eseguamo la procedura d fusoe fuse): spostamo l rmaete fglo d w poedolo fglo d uo de fratell d w ed fe rchamamo la cacellazoe su w. Aalzzamo la complesstà dell operatore d cacellazoe. Il caso pessmo è rappresetato dal caso 3b, dobbamo dar luogo ad u operazoe d fusoe che potrà geerare a sua volta ua successoe d operazo d cacellazoe. Cosderado che l operazoe d fusoe, ache se laborosa, ha ua complesstà costate el umero d od dell albero, O), ed oltre che l umero massmo d operazo d cacellazoe da esegure successoe è par all altezza dell albero, possamo affermare che l operatore d cacellazoe ha ua complesstà par a Olog), coè cosderazoe del teorema prcpale par a Olog ). Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 43/59 Esempo Cosderamo l seguete Albero -3. Elmamo la chave 50. 34 9 50 3 45 47 67 80 9 3 34 45 47 50 67 80 85 Poché l padre del odo coteete la chave 50 possede tre fgl, elmamo semplcemete l odo ed otteamo qud l seguete Albero -3. 34 9 47 3 45 67 80 9 3 34 45 47 67 80 85 Elmamo ora la chave 47. Pochè l padre del odo coteete la chave 47 ha u fratello co tre fgl, quello avete valor 67 e 80, spostamo l fglo pù a sstra d quest ultmo, 67, al posto del odo 47. Otteamo l seguete albero. 34 9 67 3 45 80 Spostamo l odo 9 3 34 45 67 67 80 85 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 44/59 Elmamo ora la chave. Pochè l padre del odo coteete la chave o possede fratell avet tre od dobbamo rcorrere prma ad ua fusoe otteedo qud l seguete albero Ed fe dobbamo rchamare la cacellazoe sul odo rmasto prvo d fgl Ora poché l odo da cacellare ha u padre che o possede fratell co tre fgl dobbamo rcorrere uovamete prma ad ua fusoe. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 45/59 Ed fe rchamare la cacellazoe sul odo rmasto prv d fgl. Il padre del odo da cacellare è ua radce per cu elmamo sa l odo che l padre, otteedo qud l seguete Albero -3 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 46/59 Esempo Cosderamo l seguete Albero -3. Elmamo la chave. Poché l padre del odo coteete la chave o ha fratell avet tre fgl dobbamo rcorrere prma ad ua operazoe d fusoe. Ed fe rchamare la cacellazoe sul odo coteete l valore. Sccome l padre del odo da cacellare o possede fratell co tre fgl operamo uovamete ua fusoe Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 47/59 E successvamete la cacellazoe sul odo rmasto prvo d fgl. Otteamo qud l seguete albero -3. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 48/59 7. B-Alber Vedremo questo captolo ua geeralzzazoe degl alber bar d rcerca: la struttura dat B-Albero. Il B-Albero asce dalla ecesstà d dsporre d ua struttura dat che oper al meglo su dspostv d memorzzazoe d massa, cu, al fe d ammortzzare l tempo d lateza dell accesso fsco, le operazo d I/O avvegoo medate la lettura/scrttura d blocch d formazo d dmesoe fssata, le page. Vedremo, fatt, che u B-Albero le formazo del dzoaro soo raggruppate blocch d dat ed oguo d quest blocch rappreseta u odo dell albero. La defzoe d u B-Albero avete od d dmesoe proporzoale al blocco d lettura/scrttura comporta u umero d access mor all utà fsca qualora memorzzamo le formazo del B-Albero all tero de dspostv d memora d massa. U B-Albero, qud, potrebbe rappresetare ua struttura dat valda per l mplemetazoe d u dzoaro quado per la memorzzazoe delle coppe chave,elemeto) faccamo uso d tal dspostv meccac. U esempo d applcazoe pratca de B-Alber è dato dalla metodologa d memorzzazoe delle formazo adottata da Database Server. Defzoe. U B-Albero o vuoto d grado mmo t è u albero cu:. tutte le fogle appartegoo allo stesso lvello;. ella radce soo memorzzate orde crescete u umero d chav par ad uo o al massmo par a t-; 3. tutt od dvers dalla radce, v, soo memorzzate orde crescete u umero d chav Keyv) tal che t- Keyv) t-; 4. og odo tero, v, ha Keyv) fgl; 5. og chave d u odo tero separa le chav de sottoalber del odo, coè dchamo co k v) ua chave qualsas coteuta ello -esmo sottoalbero d v e co Key v) la -esma chave coteuta el odo v s deve avere che: k v) Key v) k v) Key v) Key Keyv) v) k Keyv) v) Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 49/59 S dce che u odo è quas vuoto se ha u umero d chav par a t-. S dce che u odo è peo se ha u umero d chav par a t-. Esempo Segue ua raffgurazoe d u B-Albero d grado t3. 46 3 4 35 50 60 74 5 8 5 8 0 3 5 30 3 40 4 43 45 47 48 49 53 55 57 58 63 65 68 75 76 80 90 Teorema. Sa h l altezza d u B-Albero, T, d grado mmo t. Sa l umero d chav coteute el B-Albero T. S ha che: h log t Dm. U B-Albero, T, d grado t ed altezza h coteete l mor umero possble d chav è u B-Albero cu tutt od soo quas vuot, ossa cotegoo t- chav, e la radce cotee ua sola chave................................................. I tal caso: - l umero d od d T ad altezza zero è ; - l umero d od d T ad altezza uo è due: due fgl della radce; - l umero d od d T ad altezza due è t: t fgl per og fglo della radce; - l umero d od d T ad altezza tre è t*tt Pù geercamete, l umero d od d T ad altezza è, t -. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 50/59 Cosderado ora che og odo possede t- chav e che la radce possede ua sola chave abbamo che l umero d chav preset all tero d T è: key T h ) t ) Sa ora T u geerco B-Albero, d grado t e d altezza h. Abbamo che l umero d chav d T, che dchamo co, è maggore o al massmo uguale al umero d chav d T, che come abbamo assuto rappreseta u B-Albero d grado t ed altezza h coteete l mor umero possble d chav. Qud: t key T ed essedo vera la seguete uguaglaza: otteamo che: t ) h t t h h log t t h t h ) t ) h t 0 h t t h t t ) t t t t h h Vedamo ora le operazo del dzoaro: rcerca, sermeto e cacellazoe. Rcerca Rcerchamo ua chave all tero d u B-Albero medate l applcazoe d ua metodologa smle a quella svluppata per la rcerca d ua chave all tero d u albero baro d rcerca. I u B-Albero la decsoe o sarà pù bara ma Θt)-ara, poché og odo ha u umero d fgl compreso tra t e t. Sa k ua chave da rcercare, avghamo all tero dell albero detfcado per og odo v la pù pccola chave maggore d k, Key v). Se Key v) esste proseguamo ella avgazoe attraversado l sottoalbero T v) radcato v, altrmet proseguamo attraversado l sottoalbero pù a destra radcato v. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 5/59 Esempo Sa cosderato l seguete B-Albero.Rcerchamo la chave 30. 30<46 46 3 4 35 50 60 74 30<35 5 8 5 8 0 3 5 30 3 40 4 43 45 47 48 49 53 55 57 58 63 65 68 75 76 80 90 Rcerchamo la chave 76 46 76>46 3 4 35 50 60 74 76>74 5 8 5 8 0 3 5 30 3 40 4 43 45 47 48 49 53 55 57 58 63 65 68 75 76 80 90 Rcerchamo la chave 56 Rcerchamo la chave 4 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 5/59 Valutamo la complesstà dell operazoe d rcerca. Nel caso peggore scedamo lugo u tero verso del B-Albero, fo a raggugere ua fogla. Il umero d pass da esegure è qud charamete proporzoale co l altezza dell albero: Oh). I vrtù del teorema sopra dmostrato possamo affermare che term d umero d od eseguamo Olog t ) pass d dscesa. Ad og passo d dscesa, dobbamo dar luogo ad u cofroto tra la chave da rcercare e le chav coteute el odo. Facedo leva sull ordameto delle chav, applchamo l algortmo d rcerca bara e realzzamo tale fase co complesstà par a Olog t). Pertato, la complesstà dell tera operazoe d rcerca è: Olog t )*Olog t) Olog t * log t) applcado la regola d trasformazoe della base d u logartmo abbamo Olog ). Isermeto Iseramo sempre ua uova chave u B-Albero all tero d ua fogla. La procedura d sermeto rchede pertato dapprma l detfcazoe del odo fogla che potrebbe rappresetare l gusto cotetore. Attuamo questa fase applcado la medesma metodologa d avgazoe vsta ell operazoe d rcerca d ua chave. Sa ora v l odo fogla che rappreseta l gusto cotetore. Possamo cotrare seguet due cas: - v è o peo, v ha meo d t- fgl e pertato seramo semplcemete la uova chave all tero del odo mateedo però alterate le propretà d ordameto. - v è peo, v possede gà t- chav. No possamo semplcemete aggugere u altro fglo. Dobbamo rcorrere pertato alla tecca della suddvsoe splt): creamo u uovo odo w, seramo esso le prme t- chav d v ed fe promuovamo la t-esma chave d v spostadola all tero del padre d v. Le rmaet t chav cotuerao ad apparteere al odo v. Se l padre d v o era precedetemete peo, l operazoe d sermeto s arresta. Altrmet rchamamo l operazoe d splt sul padre d v. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 53/59 Fgura - Raffgurazoe dell operazoe d splt u B-Albero d grado mmo 3 Valutamo la complesstà dell operazoe d sermeto. La rcerca del cotetore fogla e l sermeto della chave esso ha, sulla base d quato detto ell aals dell operazoe d rcerca d ua chave, complesstà el caso pessmo par a Olog ). Relatvamete alle operazo d rprsto della struttura dell albero osservamo dapprma che ua sgola operazoe d splt ha baalmete complesstà costate rspetto al umero delle chav preset ell albero. Sulla base d questa osservazoe possamo affermare che el caso pessmo, esecuzoe delle operazo d splt per og odo cotrato lugo l cammo che collega la fogla e la radce, la complesstà dell tera operazoe d rprsto della struttura dell albero è Oh), ossa Olog t ). Essedo t u valore maggore o al massmo uguale a due, abbamo che l operazoe d sermeto el caso pessmo ha ua complesstà par a Olog ). Esempo Sa cosderato l B-Albero d grado mmo t raffgurato basso. 46 3 4 35 50 60 74 5 8 5 8 0 5 30 3 40 4 43 47 48 49 53 55 57 63 65 68 75 76 80 Iseramo la chave Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 54/59 46 3 4 35 50 60 74 5 8 5 8 0 5 30 3 40 4 43 47 48 49 53 55 57 63 65 68 75 76 80 Fogla Cotetore La fogla cotetore o era precedetemete pea. L tera operazoe s rsolve qud u semplce sermeto della chave all tero della fogla cotetore. Iseramo la chave 4. 46 3 4 35 50 60 74 5 8 4 5 8 0 5 30 3 40 4 43 47 48 49 53 55 57 63 65 68 75 76 80 Fogla Cotetore Questa volta la fogla cotee u umero d chav o lecte:4 > t- 3. Dobbamo pertato rcorrere allo splt del odo. Il odo all tero del quale è stata collocata la chave promossa cotee a sua volta u umero d chav o lecte. Rcorramo uovamete allo splt. Chave promossa Nuovo odo 5 46 3 4 35 Veccho odo 50 60 74 5 8 4 8 0 5 30 3 40 4 43 47 48 49 53 55 57 63 65 68 75 76 80 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 55/59 Iseramo la chave 3 La fogla cotetore possede u umero d chav o pù lecto. Rcorramo alla operazoe d splt. 5 46 Chave promossa 3 4 30 35 50 60 74 5 8 4 8 0 5 3 3 40 4 43 47 48 49 53 55 57 63 65 68 75 76 80 Nuovo odo Veccho odo Il odo cu seramo la chave promossa cotua a possedere u umero d chav lecto. L operazoe d sermeto terma. Iseramo ora la chave 5. Rcorramo uovamete alla operazoe d splt. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 56/59 L operazoe d sermeto della chave 5 acora o terma poché s rede ecessara ua ulterore operazoe d splt da applcare sul odo tero cu abbamo serto la chave promossa. Cacellazoe Quado cacellamo u odo da u B-Albero dobbamo verfcare se al terme dell operazoe l albero cotua a possedere le propretà elecate ad zo captolo. I caso o affermatvo, smlmete agl alber -3, s potrebbe redere ecessara l esecuzoe della procedura d fusoe. Idchamo co v l odo coteete la chave da cacellare. S possoo verfcare seguet cas:. v è u odo tero, tal caso cerchamo l odo coteete l predecessore d k: predk). Dopodché copamo predk) all tero d v ed al posto d k e rchamamo la cacellazoe del predk) che è scuramete coteuto ua fogla. Rcadamo, pertato, questa secoda cacellazoe uo de cas a segure;. v è ua fogla o quas vuota, tal caso v cotee almeo t chav. Pertato cacellamo semplcemete la chave posta all tero d v; 3. v è ua fogla quas vuota, tal caso v cotee t- chav. Esamamo fratell d v. S possoo verfcare seguet sottocas: a. l fratello sstro destro) d v è o quas vuoto. Iseramo la chave massma mma) del fratello sstro destro) d v come chave separatrce de due od all tero del odo padre. Ife seramo la chave separatrce del padre come elemeto mmo massmo) d v. b. tutt fratell d v soo quas vuot. Copamo all tero d uo de fratell d v, che dchamo co w, e rspettado l orde crescete delle chav, la chave separatrce de od v e w e tutte le chav coteute v fuse). Ife cacellamo l odo v. I tal modo l padre d v perde ua chave e cotemporaeamete perde ache u fglo, la propretà 4 è rspettata. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 57/59 L operazoe d cacellazoe terma se l padre d v o dveta u odo quas vuoto. Altrmet essa cotua co la propagazoe verso l alto dell operazoe d fuse. Compedo ua aals smle a quella fatta per l operazoe d sermeto e cosderado che l operazoe d fusoe ache se laborosa è comuque costate rspetto al umero d chav preset el B-Albero, possamo affermare che la complesstà dell tera procedura d cacellazoe è par a Olog ). Esempo Cosderamo l B-Albero d grado t3 d seguto raffgurato. Procedamo ella cacellazoe della chave35. Il predecessore d 35 è la chave 3. Per cu sosttuamo la chave 35 co la chave 3 e cacellamo la chave 3 presete ella fogla. 46 3 4 3 50 60 74 5 8 5 8 0 3 30 3 40 4 44 47 48 49 53 55 57 58 63 65 68 75 76 80 90 Fratello o quas vuoto Chave da cacellare Il odo fogla coteete la chave 3 possede u fratello o quas vuoto. Promuovamo qud la chave pù grade presete tale odo, 3, e retrocedamo la chave 4 Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 58/59 Cacellamo ora la chave 0. Il odo coteete tale chave è o quas vuoto. L operazoe d cacellazoe cosste qud ua semplce rmozoe del valore. Cacellamo la chave 30. 46 3 3 3 50 60 74 5 8 5 8 4 30 40 4 44 47 48 49 53 55 57 58 63 65 68 75 76 80 90 Chave da elmare Il fratello destro del odo coteete la chave 30 è o quas vuoto, pertato promuovamo la chave mma del odo o quas vuoto e retrocedamo l separatore de due od. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI
Problema della Rcerca Pag. 59/59 46 3 3 40 Chave promossa 50 60 74 5 8 5 8 4 3 4 44 47 48 49 53 55 57 58 63 65 68 75 76 80 90 Chave retrocessa Cacellamo la chave 4 Il odo coteete la chave 4 ha etramb fratell quas vuot. Cosderamo l fratello sstro e procedamo ella fusoe. Damo luogo qud ad ua retrocessoe della chave separatrce de due od e spostamo le chav del odo da elmare all tero del fratello sstro. Apput Laboratoro d Algortm e Strutture Dat Prof. Maurzo GIACCI