왜 나무가 아래쪽으로 자라는가?


17

컴퓨터 과학에서 나무가 왜 자라는가?

프린터로 돌아가는 느낌이 들었고, 나무를 가로 지르는 프로그램이 먼저 루트를 인쇄하고 밑이없는 용지 더미라는 개념을 사용하여 발생할 수있는 무한한 재귀 수준을 표현합니다.

참고 문헌 :

나무는 아래쪽으로 자라며 페이지의 상단에 뿌리가 있고 아래에 나뭇잎이 있습니다.

에서 거룩한의 전쟁과 평화를위한 항변 .

관례에 따라 나무는 아래쪽으로 자라고 있습니다.

트리 데이터 구조에 관한 Wikipedia 기사 에서.

실제 나무는 뿌리에서 위쪽으로 자라지 만 컴퓨터 과학 나무는 뿌리에서 아래쪽으로 자랍니다.

David Schmidt의 강의 노트에서 .


8
맨홀은 왜 둥글습니까?
Job

9
자연의 모든 방향에서 자란 나무 ... 위로, 아래로, 등
CaffGeek

7
@Job 맨홀 뚜껑이 빠지는 것을 방지합니다. FTFY. :-)
게리 로우

6
@GaryRowe : 널리 전파 된 허위. 맨홀 뚜껑은 주로 파이프 끝을 덮고 있기 때문에 둥글고 파이프는 둥글다. 파이프는 1) 파이프에 응력을 고르게 분산시키고 2) 주어진 둘레의 단면을 최대화하기 때문에 둥글다. 전체적으로 특정 양의 재료로 얻을 수있는 파이프의 강도와 용량을 최대화합니다.
Jerry Coffin

11
@JerryCoffin : 둥근 파이프가 사각형 파이프보다 강하기 때문에 나무가 아래쪽으로 자 랍니까? ;)
FrustratedWithFormsDesigner

답변:


13

그냥 추측 :

사람들이 페이지의 맨 위에서 아래로 읽기 때문에 나무 구조는 아래쪽으로 자랍니다 (위에서 뿌리, 아래에서 나뭇잎). 또한 여러 페이지에 걸쳐있는 큰 나무를 그리려면 독자에게 몇 페이지를 건너 뛰고 뒤로 작업하도록 요청하는 것이 어색합니다.

또한, 위에서 설명한 이유로 대회를 시작했는지 아니면 다른 이유로 대회를 시작했는지 여부는 대회이기 때문에 오늘 연습을 계속합니다. 최상위 노드 (루트를 의미) 와 같은 해당 용어 가 있는데, 루트가 맨 아래에있는 구조를 그리면 의미가 없습니다.


1
@BruceEdiger : 나는 그것이 다른 규칙으로 귀결 될 것이라고 추측 할 것입니다.
FrustratedWithFormsDesigner

3
@BruceEdiger 그것은 매우 다른 것입니다. 직교 좌표계는 그것이 그 규칙에 충실 꽤 자연 그래서 375 년 전에 설립되었다. 그래픽 시스템 (X11, QuickDraw, iOS의 Quartz)은 종종 뒤집힌 좌표 시스템을 사용합니다. 그래도 우리가 나무를 그리는 방법과는 관련이 없다고 생각합니다.
Caleb

3
뒤집힌 좌표의 이유는 터미널이 있던 시간으로 거슬러 올라갑니다. 왼쪽 상단부터 시작하여 텍스트가 표시되고 실제 해상도가 다를 수 있으므로 (0,0)을 왼쪽 상단으로 설정하는 것은 매우 합리적인 결정이었습니다.
FUZxxl

1
@BruceEdiger 화면 좌표는 기본적으로 (x, y)에서 픽셀 / 문자의 메모리 위치로 매핑됩니다. 메모리를 이미지에 매핑하는 비디오 디스플레이 컨트롤러는 왼쪽 상단의 위치 0에서 시작합니다. 따라서 (y * 80 + x)로 메모리 위치를 얻을 수 있으므로 (0,0)을 갖는 것은 자연스러운 매핑입니다. 8 비트 컴퓨터에 대한 설명서이 내용

2
손으로 나무를 그릴 때 필요한 공간을 알기가 어렵고, 먼저 위의 레벨을 그리지 않고 메모를 깔끔하게 배치하는 것도 어렵습니다. 따라서 "루트"를 먼저 그려서 맨 위에 올려 놓으면 페이지의 어느 부분에서든 트리가 끝나는 곳에서 텍스트를 계속할 수 있습니다.
Ian

16

이 협약 은 다음과 같이 설계된 Coffman-Graham 알고리즘 에서 비롯된 것 같습니다.

"... 부분적으로 정렬 된 세트의 요소들을 일련의 레벨로 배열하기 위해. 알고리즘은 순서대로 뒤 따르는 요소가 더 낮은 레벨에 할당되고 각 레벨에 숫자가 있도록 배열을 선택합니다. 고정 너비 제한 W를 초과하지 않는 요소

1972 년의 논문 ( PDF )은 위에서 아래로 향하는 비순환 비순환 그래프를 보여줍니다. 같은 방식으로 트리를 나타내는 것은 간단한 단계입니다.

레이어드 그래프 드로잉 에 대한이 기사에서이 시각화에 대한 추가 주석이 있습니다 .


1
컴퓨터 프로그래밍의 기술 : 기본 알고리즘, 제 1 권 – 기본 알고리즘은 1968 년에 출판되었으며 나무에 관한 섹션 2를 가지고 있습니다. 이 책을 소유 한 사람이 다이어그램에 나무가 자라는 것을 확인할 수 있습니까? 그렇다면 역사는 우리가 더 일찍 시작된 대회를 지적합니다. 또한, 컴퓨터 과학이 1960 년 이전의 수학에서 수학에서 선택되었는지 궁금합니다. Wolfram 은 1857 년에 나무가 연구되었음을 보여줍니다.
maxpolk

3
@maxpolk Knuth는 자신의 나무를 루트에서 루트로 뽑아 내고, 초판을 발행하기 전에 루트에서 맨 아래 형태를 변환하기로 한 그의 결정 (3.2 번째 2.3, pp. 311)에 대해 논의합니다. "기존 문헌의 대부분은 하향식이며 토론 목적으로 일관된 모델이 필요합니다"(Knuth의 조사에 따르면 80 %)로 요약됩니다.
로스 패터슨

1

로부터 그리기 top > downleft > 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.