Thứ tự định nghĩa tăng trưởng từ Reynolds & Tymann


47

Tôi đang đọc một cuốn sách có tên Nguyên tắc Khoa học Máy tính (2008), của Carl Reynold và Paul Tymann (được xuất bản bởi Schaum's Outlines).

Chương thứ hai giới thiệu các thuật toán với một ví dụ về tìm kiếm tuần tự, chỉ đơn giản lặp lại thông qua một danh sách các tên và trả về ĐÚNG nếu tìm thấy một tên cụ thể trong danh sách.

Tác giả tiếp tục nói (trang 17):

Chúng tôi nói rằng "thứ tự tăng trưởng" của thuật toán tìm kiếm tuần tự là n. Ký hiệu cho điều này là T (n). Chúng tôi cũng nói rằng một thuật toán có thứ tự tăng trưởng nằm trong một số yếu tố không đổi của T (n) có một theta của NL nói. "Tìm kiếm tuần tự có một theta của n." Kích thước của vấn đề là n, độ dài của danh sách được tìm kiếm.

Tôi thấy điều này thực sự khó theo dõi. Cuốn sách bị sai sót, vì vậy tôi không chắc mình có thiếu thứ gì không hoặc nếu có lỗi đánh máy trong đoạn văn trên. Nói chung tiếng Anh tôi hiếm khi thấy bất kỳ câu kết thúc bằng "... nói".

Tôi rất bối rối.

T đứng để làm gì? Cuốn sách không giải thích. Là cho thời gian hay cho Theta?

Nếu "a theta of NL" có nghĩa là "Tìm kiếm tuần tự có theta là n." L đại diện cho cái gì? 'Tuyến tính' hay 'chiều dài'?

Tôi đã viết thư cho các nhà xuất bản yêu cầu một lời giải thích. Họ nói rằng họ sẽ chuyển tiếp thông điệp của tôi đến các tác giả. Họ chưa trả lời. Tôi cũng đã thử xem các nguồn khác nhưng tôi vẫn có cảm giác khó chịu rằng tôi đang hiểu nhầm điều gì đó - vì vậy không thể nghỉ ngơi cho đến khi tôi giải mã được đoạn này.

Nếu bất cứ ai có một bản sao của cuốn sách đó, và đã hiểu đoạn đó. Sau đó, tôi đánh giá cao nếu bạn có thể cho tôi biết nếu đoạn đó là chính xác hoặc giải thích nó bằng những từ khác. Cảm ơn.


Độ phức tạp thời gian T (n), từ Wikipedia : "Vì thời gian thực hiện của thuật toán có thể thay đổi theo các đầu vào khác nhau có cùng kích thước, nên người ta thường sử dụng độ phức tạp thời gian trong trường hợp xấu nhất của thuật toán, được ký hiệu là T (n), được định nghĩa là lượng thời gian tối đa dành cho bất kỳ đầu vào nào có kích thước n. Ít phổ biến hơn và thường được chỉ định rõ ràng là thước đo độ phức tạp trường hợp trung bình. Độ phức tạp thời gian được phân loại theo tính chất của hàm T (n). Ví dụ: thuật toán với T (n) = O (n) được gọi là thuật toán thời gian tuyến tính và [...] "
Stefan

1
Tôi tin rằng đây là cuốn sách này và, ngoài bài đánh giá không xuất sắc mà tôi vừa để lại, có một ngày khác ngày hôm nay, có lẽ không phải là một sự trùng hợp!
Jason C

Cách sử dụng nói đó cảm thấy giống như định nghĩa ít được sử dụng nhất: Giả sử hoặc giả sử. Hãy nghĩ về nó như là "..., hãy nói." Vẫn không chắc câu đó có ý nghĩa gì.
Roger Krueger

Câu trả lời:


77

Đoạn văn sai. Thật không may, nó trông giống hệt như một điều mà một sinh viên không hiểu tài liệu sẽ viết như một câu trả lời cho một bài tập. Loại vô nghĩa này không có chỗ trong sách giáo khoa. Không có chuyển động đột ngột. Đặt cuốn sách xuống. Bước ra khỏi cuốn sách.

Chúng tôi nói rằng "thứ tự tăng trưởng" của thuật toán tìm kiếm tuần tự là n. Ký hiệu cho điều này là .T(n)

Số là ký hiệu cho hàm gọi là T , lấy tham số gọi là n . Chức năng đó có thể được sử dụng để có nghĩa là bất cứ điều gì. Có một cái gì đó của truyền thống viết quan hệ lặp lại cho thời gian chạy của các chương trình ở dạng, ví dụ, T ( 1 )T(n)Tn NhưngTkhông phải là "thứ tự tăng trưởng", ở đây: nó là một hàm cụ thể được xác định thông qua quan hệ lặp lại. Và bạn không thể chỉ viết "T(n)=blah" và mong mọi người đọc được suy nghĩ của bạn và biết rằng hàm Tbiểu thị thời gian chạy của một số thuật toán. T ở đây là viết tắt của thời gian.

T(1)=kT(n)=T(n1)+lognfor n>1
TT(n)=blahTT

Chúng tôi cũng nói rằng một thuật toán có thứ tự tăng trưởng nằm trong một số yếu tố không đổi của có một theta của NL nói. "Tìm kiếm tuần tự có một theta của n ."T(n)n

Điều này rõ ràng đã được đọc sai. Tôi nghĩ rằng các tác giả có ý định viết một cái gì đó như,

T(n)nn

Nhưng, xin vui lòng, chúng tôi không nói "có theta của ", giống như, nếu là ký hiệu của bạn về chiều cao, bạn sẽ không nói "John có 180cm". Nó chỉ không phải là một hình thức chính xác của từ. Chúng tôi thực sự nói, "Thời gian chạy của thuật toán là theta  (hoặc theta của  )." Đặc biệt lưu ý rằng là một công cụ để nói về các hàm toán học, không phải thuật toán. Theta không có nghĩa là thời gian chạy là một cái gì đó; thay vào đó, đó là thứ bạn có thể sử dụng để nói về thời gian hoạt động.h h n n ΘnhhnnΘ

"NL", nhân tiện, biểu thị không gian loga không phức tạp của lớp , điều này không có ý nghĩa gì cả ở vị trí nó xuất hiện trong trích dẫn ban đầu.


12
Đoạn đầu tiên khiến tôi mỉm cười vì đó chính xác là điều mà cảnh sát khoa học máy tính sẽ nói với bạn :-) (+1 cũng vậy, đây là một câu trả lời hay).
Juho

