Por que as árvores crescem para baixo?


17

Por que as árvores crescem para baixo na ciência da computação?

Tenho a sensação de que remonta a uma impressora e que um programa que atravessa uma árvore imprime primeiro a raiz e usa a noção de uma pilha de papel sem fundo para expressar os níveis indefinidos de recursão que podem ser encontrados.

Referências:

As árvores crescem para baixo, com raízes no topo da página e folhas abaixo

Das guerras sagradas e uma paz pela paz .

por convenção, as árvores são desenhadas crescendo para baixo

Do artigo da Wikipedia sobre estruturas de dados em árvore.

Árvores reais crescem da raiz para o céu, mas as árvores da ciência da computação crescem da raiz para baixo

Das anotações da aula de David Schmidt .


8
Por que os bueiros são redondos?
Job

9
Árvores cultivadas em todas as direções na natureza ... para cima, para baixo, etc
CaffGeek

7
@Job Para impedir que as tampas de bueiro caiam. FTFY. :-)
Gary Rowe

6
@ GaryRowe: uma falsidade amplamente propagada. As tampas dos bueiros são redondas principalmente porque cobrem as extremidades dos tubos, e os tubos são redondos. Os tubos são redondos porque 1) distribui o estresse uniformemente e 2) maximiza a seção transversal de um determinado perímetro. No geral, maximiza a resistência e a capacidade do tubo que você pode obter de uma quantidade específica de material.
Jerry Coffin

11
@JerryCoffin: Então .... as árvores crescem para baixo porque os tubos redondos são mais fortes que os quadrados? ;)
FrustratedWithFormsDesigner

Respostas:


13

Apenas um palpite:

As estruturas das árvores crescem para baixo (raiz na parte superior, folhas na parte inferior) porque as pessoas leem da parte superior da página para a parte inferior. Além disso, se você desenhasse uma árvore grande com várias páginas, seria estranho pedir ao leitor para pular algumas páginas e depois retroceder.

Além disso, se a convenção começou pelo motivo explicado acima ou por algum outro motivo, continuamos a prática hoje exatamente porque é uma convenção. Temos termos correspondentes, como nó de nível superior (ou seja, a raiz) que não faria tanto sentido se desenharmos a estrutura com a raiz na parte inferior.


1
@ BruceEdiger: Eu acho que tudo se resume a diferentes convenções.
FrustratedWithFormsDesigner

3
@ BruceEdiger Isso é algo bem diferente. O sistema de coordenadas cartesianas foi estabelecido há 375 anos, por isso é bastante natural manter-se nessa convenção. Os sistemas gráficos (X11, QuickDraw, Quartz no iOS) geralmente usam um sistema de coordenadas invertidas. Acho que isso não tem nada a ver com a forma como desenhamos árvores.
Caleb

3
IMHO a razão para as coordenadas invertidas remonta ao tempo em que se tinha terminais. Como eles exibiram texto começando no canto superior esquerdo e a resolução real pode variar, foi uma decisão muito razoável tomar (0,0) o canto superior esquerdo.
FUZxxl

1
As coordenadas na tela do @BruceEdiger são essencialmente mapeadas de (x, y) para o local da memória do pixel / caractere. Os controladores de exibição de vídeo responsáveis ​​pelo mapeamento da memória para uma imagem começam no local 0 no canto superior esquerdo. Portanto, é um mapeamento natural ter (0,0) lá, pois você pode obter a localização da memória apenas com (y * 80 + x). Documentação para o computador de 8 bits Aprendi isso com: datamuseum.dk/w/images/5/5b/RC702_Tech_Man.pdf

2
Ao desenhar uma árvore à mão, é difícil saber quanto espaço você precisará, também é difícil fazer o layout das notas com precisão, sem antes desenhar o nível acima. Portanto, você tende a desenhar a “raiz” primeiro, colocando-a no topo, para poder continuar com o seu texto em qualquer lugar da página em que a árvore terminar.
31512 Ian

16

A convenção parece ter origem no algoritmo Coffman-Graham, que é projetado:

"... para organizar os elementos de um conjunto parcialmente ordenado em uma sequência de níveis. O algoritmo escolhe um arranjo de modo que um elemento que vem após outro na ordem seja atribuído a um nível mais baixo e que cada nível tenha um número de elementos que não excedam uma largura fixa vinculada a W. "

O artigo de 1972 ( PDF ) mostra um gráfico acíclico direcionado sendo desenhado de cima para baixo. É um pequeno passo para representar uma árvore da mesma maneira.

Há mais comentários sobre essa visualização neste artigo sobre Desenho de gráfico em camadas .


1
A Arte da Programação por Computador: Algoritmos Fundamentais, Volume 1 - Algoritmos Fundamentais, foi publicada em 1968 e tinha uma seção 2 sobre árvores. Alguém que possui este livro pode verificar se os diagramas mostram árvores crescendo? Nesse caso, a história indica uma convenção iniciada ainda mais cedo. Além disso, gostaria de saber se a ciência da computação pegou de matemática esta convenção até mesmo mais cedo do que 1960. Wolfram mostra árvores foram estudadas em 1857.
maxpolk

3
@maxpolk Knuth desenha suas árvores da maneira mais raiz possível e discute sua decisão (seção 2.3, pp. 311 na 3ª edição) de converter a forma raiz-inferior antes da publicação da primeira edição. Tudo se resume a "a maior parte da literatura existente é de cima para baixo, e precisamos de um modelo consistente para fins de discussão" (80% de acordo com a pesquisa de Knuth).
Ross Patterson

1

Desenho do top > downe left > righté popular na ciência da computação, porque essas são as instruções de partida em inglês escrito. Considerando que a maioria dos trabalhos de ciência da computação são escritos em inglês, independentemente do idioma nativo do escritor, essa seria a maneira mais prevalente de desenhar diagramas.

É mais natural para um leitor de inglês ler um gráfico a partir de top > downou left > rightde qualquer uma das outras alternativas.

Faça uma pesquisa em images.google.com directed tree graphe analise os resultados. As únicas diagramas de árvore que eu poderia encontrar que iam se foram UML diagramas de classe, e só porque essa é a convenção que UML escolheu para diagramas de classe. Todos os outros diagramas UML vão left > rightou up > down.

Eu consideraria a leitura de gráficos de árvore direcionada down > uptão natural quanto a leitura dos principais tópicos de email; o que dizer é completamente antinatural.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.