ine5408 estruturas de dados gerência de arquivos -propriedades de Árvores k-d
TRANSCRIPT
INE5408Estruturas de Dados
Gerência de Arquivos
-Propriedades de Árvores k-D
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 2D
Construindo uma Árvore k-D balanceada• Suponha que 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 (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 raiz da árvore kd:
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 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 raiz:
Construindo uma Árvore k-D balanceada
• Tomando o segundo conjunto, também ordenamo-lo 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
• 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 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 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º discriminante
• Resulta uma árvore 2-d com 31 nodos.
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 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.