Arvores M-Vias

49
Alg Alg . e . e Estrutura Estrutura de Dados II de Dados II Prof. Alcides Xavier Benicasa Prof. Alcides Xavier Benicasa Á Á rvores rvores M M - - vias vias e B e B Faculdade Faculdade SEAMA SEAMA Curso de Sistemas de Informa Curso de Sistemas de Informa ç ç ão ão

description

Arvores M-Vias

Transcript of Arvores M-Vias

  • AlgAlg. e . e EstruturaEstrutura de Dados IIde Dados IIProf. Alcides Xavier BenicasaProf. Alcides Xavier Benicasa

    ZZrvores rvores MM--viasvias e Be B

    FaculdadeFaculdade SEAMASEAMACurso de Sistemas de InformaCurso de Sistemas de Informaoo

  • rvores Multivias (Multiway tree)

  • rvores Multivias

    { Em uma rvore binria, cada n possui umitem de dado e pode ter at dois filhos.

    { Se permitirmos o uso de mais itens de dadose filhos por n, o resultado uma rvoreMultivias ou M-vias (multiway tree).

    { Uma Estrutura Multivia com algoritmoeficiente deve considerar:z Tempo de acesso a cada nz Balanceamento da rvore.

    { As rvores 2-3-4, so rvores multivias quepodem ter at quatro filhos e trs itens dedados por n.

  • rvores 2-3-4

    { rvores 2-3-4 so interessantes porvrias razes:z So rvores balanceadas.z Fceis de programar.z Servem como uma introduo para

    rvores B.

  • rvores 2-3-4

    { A figura mostra uma pequena rvore 2-3-4.{ Cada n pode conter um, dois ou trs itens

    de dados.

    50

    30 60 70 80

    10 20 5540 62 64 66 75 83 86

  • rvores 2-3-4{ Um n interno deve sempre ter um filho a

    mais que seus itens de dados.{ Um n folha, ao contrrio, no possui filhos,

    mas ele pode conter um, dois ou trs itensde dados. Ns vazios no so permitidos.

    { Devido a uma rvore 2-3-4 possuir nscom at quatro filhos, ela chamada dervore multivias de ordem 4 (multiwaytree of order 4).

  • rvores 2-3-4{ O 2, 3 e 4 no nome rvore 2-3-4 referem-se a quantos

    links para filhos podem potencialmente estar contidos emum dado n.

    { Para ns internos (no folhas), trs combinaes sopossveis:z um n com um item de dado sempre possuir dois

    filhos;z um n com dois itens de dados sempre possuir trs

    filhos;z um n com trs itens de dados sempre possuir quatro

    filhos.50

    30 60 70 80

    10 20 5540 62 64 66 75 83 86

  • rvores 2-3-4

    Por que uma rvore 2-3-4no chamada de rvore1-2-3-4?

    { Um n no pode ter somente um filho, comoos ns na rvore binria

    { Um n com um item de dado precisa sempreter dois links, a menos que seja uma folha,neste caso, ele no possui links.

  • rvores 2-3-4{ Um n com dois links chamado 2-ns,{ Um n com trs links chamado 3-ns{ Um n com quatro links chamado 4-ns

    25

    12 33 37

    0 1 2-ns83

    40 62

    27 33 51 55 59

    0 1

    3-ns2

    100 10578

    50 75 95

    30 35 55

    0 1 4-ns

    2 3

  • rvores 2-3-4 X rvore Binria

    { Em uma rvore binria, todos os filhoscom chaves menores que a chave don esto enraizados no n filho esquerda, e todos os filhos comchaves maiores ou iguais a chave don esto enraizados no n filho direita.

    { Na rvore 2-3-4 o princpio o mesmo,mas existe algo mais:

  • rvores 2-3-4

    { todos os itens de dados na sub-rvore enraizada nofilho 0, possuem valores menores do que a chave 0;

    { todos os itens de dados na sub-rvore enraizada nofilho 1, possuem valores maiores do que a chave 0, masmenores do que a chave1;

    { todos os itens de dados na sub-rvore enraizada nofilho 2, possuem valores maiores do que a chave 1, masmenores do que a chave2;

    { todos os itens de dados na sub-rvore enraizada nofilho 3, possuem valores maiores do que a chave 2.

    { Valores duplicados geralmente no so permitidos.Deste modo ns no necessitamos nos preocupar com acomparao de chaves iguais.

    A B C

    N com chavesmenores do que

    A

    N com chavesentre A e B

    N com chavesentre B e C

    N com chavesmaiores do que

    C

    0 1 2 3

  • Pesquisa em rvores 2-3-4

    Exemplo:{ Para pesquisar por um item de dado com a chave 64 na

    rvore da figura, voc inicia na raiz, porm noencontra o item.

    { Por que 64 maior do que 50, voc vai para o filho 1, oqual ns representamos com 60,70 e 80.

    { Voc no encontra o item de dado, assim voc precisapassar para o prximo filho.

    { Aqui, devido a 64 ser maior do que 60, mas menor doque 70, voc vai novamente para o filho 1. Desta vezvoc encontra o item especfico no link 62, 64 e 66.

    50

    30 60 70 80

    10 20 5540 62 64 66 75 83 86

  • Insero em rvore 2-3-4{ Novos itens de dados so sempre inseridos nas

    folhas.{ Se os itens foram inseridos em um n com

    filhos, ento o nmero de filhos necessitar sermudado para manter a estrutura da rvore, oque estipula que esta rvore deve ter um filho amais do que os itens de dados em um n.

    { O processo de insero inicia pela pesquisa don folha apropriado.

    { Se ns que no esto cheios so encontradosdurante a pesquisa, a insero fcil.

    { A insero pode envolver a movimentao deum ou dois itens em um n.

    { As chaves devero estar na ordem correta apso novo item ser inserido.

  • Exemplo 1: Insero em rvore 2-3-4

    - O item 23 vai ser deslocado para direitapara abrir espao para inserir o item 18.

    28 55

    11 74

    5 9 3013 23 44 47 63 67 72 97

    42

    a) Antes da insero

    18 inserido 23 deslocado para direita

    28 55

    11 74

    5 9 3013 18 23 44 47 63 67 72 97

    42

    b) Depois da insero

    - Insero de um item (18) sem divisodo n

  • Exemplo 2 - Insero em rvore 2-3-4

    { Com Diviso de nsz As inseres tornam-se mais complicadas se um

    n cheio encontrado no caminho abaixo doponto de insero.

    z Quando isto acontece, o n precisa ser dividido(split).

    z este processo de diviso que mantm a rvorebalanceada.

    z O tipo de rvore 2-3-4 que estamos vendo freqentemente chamada de rvore 2-3-4 top-down, por que os ns so divididos de maneirapara baixo do ponto de insero.

    Alcides BenicasaCross-Out

  • Insero em rvore 2-3-4

    { Chamaremos os itens de dados a seremdivididos por A, B e C.z assumimos que o n a ser dividido no o

    raiz, ns examinaremos a diviso da raizdepois

    62

    29 83 92 104

    15 21 7447 87 89 97 112

    a) Antes da insero

    n a ser dividido

    insero do 99

    A B C

  • Insero em rvore 2-3-4

    { Um novo n vazio criado. Ele parente (sibling) do n que estsendo dividido, e colocado a sua direita;

    { O item de dado C movido para o novo n;{ O item de dado B movido para o pai do n que est sendo dividido;{ O item de dado A fica aonde ele est;{ Os dois filhos mais direita so desconectados do n que est sendo

    dividido e so conectados no novo n.

    62

    29 83 92 104

    15 21 7447 87 89 97 112

    a) Antes dainsero

    n a ser dividido

    insero do 99

    A B C

    62 92

    29 104

    15 21 7447 87 89 97 99 112

    b) Aps a insero

    novo n

    92 movido para cima

    A

    B

    C

    83

    99 inserido

    83 fica no lugar 104 foi p/ direita

  • Exemplo 3 - Insero em rvore 2-3-4{ Dividindo a raizz Quando uma raiz cheia encontrada no

    inicio da pesquisa para encontrar oponto de insero, o resultado dadiviso ligeiramente maiscomplicado:

    26 49 72

    9 13 31 35 52 61 82

    a) Antes da insero raiz a ser dividido

    insero do 41

    A B C

  • Insero em rvore 2-3-4

    z o item de dado C movido para o novo n parente;z o item de dado B movido para a nova raiz;z o item de dado A deixado aonde est;z os dois filhos mais a direita do n que est sendo dividido so

    desconectados dele e conectados no novo n do lado direito.

    26 49 72

    9 13 31 35 52 61 82

    a) Antes da insero

    raiz a ser dividido

    insero do 41

    A B C

    49

    9 13 31 35 41 52 61 82

    b) Aps a insero

    novo n raiz

    49 movido p/cima

    A

    B

    C

    26 72 novo n direita72 movidop/ direita

    26 fica nolugar

    41 inserido

    um novo n criado, tornando-se a nova raiz, e os pais do novon so divididos;um segundo novo n criado,tornando-se parente (sibling) don que est sendo dividido;

  • rvores 2-3

  • rvores 2-3

    { Primeira rvore multivias, inventada por J.E. Hopcroftem 1970.

    { Iremos analisar rvores 2-3 rapidamente aqui por que elas so importantes historicamente e porque ainda so usadas em muitas aplicaes.

    { Alm disso, algumas tcnicas usadas com rvores 2-3 so aplicveis s rvores B.

    { rvores 2-3 so similares s rvores 2-3-4 exceto que, como voc pode ter adivinhado pelo nome, mantm um item de dados a menos e tem menos um filho.

  • Divises de n

    { Como em rvores 2-3-4, toda insero feita em ns folhas e todo n folha est no nvel inferior.

    { A busca de um item de dados existente lidada exatamente como em uma rvore 2-3-4, exceto pelo nmero de itens de dados e filhos.

    { Mas h uma diferena surpreendente no modo como divises so lidadas.

  • Eis por que as divises so to diferentes

    { Em um ou outro tipo de rvore, uma diviso de nrequer trs itens de dados: um a ser mantido no nsendo dividido, um para mover para a direita para o novo n e um para mover para cima para o n pai.

    { Um n completo em uma rvore 2-3-4 tem trs itens de dados, que so movidos para esses trs destinos.

    { Porm, um n completo em uma rvore 2-3 tem apenas dois itens de dados.

    { Onde podemos obter um terceiro item?

  • Eis por que as divises so to diferentes

    { Teremos que usar o novo item: aquele sendo inserido na rvore.

    { Em uma rvore 2-3-4, o novo item inserido depois de todas as divises terem ocorrido.

    { Na rvore 2-3, ele tem que participar na diviso.

  • Primeiro Caso

    { Se o n folha onde o novo item dever ser inserido no estiver completo, o novo item poder ser inserido imediatamente.

    { Inserindo o item 90.

    75

    70 80

    9090

    75

    70 80 90

  • Segundo Caso

    { Se o n folha estiver completo, ele terque ser dividido.

    { Seus dois itens e o novo item sero distribudos entre trs ns: o nexistente, o novo n e o n pai.

    { Se o pai no estiver completo, a operao estar completada.

  • Segundo Caso

    75

    70 80 90

    8585

    { Inserindo o item 85.

    75

    70 80 90

    85

  • Terceiro Caso

    { Se o pai estiver completo, ter que ser dividido tambm.

    { Seus dois itens e o item transmitido para cima a partir de seu filho recm-dividido tero que ser distribudos entre o pai, um novo irmo do pai e o pai do pai.

  • Terceiro Caso

    { Inserindo o item 100.

    75

    70 80 90

    85

    100100

    95

    50

    75

    70 80

    50 85

    95

    10090

  • Quarto Caso

    { Se o pai do pai (o av do n folha) estiver completo, ter que ser dividido tambm.

    { O processo de diviso ser repercutido para cima at que um pai no completo ou a raiz seja encontrada.

  • Quarto Caso

    { Inserindo o item 24.

    21

    20 22 30

    25

    2424

    75

    70 80

    50 85

    95

    1009023

  • Quarto Caso

    { Inserindo o item 24.

    95

    90 100

    75

    70 80

    25

    24 30

    21

    20 22

    50

    23 85

  • Exerccios

    1. Determinado sistema armazena registros por chaves numricas em uma rvore 2-3. Apresente passo a passo como a rvore vai sendo construda. Realize os splits necessrios. Nessa rvore so inseridos os seguintes valores:

    a.a. 20, 10, 5, 30, 25, 27, 48, 50, 53, 8, 6, 3, 1, 77 e 20, 10, 5, 30, 25, 27, 48, 50, 53, 8, 6, 3, 1, 77 e 2828.

    b. estruturadedadosumadisciplinainteressante.

  • Referncias

    { rvores 2-3z Lafore, R. Estruturas de Dados e Algortmos em Java.

    Editora Cincia Moderna, Rio de Janeiro, 2004

  • rvores B

  • rvore B

    { So rvores de pesquisa balanceadasespecialmente projetadas para a pesquisa deinformao em discos magnticos e outros meios dearmazenamento secundrio.

    { Minimizam o nmero de operaes demovimentao de dados (escrita/leitura) numapesquisa ou alterao.

    { O grau de um n pode ser alto.{ Podem ser consideradas como uma generalizao

    natural das rvores de pesquisa binrias.

  • rvores B

    { As rvores so uma boa abordagem para dadosem memria.

    { Mas, as rvores trabalham com arquivos?z Elas trabalham, mas um tipo diferente de rvore

    precisa ser usado para dados externos do quepara dados em memria.

    { A rvore apropriada um rvore mltivias,parecida com uma rvore 2-3-4, mas commuito mais itens de dados por n

    { Ela se chama rvore B (tree-B). As rvores Bforam concebidas como estrutura apropriadapara armazenamento externo por R. Bayer e E.M. McCreight em 1972.

    { rvores M-Vias permanentemente balanceadasso chamadas de rvore B.

  • rvores B - Um bloco por n

    { O acesso a disco mais eficientequando o dado lido ou escrito emum bloco de uma s vez.

    { Em uma rvore, a entidade quecontm dados o n.

    { Ideal: armazenar um bloco inteirode dados em cada n da rvore.

    { Deste modo, ler um n acessa umconjunto mximo de dados em umcurto espao de tempo.

  • rvores B - Links

    { Em uma rvore, precisamos tambmarmazenar os links para outros ns.

    { Em uma rvore em memria, estasligaes so referncias (ou ponteiros,em linguagens como Pascal e C) para osns em outras partes da memria.

    { Para as rvores armazenadas em umarquivo em disco, as ligaes (links) sonmeros de blocos em um arquivo.

  • rvores B x rvores 2-3-4

    { Dentro de cada n os dados soordenados seqencialmente pelachave, como nas rvores 2-3-4.

    { A estrutura de uma rvore B similar a de uma rvore 2-3-4,exceto que na rvore B existemmais itens de dados por n e maislinks para ns filhos.

  • rvores BCaractersticas

    { A raiz tem no mnimo uma chave edois filhos

    { Uma folha tem no mnimo d chavese no tem filhos

    { Todas as folhas esto no mesmonvel (balanceamento)

  • Pesquisa em rvores B

    { Primeiro, o bloco contendo a raiz lido.{ O algoritmo de pesquisa ento inicia a

    verificao de cada um dos registros (se eleno estiver cheio, tantos quantos o natualmente armazena) iniciando pelo registro 0.

    { Quando ele encontra um registro com chavemaior, ele sabe que deve ir para o filho quereside entre este registro e o precedente.

    { Este processo continua at o n correto serencontrado.

    { Se uma folha alcanada sem encontrar achave especfica, a pesquisa no obtevesucesso.

  • Insero em rvores B

    { Em uma rvore B importantemanter um n to cheio quantopossvel;

    { deste modo cada acesso disco, oqual l uma entrada de um n,pode adquirir o mximo dequantidade de dados.

  • Construo de uma pequena rvore B

    { A figura (a) mostra um n raiz que j estcheio;

    { Itens com chaves 20,40,60 e 80 j foraminseridas na rvore.

    { Um novo item de dado com a chave 70deve inserido, resultando na diviso deum n.

    { A raiz est sendo dividida, dois novos nsso criados: uma nova raiz e um novo npara a direita do que est sendo dividido.

    (a) 7020 40 60 80 20 40 60 8070

  • Construo de uma pequena rvore B{ Na figura (b) inserimos mais dois itens: 10 e 30.{ Eles preenchem totalmente o filho da esquerda, tal como

    apresentado nas figura (c).{ O prximo item a ser inserido, 15, divide o filho

    esquerda, como visto na figura (d).{ Aqui o item 20 foi promovido para cima, na raiz.

    (b)

    10

    3060

    20 40 70 80

    (c)

    1560

    10 20 30 40 70 80

    10 15 20 4030

    (d)

    20 60

    10 15 30 40 70 80

  • Construo de uma pequena rvore B

    { Na fig. (e) trs itens, 75,85 e 90, so inseridos{ O terceiro filho dividido, causando a criao

    de um novo n e a promoo do itemintermedirio, 80, para a raiz.

    { O resultado disto visto na figura (f).

    (f)

    20 60 80

    10 15 30 40 70 75 85 90

    (e)

    7520 60

    10 15 30 40

    70 75 80 9085

    85 90

    70 80

  • Construo de uma pequena rvore B{ Novamente trs itens, 25, 35 e 50, so adicionados fig. (g){ Os primeiros dois itens enchem totalmente o segundo filho{ E o terceiro filho divido, provocando a criao de um novo

    n e a promoo do item intermedirio, 35, para a raiz,como pode ser visto na figura (h).

    (h)

    20 35 60 80

    10 15 25 30 40 50 70 75 85 90

    (g)

    2520 60 80

    10 15 30 40

    25 30 35 5040

    35 50

    70 75 85 90

  • Construo de uma pequena rvore B{ Agora a raiz est cheia.{ Contudo, inseres subseqentes no necessariamente causaro a

    diviso do n, porque os ns so divididos somente quando umanova insero em um n cheio efetuada, no quando um n cheio encontrado em uma pesquisa sobre a rvore.

    { Assim, 22 e 27 so inseridos no segundo filho sem causar qualquerdiviso, como apresentado na figura (j).

    (j)

    20 35 60 80

    10 15 22 25 27 30 40 50 70 75 85 90

    (i)

    2220 35 60 80

    10 15 25 30

    27

    40 50 70 75 85 90

  • { O prximo item a ser inserido, 32, no causa uma diviso, narealidade, ele causa duas divises.

    { O segundo n filho, est cheio, deste modo, ele dividido, como vistona figura (l).

    { O item 27, promovido a partir da diviso, no foi colocado no seulugar porque a raiz est cheia.

    { Portanto a raiz tambm precisa ser dividida, resultando no arranjopresente na figura (M).

    22 25 27 3230(k)

    3220 35 60 80

    10 15 22 25 27 30 40 50 70 75 85 90

    20 27 35 8060(l)

    2720 35 60 80

    10 15 22 25 40 50 70 75 85 90

    (M)

    35

    10 15 22 25 30 32

    20 27

    40 50 70 75 85 90

    60 80

    rvores BinriasBalanceadasrvores Balanceadasrvores Balanceadasrvores AVLrvores BalanceadasBALANCEAMENTO DE RVORES AVLrvores AVLBALANCEAMENTO DE RVORES AVLTipo 1 - ROTAO DUPLATipo 1 - ROTAO DUPLATipo 1 - ROTAO DUPLATipo 2 - ROTAO SimplesTipo 2 - ROTAO SimplesA descrio do algoritmo em pseudo-cdigo para construo de uma rvore AVL:Dicas: rvores AVLExercciosExerccio 1Exerccio 2Resoluo do Exerccio 2Resoluo do Exerccio 2Resoluo do Exerccio 2Exerccio 3Resoluo: Exerccio 3rvores Multivias (Multiway tree)rvores Multiviasrvores 2-3-4rvores 2-3-4rvores 2-3-4rvores 2-3-4rvores 2-3-4rvores 2-3-4rvores 2-3-4 X rvore Binriarvores 2-3-4Pesquisa em rvores 2-3-4Insero em rvore 2-3-4Exemplo 1: Insero em rvore 2-3-4Exemplo 2 - Insero em rvore 2-3-4Insero em rvore 2-3-4Insero em rvore 2-3-4Exemplo 3 - Insero em rvore 2-3-4Insero em rvore 2-3-4rvores Brvore Brvores Brvores B - Um bloco por nrvores B - Linksrvores B x rvores 2-3-4rvores BCaractersticasPesquisa em rvores BInsero em rvores BConstruo de uma pequena rvore BConstruo de uma pequena rvore BConstruo de uma pequena rvore BConstruo de uma pequena rvore BConstruo de uma pequena rvore B