mc-202 Árvores b• a altura é de log2(1.000.000) ≈ 20 nós tempo = 1000 buscas × 20 nós/busca...

159
MC-202 Árvores B Rafael C. S. Schouery [email protected] Universidade Estadual de Campinas 2º semestre/2019

Upload: others

Post on 30-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

MC-202Árvores B

Rafael C. S. [email protected]

Universidade Estadual de Campinas

2º semestre/2019

Page 2: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Introdução

Um problema: Trabalhamos com 1.000.000 de registros e cada umpode ser muito grande (uma foto, por exemplo). Portanto, nãopodemos guardá-los todos na memória. Toda vez que executamosum programa, temos que executar cerca de 1000 consultas nessebanco de dados.

• Onde armazenar os dados?

• Qual estrutura de dados?

Tentativa: usar uma árvore binária de busca balanceada no disco

2

Page 3: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Introdução

Um problema: Trabalhamos com 1.000.000 de registros e cada umpode ser muito grande (uma foto, por exemplo). Portanto, nãopodemos guardá-los todos na memória. Toda vez que executamosum programa, temos que executar cerca de 1000 consultas nessebanco de dados.

• Onde armazenar os dados?

• Qual estrutura de dados?

Tentativa: usar uma árvore binária de busca balanceada no disco

2

Page 4: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Introdução

Um problema: Trabalhamos com 1.000.000 de registros e cada umpode ser muito grande (uma foto, por exemplo). Portanto, nãopodemos guardá-los todos na memória. Toda vez que executamosum programa, temos que executar cerca de 1000 consultas nessebanco de dados.

• Onde armazenar os dados?

• Qual estrutura de dados?

Tentativa: usar uma árvore binária de busca balanceada no disco

2

Page 5: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Introdução

Um problema: Trabalhamos com 1.000.000 de registros e cada umpode ser muito grande (uma foto, por exemplo). Portanto, nãopodemos guardá-los todos na memória. Toda vez que executamosum programa, temos que executar cerca de 1000 consultas nessebanco de dados.

• Onde armazenar os dados?• Qual estrutura de dados?

Tentativa: usar uma árvore binária de busca balanceada no disco

2

Page 6: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Introdução

Um problema: Trabalhamos com 1.000.000 de registros e cada umpode ser muito grande (uma foto, por exemplo). Portanto, nãopodemos guardá-los todos na memória. Toda vez que executamosum programa, temos que executar cerca de 1000 consultas nessebanco de dados.

• Onde armazenar os dados?• Qual estrutura de dados?

Tentativa: usar uma árvore binária de busca balanceada no disco

2

Page 7: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Verificando nossa tentativa

Quanto tempo vai levar para realizar as 1000 consultas?

• ler um nó no disco pode demorar 5 ms• a árvore tem 1.000.000 de nós• a altura é de log2(1.000.000) ≈ 20 nós

TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s

Solução: diminuir a altura da árvore para diminuir número deleituras no disco

3

Page 8: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Verificando nossa tentativa

Quanto tempo vai levar para realizar as 1000 consultas?• ler um nó no disco pode demorar 5 ms

• a árvore tem 1.000.000 de nós• a altura é de log2(1.000.000) ≈ 20 nós

TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s

Solução: diminuir a altura da árvore para diminuir número deleituras no disco

3

Page 9: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Verificando nossa tentativa

Quanto tempo vai levar para realizar as 1000 consultas?• ler um nó no disco pode demorar 5 ms• a árvore tem 1.000.000 de nós

• a altura é de log2(1.000.000) ≈ 20 nós

TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s

Solução: diminuir a altura da árvore para diminuir número deleituras no disco

3

Page 10: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Verificando nossa tentativa

Quanto tempo vai levar para realizar as 1000 consultas?• ler um nó no disco pode demorar 5 ms• a árvore tem 1.000.000 de nós• a altura é de log2(1.000.000) ≈ 20 nós

TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s

Solução: diminuir a altura da árvore para diminuir número deleituras no disco

3

Page 11: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Verificando nossa tentativa

Quanto tempo vai levar para realizar as 1000 consultas?• ler um nó no disco pode demorar 5 ms• a árvore tem 1.000.000 de nós• a altura é de log2(1.000.000) ≈ 20 nós

TEMPO

= 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s

Solução: diminuir a altura da árvore para diminuir número deleituras no disco

3

Page 12: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Verificando nossa tentativa

Quanto tempo vai levar para realizar as 1000 consultas?• ler um nó no disco pode demorar 5 ms• a árvore tem 1.000.000 de nós• a altura é de log2(1.000.000) ≈ 20 nós

TEMPO = 1000 buscas

× 20 nós/busca × 5 ms/nó = 100 s

Solução: diminuir a altura da árvore para diminuir número deleituras no disco

3

Page 13: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Verificando nossa tentativa

Quanto tempo vai levar para realizar as 1000 consultas?• ler um nó no disco pode demorar 5 ms• a árvore tem 1.000.000 de nós• a altura é de log2(1.000.000) ≈ 20 nós

TEMPO = 1000 buscas × 20 nós/busca

× 5 ms/nó = 100 s

Solução: diminuir a altura da árvore para diminuir número deleituras no disco

3

Page 14: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Verificando nossa tentativa

Quanto tempo vai levar para realizar as 1000 consultas?• ler um nó no disco pode demorar 5 ms• a árvore tem 1.000.000 de nós• a altura é de log2(1.000.000) ≈ 20 nós

TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó

= 100 s

Solução: diminuir a altura da árvore para diminuir número deleituras no disco

3

Page 15: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Verificando nossa tentativa

Quanto tempo vai levar para realizar as 1000 consultas?• ler um nó no disco pode demorar 5 ms• a árvore tem 1.000.000 de nós• a altura é de log2(1.000.000) ≈ 20 nós

TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s

Solução: diminuir a altura da árvore para diminuir número deleituras no disco

3

Page 16: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Verificando nossa tentativa

Quanto tempo vai levar para realizar as 1000 consultas?• ler um nó no disco pode demorar 5 ms• a árvore tem 1.000.000 de nós• a altura é de log2(1.000.000) ≈ 20 nós

TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s

Solução: diminuir a altura da árvore para diminuir número deleituras no disco

3

Page 17: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Hierarquia de Memória

A memória do computador é dividida em uma hierarquia:

• HDD (Hard Disk Drive) ou SSD (Solid-State Drive)

– Memória permanente, onde gravamos arquivos– Chamada de memória secundária

• RAM (Random-Access Memory)

– Onde são armazenados os programas em execução

– e a memória alocada pelos mesmos

– Memória volátil, é apagada se o computador é desligado

• Memória Cache

– Muito próxima do processador para ter acesso rápido– A informação é copiada da RAM para a Cache

4

Page 18: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Hierarquia de Memória

A memória do computador é dividida em uma hierarquia:• HDD (Hard Disk Drive) ou SSD (Solid-State Drive)

– Memória permanente, onde gravamos arquivos– Chamada de memória secundária

• RAM (Random-Access Memory)

– Onde são armazenados os programas em execução

– e a memória alocada pelos mesmos

– Memória volátil, é apagada se o computador é desligado

• Memória Cache

– Muito próxima do processador para ter acesso rápido– A informação é copiada da RAM para a Cache

4

Page 19: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Hierarquia de Memória

A memória do computador é dividida em uma hierarquia:• HDD (Hard Disk Drive) ou SSD (Solid-State Drive)

– Memória permanente, onde gravamos arquivos

– Chamada de memória secundária

• RAM (Random-Access Memory)

– Onde são armazenados os programas em execução

– e a memória alocada pelos mesmos

– Memória volátil, é apagada se o computador é desligado

• Memória Cache

– Muito próxima do processador para ter acesso rápido– A informação é copiada da RAM para a Cache

4

Page 20: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Hierarquia de Memória

A memória do computador é dividida em uma hierarquia:• HDD (Hard Disk Drive) ou SSD (Solid-State Drive)

– Memória permanente, onde gravamos arquivos– Chamada de memória secundária

• RAM (Random-Access Memory)

– Onde são armazenados os programas em execução

– e a memória alocada pelos mesmos

– Memória volátil, é apagada se o computador é desligado

• Memória Cache

– Muito próxima do processador para ter acesso rápido– A informação é copiada da RAM para a Cache

4

Page 21: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Hierarquia de Memória

A memória do computador é dividida em uma hierarquia:• HDD (Hard Disk Drive) ou SSD (Solid-State Drive)

– Memória permanente, onde gravamos arquivos– Chamada de memória secundária

• RAM (Random-Access Memory)

– Onde são armazenados os programas em execução

– e a memória alocada pelos mesmos

– Memória volátil, é apagada se o computador é desligado

• Memória Cache

– Muito próxima do processador para ter acesso rápido– A informação é copiada da RAM para a Cache

4

Page 22: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Hierarquia de Memória

A memória do computador é dividida em uma hierarquia:• HDD (Hard Disk Drive) ou SSD (Solid-State Drive)

– Memória permanente, onde gravamos arquivos– Chamada de memória secundária

• RAM (Random-Access Memory)– Onde são armazenados os programas em execução

– e a memória alocada pelos mesmos– Memória volátil, é apagada se o computador é desligado

• Memória Cache

– Muito próxima do processador para ter acesso rápido– A informação é copiada da RAM para a Cache

4

Page 23: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Hierarquia de Memória

A memória do computador é dividida em uma hierarquia:• HDD (Hard Disk Drive) ou SSD (Solid-State Drive)

– Memória permanente, onde gravamos arquivos– Chamada de memória secundária

• RAM (Random-Access Memory)– Onde são armazenados os programas em execução

– e a memória alocada pelos mesmos

– Memória volátil, é apagada se o computador é desligado

• Memória Cache

