CAP-241–ComputaçãoAplicadaI Aula9–ÁrvoresBalanceadas Dr.GilbertoRibeirodeQueiroz SãoJosédosCampos,19deMaiode2016 RelembrandodaAula6... ÁrvoresBinárias:Propriedades • Númeromáximodenósnonívelk: k−1 2 ,k > 0 • Númeromáximodenósdeumaárvore bináriadealturah: h ∑2 k=1 k−1 h = 2 −1, h > 0 ÁrvoresBinárias:Propriedades • Aalturadeumaárvorebináriaplenacomn elementosé: Obs.:podemosdizertambém,que h = log 2 (n +1) aalturadeumaárvorebinária qualquercomnelementosseráno mínimolog2(n+1). • Seumaárvoreplenapossuinelementosna folha,onívelkdasfolhasserádadopor: k = (log 2 n) +1 ÁrvoresBinárias:Propriedades • Umaárvorebináriacomnnósinternospossui n+1folhas. • DeacordocomZiviani(2005),emumaárvore depesquisarandômica,otempoesperado pararecuperarumelementoqualqueré aproximadamente: 1.39 log 2 n Observação • Semcuidadosespeciais,umaárvorebinária podesetornardesbalanceada. • Issosignificaquenocasodeumaárvorecom nelementosasoperaçõesdeinserção, remoçãoebuscaterãotempoproporcionala O(n). ÁrvoresBináriasdePesquisa Balanceadas ÁrvoresBin.Pesq.Balanceadas insert(5) 13 9 8 11 16 11 8 17 5 16 9 13 17 ÁrvoresBin.Pesq.Balanceadas • ÁrvoresCompletamenteBalanceadas: – Ocustoparamanteraárvorecompletamente balanceadaapóscadainserçãoouremoçãoé muitoalto=>O(n). – Umasoluçãodebomcompromisso,consisteem manteraárvorequasebalanceada,deformaa obtermosoperaçõesdeinserção,remoçãoe buscacombonstempos. ÁrvoresAVL Adelson-VelskyeLandis(1962) ÁrvoresAVL • ÁrvoreBinária. • Todoelementodaárvorepossuioquechamamosde fatordebalanceamento: f = h(left-subtree) − h(right-subtree) • Ofatordebalanceamentodetodoelementodeverá ser-1,0ou1: – Istosignificaqueadiferençadealturaentreasduassubárvoresdeumelementodiferedenomáximo1. – Seacontecerdessadiferençasermaiordoque1, realizamosumaoperaçãodere-balanceamento. ÁrvoresAVL:FatordeBalanceamento -1 1 1 0 0 1 0 0 -1 0 0 EssaárvoreéumaAVL. -1 0 EstaárvoreéumaAVL? EstaárvoreéumaAVL? -1 1 2 1 0 0 0 -1 0 0 EssaárvoreNÃOéumaAVL. -1 0 ÁrvoresAVL:Inserção -1 18 1 1 11 0 0 8 0 5 78 16 0 9 1 -1 65 90 -1 0 32 70 0 Inserir(13) 40 0 98 ÁrvoresAVL:Inserção -1 18 1 10 11 78 01 0 8 0 5 16 0 0 9 13 1 -1 65 90 -1 0 32 70 0 Inserir(13)=>OK 40 0 98 ÁrvoresAVL:Inserção -1 18 1 1 11 0 0 8 0 5 78 16 0 9 1 -1 65 90 -1 0 32 70 0 40 Inserir(45) 0 98 ÁrvoresAVL:Inserção -1 18 1 1 11 0 0 8 0 5 78 16 0 9 1 -1 65 90 -2 -1 0 32 70 0-1 40 Inserir(45):DesbalanceamentoRR 0 45 0 98 ÁrvoresAVL:Inserção -1 18 1 1 11 0 0 8 0 5 78 16 1 -1 65 90 0 0 9 0 40 0 32 Inserir(45):RotaçãoRR 70 0 45 0 98 ÁrvoresAVL • Apósumainserção,aalturadeumasub-árvore sópodecrescerde1,ouseja,umnósópoderá terfatordebalanceamentonointervalo[-2,2] apósainserçãodeumnovoelemento. • Nopiorcasoore-balanceamentoaongiráaraiz, masapenasnocaminhoatéafolhaondehouvea inserção=>O(log2n): – Operaçõesderotação:O(1). ÁrvoresBinárias:Rotações RotaçãoEsquerda A RotaçãoDireita B B A Z X Y Z X Y ÁrvoresBinárias:RotaçãoEsquerda Node*RotacionarEsquerda(Node*a) { Node*b=a.right; a.right=b.left; b.left=a; returnb;//novonóparent } ÁrvoresBinárias:RotaçãoDireita Node*RotacionarDireita(Node*b) { Node*a=b.left; b.left=a.right; a.right=b; returna;//novonóparent } ÁrvoresAVL:CasoEsquerda-Esquerda 1→2 0 65 0→1 40 0 32 40 rotação-direita 0 32 0 65 ÁrvoresAVL:CasoEsquerda-Direita 1→2 2 65 65 rotação-esquerda 0→-1 1 40 45 0 0 40 0 45 45 0 40 0 65 rotação-direita ÁrvoresAVL:CasoDireita-Direita -1→-2 40 0 0→-1 45 45 rotação-esquerda 0 0 50 40 0 50 ÁrvoresAVL:CasoDireita-Esquerda -1→-2 -1→-2 65 65 0→1 rotação-direita 0→-1 67 70 0 0 67 70 0 67 0 65 0 70 rotação-esquerda ÁrvoresAVL • AalturadeumaárvoreAVLcontendonelementosénomáximo: 1.44 log 2 (n + 2) • AbuscaemumaAVLocorredeformasemelhanteàdaárvore bináriadepesquisa. • Aoperaçãoderemoçãotambémconsideraofatorde balanceamentodosnós. • Quandoosnósdaárvorepossuiumponteiroparaoancestral(pai ouparent),asoperaçõesderotaçãoprecisamconsiderareste elemento. Árvores2-3-4 Sedgewick(1988) Árvores2-3-4 • Umaárvore2-3-4éumaárvorecomraizcom asseguintespropriedades: – Todonópossui2,3ou4descendentes. – Todasasfolhaspossuemamesmaaltura. raiz 18 40 90 9 16 32 67 96 Árvores2-3-4 • Dadasaspropriedadesdeumaárvore2-3-4: – Lema:umaárvore2-3-4comnfolhaspossui altura(log2n)+1. – Amaioralturadaárvoreocorrequandocadanó possuiomenornúmerodedescendentes:2. – Lembrando,onívelkdosnósfolhaédadopor: k = (log 2 n) +1 – Podemosconcluirqueparaumaárvore2-3-4: h ≤ (log 2 n) +1 Obs.:Lembrem-sequenossaalturafoidefinidacomsendo1paraaraiz. BuscaemÁrvores2-3-4 BuscaemÁrvores2-3-4 • Abuscaemárvore2-3-4ésimilaràbuscaem árvoresbináriasdepesquisa,excetoque agoratemosváriosintervalosemcadanó: Ex:procurarchave67 raiz 18 40 90 9 16 32 67 96 InserçãoemÁrvores2-3-4 Abordagembouom-up InserçãoemÁrvores2-3-4:bouom-up • Começandodaraiz,procuramosumnófolhaparainseriranovachave. • Seonófolhafordoopo2,acrescentamosanovachave,tornandoonódo opo3.Deformaanáloga,seonófolhafordoopo3,acrescentamosa novachave,tornandoonódoopo4. • Seonófolhafordoopo4,ouseja,estácompletamentecheio,fazemoso seguinte: – Dividimosonófolhadoopo4emdoisnósfolhadoopo2epassamosumade suaschaves(ex:adomeio)paraonópai. – Destaforma,umadasfolhasteráespaçoparaacomodaranovachave. – Seonópaifordoopo2ou3,eleacomodaráanovachavevindadafolhaeo novonófolhadescendente. – Noentanto,seelefordoopo4,teráqueserdivididodamesmaformaqueo nófolha,eseupaiteráqueserajustado.Esteprocessopodeseguiratéaraiz. Ex:inserirchave6 18 40 90 9 16 32 67 96 18 40 90 6 9 16 32 67 96 Ex:inserirchave8 18 40 90 6 9 16 32 67 96 40 9 6 8 18 16 90 32 67 96 InserçãoemÁrvores2-3-4 Abordagemtop-down InserçãoemÁrvores2-3-4:top-down • Duranteadescidanaárvoreparaainserção,vamosgaranor quenenhumpaideumnósendovisitadosejadoopo4,isso significaque: – Todavezquepassarmosporumnódoopo4,duranteadescidaparaa inserçãodanovachave,fazemosadivisãodonóopo4. – Porqueadivisãofunciona? • Doisnósdoopo2possuemomesmonúmerodeponteirosqueumnódo opo4,destaformanenhumamudançaparabaixodonósendodivididoé necessária. • Umnódoopo3nãopodeseralteradoemumnódoopo4apenas adicionandoumanovachave,outroponteiroénecessário.Nestecaso, umnódoopo4filhodestenódoopo3podeserdivididoemdoisdoopo 2eonódoopo3podesetransformaremumnódoopo4. • Essastransformaçõesirãogaranorqueaochegarmosnumafolhadoopo 4,elapoderáserdivididaeonópaicomportaráessadivisão. InserçãoemÁrvores2-3-4:top-down • Napráoca,nossadescidanaárvoreparaa inserçãopoderárealizarasseguintes transformações: (a) (b) Porqueaárvorepermanece balanceada? Aalturadaárvoresósemodifica quandoonóraizédividido,deforma queaalturadetodososnósaumenta aomesmotempo! Árvores2-3-4:Considerações • Asárvore2-3-4asseguramobalanceamento. • Sóquenapráoca,devidoàestruturamaiscomplexadosnós,sua implementaçãopodenãoresultaremumbomcompromisso: – SegundoSedgewick(1998),lidarcomosponteirosextraspodegerar umaimplementaçãopiorqueadeumaárvorebináriadepesquisa. • Existeumarepresentaçãomaissimplesdasárvores2-3-4:árvores red-black. • Alémdisso,asÁrvores2-3-4sãoumcasoparoculardeÁrvores-B: – Árvore-Bdeordem4 ÁrvoresRed-Black RudolfBayer(1972) GuibaseSedgewick(1978) ÁrvoresRed-Black • Definiçãopormeiodacoloraçãodosnós: – ÁrvoreBinária. – Cadanóécoloridodevermelhooupreto. – Araizetodososnósexternossãocoloridosdepreto. – Nenhumcaminhodaraizaumnóexternopossuidoisnós coloridosdevermelhodeformaconsecuova: • Seumnóévermelho,osdoisdescendentessãopretos! – Todososcaminhodeumnóatéosnósexternosdescendentes possuemomesmonúmerodenóspretos. Obs.:Todososnósquenãosãoexternossãoconsideradosinternos. ÁrvoresRed-Black ÁrvoresRed-Black • Vamosdefinirbh(x)comosendoonúmerodenós pretosencontradosemqualquercaminhosimplesa parordonóx,nãoconsiderandoopróprionóx,até umnóexternodescendentedex. • Aalturadenóspretosparaumnóexternoézero. X bh(Y)=1 Y bh(X)=2 Z bh(Z)=1 ÁrvoresRed-Black • Asub-árvoredeumnóxqualquercontém bh( x ) pelomenos:nósinternos. 2 −1 • Vamosprovarisso: – Ovalordebh(x)ézeroapenasseonóxfor externo: 0 bh(x) = 0 ⇒ 2 −1 = 0 ÁrvoresRed-Black • Agora,vamosconsiderarocasodeumnóx internocombh(x)posiovoquepossuidois nósfilhos: – Nocasodonófilhoservermelhooseubhseráo mesmodex:bh(x). – Nocasodonófilhoserpreto,oseubhserá1a menos,ouseja,seráiguala:bh(x)-1. ÁrvoresRed-Black • Comoaalturadeumnófilhodexémenordo queaalturadopróprionóx,podemos concluirquecadanófilhopossuiaomenos: 2 bh( x )−1 −1 nós internos • Destaforma,asub-árvorederaizx,conterá: (2 bh( x )−1 ∴2 bh( x ) −1) +1+ (2 −1 bh( x )−1 −1) nós internos ÁrvoresRed-Black • Agora,vamosmostrarqualéalturadeumaÁrvoreRed-Black. • Sejahaalturadaárvore. • Deacordocomapropriedade:“Seumnóévermelho,osdois descendentessãopretos!”,temosque: – pelomenosmetadedosnósemqualquercaminhosimplesaparorda raizatéumnóexterno,nãoincluindoaprópriaraiz,deveserpreto. – Logo,obh(raiz)deveseraomenosh/2. h 2 n ≥ 2 bh(raiz) −1 ⇒ n ≥ 2 −1 h log 2 (n +1) ≥ ∴h ≤ 2 log 2 (n +1) 2 ÁrvoresRed-Black • AalturadeumaÁrvoreRed-Blackcontendonelementos: log 2 (n +1) ≤ h ≤ 2 log 2 (n +1) • Essaalturaégaranodapelasrestriçõesdecordosnós manodosentrearaizetodasasfolhas. • AbuscaemumaÁrvoreRed-Blackocorredeforma semelhanteàdaárvorebináriadepesquisa. • Asoperaçãodeinserçãoeremoçãotambémdevem consideraracoloraçãodosnós,realizandooperaçõesde rotaçãoquandonecessário. ÁrvoresRed-Black • Definiçãopormeiodacoloraçãodasarestas: – ÁrvoreBinária. – Osponteirosparaosnósfilhossãocoloridodevermelhoou preto. – Oponteiroparaumnóexternoécoloridodepreto. – Nenhumcaminhodaraizaumnóexternopossuidoisponteiros coloridosdevermelhodeformaconsecuova. – Todososcaminhodaraizaumnóexternopossuemomesmo númerodeponteirospretos. Árvoresred-black Árvores-B RudolfBayereEdwardM.McCreight (1972) ÁrvoresBinárias:Considerações • Asárvoresbináriassãousadas,principalmente,emproblemasque cabemcompletamenteemmemóriaprincipal(RAM). • Nocasodegrandesbancosdedadosamemóriaprincipalpodenão sersuficienteparaarmazenartodososnósdaárvorequecompõeo índice.Porisso,écomumarmazenarmosaestruturadeárvore (índice)emdisco. • Nessecaso,devemosuolizarumarepresentaçãoqueprocure minimizaroacessoadiscoparaacessoaoselementosdaárvore. • Aformamaiscomum,emaislargamenteempregadapelos sistemasdebancosdedadoscomerciaisatuais,éarepresentação doíndiceatravésdeumaÁrvore-B+. Armazenanento:DiscoMagnéoco Fonte:ElmasrieNavathe(2006) Armazenanento:DiscoMagnéoco Fonte:ElmasrieNavathe(2006) OperaçõesdeAcessoemDiscos • UnidadebásicaparaoperaçõesdeE/Semdisco:bloco. • Quandoumdadoélidodeumdisco,oblocointeiroquecontémesse dadoélidoetransferidoparaamemóriaprincipal. • Damesmaforma,dadossãoescritosemumaáreadememória(buffer) atéquecompletemumbloco,quandoentãosãotransferidosparaodisco. • Seumdadoésolicitadodeumdisco: – odadoprecisaserlocalizado – acabeçaprecisaserposicionadasobreatrilhadodiscoondeodadoreside – eodiscoprecisagirardemodoqueoblocointeiropassesobacabeçapara sertransferidoparaamemória. OperaçõesdeAcessoemDiscos • Portanto: – tempodeacesso=tempodeprocura(movimentomecânicoda cabeça)+tempoderotação(meiavolta,emmédia)+tempode transferência • Exemplo: – paratransferir5KBdeumdiscoqueexige40msparalocalizaruma trilha,trabalhaa3000rpmetemtaxadetransferênciadedadosde 1000KB/s: – tempo=40ms+0.5rotação/(50rps)+5KB/(1000KB/s)= =40ms+10ms+5ms=55ms • MemóriaPrincipal: – ordemde10-9segundos(106vezesmaisrápido). Árvores-B • Cadanópodeconterkdescendentesek–1chaves,com: ⎡M ⎤ m ≤ k ≤ M, onde m = ⎢ ⎥ ⎢2⎥ • OfatorMéconhecidocomoordemdaárvoreoufatorde ramificação(branchfactoroufanout). • Seaárvorepossuirmaisdeumníveldeprofundidade,a raizdeveterpelomenos2filhos. • Todasasfolhasdaárvoreestãonomesmonível. • Aschavesemcadanódevemencontrar-seemordem crescente. • Osnóssãoconhecidostambémcomopáginas. Árvores-B:FormadosNós • Exemplo: – Árvore-Bdeordem4 Árvores-B:Exemplo raiz AlturadeumaÁrvore-B • UmaÁrvore-Bémaisprofunda(oupossuiamaior altura)quandotodonópossuiomenorfatorde ramificação,istoé: m = ⎡⎢ M 2⎤⎥ • Nestecaso,teríamosemcadanóaseguinte quanodadedechaves: nível 0: 1 chave nível 1: 2(m −1) chaves nível 2: 2m(m −1) chaves nível 3: 2m 2 (m −1) chaves ... nível h: 2m h−1 (m −1) chaves AlturadeumaÁrvore-B 1+ 2(m −1) + 2m(m −1) + 2m 2 (m −1) +... + 2m h−1 (m −1) 2 1+ 2(m −1) + 2(m −1)m + 2(m −1)m +... + 2(m −1)m 2 h−1 1+ 2(m −1)(1+ m + m +... + m ) 1+ 2(m −1)(m 0 + m1 + m 2 +... + m h−1 ) h−1 h⎞ ⎛ 1− m i h 1+ 2(m −1)∑ m = 1+ 2(m −1) ⎜ = 2m −1 ⎟ ⎝ 1− m ⎠ i=0 h−1 AlturadeumaÁrvore-B • Issosignificaqueonúmerodechavesserá: n ≥ 2m h −1 • Ouseja: n +1 ≥ mh 2 ⎛ n +1 ⎞ h log m ⎜ ⎟ ≥ log m m ⎝ 2 ⎠ ⎛ n +1 ⎞ ∴h ≤ l og m ⎜ ⎟ ⎝ 2 ⎠ BuscaemÁrvores-B • ParaumaÁrvore-Bdealturah,umabusca porumachaveiráexaminarnomáximoh+1 nós. • Exemplo: – SejaumaÁrvore-BdeordemM=200,onde iremosmanipular2.000.000chaves: ü m=100eh≤log100((2.000.000+1)/2)≤3 ü Portanto,encontrarumachavenessaárvoreexige,no piorcaso,avaliarmoschavesem4nós. ReflexodaAlturadasÁrvores-B • PodemosconcluirqueparaM suficientementegrande,hserápequeno mesmoqueexistaumgrandenúmerode chavesnaárvore,conformetabelaabaixo. • Obviamente,deveexisorumbalanceamento daordemdaárvore.Vocêjásabecomo definirM? ConsideraçõesFinais ConsideraçõesFinais • AsÁrvoresBináriasdePesquisaforamdescobertasnofinal dosanos50. • AclassedeárvoresbalanceadasconhecidascomoAVL foraminventadasporAdelson-VelskyeLandisem1962. • Em1970,JohnE.Hopcro~criououtraclassedeárvores balanceadas,asÁrvores2-3. • Em1972,BayereMcCreight(1972)introduziramas Árvores-B(B-Trees),umageneralizaçãodasÁrvores2-3. ConsideraçõesFinais • AsÁrvores2-3-4,descritasporSedgewick(1988),são umcasoparoculardasÁrvores-Bdeordem4. • AsÁrvores-Bforammuitoimportantesparaaindústria debancosdedados.PraocamentetodososSGBDs,dos anos70atéhoje,implementamumavariaçãodas Árvores-Bcomoprincipalmétododeindexação: – Relacionais:MySQL,PostgreSQL,Oracle,Microso~SQL Server – Não-Relacionais:ApacheCouchDB,MongoDB,Oracle BerkeleyDB,OrientDB,Neo4J,... ConsideraçõesFinais • AsÁrvoresRed-BlackforaminventadasporBayer (1972),comonomede“symmetricbinaryB-trees”. • Em1978,GuibaseSedgewickpublicaramumtrabalho caracterizandoaalturadasárvoresdescritasporBayer eintroduziramaconvençãodenomesparacoloração red-black. • AsÁrvoresRed-Blacksãomuitouolizadasnapráoca: – Java:java.uol.TreeMap – C++:STL–set,muloset,mapemulomap ConsideraçõesFinais • Temosváriasoutrasclassesdeárvores balanceadas: – Splaytrees(SleatoreTarjan,1985). – AAtrees(Andersson,1993) – T-tree(LehmaneCarey,1986) – ... • AlgunsSGBDs,conhecidoscomoSGBDinmemory,uolizamumaárvorebináriachamada T-tree: – EXtremeDB,MySQLCluster,OracleTimesTen. ConsideraçõesFinais • AlémdasÁrvoresBináriasdePesquisa BalanceadaseasÁrvores-B,existemvários outrosoposdeárvores: – radix-treeoutrie(retrieval). – Quad-tree – R-trees – k-d-trees – BSP-trees – Intervaltrees – ... ReferênciasBibliográficas ReferênciasBibliográficas • CORMEN,T.H.;LIESERSON,C.E.;RIVEST,R.L.; STEIN,C.IntroducYontoAlgorithms.2ªEdição. MitPress,2001. • ELMASRI,R.;NAVATHE,S.B.Fundamentalsof DatabaseSystems.5ªEdição.Pearson/Addison Wesley,2006.1168p. • HOROWITZ,E.;SAHNI,S.;RAJASEKARAN,S. ComputerAlgorithms.1ªEdição.Computer SciencePress,1997.769p. ReferênciasBibliográficas • SEDGEWICK,R.Algorithms.2ªEdição. Addison-Wesley,1988.660p. • ZIVIANI,N.ProjetodeAlgoritmos:com implementaçõesemPASCALeC.2ªEdição. EditoraThomson,2005.552p. ReferênciasBibliográficas • ADELSON-VELSKII,G.M.;LANDIS,YE.M.Analgorithm fortheorganizaYonofinformaYon.Dokl.Akad.Naulc SSSR146(1962),263-266(Russian),Englishtranslaoon inSovietMath.Dokl.3(1962),1259-1262. • BAYER,R.;MCCREIGHT,E.OrganizaYonand maintenanceoflargeorderedindexes.Acta Informaoca,v.1,n.3,set.1972,pp.173-189. • BAYER,R.SymmetricbinaryB-Trees:Datastructure andmaintenancealgorithms.ActaInformaoca,v.1,n. 4,dez.1972,pp.290-306. ReferênciasBibliográficas • NIEVERGELT,J.BinarySearchTreesandFile OrganizaYon.ACMCompuongSurveys,v.6,n.3, set.1974,pp.195-207. • GUIBAS,L.J.;SEDGEWICK,R.AdichromaYc frameworkforbalancedtrees.Annual SymposiumonFoundaoonsofComputerScience, 1978,pp.8-21. • COMER,D.UbiquitousB-Tree.ACMCompuong Surveys,v.11,n.2,jun.1979,pp.121-137. ReferênciasBibliográficas • Sleator,D.D.;Tarjan,R.E.Self-AdjusYngBinary SearchTrees.JournaloftheACM,v.32,n.3, 1985,pp.652–686. • HEGER,D.A.ADisquisiYononThePerformance BehaviourofBinarySearchTreeData Structures.UPGRADE,v.5,n.5,out.2004,pp. 67-75. • ANDERSSON,A.BalancedSearchTreesMade Simple.WADS,1993. ReferênciasBibliográficas • LEHMAN,T.J.;CAREY,M.J.AStudyofIndexStructuresfor MainMemoryDatabaseManagementSystems.In Proceedingsofthe12thInternaoonalConferenceonVery LargeDataBases(VLDB'86),WesleyW.Chu,Georges Gardarin,SetsuoOhsuga,andYahikoKambayashi(Eds.). MorganKaufmannPublishersInc.,SanFrancisco,CA,USA, 294-303. • LEHMAN,T.J.;CAREY,M.J.Queryprocessinginmain memorydatabasemanagementsystems.InProceedings ofthe1986ACMSIGMODinternaoonalconferenceon Managementofdata(SIGMOD'86),CarloZaniolo(Ed.). ACM,NewYork,NY,USA,239-250.1986.