Escrito por Samyra Almeida e Lúcio Figueiredo
Diâmetro de uma Árvore
Diâmetro de uma árvore (também chamado de largura) é a maior das distâncias entre quaisquer dois vértices da árvore. Na imagem abaixo, podemos observar que o diâmetro é igual a , sendo igual a distância entre os nós
e
.
Como encontrar o diâmetro de uma árvore
O algoritmo abaixo indica uma maneira de encontrar o diâmetro de um árvore com complexidade .
Algoritmo 1 - Encontrar o Diâmetro de uma árvore:
1. Escolha um nó arbitrário para ser a raiz da árvore.
2. Encontre o nó que está mais distante de
3. Encontre o nó que está mais distante de
.
4. A distância entre e
será igual ao diâmetro da árvore.
Suponha que a árvore está enraizada em um vértice .
Defina como a distância do vértice
ao vértice
e
como
. Defina também
como o menor ancestral comum dos vértices
e
. Por fim, defina
como o diâmetro da árvore.
Seja o vértice de maior profundidade na árvore, ou seja o vértice mais distante de
. Note que
é o vértice encontrado na etapa
do Algoritmo 1. Vamos provar, por absurdo, que
sempre pertence a algum diâmetro.
Suponha, por absurdo, que não pertence a diâmetro algum. Sejam
e
dois vértices tais que
. Defina
como
. Vamos dividir a prova em dois casos:
Caso 1: .
Note que .
Perceba que . Porém,
.
Como (por definição) e
, chegamos que
, absurdo!
Assim, a prova deste caso está concluída.
Caso 2: e
.
Note que
e
.
Como , obtemos que
. Absurdo, pois assumimos que
não pertence a nenhum diâmetro. Assim, a prova deste caso está concluída.
Caso 3: e
.
A prova deste caso é análoga à prova do Caso 2.
Como não é possível que e
e
, a prova de que
pertence a algum diâmetro está concluída.
Por fim, seja o vértice mais distante de
(o vértice encontrado na etapa
do algoritmo). Seja
um vértice tal que
. Como
, conluímos que
, e assim, a prova do Algoritmo 1 está finalizada.
Como um exemplo do algoritmo, usaremos a árvore da figura acima. Inicialmente, vamos enraizar a árvore no nó .
Depois, vamos procurar (com uma DFS ou BFS, por exemplo) o nó que está mais distante de . Podemos perceber que o vértice
é o vértice mais distante de
, com uma distância igual a
. O próximo passo é encontrar o nó mais distante de
. Descobrimos que este nó é o
com distância
. Assim, achamos que o diâmetro da árvore é igual a
.
O código abaixo encontra o diâmetro de uma árvore, utilizando o Algoritmo 1.
Centro de uma Árvore
Em uma árvore qualquer, defina como a distância do vértice
para o vértice mais distante de
. Este valor é conhecido como excentricidade de
.
O centro de uma árvore é o vértice tal que o valor
é mínimo, ou seja, o centro de uma árvore é o vértice que possui menor excentricidade. O lema abaixo introduz um fato importante sobre centros:
Lema 1: O centro de uma árvore pertence a todos os diâmetros presentes nela.
Enraize a árvore no vértice .
Sejam e
duas pontas de um diâmetro qualquer. Vamos realizar uma prova por absurdo, ou seja, vamos supor que
não está no caminho de
para
.
Seja igual a
. Vamos dividir nossa prova em dois casos:
Caso 1: .
Neste caso, está no caminho entre
e
por definição, logo, chegamos num absurdo.
Caso 2: .
Assuma, sem perda de generalidade, que . Perceba que
é o vértice na subárvore de
mais distante de
, pois caso contrário, poderíamos trocar um dos vértices
ou
por tal vértice e aumentaríamos o valor do diâmetro da árvore.
Seja um vértice que não pertence à subárvore de
. Note que
, pois, caso contrário, poderíamos aumentar o valor do diâmetro da árvore.
Note que é igual a
, onde
é a maior distância entre
e um vértice na subárvore de
e
é a maior distância entre
e um vértice fora da subárvore de
.
Perceba que, pelos dois primeiros argumentos acima,
e
.
No entanto,
, já que
.
Analogamente,
.
Portanto, concluímos que ambos os valores e
são estritamente menores que
, ou seja,
, absurdo pela definição de
.
Assim, concluímos a prova do Lema 1.
Como encontrar o centro de uma árvore
O algoritmo abaixo indica uma maneira de encontrar um centro de uma árvore com complexidade :
Algoritmo 2: Encontrar um centro de uma árvore
1. Encontre um diâmetro qualquer com pontas e
.
2. Encontre o vértice no caminho de
para
tal que
possui o menor valor possível.
3. O vértice é um centro da árvore.
Suponha, por absurdo, que . Então, defina
como o vértice tal que
. É fácil perceber que
não pertence ao caminho de
para
.
Por definição, . Assim, vamos dividir a prova em dois casos:
Caso 1: .
Neste caso, perceba que o caminho de para
não passa por
, pois, caso contrário,
, absurdo já que
é diâmetro.
Logo,
.
Como , temos que
,
absurdo, já que é diâmetro.
Caso 2: .
A prova deste caso é análoga à prova do Caso 1.
Assim, está concluída a prova do Algoritmo 2.
O código abaixo encontra o centro de uma árvore, utilizando o Algoritmo 2.