– Muito próxima do processador para ter acesso rápido– A informação é copiada da RAM para a Cache

4

Page 24: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Hierarquia de Memória

A memória do computador é dividida em uma hierarquia:• HDD (Hard Disk Drive) ou SSD (Solid-State Drive)

– Memória permanente, onde gravamos arquivos– Chamada de memória secundária

• RAM (Random-Access Memory)– Onde são armazenados os programas em execução

– e a memória alocada pelos mesmos– Memória volátil, é apagada se o computador é desligado

• Memória Cache

– Muito próxima do processador para ter acesso rápido– A informação é copiada da RAM para a Cache

4

Page 25: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Hierarquia de Memória

A memória do computador é dividida em uma hierarquia:• HDD (Hard Disk Drive) ou SSD (Solid-State Drive)

– Memória permanente, onde gravamos arquivos– Chamada de memória secundária

• RAM (Random-Access Memory)– Onde são armazenados os programas em execução

– e a memória alocada pelos mesmos– Memória volátil, é apagada se o computador é desligado

• Memória Cache

– Muito próxima do processador para ter acesso rápido– A informação é copiada da RAM para a Cache

4

Page 26: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Hierarquia de Memória

A memória do computador é dividida em uma hierarquia:• HDD (Hard Disk Drive) ou SSD (Solid-State Drive)

– Memória permanente, onde gravamos arquivos– Chamada de memória secundária

• RAM (Random-Access Memory)– Onde são armazenados os programas em execução

– e a memória alocada pelos mesmos– Memória volátil, é apagada se o computador é desligado

• Memória Cache– Muito próxima do processador para ter acesso rápido

– A informação é copiada da RAM para a Cache

4

Page 27: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Hierarquia de Memória

A memória do computador é dividida em uma hierarquia:• HDD (Hard Disk Drive) ou SSD (Solid-State Drive)

– Memória permanente, onde gravamos arquivos– Chamada de memória secundária

• RAM (Random-Access Memory)– Onde são armazenados os programas em execução

– e a memória alocada pelos mesmos– Memória volátil, é apagada se o computador é desligado

• Memória Cache– Muito próxima do processador para ter acesso rápido– A informação é copiada da RAM para a Cache

4

Page 28: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Comparação entre Memórias

Velocidade Tamanho US$ por GB

HDD até 200 MB/s até 4TB 0,05SSD 200 a 2500 MB/s até 512 GB 0,3RAM 2 a 20 GB/s até 64 GB 7,5Cache 32 a 64 GB/s1 até 25 MB não é vendida

1em um processador 2GHz5

Page 29: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Comparação entre Memórias

Velocidade Tamanho US$ por GBHDD até 200 MB/s até 4TB 0,05

SSD 200 a 2500 MB/s até 512 GB 0,3RAM 2 a 20 GB/s até 64 GB 7,5Cache 32 a 64 GB/s1 até 25 MB não é vendida

1em um processador 2GHz5

Page 30: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Comparação entre Memórias

Velocidade Tamanho US$ por GBHDD até 200 MB/s até 4TB 0,05SSD 200 a 2500 MB/s até 512 GB 0,3

RAM 2 a 20 GB/s até 64 GB 7,5Cache 32 a 64 GB/s1 até 25 MB não é vendida

1em um processador 2GHz5

Page 31: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Comparação entre Memórias

Velocidade Tamanho US$ por GBHDD até 200 MB/s até 4TB 0,05SSD 200 a 2500 MB/s até 512 GB 0,3RAM 2 a 20 GB/s até 64 GB 7,5

Cache 32 a 64 GB/s1 até 25 MB não é vendida

1em um processador 2GHz5

Page 32: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Comparação entre Memórias

Velocidade Tamanho US$ por GBHDD até 200 MB/s até 4TB 0,05SSD 200 a 2500 MB/s até 512 GB 0,3RAM 2 a 20 GB/s até 64 GB 7,5Cache 32 a 64 GB/s1 até 25 MB não é vendida

1em um processador 2GHz5

Page 33: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Estruturas em Disco e Páginas

Queremos armazenar registros na memória secundária:

• A informação não cabe na memória principal

– ou queremos que a informação seja permanente

• A memória secundária é dividida em páginas

– usualmente de 2MB a 16MB

• Se a página está na memória, podemos acessá-la• Se não está, precisamos lê-la na memória secundária• O acesso a memória secundária é muito mais lento

– queremos ler o menor número de páginas possível– acessar páginas que estão na memória é rápido

6

Page 34: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Estruturas em Disco e Páginas

Queremos armazenar registros na memória secundária:• A informação não cabe na memória principal

– ou queremos que a informação seja permanente• A memória secundária é dividida em páginas

– usualmente de 2MB a 16MB

• Se a página está na memória, podemos acessá-la• Se não está, precisamos lê-la na memória secundária• O acesso a memória secundária é muito mais lento

– queremos ler o menor número de páginas possível– acessar páginas que estão na memória é rápido

6

Page 35: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Estruturas em Disco e Páginas

Queremos armazenar registros na memória secundária:• A informação não cabe na memória principal

– ou queremos que a informação seja permanente

• A memória secundária é dividida em páginas

– usualmente de 2MB a 16MB

• Se a página está na memória, podemos acessá-la• Se não está, precisamos lê-la na memória secundária• O acesso a memória secundária é muito mais lento

– queremos ler o menor número de páginas possível– acessar páginas que estão na memória é rápido

6

Page 36: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Estruturas em Disco e Páginas

Queremos armazenar registros na memória secundária:• A informação não cabe na memória principal

– ou queremos que a informação seja permanente• A memória secundária é dividida em páginas

– usualmente de 2MB a 16MB• Se a página está na memória, podemos acessá-la• Se não está, precisamos lê-la na memória secundária• O acesso a memória secundária é muito mais lento

– queremos ler o menor número de páginas possível– acessar páginas que estão na memória é rápido

6

Page 37: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Estruturas em Disco e Páginas

Queremos armazenar registros na memória secundária:• A informação não cabe na memória principal

– ou queremos que a informação seja permanente• A memória secundária é dividida em páginas

– usualmente de 2MB a 16MB

• Se a página está na memória, podemos acessá-la• Se não está, precisamos lê-la na memória secundária• O acesso a memória secundária é muito mais lento

– queremos ler o menor número de páginas possível– acessar páginas que estão na memória é rápido

6

Page 38: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Estruturas em Disco e Páginas

Queremos armazenar registros na memória secundária:• A informação não cabe na memória principal

– ou queremos que a informação seja permanente• A memória secundária é dividida em páginas

– usualmente de 2MB a 16MB• Se a página está na memória, podemos acessá-la

• Se não está, precisamos lê-la na memória secundária• O acesso a memória secundária é muito mais lento

– queremos ler o menor número de páginas possível– acessar páginas que estão na memória é rápido

6

Page 39: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Estruturas em Disco e Páginas

Queremos armazenar registros na memória secundária:• A informação não cabe na memória principal

– ou queremos que a informação seja permanente• A memória secundária é dividida em páginas

– usualmente de 2MB a 16MB• Se a página está na memória, podemos acessá-la• Se não está, precisamos lê-la na memória secundária

• O acesso a memória secundária é muito mais lento

– queremos ler o menor número de páginas possível– acessar páginas que estão na memória é rápido

6

Page 40: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Estruturas em Disco e Páginas

Queremos armazenar registros na memória secundária:• A informação não cabe na memória principal

– ou queremos que a informação seja permanente• A memória secundária é dividida em páginas

– usualmente de 2MB a 16MB• Se a página está na memória, podemos acessá-la• Se não está, precisamos lê-la na memória secundária• O acesso a memória secundária é muito mais lento

– queremos ler o menor número de páginas possível– acessar páginas que estão na memória é rápido

6

Page 41: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Estruturas em Disco e Páginas

Queremos armazenar registros na memória secundária:• A informação não cabe na memória principal

– ou queremos que a informação seja permanente• A memória secundária é dividida em páginas

– usualmente de 2MB a 16MB• Se a página está na memória, podemos acessá-la• Se não está, precisamos lê-la na memória secundária• O acesso a memória secundária é muito mais lento

– queremos ler o menor número de páginas possível

– acessar páginas que estão na memória é rápido

6

Page 42: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Estruturas em Disco e Páginas

Queremos armazenar registros na memória secundária:• A informação não cabe na memória principal

– ou queremos que a informação seja permanente• A memória secundária é dividida em páginas

– usualmente de 2MB a 16MB• Se a página está na memória, podemos acessá-la• Se não está, precisamos lê-la na memória secundária• O acesso a memória secundária é muito mais lento

– queremos ler o menor número de páginas possível– acessar páginas que estão na memória é rápido

6

Page 43: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Pseudocódigo e leitura/escrita de páginas

Usaremos pseudocódigo para apresentar a ED:

• Transmitem a ideia principal de um algoritmo• Não há preocupação com detalhes de implementação

– são agnósticos em relação a linguagem de programação

• É uma forma mais abstrata de falar de algoritmos• Precisamos tomar o cuidado de:

– Deixar o algoritmo explicito– E que cada passo possa ser feito pelo computador

Se x é ponteiro para um objeto na memória secundária• LeDoDisco(x): lê x da memória secundária• EscreveNoDisco(x): grava x na memória secundária

7

Page 44: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Pseudocódigo e leitura/escrita de páginas

Usaremos pseudocódigo para apresentar a ED:• Transmitem a ideia principal de um algoritmo

• Não há preocupação com detalhes de implementação

– são agnósticos em relação a linguagem de programação

• É uma forma mais abstrata de falar de algoritmos• Precisamos tomar o cuidado de:

– Deixar o algoritmo explicito– E que cada passo possa ser feito pelo computador

