Ağaçlar neden aşağı doğru büyüyor?


17

Bilgisayar bilimlerinde ağaçlar neden aşağı doğru büyüyor?

Bir yazıcıya geri döndüğünü ve bir ağaçtan geçen bir programın önce kök yazdırdığını ve karşılaşılabilecek belirsiz yinelenme seviyelerini ifade etmek için dipsiz bir kağıt yığını kavramını kullandığını hissediyorum.

Referanslar:

Ağaçlar aşağıya doğru büyür, kökleri sayfanın üstünde ve yaprakları aşağıdadır.

Gönderen AÇIK KUTSAL SAVAŞLAR VE BARIŞ İÇİN BİR PLEA .

Kongre gereği, ağaçlar aşağı doğru büyüyor

Gönderen Wikipedia makalesinin ağaç veri yapıları üzerinde.

Gerçek ağaçlar köklerinden yukarıya doğru büyür, ancak bilgisayar bilimi ağaçları kökten aşağıya doğru büyür

David Schmidt'in ders notlarından .


8
Menholler neden yuvarlak?
İş

9
Doğada her yönden yetişen ağaçlar ... yukarı, aşağı, vb
CaffGeek

7
@ İş Rögar kapaklarının düşmesini önlemek için. FTFY. :-)
Gary Rowe

6
@GaryRowe: Yayılan bir yalan. Rögar kapakları esas olarak boru uçlarını örttüğü ve borular yuvarlak olduğu için yuvarlaktır. Borular yuvarlaktır, çünkü 1) üzerlerine gerilimi dağıtır ve 2) belirli bir çevre için kesiti en üst düzeye çıkarır. Genel olarak, belirli miktarda malzemeden alabileceğiniz borunun mukavemetini ve kapasitesini en üst düzeye çıkarır.
Jerry Coffin

11
@JerryCoffin: Yani ... yuvarlak borular kare olanlardan daha güçlü olduğu için ağaçlar aşağı doğru büyüyor mu? ;)
SinirliWithFormsDesigner 16:12

Yanıtlar:


13

Sadece bir tahmin:

Ağaç yapıları aşağı doğru büyür (üstte kök, altta yapraklar) çünkü insanlar sayfanın üstünden aşağıya doğru okur. Ayrıca, birkaç sayfaya yayılan büyük bir ağaç çizseydiniz, okuyucudan birkaç sayfa ileri atlayıp geriye doğru çalışmasını istemek garip olurdu.

Ayrıca, konvansiyonun yukarıda açıklanan sebeple mi yoksa başka bir sebeple mi başladığı, bugün uygulamaya tam olarak bir kongre olduğu için devam ediyoruz. Yapıyı en altta kök ile çizdiğimizde çok mantıklı olmayacak üst düzey düğüm (kök anlamına gelen) gibi karşılık gelen terimlerimiz var .


1
@BruceEdiger: Bunun farklı sözleşmelere geldiğini tahmin edeceğim.
SinirliWithFormsDesigner

