Чому дерева ростуть вниз?


17

Чому дерева ростуть вниз в інформатиці?

У мене виникає відчуття, що це повертається до принтера, і що програма, що проходить дерево, спочатку надрукує корінь і використовує поняття бездонного стопки паперу, щоб виразити невизначений рівень рекурсії, який може виникнути.

Список літератури:

Дерева ростуть вниз, маючи коріння вгорі сторінки, а листя внизу

З НАД СВЯТІ ВІЙНИ І МОЛЯ ЗА МИР .

за умовами дерева малюють зростаючими вниз

З статті Вікіпедії про структури даних про дерева.

Справжні дерева ростуть від кореня вгору до неба, але дерева інформатики ростуть від кореня донизу

З лекційних записок Девіда Шмідта .


8
Чому люки круглі?
Робота

9
Дерева, вирощені в усіх напрямках природи ... вгору, вниз тощо
CaffGeek

7
@Job Щоб запобігти падінню кришок каналізаційного люка. FTFY. :-)
Гері Роу

6
@GaryRowe: широко поширена неправда. Кришки каналізаційних люків круглі насамперед тому, що вони охоплюють кінці труб, а труби - круглі. Труби круглі, тому що 1) рівномірно розподіляє на них напругу, і 2) він максимально збільшує поперечний переріз для заданого периметра. В цілому це максимально збільшує міцність і місткість труби, яку ви можете отримати з конкретної кількості матеріалу.
Джеррі Труну

11
@JerryCoffin: Отже .... дерева ростуть вниз, тому що круглі труби міцніші квадратних? ;)
FrustratedWithFormsDesigner

Відповіді:


13

Лише здогадка:

Деревові структури ростуть вниз (корінь вгорі, листя внизу), оскільки люди читають зверху сторінки донизу. Крім того, якби ви намалювали велике дерево, яке охоплювало кілька сторінок, було б незручно попросити читача пропустити вперед кілька сторінок, а потім працювати назад.

Крім того, незалежно від того, чи було розпочато з'їзд з тієї причини, яка була пояснена вище, чи з якоїсь іншої причини, ми продовжуємо практику сьогодні саме тому, що це конвенція. У нас є відповідні терміни, такі як вузол верхнього рівня (мається на увазі корінь), який не мав би особливого сенсу, якби ми намалювали структуру з коренем у нижній частині.


1
@BruceEdiger: Я думаю, що це просто зводиться до різних умов.
FrustratedWithFormsDesigner

3
@BruceEdiger Це щось зовсім інше. Декартова система координат була створена 375 років тому, так що це досить природно дотримуватися цієї конвенції. Графічні системи (X11, QuickDraw, Quartz на iOS) часто використовують перевернуту систему координат. Я не думаю, що це має нічого спільного з тим, як ми малюємо дерева.
Калеб

3
ІМХО причина перевернутих координат датується тим часом, коли у одного були термінали. Оскільки вони відображали текст, починаючи з верхнього лівого кута, а фактична роздільна здатність може змінюватись, рішення (0,0) було прийнято дуже важливим для лівого верхнього кута.
FUZxxl

1
Екранні координати @BruceEdiger по суті відображають від (x, y) до місця пам'яті пікселя / символу. Контролери відеодисплея, відповідальні за відображення пам’яті на зображення, починаються з місця 0 у верхньому лівому куті. Отже, природне відображення там (0,0), оскільки ви можете отримати місце пам'яті просто за допомогою (y * 80 + x). Документація на 8-розрядний комп'ютер Я дізнався це за допомогою: datamuseum.dk/w/images/5/5b/RC702_Tech_Man.pdf

2
Малюючи дерево вручну, важко знати, скільки місця вам знадобиться, також важко акуратно розташувати нотатки, попередньо не намалювавши рівень вище. Таким чином, ви прагнете намалювати «корінь», спочатку поставивши його вгору, щоб ви могли продовжувати текст, де завгодно на сторінці дерево закінчується.
Ян

16

Здається, що ця конвенція походить від алгоритму Кофмана-Грема, який розроблений:

"... для впорядкування елементів частково впорядкованого набору в послідовності рівнів. Алгоритм вибирає розташування таким чином, що елемент, що надходить після іншого в порядку, присвоюється нижчому рівню, і такий, що кожен рівень має число елементів, що не перевищує фіксовану ширину, обмежену W. "

У їхньому документі 1972 р. ( PDF ) зображено спрямований ациклічний графік, намальований зверху вниз. Це короткий крок, щоб зобразити дерево таким же чином.

У цій статті про багатошаровий малюнок графіка є додаткові коментарі до цієї візуалізації .


1
Мистецтво комп’ютерного програмування: Фундаментальні алгоритми, Том 1 - Фундаментальні алгоритми, було опубліковано в 1968 році і містило розділ 2 про дерева. Чи може хтось, хто володіє цією книгою, переконається, що на діаграмах відображаються дерева, що ростуть? Якщо так, то історія вказує на умову, розпочату ще раніше. Крім того, мені цікаво, чи інформатики підхопили з математики цю конвенцію ще раніше, ніж 1960 р. Вольфрам показує, що дерева вивчалися в 1857 році.
maxpolk

3
@maxpolk Кнут малює свої дерева корінцем зверху та обговорює своє рішення (розділ 2.3, с. 311 у 3-му виданні) перетворити форму в корені внизу перед публікацією першого видання. Це зводиться до того, що "більшість існуючої літератури йде згори вниз, і нам потрібна послідовна модель для обговорення" (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настільки ж неприродні, як читання верхніх розміщених потоків електронної пошти; що говорити зовсім неприродно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.