Se x é ponteiro para um objeto na memória secundária• LeDoDisco(x): lê x da memória secundária• EscreveNoDisco(x): grava x na memória secundária

7

Page 45: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Pseudocódigo e leitura/escrita de páginas

Usaremos pseudocódigo para apresentar a ED:• Transmitem a ideia principal de um algoritmo• Não há preocupação com detalhes de implementação

– são agnósticos em relação a linguagem de programação• É uma forma mais abstrata de falar de algoritmos• Precisamos tomar o cuidado de:

– Deixar o algoritmo explicito– E que cada passo possa ser feito pelo computador

Se x é ponteiro para um objeto na memória secundária• LeDoDisco(x): lê x da memória secundária• EscreveNoDisco(x): grava x na memória secundária

7

Page 46: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Pseudocódigo e leitura/escrita de páginas

Usaremos pseudocódigo para apresentar a ED:• Transmitem a ideia principal de um algoritmo• Não há preocupação com detalhes de implementação

– são agnósticos em relação a linguagem de programação

• É uma forma mais abstrata de falar de algoritmos• Precisamos tomar o cuidado de:

– Deixar o algoritmo explicito– E que cada passo possa ser feito pelo computador

Se x é ponteiro para um objeto na memória secundária• LeDoDisco(x): lê x da memória secundária• EscreveNoDisco(x): grava x na memória secundária

7

Page 47: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Pseudocódigo e leitura/escrita de páginas

Usaremos pseudocódigo para apresentar a ED:• Transmitem a ideia principal de um algoritmo• Não há preocupação com detalhes de implementação

– são agnósticos em relação a linguagem de programação• É uma forma mais abstrata de falar de algoritmos

• Precisamos tomar o cuidado de:

– Deixar o algoritmo explicito– E que cada passo possa ser feito pelo computador

Se x é ponteiro para um objeto na memória secundária• LeDoDisco(x): lê x da memória secundária• EscreveNoDisco(x): grava x na memória secundária

7

Page 48: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Pseudocódigo e leitura/escrita de páginas

Usaremos pseudocódigo para apresentar a ED:• Transmitem a ideia principal de um algoritmo• Não há preocupação com detalhes de implementação

– são agnósticos em relação a linguagem de programação• É uma forma mais abstrata de falar de algoritmos• Precisamos tomar o cuidado de:

– Deixar o algoritmo explicito– E que cada passo possa ser feito pelo computador

Se x é ponteiro para um objeto na memória secundária• LeDoDisco(x): lê x da memória secundária• EscreveNoDisco(x): grava x na memória secundária

7

Page 49: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Pseudocódigo e leitura/escrita de páginas

Usaremos pseudocódigo para apresentar a ED:• Transmitem a ideia principal de um algoritmo• Não há preocupação com detalhes de implementação

– são agnósticos em relação a linguagem de programação• É uma forma mais abstrata de falar de algoritmos• Precisamos tomar o cuidado de:

– Deixar o algoritmo explicito

– E que cada passo possa ser feito pelo computador

Se x é ponteiro para um objeto na memória secundária• LeDoDisco(x): lê x da memória secundária• EscreveNoDisco(x): grava x na memória secundária

7

Page 50: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Pseudocódigo e leitura/escrita de páginas

Usaremos pseudocódigo para apresentar a ED:• Transmitem a ideia principal de um algoritmo• Não há preocupação com detalhes de implementação

– são agnósticos em relação a linguagem de programação• É uma forma mais abstrata de falar de algoritmos• Precisamos tomar o cuidado de:

– Deixar o algoritmo explicito– E que cada passo possa ser feito pelo computador

Se x é ponteiro para um objeto na memória secundária• LeDoDisco(x): lê x da memória secundária• EscreveNoDisco(x): grava x na memória secundária

7

Page 51: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Pseudocódigo e leitura/escrita de páginas

Usaremos pseudocódigo para apresentar a ED:• Transmitem a ideia principal de um algoritmo• Não há preocupação com detalhes de implementação

– são agnósticos em relação a linguagem de programação• É uma forma mais abstrata de falar de algoritmos• Precisamos tomar o cuidado de:

– Deixar o algoritmo explicito– E que cada passo possa ser feito pelo computador

Se x é ponteiro para um objeto na memória secundária

• LeDoDisco(x): lê x da memória secundária• EscreveNoDisco(x): grava x na memória secundária

7

Page 52: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Pseudocódigo e leitura/escrita de páginas

Usaremos pseudocódigo para apresentar a ED:• Transmitem a ideia principal de um algoritmo• Não há preocupação com detalhes de implementação

– são agnósticos em relação a linguagem de programação• É uma forma mais abstrata de falar de algoritmos• Precisamos tomar o cuidado de:

– Deixar o algoritmo explicito– E que cada passo possa ser feito pelo computador

Se x é ponteiro para um objeto na memória secundária• LeDoDisco(x): lê x da memória secundária

• EscreveNoDisco(x): grava x na memória secundária

7

Page 53: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Pseudocódigo e leitura/escrita de páginas

Usaremos pseudocódigo para apresentar a ED:• Transmitem a ideia principal de um algoritmo• Não há preocupação com detalhes de implementação

– são agnósticos em relação a linguagem de programação• É uma forma mais abstrata de falar de algoritmos• Precisamos tomar o cuidado de:

– Deixar o algoritmo explicito– E que cada passo possa ser feito pelo computador

Se x é ponteiro para um objeto na memória secundária• LeDoDisco(x): lê x da memória secundária• EscreveNoDisco(x): grava x na memória secundária

7

Page 54: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores M -árias de Busca

Podemos generalizar árvores binárias de busca

• Ex: árvores ternárias de busca

– Nó pode ter 0, 1, 2 ou 3 filhos

a b

x ≤ a a < x ≤ b b < x

Como fazer busca?

8

Page 55: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores M -árias de Busca

Podemos generalizar árvores binárias de busca• Ex: árvores ternárias de busca

– Nó pode ter 0, 1, 2 ou 3 filhos

a b

x ≤ a a < x ≤ b b < x

Como fazer busca?

8

Page 56: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores M -árias de Busca

Podemos generalizar árvores binárias de busca• Ex: árvores ternárias de busca

– Nó pode ter 0, 1, 2 ou 3 filhos

a b

x ≤ a a < x ≤ b b < x

Como fazer busca?

8

Page 57: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores M -árias de Busca

Podemos generalizar árvores binárias de busca• Ex: árvores ternárias de busca

– Nó pode ter 0, 1, 2 ou 3 filhos

a b

x ≤ a a < x ≤ b b < x

Como fazer busca?

8

Page 58: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores M -árias de Busca

Podemos generalizar árvores binárias de busca• Ex: árvores ternárias de busca

– Nó pode ter 0, 1, 2 ou 3 filhos

a b

x ≤ a a < x ≤ b b < x

Como fazer busca?

8

Page 59: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores BSão árvores M -árias de busca com propriedades adicionais

Cada nó x tem os seguintes campos:• x.n é o número de chaves armazenadas em x

• x.chave[i] é i-ésima chave armazenada

– x.chave[1] < x.chave[2 ] < · · · < x.chave[x.n]

• x.folha indica se x é uma folha ou não

Cada nó interno x contém x.n + 1 ponteiros• x.c[i] é o ponteiro para o i-ésimo filho• se a chave k está na subárvore x.c[i], então

– k < x.chave[1] se i = 1– x.chave[x.n] < k se i = x.n + 1– x.chave[i-1 ] < k < x.chave[i] caso contrário

O T.raiz indica o nó que é a raiz da árvore

9

Page 60: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores BSão árvores M -árias de busca com propriedades adicionais

Cada nó x tem os seguintes campos:

• x.n é o número de chaves armazenadas em x

• x.chave[i] é i-ésima chave armazenada

– x.chave[1] < x.chave[2 ] < · · · < x.chave[x.n]

• x.folha indica se x é uma folha ou não

Cada nó interno x contém x.n + 1 ponteiros• x.c[i] é o ponteiro para o i-ésimo filho• se a chave k está na subárvore x.c[i], então

– k < x.chave[1] se i = 1– x.chave[x.n] < k se i = x.n + 1– x.chave[i-1 ] < k < x.chave[i] caso contrário

O T.raiz indica o nó que é a raiz da árvore

9

Page 61: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores BSão árvores M -árias de busca com propriedades adicionais

Cada nó x tem os seguintes campos:• x.n é o número de chaves armazenadas em x

• x.chave[i] é i-ésima chave armazenada

– x.chave[1] < x.chave[2 ] < · · · < x.chave[x.n]

• x.folha indica se x é uma folha ou não

Cada nó interno x contém x.n + 1 ponteiros• x.c[i] é o ponteiro para o i-ésimo filho• se a chave k está na subárvore x.c[i], então

– k < x.chave[1] se i = 1– x.chave[x.n] < k se i = x.n + 1– x.chave[i-1 ] < k < x.chave[i] caso contrário

O T.raiz indica o nó que é a raiz da árvore

9

Page 62: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores BSão árvores M -árias de busca com propriedades adicionais

Cada nó x tem os seguintes campos:• x.n é o número de chaves armazenadas em x

• x.chave[i] é i-ésima chave armazenada

– x.chave[1] < x.chave[2 ] < · · · < x.chave[x.n]• x.folha indica se x é uma folha ou não

Cada nó interno x contém x.n + 1 ponteiros• x.c[i] é o ponteiro para o i-ésimo filho• se a chave k está na subárvore x.c[i], então

– k < x.chave[1] se i = 1– x.chave[x.n] < k se i = x.n + 1– x.chave[i-1 ] < k < x.chave[i] caso contrário

O T.raiz indica o nó que é a raiz da árvore

9

Page 63: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores BSão árvores M -árias de busca com propriedades adicionais