3
@BruceEdiger Bu oldukça farklı bir şey. Kartezyen koordinat sistemi bu sözleşmeye sadık oldukça doğal yüzden, 375 yıl önce kuruldu. Grafik sistemleri (X11, QuickDraw, iOS'ta Quartz) genellikle ters çevrilmiş bir koordinat sistemi kullanır. Yine de bunun ağaçları çizmemizle bir ilgisi olduğunu düşünmüyorum.
Caleb

3
İMHO çevrilmiş koordinatların sebebi terminalin bulunduğu zamana kadar uzanır. Sol üst köşeden başlayarak metin görüntülediklerinden ve gerçek çözünürlük değişebileceğinden (0,0) değerini sol üst köşe yapmak çok makul bir karardı.
FUZxxl

1
@BruceEdiger ekran koordinatları esas olarak (x, y) 'den piksel / karakterin bellek konumuna eşlenir. Belleği bir görüntüye eşlemekten sorumlu video görüntü denetleyicileri sol üst köşedeki 0 konumunda başlar. Bu nedenle, (0,0) 'a sahip olmak doğal bir eşlemedir, çünkü hafıza konumunu sadece (y * 80 + x) ile alabilirsiniz. Şunu öğrendiğim 8 bit bilgisayar belgeleri: datamuseum.dk/w/images/5/5b/RC702_Tech_Man.pdf

2
Bir ağacı elle çizerken, ne kadar alana ihtiyacınız olacağını bilmek zordur, ayrıca yukarıdaki seviyeyi çizmeden notları düzgün bir şekilde düzenlemek de zordur. Bu nedenle, önce ağacın bittiği yerde metninize devam edebilmeniz için önce "kökü" çizme eğilimindesiniz.
Ian

16

Sözleşme , tasarlanan Coffman-Graham Algoritmasından kaynaklanıyor gibi görünüyor :

"... kısmen sıralı bir kümenin elemanlarını bir seviye sırasına yerleştirmek için. Algoritma, sırayla birbiri ardına gelen bir elemanın daha düşük bir seviyeye atanacağı ve her bir seviyenin bir sayıya sahip olacağı şekilde bir düzenleme seçer. sabit genişlik sınırını aşmayan elemanlar W. "

1972'deki ( PDF ) makaleleri yukarıdan aşağıya doğru yönlendirilmiş bir asiklik grafik göstermektedir. Bir ağacı aynı şekilde temsil etmek için kısa bir adımdır.

Katmanlı Grafik Çizimi hakkındaki bu makalede bu görselleştirmeyle ilgili daha fazla yorum var .


1
Bilgisayar Programlama Sanatı: Temel Algoritmalar, Cilt 1 - Temel Algoritmalar, 1968'de yayınlandı ve ağaçlar hakkında bir bölüm 2 vardı. Bu kitaba sahip biri şemaların ağaçların büyüdüğünü doğrulayabilir mi? Öyleyse, tarih bizi daha önce başlayan bir sözleşmeye işaret ediyor. Ayrıca, bilgisayar biliminin bu konvansiyonu 1960'dan bile daha önce matematikten alıp almadığını merak ediyorum. Wolfram , 1857'de ağaçların incelendiğini gösteriyor.
maxpolk

3
@maxpolk Knuth, ağaçlarını en üste kök şeklinde çeker ve ilk baskının yayınlanmasından önce formun alttan üste formunu dönüştürme kararını tartışır (bölüm 2.3, sayfa 311). "Mevcut literatürün çoğu yukarıdan aşağıya gidiyor ve tartışma amaçlı tutarlı bir modele ihtiyacımız var" (Knuth'un anketine göre% 80).
Ross Patterson

1

Bilgisayar biliminde çizim yapmak top > downve left > rightpopülerdir çünkü bunlar yazılı İngilizce'nin başlangıç ​​yönleridir. Bilgisayar bilimi makalelerinin çoğunun, yazarın anadiline bakılmaksızın İngilizce yazılmış olduğu düşünüldüğünde, bu diyagram çizmenin en yaygın yolu olacaktır.

Bir İngilizce dil okuyucu bir grafik okumak için en doğal olan top > downya da left > rightdiğer alternatifler ya da daha.

İçin images.google.com'da bir arama yapın directed tree graphve sonuçları inceleyin. Gitti bulabildiğim tek ağaç diyagramları kadar UML Sınıf Diyagramları vardı ve sadece o çünkü UML Sınıf Diyagramları seçtiği konvansiyonudur. Diğer tüm UML Diyagramlarıleft > right veya up > down.

Yönlendirilmiş ağaç grafiklerini, down > upen iyi yayınlanan e-posta konularını okumak kadar doğal olmayan olarak okumayı düşünürdüm ; ki bu tamamen doğal değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.