Tên lớp chức năng được mô tả bởi O (n log n) là gì?


40

Trong "Big O", các ký hiệu phổ biến có tên chung (thay vì nói, "Ôi một số yếu tố không đổi"):

O (1) là "Không đổi"

O (log n) là "Logarit"

O (n) là "Tuyến tính"

O (n ^ 2) là "bậc hai"

O (n * log n) là ???

Nó chỉ là "n log n" hay nó có một cái tên đặc biệt như trên không?


Câu trả lời:


52

Nó được gọi là thời gian tuyến tính , và là trường hợp đặc biệt của một lớp tổng quát hơn được gọi là tuyến tính gần đúng . Như tên có thể gợi ý, các thuật toán thuộc lớp này gần như chạy trong thời gian tuyến tính; trong thực tế, chúng có độ phức tạp thấp hơn các thuật toán chạy trong với .O(nk)k>1


Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
Gilles 'SO- ngừng trở nên xấu xa'

17

linearithmic: adj.

Trong một thuật toán, có thời gian chạy là O (N log N). Được tạo ra như là một mô hình của "tuyến tính" và "logarit" trong Thuật toán trong C của Robert Sedgewick (Addison-Wesley 1990, ISBN 0-201-51425-7).

http://catb.org/jargon/html/L/linearithmic.html


Tại sao tôi không ngạc nhiên khi nó đến từ Sedge ... :)
TextGeek

11

Tôi đã luôn nghe O (n log n) được mô tả là "log-linear" có vẻ đúng với tôi.


4
Điều đó nói rằng, một hoặc hai tài liệu tham khảo sẽ được tốt đẹp.
Raphael

7

Điều này quá dài cho một bình luận, vì vậy tôi đã viết một câu trả lời. Tôi đã không thêm câu này vào câu trả lời đầu tiên của mình vì rất nhiều người đã ủng hộ câu trả lời đầu tiên của tôi và tôi không chắc họ cũng đồng ý với câu trả lời này.

  • Tôi không nghĩ rằng linearithmic là một thuật ngữ được thiết lập tốt như đã nêu trong một nhận xét cho câu trả lời được chấp nhận. Tôi đã googled một số bài viết khá trẻ sử dụng thuật ngữ này, một khóa học CS và một cuốn sách khác của Sedgewick sử dụng thuật ngữ này và rất nhiều từ điển trực tuyến.
  • Thuật ngữ quasilinear tôi tìm thấy trong hai bài viết:

    Sự hài lòng là Quasilinear Hoàn thành trong Tạp chí NQL
    CP Schnorr
    của Hiệp hội Máy móc Máy tính,
    Tập 25. Số 1, tháng 1 năm 1978, trang 136-1,15

và trong một bài viết được trích dẫn trong Wikipedia liên quan đến bài viết này của Schorr. Schnorr giới thiệu các lớp phức tạp quasilinear (QL) và quasilinear không phá hủy (NQL).
Quasilinear dường như cũng được sử dụng trong lý thuyết phương trình vi phân từng phần.

Nhìn chung, dường như một hoặc nhiều Wikipedian muốn cung cấp tên cho chức năng này không có tên được chấp nhận rộng rãi. Nhưng ngay cả bây giờ đối với tôi, dường như không có cái tên nào được chấp nhận rộng rãi (ngoài ra tôi nghĩ đây là một loại thao túng mà Wikipedia không nên làm). Tôi nghĩ người ta phải thận trọng nếu sử dụng Wikipedia cho các câu hỏi thuật ngữ. Và đối với chức năng này, nó không phải là một nguồn đủ. Tôi nghĩ rằng tên duy nhất được chấp nhận rộng rãi cho chức năng này là n log n .


1
Trong khi tính hợp pháp của linearithmicloglinear có thể gây tranh cãi, tôi tin rằng bán tuyến tính là một thuật ngữ được thiết lập tốt. Nó dường như được sử dụng rộng rãi trong các tài liệu nghiên cứu.
Roukah

@Roukah có, nhưng nó không có nghĩa tương tự; quasilinear là tổng quát hơn. - Tôi không thấy có gì sai với Wikipedia khi sử dụng một tên không rõ ràng, dường như không có lựa chọn nào tốt hơn và được sử dụng trong một nguồn nổi tiếng hợp lý, ngay cả khi nó không được lan truyền nhiều. Trong thực tế, tôi muốn nói rằng thực tế là nó không lan rộng mặc dù là một lớp phức tạp cực kỳ phổ biến cho thấy đã đến lúc mọi người bắt đầu sử dụng nó nhiều hơn!
leftaroundabout

+1 "chỉ tên được chấp nhận rộng rãi cho chức năng này là n log n" - Tất cả các câu trả lời khác đều mang tính giải trí và chỉnh sửa, nhưng tôi nghĩ bạn có thể đúng. Tôi đã thực hành nói "linearithmic" trong một vài ngày và nó vẫn không thè lưỡi. "En log en" rất dễ nói, dễ nhớ và được mọi người quen thuộc với Big O hiểu ngay lập tức. Tôi sẽ suy nghĩ về nó một chút, nhưng tôi có thể phải chuyển sự chấp nhận của mình sang câu trả lời này.
GlenPeterson
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.