Cada nó x tem os seguintes campos:• x.n é o número de chaves armazenadas em x

• x.chave[i] é i-ésima chave armazenada– x.chave[1] < x.chave[2 ] < · · · < x.chave[x.n]

• x.folha indica se x é uma folha ou não

Cada nó interno x contém x.n + 1 ponteiros• x.c[i] é o ponteiro para o i-ésimo filho• se a chave k está na subárvore x.c[i], então

– k < x.chave[1] se i = 1– x.chave[x.n] < k se i = x.n + 1– x.chave[i-1 ] < k < x.chave[i] caso contrário

O T.raiz indica o nó que é a raiz da árvore

9

Page 64: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores BSão árvores M -árias de busca com propriedades adicionais

Cada nó x tem os seguintes campos:• x.n é o número de chaves armazenadas em x

• x.chave[i] é i-ésima chave armazenada– x.chave[1] < x.chave[2 ] < · · · < x.chave[x.n]

• x.folha indica se x é uma folha ou não

Cada nó interno x contém x.n + 1 ponteiros• x.c[i] é o ponteiro para o i-ésimo filho• se a chave k está na subárvore x.c[i], então

– k < x.chave[1] se i = 1– x.chave[x.n] < k se i = x.n + 1– x.chave[i-1 ] < k < x.chave[i] caso contrário

O T.raiz indica o nó que é a raiz da árvore

9

Page 65: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores BSão árvores M -árias de busca com propriedades adicionais

Cada nó x tem os seguintes campos:• x.n é o número de chaves armazenadas em x

• x.chave[i] é i-ésima chave armazenada– x.chave[1] < x.chave[2 ] < · · · < x.chave[x.n]

• x.folha indica se x é uma folha ou não

Cada nó interno x contém x.n + 1 ponteiros

• x.c[i] é o ponteiro para o i-ésimo filho• se a chave k está na subárvore x.c[i], então

– k < x.chave[1] se i = 1– x.chave[x.n] < k se i = x.n + 1– x.chave[i-1 ] < k < x.chave[i] caso contrário

O T.raiz indica o nó que é a raiz da árvore

9

Page 66: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores BSão árvores M -árias de busca com propriedades adicionais

Cada nó x tem os seguintes campos:• x.n é o número de chaves armazenadas em x

• x.chave[i] é i-ésima chave armazenada– x.chave[1] < x.chave[2 ] < · · · < x.chave[x.n]

• x.folha indica se x é uma folha ou não

Cada nó interno x contém x.n + 1 ponteiros• x.c[i] é o ponteiro para o i-ésimo filho

• se a chave k está na subárvore x.c[i], então

– k < x.chave[1] se i = 1– x.chave[x.n] < k se i = x.n + 1– x.chave[i-1 ] < k < x.chave[i] caso contrário

O T.raiz indica o nó que é a raiz da árvore

9

Page 67: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores BSão árvores M -árias de busca com propriedades adicionais

Cada nó x tem os seguintes campos:• x.n é o número de chaves armazenadas em x

• x.chave[i] é i-ésima chave armazenada– x.chave[1] < x.chave[2 ] < · · · < x.chave[x.n]

• x.folha indica se x é uma folha ou não

Cada nó interno x contém x.n + 1 ponteiros• x.c[i] é o ponteiro para o i-ésimo filho• se a chave k está na subárvore x.c[i], então

– k < x.chave[1] se i = 1– x.chave[x.n] < k se i = x.n + 1– x.chave[i-1 ] < k < x.chave[i] caso contrário

O T.raiz indica o nó que é a raiz da árvore

9

Page 68: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores BSão árvores M -árias de busca com propriedades adicionais

Cada nó x tem os seguintes campos:• x.n é o número de chaves armazenadas em x

• x.chave[i] é i-ésima chave armazenada– x.chave[1] < x.chave[2 ] < · · · < x.chave[x.n]

• x.folha indica se x é uma folha ou não

Cada nó interno x contém x.n + 1 ponteiros• x.c[i] é o ponteiro para o i-ésimo filho• se a chave k está na subárvore x.c[i], então

– k < x.chave[1] se i = 1

– x.chave[x.n] < k se i = x.n + 1– x.chave[i-1 ] < k < x.chave[i] caso contrário

O T.raiz indica o nó que é a raiz da árvore

9

Page 69: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores BSão árvores M -árias de busca com propriedades adicionais

Cada nó x tem os seguintes campos:• x.n é o número de chaves armazenadas em x

• x.chave[i] é i-ésima chave armazenada– x.chave[1] < x.chave[2 ] < · · · < x.chave[x.n]

• x.folha indica se x é uma folha ou não

Cada nó interno x contém x.n + 1 ponteiros• x.c[i] é o ponteiro para o i-ésimo filho• se a chave k está na subárvore x.c[i], então

– k < x.chave[1] se i = 1– x.chave[x.n] < k se i = x.n + 1

– x.chave[i-1 ] < k < x.chave[i] caso contrário

O T.raiz indica o nó que é a raiz da árvore

9

Page 70: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores BSão árvores M -árias de busca com propriedades adicionais

Cada nó x tem os seguintes campos:• x.n é o número de chaves armazenadas em x

• x.chave[i] é i-ésima chave armazenada– x.chave[1] < x.chave[2 ] < · · · < x.chave[x.n]

• x.folha indica se x é uma folha ou não

Cada nó interno x contém x.n + 1 ponteiros• x.c[i] é o ponteiro para o i-ésimo filho• se a chave k está na subárvore x.c[i], então

– k < x.chave[1] se i = 1– x.chave[x.n] < k se i = x.n + 1– x.chave[i-1 ] < k < x.chave[i] caso contrário

O T.raiz indica o nó que é a raiz da árvore

9

Page 71: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Árvores BSão árvores M -árias de busca com propriedades adicionais

Cada nó x tem os seguintes campos:• x.n é o número de chaves armazenadas em x

• x.chave[i] é i-ésima chave armazenada– x.chave[1] < x.chave[2 ] < · · · < x.chave[x.n]

• x.folha indica se x é uma folha ou não

Cada nó interno x contém x.n + 1 ponteiros• x.c[i] é o ponteiro para o i-ésimo filho• se a chave k está na subárvore x.c[i], então

– k < x.chave[1] se i = 1– x.chave[x.n] < k se i = x.n + 1– x.chave[i-1 ] < k < x.chave[i] caso contrário

O T.raiz indica o nó que é a raiz da árvore9

Page 72: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Propriedades das Árvores B

Toda folha está à mesma distância h da raiz

• h é a altura da árvore

Existe uma constante t que é o grau mínimo da árvore• Todo nó exceto a raiz precisa ter pelo menos t − 1 chaves

– ou seja, cada nó interno tem pelo menos t filhos

• Todo nó tem no máximo 2t − 1 chaves

– ou seja, cada nó interno tem no máximo 2t filhos

10

Page 73: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Propriedades das Árvores B

Toda folha está à mesma distância h da raiz• h é a altura da árvore

Existe uma constante t que é o grau mínimo da árvore• Todo nó exceto a raiz precisa ter pelo menos t − 1 chaves

– ou seja, cada nó interno tem pelo menos t filhos

• Todo nó tem no máximo 2t − 1 chaves

– ou seja, cada nó interno tem no máximo 2t filhos

10

Page 74: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Propriedades das Árvores B

Toda folha está à mesma distância h da raiz• h é a altura da árvore

Existe uma constante t que é o grau mínimo da árvore

• Todo nó exceto a raiz precisa ter pelo menos t − 1 chaves

– ou seja, cada nó interno tem pelo menos t filhos

• Todo nó tem no máximo 2t − 1 chaves

– ou seja, cada nó interno tem no máximo 2t filhos

10

Page 75: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Propriedades das Árvores B

Toda folha está à mesma distância h da raiz• h é a altura da árvore

Existe uma constante t que é o grau mínimo da árvore• Todo nó exceto a raiz precisa ter pelo menos t − 1 chaves

– ou seja, cada nó interno tem pelo menos t filhos• Todo nó tem no máximo 2t − 1 chaves

– ou seja, cada nó interno tem no máximo 2t filhos

10

Page 76: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Propriedades das Árvores B

Toda folha está à mesma distância h da raiz• h é a altura da árvore

Existe uma constante t que é o grau mínimo da árvore• Todo nó exceto a raiz precisa ter pelo menos t − 1 chaves

– ou seja, cada nó interno tem pelo menos t filhos

• Todo nó tem no máximo 2t − 1 chaves

– ou seja, cada nó interno tem no máximo 2t filhos

10

Page 77: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Propriedades das Árvores B

Toda folha está à mesma distância h da raiz• h é a altura da árvore

Existe uma constante t que é o grau mínimo da árvore• Todo nó exceto a raiz precisa ter pelo menos t − 1 chaves

– ou seja, cada nó interno tem pelo menos t filhos• Todo nó tem no máximo 2t − 1 chaves

– ou seja, cada nó interno tem no máximo 2t filhos

10

Page 78: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Propriedades das Árvores B

Toda folha está à mesma distância h da raiz• h é a altura da árvore

Existe uma constante t que é o grau mínimo da árvore• Todo nó exceto a raiz precisa ter pelo menos t − 1 chaves

– ou seja, cada nó interno tem pelo menos t filhos• Todo nó tem no máximo 2t − 1 chaves

– ou seja, cada nó interno tem no máximo 2t filhos

10

Page 79: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo

2 3 5 9 14 17 24 30 31

7 13 23

40 59 60

56

35

Para t = 2:• cada nó não raiz tem pelo menos 1 chave• cada nó tem no máximo 3 chaves

11

Page 80: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Outro exemplo

1 4 6 7 11 12 16 19 25 28 30 34 35 40 42 44 45 47