3
Cảm ơn bạn rất nhiều vì lời giải thích của bạn. Nó thực sự rất hữu ích và bây giờ tôi cảm thấy tôi hiểu nó tốt hơn một chút (hoặc, ít nhất, không cảm thấy tức giận trong não vì không hiểu đoạn đó). Tôi có thể thư giãn bây giờ.
JW.

2

Nghe có vẻ như tác giả đang cố gắng giải thích ký hiệu Big O , nhưng đã đổi tên nó thành không có lý do cụ thể, và đọc sai văn bản hoàn toàn.T

Để có một mô tả hay về ký hiệu Big O (cũng như little-o và Theta), tôi khuyên bạn nên giới thiệu cuốn sách MIT Giới thiệu về thuật toán của giáo sư Leiserson.

Dường như một điểm khác biệt quan trọng là đề cập đến tổng độ phức tạp của thuật toán, thường là thời gian , không gian hoặc cả hai. (ví dụ: Một số thuật toán chạy chậm hơn với các tập dữ liệu lớn hơn; một số yêu cầu nhiều không gian lưu trữ hơn với dữ liệu lớn hơn và một số thuật toán yêu cầu nhiều thời gian hơn và nhiều không gian hơn) .Onotation

Tnotation


1
Nghe có vẻ như họ không cố gắng giải thích chữ O lớn - họ nói rõ ràng về theta.
David Richerby

Văn bản của giáo sư Leiserson mô tả cụ thể Theta là một biến thể chính xác hơn trên BigO. Tôi nhận ra có thể có những định nghĩa khác về Theta, nhưng theta liên quan đến BigO là cái tôi quen thuộc.
abelenky

2
Tôi không nghĩ đây là những gì đang diễn ra. Thay vào đó, tôi nghi ngờ đó là sự chậm chạp phổ biến của việc viết "T (n) = n" và giả sử (không nói rõ ràng) rằng mọi người sẽ suy luận rằng T (n) đề cập đến thời gian chạy và cụ thể là thời gian chạy của thuật toán họ có ý nghĩ, và n đề cập đến kích thước của đầu vào.
DW
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.