为什么树木向下生长?


17

为什么树木在计算机科学中会向下生长?

我感觉它可以回溯到打印机,并且遍历树的程序首先打印根,然后使用无底纸叠的概念来表达可能遇到的不确定的递归级别。

参考文献:

树木向下生长,其根在页面顶部,叶子在下方

从“ 神圣的战争”和“和平请愿”谈起

按照惯例,树木被画成向下生长

摘自Wikipedia上有关树数据结构的文章

真实的树木从根部向上生长到天空,而计算机科学的树木从根部向下生长

摘自David Schmidt的讲义


8
为什么沙井是圆形的?
2012年

9
大自然中四面八方生长的树木...向上,向下等
CaffGeek 2012年

7
@Job为防止人孔盖掉入。FTFY。:-)
加里·罗

6
@GaryRowe:广泛传播的虚假信息。人孔盖是圆形的,主要是因为它们盖住了管道的末端,而管道是圆形的。管道是圆形的,因为1)将应力均匀地分布在管道上,以及2)在给定的周长下使横截面最大化。总体而言,它可以最大程度地提高您从特定数量的材料中获得的管道的强度和容量。
杰里·科芬

11
@JerryCoffin:所以....树向下生长是因为圆形管道比方形管道更坚固?;)
FrustratedWithFormsDesigner 2012年

Answers:


13

只是一个猜测:

树形结构向下生长(根在顶部,叶在底部),因为人们从页面顶部向底部阅读。此外,如果要绘制一棵跨越几页的大树,要求读者先跳过几页然后向后工作会很尴尬。

此外,无论公约是出于上述原因还是由于其他原因而启动的,我们今天都在继续实践,正是因为它是公约。我们有相应的术语,例如顶层节点(意味着根),如果我们将结构的根放在底部,则意义不大。


1
@BruceEdiger:我猜它只是归结为不同的约定。
FrustratedWithFormsDesigner 2012年

3
@BruceEdiger完全不同。在直角坐标系成立375年前,所以它很自然地坚持这一约定。图形系统(iOS上为X11,QuickDraw,Quartz)通常使用翻转坐标系。不过,我认为这与我们绘制树木的方式无关。
卡勒布(Caleb)2012年

3
恕我直言,翻转坐标的原因可以追溯到一个人拥有终端的时间。由于他们从左上角开始显示文本,并且实际分辨率可能有所不同,因此将(0,0)设为左上角是一个非常合理的决定。
FUZxxl 2012年

1
@BruceEdiger屏幕上的坐标实际上是从(x,y)映射到像素/字符的存储位置。负责将内存映射到图像的视频显示控制器从左上角的位置0开始。因此,在其中具有(0,0)是自然的映射,因为仅使用(y * 80 + x)即可获得内存位置。我通过以下方式了解到了8位计算机的文档:datamuseum.dk/w/images/5/5b/RC702_Tech_Man.pdf

2
用手绘制一棵树时,很难知道您需要多少空间,而且如果不先绘制上面的关卡就很难整齐地布置笔记。因此,您倾向于先绘制“根”并将其放在顶部,以便继续在树结束的页面上的任何位置输入文本。
伊恩

16

该约定似乎源于Coffman-Graham算法的设计:

“ ...用于将部分有序集合的元素排列为一系列级别。算法选择一种安排,以便将按顺序依次出现的元素分配给较低级别​​,并且每个级别都有一个数字不超过固定宽度边界W的元素的数量。”

他们在1972年发表的论文(PDF)显示了从上到下绘制的有向无环图。以相同的方式表示树是很短的步骤。

有关分层可视化的这篇文章,对此可视化还有一些补充说明。


1
《计算机编程艺术:基础算法,第1卷-基础算法》于1968年出版,其第2节涉及树木。拥有本书的人可以验证图表是否显示了树木的生长吗?如果是这样,历史就使我们想到了更早开始的惯例。另外,我想知道计算机科学是否早于1960年就从数学中接受了这一惯例。 沃尔夫拉姆(Wolfram)表示树木是在1857
。– maxpolk 2012年

3
@maxpolk Knuth以最高根的方式绘制树木,并讨论了他的决定(第三版,第2.3节,第311页),在第一版出版之前将其转换为自下而上的形式。归结为“大多数现有文献自上而下,出于讨论目的,我们需要一个一致的模型”(根据Knuth的调查,这一比例为80%)。
罗斯·帕特森

1

top > down和绘图left > right在计算机科学中很流行,因为它们是书面英语的开始方向。考虑到大多数计算机科学论文都是用英语撰写的,而不管作者的母语是什么,这将是绘制图表的最普遍的方式。

对于英语阅读者来说,从其他任何一种选择中读取图形top > downleft > right比其他任何一种读取图形都更为自然。

搜索images.google.com directed tree graph并查看结果。唯一的树形图,我可以发现,去是UML类图,只因为这是UML选择了类图的惯例。所有其他UML图都转到left > rightup > down

我会考虑从down > up阅读顶部发布的电子邮件线程中读取自然的有向树图;这完全是不自然的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.