10 23 37

52 55 55 62 63 64 65 67 69 70

61 68

51

Para t = 3:• cada nó não raiz tem pelo menos 2 chaves• cada nó tem no máximo 5 chaves

12

Page 81: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Altura de uma Árvore B

Uma árvore B com n chaves tem altura h ≤ logtn+1

2

• a raiz tem pelo menos 2 filhos• esses filhos têm pelo menos 2t filhos• que têm pelo menos 2t2 filhos• e assim por diante

A árvore é muito larga e muito baixa!

13

Page 82: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Altura de uma Árvore B

Uma árvore B com n chaves tem altura h ≤ logtn+1

2• a raiz tem pelo menos 2 filhos

• esses filhos têm pelo menos 2t filhos• que têm pelo menos 2t2 filhos• e assim por diante

A árvore é muito larga e muito baixa!

13

Page 83: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Altura de uma Árvore B

Uma árvore B com n chaves tem altura h ≤ logtn+1

2• a raiz tem pelo menos 2 filhos• esses filhos têm pelo menos 2t filhos

• que têm pelo menos 2t2 filhos• e assim por diante

A árvore é muito larga e muito baixa!

13

Page 84: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Altura de uma Árvore B

Uma árvore B com n chaves tem altura h ≤ logtn+1

2• a raiz tem pelo menos 2 filhos• esses filhos têm pelo menos 2t filhos• que têm pelo menos 2t2 filhos

• e assim por diante

A árvore é muito larga e muito baixa!

13

Page 85: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Altura de uma Árvore B

Uma árvore B com n chaves tem altura h ≤ logtn+1

2• a raiz tem pelo menos 2 filhos• esses filhos têm pelo menos 2t filhos• que têm pelo menos 2t2 filhos• e assim por diante

A árvore é muito larga e muito baixa!

13

Page 86: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Altura de uma Árvore B

Uma árvore B com n chaves tem altura h ≤ logtn+1

2• a raiz tem pelo menos 2 filhos• esses filhos têm pelo menos 2t filhos• que têm pelo menos 2t2 filhos• e assim por diante

A árvore é muito larga e muito baixa!

13

Page 87: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Escolhendo tQueremos que um nó caiba em uma página do disco

• mas não queremos utilizar mal a página do disco

Escolha t máximo tal que 2t − 1 chaves caibam na página• Se t = 1001 e h = 2, armazenamos até 109 chaves• i.e., fazemos dois acessos ao disco

Consideramos que o registro está junto com a chave• Ou então temos um ponteiro para o registro

Quando t = 2, temos as Árvores 2 − 3 − 4• Equivalentes às árvores rubro-negras

b

a

α β

γ

b

a

α β

γa b

α β γ

14

Page 88: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Escolhendo tQueremos que um nó caiba em uma página do disco

• mas não queremos utilizar mal a página do disco

Escolha t máximo tal que 2t − 1 chaves caibam na página• Se t = 1001 e h = 2, armazenamos até 109 chaves• i.e., fazemos dois acessos ao disco

Consideramos que o registro está junto com a chave• Ou então temos um ponteiro para o registro

Quando t = 2, temos as Árvores 2 − 3 − 4• Equivalentes às árvores rubro-negras

b

a

α β

γ

b

a

α β

γa b

α β γ

14

Page 89: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Escolhendo tQueremos que um nó caiba em uma página do disco

• mas não queremos utilizar mal a página do disco

Escolha t máximo tal que 2t − 1 chaves caibam na página

• Se t = 1001 e h = 2, armazenamos até 109 chaves• i.e., fazemos dois acessos ao disco

Consideramos que o registro está junto com a chave• Ou então temos um ponteiro para o registro

Quando t = 2, temos as Árvores 2 − 3 − 4• Equivalentes às árvores rubro-negras

b

a

α β

γ

b

a

α β

γa b

α β γ

14

Page 90: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Escolhendo tQueremos que um nó caiba em uma página do disco

• mas não queremos utilizar mal a página do disco

Escolha t máximo tal que 2t − 1 chaves caibam na página• Se t = 1001 e h = 2, armazenamos até 109 chaves

• i.e., fazemos dois acessos ao disco

Consideramos que o registro está junto com a chave• Ou então temos um ponteiro para o registro

Quando t = 2, temos as Árvores 2 − 3 − 4• Equivalentes às árvores rubro-negras

b

a

α β

γ

b

a

α β

γa b

α β γ

14

Page 91: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Escolhendo tQueremos que um nó caiba em uma página do disco

• mas não queremos utilizar mal a página do disco

Escolha t máximo tal que 2t − 1 chaves caibam na página• Se t = 1001 e h = 2, armazenamos até 109 chaves• i.e., fazemos dois acessos ao disco

Consideramos que o registro está junto com a chave• Ou então temos um ponteiro para o registro

Quando t = 2, temos as Árvores 2 − 3 − 4• Equivalentes às árvores rubro-negras

b

a

α β

γ

b

a

α β

γa b

α β γ

14

Page 92: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Escolhendo tQueremos que um nó caiba em uma página do disco

• mas não queremos utilizar mal a página do disco

Escolha t máximo tal que 2t − 1 chaves caibam na página• Se t = 1001 e h = 2, armazenamos até 109 chaves• i.e., fazemos dois acessos ao disco

Consideramos que o registro está junto com a chave

• Ou então temos um ponteiro para o registro

Quando t = 2, temos as Árvores 2 − 3 − 4• Equivalentes às árvores rubro-negras

b

a

α β

γ

b

a

α β

γa b

α β γ

14

Page 93: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Escolhendo tQueremos que um nó caiba em uma página do disco

• mas não queremos utilizar mal a página do disco

Escolha t máximo tal que 2t − 1 chaves caibam na página• Se t = 1001 e h = 2, armazenamos até 109 chaves• i.e., fazemos dois acessos ao disco

Consideramos que o registro está junto com a chave• Ou então temos um ponteiro para o registro

Quando t = 2, temos as Árvores 2 − 3 − 4• Equivalentes às árvores rubro-negras

b

a

α β

γ

b

a

α β

γa b

α β γ

14

Page 94: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Escolhendo tQueremos que um nó caiba em uma página do disco

• mas não queremos utilizar mal a página do disco

Escolha t máximo tal que 2t − 1 chaves caibam na página• Se t = 1001 e h = 2, armazenamos até 109 chaves• i.e., fazemos dois acessos ao disco

Consideramos que o registro está junto com a chave• Ou então temos um ponteiro para o registro

Quando t = 2, temos as Árvores 2 − 3 − 4

• Equivalentes às árvores rubro-negrasb

a

α β

γ

b

a

α β

γa b

α β γ

14

Page 95: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Escolhendo tQueremos que um nó caiba em uma página do disco

• mas não queremos utilizar mal a página do disco

Escolha t máximo tal que 2t − 1 chaves caibam na página• Se t = 1001 e h = 2, armazenamos até 109 chaves• i.e., fazemos dois acessos ao disco

Consideramos que o registro está junto com a chave• Ou então temos um ponteiro para o registro

Quando t = 2, temos as Árvores 2 − 3 − 4• Equivalentes às árvores rubro-negras

b

a

α β

γ

b

a

α β

γa b

α β γ

14

Page 96: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Escolhendo tQueremos que um nó caiba em uma página do disco

• mas não queremos utilizar mal a página do disco

Escolha t máximo tal que 2t − 1 chaves caibam na página• Se t = 1001 e h = 2, armazenamos até 109 chaves• i.e., fazemos dois acessos ao disco

Consideramos que o registro está junto com a chave• Ou então temos um ponteiro para o registro

Quando t = 2, temos as Árvores 2 − 3 − 4• Equivalentes às árvores rubro-negras

b

a

α β

γ

b

a

α β

γa b

α β γ

14

Page 97: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Escolhendo tQueremos que um nó caiba em uma página do disco

• mas não queremos utilizar mal a página do disco

Escolha t máximo tal que 2t − 1 chaves caibam na página• Se t = 1001 e h = 2, armazenamos até 109 chaves• i.e., fazemos dois acessos ao disco

Consideramos que o registro está junto com a chave• Ou então temos um ponteiro para o registro

Quando t = 2, temos as Árvores 2 − 3 − 4• Equivalentes às árvores rubro-negras

b

a

α β

γ

b

a

α β

γ

a b

α β γ

14

Page 98: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Escolhendo tQueremos que um nó caiba em uma página do disco

• mas não queremos utilizar mal a página do disco

Escolha t máximo tal que 2t − 1 chaves caibam na página• Se t = 1001 e h = 2, armazenamos até 109 chaves• i.e., fazemos dois acessos ao disco

Consideramos que o registro está junto com a chave• Ou então temos um ponteiro para o registro

Quando t = 2, temos as Árvores 2 − 3 − 4• Equivalentes às árvores rubro-negras

b

a

α β

γ

b

a

α β

γa b

α β γ

14

Page 99: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Busca na Árvore B

Para procurar a chave k no nó x

• Basta verificar se a chave está em x

• Se não estiver, basta buscar no filho correto

Busca(x, k)1 i = 12 enquanto i ≤ x.n e k > x.chave[i]3 i = i + 14 se i ≤ x.n e k == x.chave[i]5 retorne (x, i)6 senão se x. folha7 retorne NIL8 senão9 LeDoDisco(x.c[i])

10 retorne Busca(x.c[i], k)

15

Page 100: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Busca na Árvore B

Para procurar a chave k no nó x

• Basta verificar se a chave está em x

• Se não estiver, basta buscar no filho correto

Busca(x, k)1 i = 12 enquanto i ≤ x.n e k > x.chave[i]3 i = i + 14 se i ≤ x.n e k == x.chave[i]5 retorne (x, i)6 senão se x. folha7 retorne NIL8 senão9 LeDoDisco(x.c[i])

