Tại sao cây mọc xuống?


17

Tại sao cây mọc xuống trong khoa học máy tính?

Tôi có cảm giác nó quay trở lại máy in, và một chương trình đi ngang qua cây lần đầu tiên in gốc, và sử dụng khái niệm một chồng giấy không đáy để diễn tả mức độ đệ quy không xác định có thể gặp phải.

Người giới thiệu:

Cây mọc hướng xuống dưới, có rễ ở đầu trang và lá của chúng ở phía dưới

Từ TRÊN CẢNH BÁO VÀ MỘT PLEA CHO HÒA BÌNH .

theo quy ước, cây được kéo xuống

Từ bài viết Wikipedia về cấu trúc dữ liệu cây.

Cây thật mọc từ gốc lên trời, nhưng cây khoa học máy tính mọc từ gốc trở xuống

Từ bài giảng của David Schmidt .


8
Tại sao hố ga lại tròn?
Công việc

9
Cây mọc ở mọi hướng trong tự nhiên ... hướng lên, hướng xuống, v.v.
CaffGeek

7
@Job Để ngăn nắp hố ga rơi vào. FTFY. :-)
Gary Rowe

6
@GaryRowe: Một sự giả dối được truyền bá rộng rãi. Các nắp cống có hình tròn chủ yếu vì chúng bao phủ các đầu ống và ống tròn. Các ống có hình tròn vì 1) phân phối ứng suất lên chúng đồng đều và 2) nó tối đa hóa mặt cắt cho một chu vi nhất định. Nhìn chung, nó tối đa hóa sức mạnh và công suất của đường ống bạn có thể nhận được từ một lượng vật liệu cụ thể.
Jerry Coffin

11
@JerryCoffin: Vậy .... cây mọc xuống vì ống tròn mạnh hơn ống vuông? ;)
Thất vọngWithFormsDesigner

Câu trả lời:


13

Chỉ là một phỏng đoán:

Các cấu trúc cây mọc xuống (gốc ở trên, lá ở dưới) vì mọi người đọc từ đầu trang về phía dưới. Hơn nữa, nếu bạn vẽ một cái cây lớn kéo dài vài trang, sẽ rất khó để yêu cầu người đọc bỏ qua trước một vài trang và sau đó làm việc ngược lại.

Hơn nữa, cho dù quy ước bắt đầu vì lý do đã giải thích ở trên hay vì một lý do nào khác, chúng tôi tiếp tục thực hành ngày hôm nay chính xác vì đó là một quy ước. Chúng ta có các thuật ngữ tương ứng như nút cấp cao nhất (có nghĩa là gốc) sẽ không có ý nghĩa nhiều nếu chúng ta vẽ cấu trúc với gốc ở phía dưới.


1
@BruceEdiger: Tôi sẽ đoán rằng nó chỉ xuất phát từ các quy ước khác nhau.
Thất vọngWithFormsDesigner

3
@BruceEdiger Đó là một cái gì đó khá khác biệt. Các hệ thống Cartesian phối hợp được thành lập 375 năm trước, do đó, nó khá tự nhiên để dính vào ước đó. Các hệ thống đồ họa (X11, QuickDraw, Quartz trên iOS) thường sử dụng hệ thống tọa độ lật. Tôi không nghĩ rằng có bất cứ điều gì để làm với cách chúng ta vẽ cây, mặc dù.
Caleb

3
IMHO lý do cho các tọa độ lật có từ thời mà người ta có các thiết bị đầu cuối. Vì chúng hiển thị văn bản bắt đầu từ góc trên bên trái và độ phân giải thực tế có thể thay đổi, nên quyết định rất hợp lý là (0,0) là góc trên bên trái.
FUZxxl

