INE 5408 Estruturas de Dados Gerncia de Arquivos

  • Slides: 16
Download presentation
INE 5408 Estruturas de Dados Gerência de Arquivos -Propriedades de Árvores k-D

INE 5408 Estruturas de Dados Gerência de Arquivos -Propriedades de Árvores k-D

Construindo uma Árvore k-D balanceada • Algoritmo: – Sempre usamos o ponto mediano do

Construindo uma Árvore k-D balanceada • Algoritmo: – Sempre usamos o ponto mediano do discriminante (coordenada) que estamos considerando neste momento para raiz da subárvore-kd – Se houver duplicação, pegamos qualquer um dos repetidos. • Adiante, um exemplo com um conjunto de coordenadas 2 D

Construindo uma Árvore k-D balanceada • Suponha queiramos inserir de forma balanceada estes pontos

Construindo uma Árvore k-D balanceada • Suponha queiramos inserir de forma balanceada estes pontos bi-dimensionais em uma árvore kd: (0. 03, 0. 90), (0. 37, 0. 04), (0. 56, 0. 78), (0. 01, 0. 48), (0. 41, 0. 89), (0. 95, 0. 07), (0. 97, 0. 09), (0. 54, 0. 65), (0. 04, 0. 61), (0. 73, 0. 69), (0. 46, 0. 58), (0. 08, 0. 89), (0. 04, 0. 41), (0. 94, 0. 02), (0. 33, 0. 07), (0. 55, 0. 54), (0. 06, 0. 05), (0. 04, 0. 06), (0. 74, 0. 97), (0. 29, 0. 15), (0. 05, 0. 88), (0. 23, 0. 23), (0. 55, 0. 02), (0. 02, 0. 97), (0. 05, 0. 07), (0. 06, 0. 28), (0. 09, 0. 55), (0. 02, 0. 91), (0. 05, 0. 97), (0. 68, 0. 42), (0. 97, 0. 18)

Construindo uma Árvore k-D balanceada • Ordenamos os pontos com relação à 1ª coordenada

Construindo uma Árvore k-D balanceada • Ordenamos os pontos com relação à 1ª coordenada (que é o 1º discriminante) e achamos a mediana: (0. 01, 0. 48), (0. 02, 0. 91), (0. 02, 0. 97), (0. 03, 0. 90), (0. 04, 0. 06), (0. 04, 0. 41), (0. 04, 0. 61), (0. 05, 0. 07), (0. 05, 0. 88), (0. 05, 0. 97), (0. 06, 0. 05), (0. 06, 0. 28), (0. 08, 0. 89), (0. 09, 0. 55), (0. 23, 0. 23), (0. 29, 0. 15), (0. 33, 0. 07), (0. 37, 0. 04), (0. 41, 0. 89), (0. 46, 0. 58), (0. 54, 0. 65), (0. 55, 0. 02), (0. 55, 0. 54), (0. 56, 0. 78), (0. 68, 0. 42), (0. 73, 0. 69), (0. 74, 0. 97), (0. 94, 0. 02), (0. 95, 0. 07), (0. 97, 0. 09), (0. 97, 0. 18)

Construindo uma Árvore k-D balanceada • A mediana, (0. 29, 0. 15), forma a

Construindo uma Árvore k-D balanceada • A mediana, (0. 29, 0. 15), forma a raiz da árvore kd:

Construindo uma Árvore k-D balanceada • Isto particiona os pontos restantes em dois conjuntos

Construindo uma Árvore k-D balanceada • Isto particiona os pontos restantes em dois conjuntos idenependentes: {(0. 01, 0. 48), (0. 02, 0. 91), (0. 02, 0. 97), (0. 03, 0. 90), (0. 04, 0. 06), (0. 04, 0. 41), (0. 04, 0. 61), (0. 05, 0. 07), (0. 05, 0. 88), (0. 05, 0. 97), (0. 06, 0. 05), (0. 06, 0. 28), (0. 08, 0. 89), (0. 09, 0. 55), (0. 23, 0. 23)} {(0. 33, 0. 07), (0. 37, 0. 04), (0. 41, 0. 89), (0. 46, 0. 58), (0. 54, 0. 65), (0. 55, 0. 02), (0. 55, 0. 54), (0. 56, 0. 78), (0. 68, 0. 42), (0. 73, 0. 69), (0. 74, 0. 97), (0. 94, 0. 02), (0. 95, 0. 07), (0. 97, 0. 09), (0. 97, 0. 18)}

Construindo uma Árvore k-D balanceada • Iniciando com o primeiro conjunto, reordenamo-lo de acordo