10 retorne Busca(x.c[i], k)

15

Page 101: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Busca na Árvore B

Para procurar a chave k no nó x

• Basta verificar se a chave está em x

• Se não estiver, basta buscar no filho correto

Busca(x, k)1 i = 12 enquanto i ≤ x.n e k > x.chave[i]3 i = i + 14 se i ≤ x.n e k == x.chave[i]5 retorne (x, i)6 senão se x. folha7 retorne NIL8 senão9 LeDoDisco(x.c[i])

10 retorne Busca(x.c[i], k)

15

Page 102: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Busca na Árvore B

Para procurar a chave k no nó x

• Basta verificar se a chave está em x

• Se não estiver, basta buscar no filho correto

Busca(x, k)1 i = 12 enquanto i ≤ x.n e k > x.chave[i]3 i = i + 14 se i ≤ x.n e k == x.chave[i]5 retorne (x, i)6 senão se x. folha7 retorne NIL8 senão9 LeDoDisco(x.c[i])

10 retorne Busca(x.c[i], k)

15

Page 103: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Busca na Árvore B

Para procurar a chave k no nó x

• Basta verificar se a chave está em x

• Se não estiver, basta buscar no filho correto

Busca(x, k)1 i = 12 enquanto i ≤ x.n e k > x.chave[i]3 i = i + 14 se i ≤ x.n e k == x.chave[i]5 retorne (x, i)6 senão se x. folha7 retorne NIL8 senão9 LeDoDisco(x.c[i])

10 retorne Busca(x.c[i], k)

15

Page 104: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Criando uma Árvore B

Criamos uma árvore vazia

• Basta alocar o nó e definir os campos

Inicia(T )1 x = Aloca()2 x. folha = Verdadeiro3 x.n = 04 EscreveNoDisco(x)5 T.raiz = x

16

Page 105: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Criando uma Árvore B

Criamos uma árvore vazia• Basta alocar o nó e definir os campos

Inicia(T )1 x = Aloca()2 x. folha = Verdadeiro3 x.n = 04 EscreveNoDisco(x)5 T.raiz = x

16

Page 106: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Criando uma Árvore B

Criamos uma árvore vazia• Basta alocar o nó e definir os campos

Inicia(T )1 x = Aloca()2 x. folha = Verdadeiro3 x.n = 04 EscreveNoDisco(x)5 T.raiz = x

16

Page 107: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Criando uma Árvore B

Criamos uma árvore vazia• Basta alocar o nó e definir os campos

Inicia(T )1 x = Aloca()2 x. folha = Verdadeiro3 x.n = 04 EscreveNoDisco(x)5 T.raiz = x

16

Page 108: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

InserçãoA inserção ocorre sempre em um nó folha

• porém, o nó folha pode estar cheio (x.n == 2t − 1)• dividimos o nó na chave mediana (x.chave[t])

– em dois nós com t − 1 chaves– inserimos x.chave[t] no pai para representar a quebra– mas o pai poderia estar cheio...

• dividimos todo nó cheio no caminho a inserção

– assim, o pai nunca estará cheio

Exemplo: t = 3

· · · c i · · ·

T0 T1 T2 T3 T4 T5

d e f g h

· · · c f i · · ·

T0 T1 T2 T3 T4 T5

d e g h

17

Page 109: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

InserçãoA inserção ocorre sempre em um nó folha

• porém, o nó folha pode estar cheio (x.n == 2t − 1)

• dividimos o nó na chave mediana (x.chave[t])

– em dois nós com t − 1 chaves– inserimos x.chave[t] no pai para representar a quebra– mas o pai poderia estar cheio...

• dividimos todo nó cheio no caminho a inserção

– assim, o pai nunca estará cheio

Exemplo: t = 3

· · · c i · · ·

T0 T1 T2 T3 T4 T5

d e f g h

· · · c f i · · ·

T0 T1 T2 T3 T4 T5

d e g h

17

Page 110: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

InserçãoA inserção ocorre sempre em um nó folha

• porém, o nó folha pode estar cheio (x.n == 2t − 1)• dividimos o nó na chave mediana (x.chave[t])

– em dois nós com t − 1 chaves– inserimos x.chave[t] no pai para representar a quebra– mas o pai poderia estar cheio...

• dividimos todo nó cheio no caminho a inserção

– assim, o pai nunca estará cheio

Exemplo: t = 3

· · · c i · · ·

T0 T1 T2 T3 T4 T5

d e f g h

· · · c f i · · ·

T0 T1 T2 T3 T4 T5

d e g h

17

Page 111: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

InserçãoA inserção ocorre sempre em um nó folha

• porém, o nó folha pode estar cheio (x.n == 2t − 1)• dividimos o nó na chave mediana (x.chave[t])

– em dois nós com t − 1 chaves

– inserimos x.chave[t] no pai para representar a quebra– mas o pai poderia estar cheio...

• dividimos todo nó cheio no caminho a inserção

– assim, o pai nunca estará cheio

Exemplo: t = 3

· · · c i · · ·

T0 T1 T2 T3 T4 T5

d e f g h

· · · c f i · · ·

T0 T1 T2 T3 T4 T5

d e g h

17

Page 112: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

InserçãoA inserção ocorre sempre em um nó folha

• porém, o nó folha pode estar cheio (x.n == 2t − 1)• dividimos o nó na chave mediana (x.chave[t])

– em dois nós com t − 1 chaves– inserimos x.chave[t] no pai para representar a quebra

– mas o pai poderia estar cheio...• dividimos todo nó cheio no caminho a inserção

– assim, o pai nunca estará cheio

Exemplo: t = 3

· · · c i · · ·

T0 T1 T2 T3 T4 T5

d e f g h

· · · c f i · · ·

T0 T1 T2 T3 T4 T5

d e g h

17

Page 113: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

InserçãoA inserção ocorre sempre em um nó folha

• porém, o nó folha pode estar cheio (x.n == 2t − 1)• dividimos o nó na chave mediana (x.chave[t])

– em dois nós com t − 1 chaves– inserimos x.chave[t] no pai para representar a quebra– mas o pai poderia estar cheio...

• dividimos todo nó cheio no caminho a inserção

– assim, o pai nunca estará cheio

Exemplo: t = 3

· · · c i · · ·

T0 T1 T2 T3 T4 T5

d e f g h

· · · c f i · · ·

T0 T1 T2 T3 T4 T5

d e g h

17

Page 114: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

InserçãoA inserção ocorre sempre em um nó folha

• porém, o nó folha pode estar cheio (x.n == 2t − 1)• dividimos o nó na chave mediana (x.chave[t])

– em dois nós com t − 1 chaves– inserimos x.chave[t] no pai para representar a quebra– mas o pai poderia estar cheio...

• dividimos todo nó cheio no caminho a inserção

– assim, o pai nunca estará cheio

Exemplo: t = 3

· · · c i · · ·

T0 T1 T2 T3 T4 T5

d e f g h

· · · c f i · · ·

T0 T1 T2 T3 T4 T5

d e g h

17

Page 115: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

InserçãoA inserção ocorre sempre em um nó folha

• porém, o nó folha pode estar cheio (x.n == 2t − 1)• dividimos o nó na chave mediana (x.chave[t])

– em dois nós com t − 1 chaves– inserimos x.chave[t] no pai para representar a quebra– mas o pai poderia estar cheio...

• dividimos todo nó cheio no caminho a inserção– assim, o pai nunca estará cheio

Exemplo: t = 3

· · · c i · · ·

T0 T1 T2 T3 T4 T5

d e f g h

· · · c f i · · ·

T0 T1 T2 T3 T4 T5

d e g h

17

Page 116: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

InserçãoA inserção ocorre sempre em um nó folha

• porém, o nó folha pode estar cheio (x.n == 2t − 1)• dividimos o nó na chave mediana (x.chave[t])

– em dois nós com t − 1 chaves– inserimos x.chave[t] no pai para representar a quebra– mas o pai poderia estar cheio...

• dividimos todo nó cheio no caminho a inserção– assim, o pai nunca estará cheio

Exemplo: t = 3

· · · c i · · ·

T0 T1 T2 T3 T4 T5

d e f g h

· · · c f i · · ·

T0 T1 T2 T3 T4 T5

d e g h

17

Page 117: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

InserçãoA inserção ocorre sempre em um nó folha

• porém, o nó folha pode estar cheio (x.n == 2t − 1)• dividimos o nó na chave mediana (x.chave[t])

– em dois nós com t − 1 chaves– inserimos x.chave[t] no pai para representar a quebra– mas o pai poderia estar cheio...

• dividimos todo nó cheio no caminho a inserção– assim, o pai nunca estará cheio

Exemplo: t = 3

· · · c i · · ·

T0 T1 T2 T3 T4 T5

d e f g h

· · · c f i · · ·

T0 T1 T2 T3 T4 T5

d e g h

17

Page 118: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Dividindo um nóDivideFilho(x, i)

1 z = Aloca()2 y = x.c[i]3 z. folha = y. folha4 z.n = t − 15 para j = 1 até t − 16 z.chave[j] = y.chave[j + t]7 se não y. folha8 para j = 1 até t9 z.c[j] = y.c[j + t]

10 y.n = t − 111 para j = x.n + 1 decrescendo até i + 112 x.c[j + 1 ] = x.c[j]13 x.c[i + 1 ] = z14 para j = x.n decrescendo até i15 x.chave[j + 1 ] = x.chave[j]16 x.chave[i] = y.chave[t]17 x.n = x.n + 118 EscreveNoDisco(y)19 EscreveNoDisco(z)20 EscreveNoDisco(x)

· · · c i · · ·x

T0 T1 T2 T3 T4 T5

