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.