Thời gian đa thức và thời gian hàm mũ


90

Ai đó có thể giải thích sự khác biệt giữa các thuật toán thời gian đa thức, thời gian không đa thức và thời gian hàm mũ không?

Ví dụ, nếu một thuật toán mất O (n ^ 2) thời gian, thì nó thuộc loại nào?

Câu trả lời:


85

Kiểm tra điều này .

Cấp số nhân kém hơn đa thức.

O (n ^ 2) thuộc loại bậc hai, là một loại đa thức (trường hợp đặc biệt của số mũ bằng 2) và tốt hơn cấp số nhân.

Mũ là nhiều tồi tệ hơn đa thức. Nhìn vào cách các chức năng phát triển

n    = 10    |     100   |      1000

n^2  = 100   |   10000   |   1000000 

k^n  = k^10  |   k^100   |    k^1000

k ^ 1000 là đặc biệt lớn trừ khi k nhỏ hơn 1.1. Giống như, một cái gì đó giống như mỗi hạt trong vũ trụ sẽ phải thực hiện 100 tỷ tỷ tỷ hoạt động mỗi giây trong hàng nghìn tỷ tỷ tỷ năm để hoàn thành điều đó.

Tôi đã không tính toán nó ra, nhưng nó rất LỚN.


29
Tôi rất thích tất cả các bệnh tật của bạn.
Josephine

7
k ^ 1000 là đặc biệt lớn nếu k rõ ràng to hơn 1. Nếu k = 1 thì ít ấn tượng, và nếu k = 1,00069387 ..., đó là 2.
Josephine

2
Còn n thì sao! vs k ^ n. Tôi biết cho 2 ^ n (phổ biến nhất), n! sẽ đắt hơn, nhưng tôi tin rằng đối với một k ^ n chung trong đó k> 2, n! sẽ ít tốn kém hơn.
Saad

1
Tôi rất vui vì bạn đã không nói "tỷ tỷ tỷ". :-)
Tom Russell

@Saad n! sẽ luôn đắt hơn k ^ n đối với k hằng số, tiệm cận. Tuy nhiên, bạn đúng, đây chỉ là trường hợp khi chúng ta đạt đến giá trị cao của n. Bằng cách xấp xỉ Stirling của, thời gian thừa sẽ trở nên đắt hơn xung quanh khi n = e * k, trong đó e = 2,71828 ..
inavda

135

Dưới đây là một số hàm Big-O phổ biến trong khi phân tích thuật toán.

  • O ( 1 ) - thời gian không đổi
  • O ( log (n) ) - thời gian logarit
  • O ( (log (n)) c ) - thời gian đa thức
  • O ( n ) - thời gian tuyến tính
  • O ( n 2 ) - thời gian bậc hai
  • O ( n c ) - thời gian đa thức
  • O ( c n ) - thời gian theo cấp số nhân
  • O ( n! ) - thời gian giai thừa

(n = kích thước của đầu vào, c = một số hằng số)

Đây là biểu đồ mô hình đại diện cho độ phức tạp Big-O của một số hàm

mô hình đồ thị

chúc mừng :-)

đồ thị tín dụng http://bigocheatsheet.com/


12
Thêm một cho ít từ hơn và rõ ràng hơn.
user3144836

1 = n ^ 0 như vậy cũng đa thức
BigChief

46

O (n ^ 2) là thời gian đa thức. Đa thức là f (n) = n ^ 2. Mặt khác, O (2 ^ n) là thời gian hàm mũ, trong đó hàm số mũ được ngụ ý là f (n) = 2 ^ n. Sự khác biệt là liệu hàm của n đặt n vào cơ số của lũy thừa hay trong chính số mũ.

Bất kỳ hàm tăng trưởng theo cấp số nhân nào sẽ phát triển nhanh hơn đáng kể (dài hạn) so với bất kỳ hàm đa thức nào, do đó, sự phân biệt có liên quan đến hiệu quả của một thuật toán, đặc biệt là đối với các giá trị lớn của n.


Câu trả lời này có một không khí có thẩm quyền (tốt), nhưng nó khác với câu trả lời của @ dheeran, tôi tin rằng, liệu cơ số trong trường hợp hàm mũ có nhất thiết là 2 hay không.
Tom Russell

21

Thời gian đa thức.

Đa thức là tổng các số hạng giống như Constant * x^k Hàm mũ có nghĩa làConstant * k^x

(trong cả hai trường hợp, k là hằng số và x là biến).

Thời gian thực hiện của các thuật toán theo cấp số nhân tăng nhanh hơn nhiều so với các thuật toán đa thức.


18

Hàm (Bạn có một hàm số mũ nếu TỐI THIỂU MỘT CHI PHÍ phụ thuộc vào một tham số):

  • Ví dụ: f (x) = hằng số ^ x

Đa thức (Bạn có một hàm đa thức nếu KHÔNG PHỤ THUỘC vào một số tham số hàm):

  • Ví dụ: f (x) = x ^ hằng số

4
Tôi không thích nó nếu không có gì từ câu trả lời ban đầu của tôi còn lại sau khi nó đã được người dùng chỉnh sửa. Đây có phải là một kiểu "câu like"?
Erhard Dinhobl

2
Tôi phải đồng ý. Những thay đổi là vô lý.
satya trên đường ray

3

thời gian đa thức O (n) ^ k có nghĩa là Số hoạt động tỷ lệ với lũy thừa k của kích thước đầu vào

thời gian theo cấp số nhân O (k) ^ n có nghĩa là Số lượng hoạt động tỷ lệ với số mũ của kích thước đầu vào


0

o (n sequre) là độ phức tạp thời gian tối đa trong khi o (2 ^ n) là độ phức tạp thời gian hàm mũ nếu p = np khi trường hợp tốt nhất, trong trường hợp xấu nhất p = np không bằng giá trị khi kích thước đầu vào n tăng quá lâu hoặc bộ chỉnh đầu vào tăng như vậy Còn trường hợp xấu nhất của nó và việc xử lý nên tốc độ tăng độ phức tạp tăng lên và phụ thuộc vào kích thước n của đầu vào khi đầu vào nhỏ. Nó là đa lượng khi kích thước đầu vào lớn và lớn nên p = np không bằng nhau có nghĩa là tốc độ tăng trưởng phụ thuộc vào kích thước của đầu vào "N ". tối ưu hóa, sat, clique và thiết lập độc lập cũng đáp ứng theo cấp số nhân đến đa lượng.

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.