d e f g hy z

T3 T4 T5

g hz

· · · c i · · ·x

T0 T1 T2

d ey

· · · c f i · · ·x

T0 T1 T2

d ey

18

Page 119: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Dividindo um nóDivideFilho(x, i)

1 z = Aloca()2 y = x.c[i]3 z. folha = y. folha4 z.n = t − 15 para j = 1 até t − 16 z.chave[j] = y.chave[j + t]7 se não y. folha8 para j = 1 até t9 z.c[j] = y.c[j + t]

10 y.n = t − 111 para j = x.n + 1 decrescendo até i + 112 x.c[j + 1 ] = x.c[j]13 x.c[i + 1 ] = z14 para j = x.n decrescendo até i15 x.chave[j + 1 ] = x.chave[j]16 x.chave[i] = y.chave[t]17 x.n = x.n + 118 EscreveNoDisco(y)19 EscreveNoDisco(z)20 EscreveNoDisco(x)

· · · c i · · ·x

T0 T1 T2 T3 T4 T5

d e f g hy

z

T3 T4 T5

g hz

· · · c i · · ·x

T0 T1 T2

d ey

· · · c f i · · ·x

T0 T1 T2

d ey

18

Page 120: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Dividindo um nóDivideFilho(x, i)

1 z = Aloca()2 y = x.c[i]3 z. folha = y. folha4 z.n = t − 15 para j = 1 até t − 16 z.chave[j] = y.chave[j + t]7 se não y. folha8 para j = 1 até t9 z.c[j] = y.c[j + t]

10 y.n = t − 111 para j = x.n + 1 decrescendo até i + 112 x.c[j + 1 ] = x.c[j]13 x.c[i + 1 ] = z14 para j = x.n decrescendo até i15 x.chave[j + 1 ] = x.chave[j]16 x.chave[i] = y.chave[t]17 x.n = x.n + 118 EscreveNoDisco(y)19 EscreveNoDisco(z)20 EscreveNoDisco(x)

· · · c i · · ·x

T0 T1 T2 T3 T4 T5

d e f g hy z

T3 T4 T5

g hz

· · · c i · · ·x

T0 T1 T2

d ey

· · · c f i · · ·x

T0 T1 T2

d ey

18

Page 121: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Dividindo um nóDivideFilho(x, i)

1 z = Aloca()2 y = x.c[i]3 z. folha = y. folha4 z.n = t − 15 para j = 1 até t − 16 z.chave[j] = y.chave[j + t]7 se não y. folha8 para j = 1 até t9 z.c[j] = y.c[j + t]

10 y.n = t − 111 para j = x.n + 1 decrescendo até i + 112 x.c[j + 1 ] = x.c[j]13 x.c[i + 1 ] = z14 para j = x.n decrescendo até i15 x.chave[j + 1 ] = x.chave[j]16 x.chave[i] = y.chave[t]17 x.n = x.n + 118 EscreveNoDisco(y)19 EscreveNoDisco(z)20 EscreveNoDisco(x)

· · · c i · · ·x

T0 T1 T2 T3 T4 T5

d e f g hy

z

T3 T4 T5

g hz

· · · c i · · ·x

T0 T1 T2

d ey

· · · c f i · · ·x

T0 T1 T2

d ey

18

Page 122: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Dividindo um nóDivideFilho(x, i)

1 z = Aloca()2 y = x.c[i]3 z. folha = y. folha4 z.n = t − 15 para j = 1 até t − 16 z.chave[j] = y.chave[j + t]7 se não y. folha8 para j = 1 até t9 z.c[j] = y.c[j + t]

10 y.n = t − 111 para j = x.n + 1 decrescendo até i + 112 x.c[j + 1 ] = x.c[j]13 x.c[i + 1 ] = z14 para j = x.n decrescendo até i15 x.chave[j + 1 ] = x.chave[j]16 x.chave[i] = y.chave[t]17 x.n = x.n + 118 EscreveNoDisco(y)19 EscreveNoDisco(z)20 EscreveNoDisco(x)

· · · c i · · ·x

T0 T1 T2 T3 T4 T5

d e f g hy

z

T3 T4 T5

g hz

· · · c i · · ·x

T0 T1 T2

d ey

· · · c f i · · ·x

T0 T1 T2

d ey

18

Page 123: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Dividindo um nóDivideFilho(x, i)

1 z = Aloca()2 y = x.c[i]3 z. folha = y. folha4 z.n = t − 15 para j = 1 até t − 16 z.chave[j] = y.chave[j + t]7 se não y. folha8 para j = 1 até t9 z.c[j] = y.c[j + t]

10 y.n = t − 111 para j = x.n + 1 decrescendo até i + 112 x.c[j + 1 ] = x.c[j]13 x.c[i + 1 ] = z14 para j = x.n decrescendo até i15 x.chave[j + 1 ] = x.chave[j]16 x.chave[i] = y.chave[t]17 x.n = x.n + 118 EscreveNoDisco(y)19 EscreveNoDisco(z)20 EscreveNoDisco(x)

· · · c i · · ·x

T0 T1 T2 T3 T4 T5

d e f g hy z

T3 T4 T5

g hz

· · · c i · · ·x

T0 T1 T2

d ey

· · · c f i · · ·x

T0 T1 T2

d ey

18

Page 124: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Dividindo um nóDivideFilho(x, i)

1 z = Aloca()2 y = x.c[i]3 z. folha = y. folha4 z.n = t − 15 para j = 1 até t − 16 z.chave[j] = y.chave[j + t]7 se não y. folha8 para j = 1 até t9 z.c[j] = y.c[j + t]

10 y.n = t − 111 para j = x.n + 1 decrescendo até i + 112 x.c[j + 1 ] = x.c[j]13 x.c[i + 1 ] = z14 para j = x.n decrescendo até i15 x.chave[j + 1 ] = x.chave[j]16 x.chave[i] = y.chave[t]17 x.n = x.n + 118 EscreveNoDisco(y)19 EscreveNoDisco(z)20 EscreveNoDisco(x)

· · · c i · · ·x

T0 T1 T2 T3 T4 T5

d e f g hy z

T3 T4 T5

g hz

· · · c i · · ·x

T0 T1 T2

d ey

· · · c f i · · ·x

T0 T1 T2

d ey

18

Page 125: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Inserindo

Vamos inserir a chave k na árvore T

• verificamos se não é necessário dividir a raiz

Insere(T, k)1 r = T.raiz2 se r.n == 2t − 13 s = Aloca()4 T.raiz = s5 s. folha = Falso6 s.n = 07 s.c[1] = r8 DivideFilho(s, 1)9 InsereNãoCheio(s, k)

10 senão11 InsereNãoCheio(r, k)

19

Page 126: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Inserindo chave k em um nó não-cheio x

InsereNãoCheio(x, k)1 i = x.n2 se x. folha3 enquanto i ≥ 1 e k < x.chave[i]4 x.chave[i + 1 ] = x.chave[i]5 i = i − 16 x.chave[i + 1 ] = k7 x.n = x.n + 18 EscreveNoDisco(x)9 senão

10 enquanto i ≥ 1 e k < x.chave[i]11 i = i − 112 i = i + 113 LeDoDisco(x.c[i])14 se x.c[i].n == 2t − 115 DivideFilho(x, i)16 se k > x.chave[i]17 i = i + 118 InsereNãoCheio(x.c[i], k)

20

Page 127: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó não cheio

Inserindo 53

1 4 6 7 11 12 16 17 19 25 28 30 34 35

10 23

52 54 55 62 63 64 65 67 69 70

61 68

51

21

Page 128: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó não cheio

Inserindo 53

1 4 6 7 11 12 16 17 19 25 28 30 34 35

10 23

52 54 55 62 63 64 65 67 69 70

61 68

51

21

Page 129: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó não cheio

Inserindo 53

1 4 6 7 11 12 16 17 19 25 28 30 34 35

10 23

52 54 55 62 63 64 65 67 69 70

61 68

51

21

Page 130: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó não cheio

Inserindo 53

1 4 6 7 11 12 16 17 19 25 28 30 34 35

10 23

52 54 55 62 63 64 65 67 69 70

61 68

51

21

Page 131: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó não cheio

Inserindo 53

1 4 6 7 11 12 16 17 19 25 28 30 34 35

10 23

52 54 55 62 63 64 65 67 69 70

61 68

51

21

Page 132: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó não cheio

Inserindo 53

1 4 6 7 11 12 16 17 19 25 28 30 34 35

10 23

52 53 54 55 62 63 64 65 67 69 70

61 68

51

21

Page 133: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó cheio

Inserindo 18

1 4 6 7 11 12 16 17 19 25 28 30 34 35

10 23

52 53 54 55 62 63 64 65 67 69 70

61 68

51

22

Page 134: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó cheio

Inserindo 18

1 4 6 7 11 12 16 17 19 25 28 30 34 35

10 23

52 53 54 55 62 63 64 65 67 69 70

61 68

51

22

Page 135: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó cheio

Inserindo 18

1 4 6 7 11 12 16 17 19 25 28 30 34 35

10 23

52 53 54 55 62 63 64 65 67 69 70

61 68

51

22

Page 136: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó cheio

Inserindo 18

1 4 6 7 11 12 16 17 19 25 28 30 34 35

10 23

52 53 54 55 62 63 64 65 67 69 70

61 68

51

22

Page 137: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó cheio

Inserindo 18

1 4 6 7 11 12 16 17 19 25 28 30 34 35

10 23

52 53 54 55 62 63 64 65 67 69 70

61 68

51

22

Page 138: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó cheio

Inserindo 18

1 4 6 7 11 12 16 17 19 25 28 30 34 35

10 23

52 53 54 55 62 63 64 65 67 69 70

