ÁRVORE ÁRVORE Prof. M.Sc. Fábio Francisco da Costa Fontes Abril - 2009
ÁRVOREÁRVORE
Prof. M.Sc. Fábio Francisco da Costa Fontes
Abril - 2009
Introdução
Um grafo sem ciclos (com n 2) é conhecido também como floresta.
Uma árvore é um grafo sem ciclos conexo.
Introdução
Árvores são muito importantes para o entendimento e utilização prática de grafos
Geralmente os algoritmos de árvores são muito mais eficientes que os algoritmos que trabalham com grafos
Solução ótima para o processamento, gerenciamento e recuperação de informações (árvores binárias)
Caracterização de Árvores
Definição: uma árvore é um grafo conectado sem ciclos.
Árvore Não é árvore Não é árvore
Caracterização de Árvores
Definição: em uma árvore não direcionada, uma folha é um vértice de grau 1.
Se uma folha é deletada de uma árvore, o resultado continua sendo uma árvore (com um vértice a menos)
Folha deletada
Propriedades Básicas
Toda árvore com n vértices contém exatamente n-1 arestas
Uma árvore é um grafo conectado em que toda aresta é uma ponte
Quaisquer dois vértices são conectados exatamente por um caminho
Toda árvore com pelo menos uma aresta tem no mínimo duas folhas
Obs: Uma ponte é uma aresta cuja retirada desconecta o grafo
Portanto sendo G = (V, E) um grafo, com n >= 2. As propriedades para caracterizar G como uma árvore são:
G é sem ciclos e conexo G é sem ciclos e tem n – 1 arestas G é conexo e tem n – 1 arestas G é sem ciclos e a adição de uma aresta cria
um ciclo único G é conexo, mas G’ = G – e é não conexo para
todo e pertencente a E Todo par de vértices de G é unido por uma
cadeia única
Isomorfismo de árvores
Os dois grafos tem a mesma seqüência de graus, mas não são isomórficos
Existe um algoritmo de tempo linear para testar o isomorfismo de árvores
Árvores enraizadas Definição: uma árvore direcionada é
um dígrafo cujo grafo de base (não direcionado) é uma árvore
Definição: uma árvore enraizada é uma árvore com um vértice designado como raiz. Cada aresta é direcionada no sentido de se afastar da raiz.
Uma árvore enraizada é uma árvore direcionada cuja raiz tem grau de entrada 0 e todos os demais vértices tem grau de entrada 1
Aplicações
Árvores de decisão: programas de computador que precisam elaborar estratégias complexas de tomada de decisão são muitas vezes baseados em árvores enraizadas.
x
xo
xox
xox
xo x xo x
xo
Aplicações
Análise de frases: uma árvore enraizada pode ser usada para analisar frases em linguagem natural.
frase
sujeito predicado
verbo complemento
substantivo
adjetivo substantivo
José tem dois sapatos
Aplicações
Árvore de caminho mais curto: para um grafo conectado G com vértice v, uma árvore enraizada fornece uma forma de visualizar para cada w VG, um caminho mais curto de v para w.
x
t
a
u
s
y
v
z
a
uts y
v x z
Terminologia
Designando uma raiz numa árvore impõe uma hierarquia nos vértices, de acordo com as distâncias até a raiz
A profundidade ou nível de um vértice v é a sua distância para a raiz
A altura de uma árvore é o comprimento de um caminho mais longo a partir da raiz até uma folha
Terminologia
Se no caminho da raiz para um vértice w, o vértice v precede imediatamente o vértice w, então v é chamado pai de w, e w é filho de v.
Vértices com o mesmo pai são chamados de irmãos
Um vértice w é descendente de um vértice v, se v está no caminho da raiz ao vértice w (v é ancestral de w)
Terminologia
Uma folha em uma árvore enraizada é qualquer vértice que não tem filhos.
Um vértice interno é qualquer vértice que tem pelo menos um filho. A raiz é um vértice interno, a não ser que a árvore seja trivial.
r
cba
f gd
j
e h i
Altura = 3Internos: r, a, b, c, dFolhas: e, f, g, h, i, jIrmãos: g, h, ia é ancestral de jj é descendente de a
Tipos de árvores Muitas aplicações impõem um limite
para o número de filhos que um vértice pode ter
Uma árvore m-ária é uma árvore enraizada em que todo vértice tem no máximo m filhos
Uma árvore m-ária completa é uma árvore m-ária em que todo vértice interno tem exatamente m filhos e todos os filhos tem o mesmo nível.
Isomorfismo para enraizadas
Duas árvores enraizadas são isomórficas como árvores enraizadas se existir um isomorfismo de grafo entre elas que mapeie raiz com raiz.
Isomorfas como árvores enraizadas Isomorfas como árvores
Representação Computacional
Um vetor de pais pode ser usado para representar uma árvore enraizada no computador
r
ba
c d e f
bbbarr
fedcbar
pai
vertice
Árvores Binárias
Árvores binárias estão entre as estruturas de dados mais utilizadas da ciência da computação
Definição: uma árvore binária é uma árvore ordenada 2-ária em que cada filho é classificado como filho esquerdo ou filho direito.
r
Árvore binária de altura 3
Visão Recursiva
Uma árvore binária consiste de uma raiz e uma sub-árvore esquerda e direita, que são também árvores binárias.
r
sub-árvore esquerda
sub-árvore direita
Exercício
1 – Desenhe todas as árvores com 6 vértices e com 7 vértices.
2 – Especifique o vetor de pais para o grafo H abaixo:
3 – Determine todas as árvores parciais do grafo G a seguir.
G H
Você pode garantir que determinou realmente todas?
r
ba
c d e
f
O problemas da Árvore Geradora Mínima (minimum
spanning tree)
Um problema de interesse em grafos é o problema de determinação da árvore geradora de custo mínimo ou, simplesmente, árvore geradora mínima de um grafo.
O número de árvores geradoras em um grafo completo, não-orientado Kn é igual a:
O problemas da Árvore Geradora Mínima (minimum spanning tree)
Grafo sem pesos:qualquer árvore geradora tem custo mínimo
Grafo com pesos diferentes:
O problemas da Árvore Geradora Mínima (minimum spanning tree)
Prob. Otimização Combinatória (POC): Determinar a árvore geradora de peso mínimo (p/ n = 8, Árvores Geradoras = 262.144 escolhas).
O problemas da Árvore Geradora Mínima (minimum spanning tree)
A árvore geradora mínima não representará necessariamente a interconecção mais curta entre os n vértices de um grafo GTrata-se de um problema de interligação ótima em grafos não orientados que são, habitualmente, modelos de redes nas quais algum tipo de serviço é distribuido e o custo de cada elemento da rede não depende da maior ou menor distância até algum ponto-chave
O problemas da Árvore Geradora Mínima (minimum spanning tree)
Exemplos de aplicação prática?