1
@BruceEdiger tọa độ trên màn hình về cơ bản ánh xạ từ (x, y) đến vị trí bộ nhớ của pixel / ký tự. Bộ điều khiển hiển thị video chịu trách nhiệm ánh xạ bộ nhớ vào hình ảnh bắt đầu từ vị trí 0 ở góc trên bên trái. Do đó, nó là một ánh xạ tự nhiên để có (0,0) ở đó vì bạn có thể có được vị trí bộ nhớ chỉ với (y * 80 + x). Tài liệu cho máy tính 8 bit tôi đã học được điều này với: datamuseum.dk/w/images/5/5b/RC702_Tech_Man.pdf

2
Khi vẽ một cây bằng tay, thật khó để biết bạn sẽ cần bao nhiêu không gian, cũng khó để bố trí các ghi chú gọn gàng mà không cần vẽ mức độ trên. Vì vậy, bạn có xu hướng vẽ gốc Root đầu tiên đặt nó lên trên cùng để bạn có thể tiếp tục với văn bản của mình ở bất cứ nơi nào trên trang mà cây hoàn thành.
Ian

16

Quy ước dường như xuất phát từ Thuật toán Coffman-Graham được thiết kế:

"... để sắp xếp các phần tử của một thứ tự được sắp xếp một phần thành một chuỗi các cấp. Thuật toán chọn một sắp xếp sao cho một phần tử đi sau một phần tử khác theo thứ tự được gán cho cấp thấp hơn và sao cho mỗi cấp có một số của các phần tử không vượt quá độ rộng cố định W. "

Bài báo của họ từ năm 1972 ( PDF ) cho thấy một biểu đồ chu kỳ có hướng được vẽ từ trên xuống dưới. Đó là một bước ngắn để đại diện cho một cây theo cách tương tự.

Có một số bình luận thêm về hình dung này trong bài viết này về Vẽ đồ thị lớp .


1
Nghệ thuật lập trình máy tính: Thuật toán cơ bản, Tập 1 - Thuật toán cơ bản, được xuất bản năm 1968 và có phần 2 về cây. Ai đó có thể sở hữu cuốn sách này có thể xác minh rằng sơ đồ cho thấy cây mọc xuống không? Nếu vậy, lịch sử chỉ cho chúng ta một hội nghị bắt đầu thậm chí sớm hơn. Ngoài ra, tôi tự hỏi liệu khoa học máy tính có được từ toán học quy ước này từ sớm hơn năm 1960. Wolfram cho thấy cây được nghiên cứu vào năm 1857.
maxpolk

3
@maxpolk Knuth vẽ cây của mình theo cách từ gốc đến đỉnh và thảo luận về quyết định của mình (giây 2.3, tr. 311 trong phiên bản thứ 3) để chuyển đổi biểu mẫu gốc ở dưới cùng trước khi xuất bản phiên bản đầu tiên. Nó tập trung vào "hầu hết các tài liệu hiện có từ trên xuống và chúng ta cần một mô hình nhất quán cho mục đích thảo luận" (80% theo khảo sát của Knuth).
Ross Patterson

1

Vẽ từ top > downleft > rightphổ biến trong khoa học máy tính bởi vì đó là những hướng bắt đầu bằng tiếng Anh viết. Xem xét rằng hầu hết các bài báo khoa học máy tính được viết bằng tiếng Anh bất kể ngôn ngữ bản địa của người viết, đây sẽ là cách phổ biến nhất để vẽ sơ đồ.

Điều tự nhiên nhất đối với người đọc ngôn ngữ tiếng Anh là đọc biểu đồ từ top > downhoặc left > righthơn một trong các lựa chọn thay thế khác.

Thực hiện tìm kiếm hình ảnh.google.com directed tree graphvà xem xét kết quả. Các sơ đồ cây duy nhất tôi có thể tìm thấy đi lên là Sơ đồ lớp UML và chỉ vì đó là quy ước mà UML đã chọn cho Sơ đồ lớp. Tất cả các Sơ đồ UML khác đi left > righthoặc up > down.

Tôi sẽ xem xét việc đọc các biểu đồ cây có hướng từ down > upkhông tự nhiên như đọc các chủ đề email được đăng hàng đầu; mà nói là hoàn toàn không tự nhiên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.