61 68

51

22

Page 139: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó cheio

Inserindo 18

1 4 6 7 11 12 17 19 25 28 30 34 35

10 16 23

52 53 54 55 62 63 64 65 67 69 70

61 68

51

22

Page 140: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó cheio

Inserindo 18

1 4 6 7 11 12 17 19 25 28 30 34 35

10 16 23

52 53 54 55 62 63 64 65 67 69 70

61 68

51

22

Page 141: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó cheio

Inserindo 18

1 4 6 7 11 12 17 19 25 28 30 34 35

10 16 23

52 53 54 55 62 63 64 65 67 69 70

61 68

51

22

Page 142: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exemplo: inserindo em nó cheio

Inserindo 18

1 4 6 7 11 12 17 18 19 25 28 30 34 35

10 16 23

52 53 54 55 62 63 64 65 67 69 70

61 68

51

22

Page 143: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Remoção

A remoção é mais complicada que a inserção

• Ela pode ocorrer em qualquer lugar da árvore• Cada nó precisa continuar com pelo menos t − 1 chaves

– exceto a raiz que tem que ter pelo menos 1 chave

Para resolver esse problema, garantimos que os nós no caminho daremoção têm pelo menos t chaves

• nesse caso não há problema em remover• se não houver, tentamos mover uma chave de um vizinho• nem sempre conseguimos

– quando cada um dos dois vizinhos tiver apenas t − 1 chaves– juntamos os nós formando um nó com 2t − 1 chaves

23

Page 144: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Remoção

A remoção é mais complicada que a inserção• Ela pode ocorrer em qualquer lugar da árvore

• Cada nó precisa continuar com pelo menos t − 1 chaves

– exceto a raiz que tem que ter pelo menos 1 chave

Para resolver esse problema, garantimos que os nós no caminho daremoção têm pelo menos t chaves

• nesse caso não há problema em remover• se não houver, tentamos mover uma chave de um vizinho• nem sempre conseguimos

– quando cada um dos dois vizinhos tiver apenas t − 1 chaves– juntamos os nós formando um nó com 2t − 1 chaves

23

Page 145: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Remoção

A remoção é mais complicada que a inserção• Ela pode ocorrer em qualquer lugar da árvore• Cada nó precisa continuar com pelo menos t − 1 chaves

– exceto a raiz que tem que ter pelo menos 1 chave

Para resolver esse problema, garantimos que os nós no caminho daremoção têm pelo menos t chaves

• nesse caso não há problema em remover• se não houver, tentamos mover uma chave de um vizinho• nem sempre conseguimos

– quando cada um dos dois vizinhos tiver apenas t − 1 chaves– juntamos os nós formando um nó com 2t − 1 chaves

23

Page 146: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Remoção

A remoção é mais complicada que a inserção• Ela pode ocorrer em qualquer lugar da árvore• Cada nó precisa continuar com pelo menos t − 1 chaves

– exceto a raiz que tem que ter pelo menos 1 chave

Para resolver esse problema, garantimos que os nós no caminho daremoção têm pelo menos t chaves

• nesse caso não há problema em remover• se não houver, tentamos mover uma chave de um vizinho• nem sempre conseguimos

– quando cada um dos dois vizinhos tiver apenas t − 1 chaves– juntamos os nós formando um nó com 2t − 1 chaves

23

Page 147: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Remoção

A remoção é mais complicada que a inserção• Ela pode ocorrer em qualquer lugar da árvore• Cada nó precisa continuar com pelo menos t − 1 chaves

– exceto a raiz que tem que ter pelo menos 1 chave

Para resolver esse problema, garantimos que os nós no caminho daremoção têm pelo menos t chaves

• nesse caso não há problema em remover• se não houver, tentamos mover uma chave de um vizinho• nem sempre conseguimos

– quando cada um dos dois vizinhos tiver apenas t − 1 chaves– juntamos os nós formando um nó com 2t − 1 chaves

23

Page 148: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Remoção

A remoção é mais complicada que a inserção• Ela pode ocorrer em qualquer lugar da árvore• Cada nó precisa continuar com pelo menos t − 1 chaves

– exceto a raiz que tem que ter pelo menos 1 chave

Para resolver esse problema, garantimos que os nós no caminho daremoção têm pelo menos t chaves

• nesse caso não há problema em remover

• se não houver, tentamos mover uma chave de um vizinho• nem sempre conseguimos

– quando cada um dos dois vizinhos tiver apenas t − 1 chaves– juntamos os nós formando um nó com 2t − 1 chaves

23

Page 149: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Remoção

A remoção é mais complicada que a inserção• Ela pode ocorrer em qualquer lugar da árvore• Cada nó precisa continuar com pelo menos t − 1 chaves

– exceto a raiz que tem que ter pelo menos 1 chave

Para resolver esse problema, garantimos que os nós no caminho daremoção têm pelo menos t chaves

• nesse caso não há problema em remover• se não houver, tentamos mover uma chave de um vizinho

• nem sempre conseguimos

– quando cada um dos dois vizinhos tiver apenas t − 1 chaves– juntamos os nós formando um nó com 2t − 1 chaves

23

Page 150: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Remoção

A remoção é mais complicada que a inserção• Ela pode ocorrer em qualquer lugar da árvore• Cada nó precisa continuar com pelo menos t − 1 chaves

– exceto a raiz que tem que ter pelo menos 1 chave

Para resolver esse problema, garantimos que os nós no caminho daremoção têm pelo menos t chaves

• nesse caso não há problema em remover• se não houver, tentamos mover uma chave de um vizinho• nem sempre conseguimos

– quando cada um dos dois vizinhos tiver apenas t − 1 chaves– juntamos os nós formando um nó com 2t − 1 chaves

23

Page 151: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Remoção

A remoção é mais complicada que a inserção• Ela pode ocorrer em qualquer lugar da árvore• Cada nó precisa continuar com pelo menos t − 1 chaves

– exceto a raiz que tem que ter pelo menos 1 chave

Para resolver esse problema, garantimos que os nós no caminho daremoção têm pelo menos t chaves

• nesse caso não há problema em remover• se não houver, tentamos mover uma chave de um vizinho• nem sempre conseguimos

– quando cada um dos dois vizinhos tiver apenas t − 1 chaves

– juntamos os nós formando um nó com 2t − 1 chaves

23

Page 152: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Remoção

A remoção é mais complicada que a inserção• Ela pode ocorrer em qualquer lugar da árvore• Cada nó precisa continuar com pelo menos t − 1 chaves

– exceto a raiz que tem que ter pelo menos 1 chave

Para resolver esse problema, garantimos que os nós no caminho daremoção têm pelo menos t chaves

• nesse caso não há problema em remover• se não houver, tentamos mover uma chave de um vizinho• nem sempre conseguimos

– quando cada um dos dois vizinhos tiver apenas t − 1 chaves– juntamos os nós formando um nó com 2t − 1 chaves

23

Page 153: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Variantes

Árvores B∗:

• Nós não raiz precisam ficar pelo menos 2/3 cheios

Árvores B+:• Mantêm cópias das chaves nos nós internos, mas as chaves e

os registros são armazenados nas folhas• Permite acesso sequencial dos dados

1 4 6 10 12 16 23 28 37 42 44

10 23 37

51 54 55 61 63 64 69 70

61 69

51

24

Page 154: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Variantes

Árvores B∗:• Nós não raiz precisam ficar pelo menos 2/3 cheios

Árvores B+:• Mantêm cópias das chaves nos nós internos, mas as chaves e

os registros são armazenados nas folhas• Permite acesso sequencial dos dados

1 4 6 10 12 16 23 28 37 42 44

10 23 37

51 54 55 61 63 64 69 70

61 69

51

24

Page 155: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Variantes

Árvores B∗:• Nós não raiz precisam ficar pelo menos 2/3 cheios

Árvores B+:

• Mantêm cópias das chaves nos nós internos, mas as chaves eos registros são armazenados nas folhas

• Permite acesso sequencial dos dados

1 4 6 10 12 16 23 28 37 42 44

10 23 37

51 54 55 61 63 64 69 70

61 69

51

24

Page 156: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Variantes

Árvores B∗:• Nós não raiz precisam ficar pelo menos 2/3 cheios

Árvores B+:• Mantêm cópias das chaves nos nós internos, mas as chaves e

os registros são armazenados nas folhas

• Permite acesso sequencial dos dados

1 4 6 10 12 16 23 28 37 42 44

10 23 37

51 54 55 61 63 64 69 70

61 69

51

24

Page 157: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Variantes

Árvores B∗:• Nós não raiz precisam ficar pelo menos 2/3 cheios

Árvores B+:• Mantêm cópias das chaves nos nós internos, mas as chaves e

os registros são armazenados nas folhas• Permite acesso sequencial dos dados

1 4 6 10 12 16 23 28 37 42 44

10 23 37

51 54 55 61 63 64 69 70

61 69

51

24

Page 158: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Variantes

Árvores B∗:• Nós não raiz precisam ficar pelo menos 2/3 cheios

Árvores B+:• Mantêm cópias das chaves nos nós internos, mas as chaves e

os registros são armazenados nas folhas• Permite acesso sequencial dos dados

1 4 6 10 12 16 23 28 37 42 44

10 23 37

51 54 55 61 63 64 69 70

61 69

51

24

Page 159: MC-202 Árvores B• a altura é de log2(1.000.000) ≈ 20 nós TEMPO = 1000 buscas × 20 nós/busca × 5 ms/nó = 100 s Solução: diminuir a altura da árvore para diminuir número

Exercício

Qual a árvore obtida após inserirmos sequenciamente os números13 e 33 na árvore seguinte?

11 12 14 17 19 25 30 35

16 23

52 54 55 62 64 67 69 71

61 68

51

25