なぜ木は下に成長するのですか?


17

なぜコンピューターサイエンスで木が下向きに成長するのですか?

私はそれがプリンタに戻って、木を横断するプログラムが最初にルートを印刷し、遭遇するかもしれない再帰の無限のレベルを表現するために底なしの紙の束の概念を使用していると感じています。

参照:

木は下に向かって成長し、根はページの上部にあり、葉は下にあります

聖なる戦いと平和のための場所から。

慣例により、木は下向きに成長して描かれます

ツリーデータ構造に関するWikipediaの記事から。

本物の木は根から空に向かって成長しますが、コンピューターサイエンスの木は根から下に向かって成長します

David Schmidtの講義ノートより


8
なぜマンホールは丸いのですか?
仕事

9
自然のあらゆる方向に成長した木...上向き、下向きなど
-CaffGeek

7
@Jobマンホールカバーの落下を防ぎます。FTFY。:-)
ゲイリーロウ

6
@GaryRowe:広く伝播された虚偽。マンホールカバーは、主にパイプの端を覆うため丸く、パイプは丸い。パイプが丸いのは、1)パイプに応力を均等に分散させ、2)与えられた周囲の断面を最大化するためです。全体として、特定の量の材料から得ることができるパイプの強度と容量を最大化します。
ジェリーコフィン

11
@JerryCoffin:それで....丸パイプは四角パイプよりも強いので、木は下向きに成長しますか?;)
FrustratedWithFormsDesigner

回答:


13

ただの推測:

人々はページの上部から下部に向かって読むため、ツリー構造は下に向かって成長します(上部がルート、下部が葉)。さらに、複数のページにまたがる大きなツリーを描画する場合、読者に数ページ先にスキップしてから逆方向に作業するように頼むのは面倒です。

さらに、コンベンションが上記の理由で始まったのか、他の何らかの理由で始まったのかにかかわらず、それはまさに慣習であるため、今日も実践を続けています。最上位ノード(ルートを意味する)のような対応する用語があります。これは、ルートが最下部にある構造を描いた場合にはあまり意味がありません。


1
@BruceEdiger:私はそれがただ異なる慣習に帰着することを推測するつもりです。
FrustratedWithFormsDesigner

3
@BruceEdigerそれはまったく違うものです。デカルト座標システムは、それがその慣習に固執するのは非常に自然なことですので、375年前に設立されました。グラフィックシステム(X11、QuickDraw、iOSのQuartz)は、多くの場合、反転した座標系を使用します。しかし、それが木を描く方法とは関係ないと思います。
カレブ

3
ひっくり返された座標の理由は、端末があったときまでさかのぼります。左上隅から始まるテキストを表示し、実際の解像度は異なる場合があるため、(0,0)を左上隅にすることは非常に合理的な決定でした。
FUZxxl

1
@BruceEdigerの画面上の座標は、本質的に(x、y)からピクセル/文字のメモリ位置にマッピングされます。メモリを画像にマッピングするビデオディスプレイコントローラーは、左上隅の位置0から始まります。したがって、メモリロケーションは(y * 80 + x)で取得できるため、(0,0)が存在するのは自然なマッピングです。8ビットコンピューターのドキュメント:datamuseum.dk/w/images/5/5b/RC702_Tech_Man.pdf

2
手で木を描くとき、​​どれだけのスペースが必要かを知ることは困難です。また、最初に上のレベルを描かずにノートをきれいにレイアウトすることも困難です。そのため、最初に「ルート」を描画してトップに配置する傾向があるため、ツリー上のページのどこにいてもテキストを続行できます。
イアン

16

この規則は、次のように設計されたCoffman-Grahamアルゴリズムに由来すると思われます。

「...部分的に順序付けられたセットの要素を一連のレベルに配置するため。アルゴリズムは、順序で次々に来る要素がより低いレベルに割り当てられ、各レベルに番号があるような配置を選択します固定幅の境界Wを超えない要素の数。」

1972年からの彼らの論文(PDF)は、上から下へと描かれた有向非循環グラフを示しています。同じ方法でツリーを表すことは短いステップです。

Layered Graph Drawingのこの記事には、この視覚化に関するコメントがさらにあります。


1
コンピュータプログラミングの技術:基本アルゴリズム、第1巻-基本アルゴリズムは、1968年に発行され、ツリーに関するセクション2がありました。この本を所有している人は、図が成長している木を示していることを確認できますか?もしそうなら、歴史は私たちにもっと早く始まったコンベンションを示します。また、私はコンピュータサイエンスは、以前にもより1960年から数学からこの大会を拾ったかどうか疑問 のWolfram木が1857年に調査したショー
maxpolk

3
@maxpolk Knuthは、彼のツリーをトップアットルートで描画し、最初のエディションの公開前にルートアットボトムフォームから変換するという彼の決定(第3版のセクション2.3、pp。311)について議論します。要約すると、「既存の文献のほとんどはトップダウンであり、議論のために一貫したモデルが必要です」(Knuthの調査によると80%)。
ロスパターソン

1

描画top > downおよびleft > rightそれらが書かれた英語で始まる方向であるため、コンピュータサイエンスに人気があります。ほとんどのコンピューターサイエンスペーパーは、作家の母国語に関係なく英語で書かれていることを考えると、これが図を描く最も一般的な方法です。

英語リーダーからグラフを読むことが最も自然であるtop > downか、left > right他の選択肢のいずれかよりも。

images.google.comで検索しdirected tree graphて結果を確認します。行ってきました私は見つけることができる唯一のツリー図までは、 UMLクラス図をした、とだけそのため、UMLは、クラス図のために選んだという慣例があります。他のすべてのUML図はleft > rightまたはになりup > downます。

down > up投稿された上位のメールスレッドを読むのと同じくらい不自然な方向から有向ツリーグラフを読むことを検討します。これは完全に不自然です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.