Construindo uma Árvore k-D balanceada • Iniciando com o primeiro conjunto, reordenamo-lo de acordo com o 2º discriminante: (0. 06, 0. 05), (0. 04, 0. 06), (0. 05, 0. 07), (0. 23, 0. 23), (0. 06, 0. 28), (0. 04, 0. 41), (0. 01, 0. 48), (0. 09, 0. 55), (0. 04, 0. 61), (0. 03, 0. 90), (0. 02, 0. 91), (0. 02, 0. 97), (0. 05, 0. 88), (0. 08, 0. 89), (0. 05, 0. 97)

Construindo uma Árvore k-D balanceada • Este pontro será o filho da esquerda da

Construindo uma Árvore k-D balanceada • Este pontro será o filho da esquerda da raiz:

Construindo uma Árvore k-D balanceada • Tomando o segundo conjunto, também ordenamolo de acordo

Construindo uma Árvore k-D balanceada • Tomando o segundo conjunto, também ordenamolo de acordo com o segundo discriminante: (0. 55, 0. 02), (0. 94, 0. 02), (0. 37, 0. 04), (0. 33, 0. 07), (0. 95, 0. 07), (0. 97, 0. 09), (0. 97, 0. 18), (0. 68, 0. 42), (0. 55, 0. 54), (0. 46, 0. 58), (0. 54, 0. 65), (0. 73, 0. 69), (0. 56, 0. 78), (0. 41, 0. 89), (0. 74, 0. 97)

Construindo uma Árvore k-D balanceada • Isto cria o filho da cireita da raiz:

Construindo uma Árvore k-D balanceada • Isto cria o filho da cireita da raiz:

Construindo uma Árvore k-D balanceada • Ordenamos pela mediana do 1º discriminante para achar

Construindo uma Árvore k-D balanceada • Ordenamos pela mediana do 1º discriminante para achar os filhos de (0. 09, 0. 55): (0. 01, 0. 48), (0. 04, 0. 06), (0. 04, 0. 41), (0. 05, 0. 07), (0. 06, 0. 05), (0. 06, 0. 28), (0. 23, 0. 23), (0. 02, 0. 91), (0. 02, 0. 97), (0. 03, 0. 90), (0. 04, 0. 61), (0. 05, 0. 88), (0. 05, 0. 97), (0. 08, 0. 89)

Construindo uma Árvore k-D balanceada • Fazemos o mesmo para as duas partições da

Construindo uma Árvore k-D balanceada • Fazemos o mesmo para as duas partições da direita: (0. 33, 0. 07), (0. 37, 0. 04), (0. 55, 0. 02), (0. 94, 0. 02), (0. 95, 0. 07), (0. 97, 0. 09), (0. 97, 0. 18) (0. 41, 0. 89), (0. 46, 0. 58), (0. 54, 0. 65), (0. 55, 0. 54), (0. 56, 0. 78), (0. 73, 0. 69), (0. 74, 0. 97)

Construindo uma Árvore k-D balanceada • No próximo nível ordenamos os pontos de peloo

Construindo uma Árvore k-D balanceada • No próximo nível ordenamos os pontos de peloo 2º discriminante e tomamos asa medianas: (0. 04, 0. 06), (0. 04, 0. 41), (0. 01, 0. 48) (0. 06, 0. 05), (0. 23, 0. 23), (0. 06, 0. 28) (0. 03, 0. 90), (0. 02, 0. 91), (0. 02, 0. 97) (0. 05, 0. 88), (0. 08, 0. 89), (0. 05, 0. 97) (0. 55, 0. 02), (0. 37, 0. 04), (0. 33, 0. 07) (0. 95, 0. 07), (0. 97, 0. 09), (0. 97, 0. 18) (0. 46, 0. 58), (0. 54, 0. 65), (0. 41, 0. 89) (0. 73, 0. 69), (0. 56, 0. 78), (0. 74, 0. 97)

Construindo uma Árvore k-D balanceada • Os pontos restantes serão folhas, organizados pelo 1º

Construindo uma Árvore k-D balanceada • Os pontos restantes serão folhas, organizados pelo 1º discriminante • Resulta uma árvore 2 -d com 31 nodos.

Exemplo de divisão do espaço por uma Árvore 3 -D:

Exemplo de divisão do espaço por uma Árvore 3 -D:

Atribuição-Uso Não-Comercial-Compartilhamento pela Licença 2. 5 Brasil Você pode: - copiar, distribuir, exibir e

Atribuição-Uso Não-Comercial-Compartilhamento pela Licença 2. 5 Brasil Você pode: - copiar, distribuir, exibir e executar a obra - criar obras derivadas Sob as seguintes condições: Atribuição — Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante. Uso Não-Comercial — Você não pode utilizar esta obra com finalidades comerciais. Compartilhamento pela mesma Licença — Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta. Para ver uma cópia desta licença, visite http: //creativecommons. org/licenses/by-nc-sa/2. 5/br/ ou mande uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.