Điều gì sai với các khoản tiền của Landau?


14

tôi đã viết

i=1n1i=i=1nO(1)=O(n)

nhưng bạn tôi nói điều này là sai. Từ bảng cheat TCS tôi biết rằng tổng cũng được gọi là có mức tăng logarit trong nHnn . Vì vậy, ràng buộc của tôi không phải là rất sắc nét, nhưng là đủ cho phân tích tôi cần nó cho.

Tôi đã làm gì sai?

Chỉnh sửa : Bạn tôi nói rằng với cùng một lý do, chúng ta có thể chứng minh rằng

i=1ni=i=1nO(1)=O(n)

Bây giờ điều này rõ ràng là sai! Chuyện gì đang xảy ra ở đây?


2
Xem một cuộc thảo luận về các thẻ câu hỏi này ở đây .
Raphael


Xem thêm một cách xử lý cụ thể hơn về một ví dụ phổ biến: thời gian chạy tiệm cận của vòng lặp lồng nhau này là gì?
Gilles 'SO- ngừng trở thành ác quỷ'

Câu trả lời:


10

Những gì bạn đang làm là một lạm dụng ký hiệu rất thuận tiện.

Một số giáo viên sẽ nói rằng những gì bạn viết là vô nghĩa, vì biểu thị một bộO(f) và bạn không thể thực hiện các phép toán số học trên chúng theo cách bạn đang làm.

Nhưng đó là một ý tưởng tốt để bỏ qua những người bán hàng đó và cho rằng là viết tắt của một số thành viên của bộ. Vì vậy, khi chúng ta nói f ( n ) = g ( n ) + O ( n ) , những gì chúng ta thực sự có ý nghĩa nếu đó f ( n ) - g ( n ) O ( n ) . (Lưu ý: một số giáo viên cũng có thể rùng mình trước tuyên bố này, cho rằng f ( n ) là một số và fO(f)f(n)=g(n)+O(n)f(n)g(n)O(n)f(n)f là chức năng!)

Điều này làm cho nó rất thuận tiện để viết biểu thức như

nk=1nk1/kn+O(n1/3)

Điều này có nghĩa là có một số như vậyfO(n1/3)

nk=1nk1/kn+f(n)

Trong trường hợp của bạn

k=1n1k=k=1nO(1)=O(n)

bạn đang lạm dụng nó hơn nữa và bạn cần phải cẩn thận.

Có hai cách giải thích ở đây: đề cập đến một hàm của n , hay một hàm của k ?O(1)nk

Tôi tin rằng giải thích đúng là giải thích nó như là một chức năng của .k

Nếu bạn cố gắng suy nghĩ về nó như một hàm của , nghĩ không sai, nó có thể dẫn đến sai lầm tiềm năng, như suy nghĩ kO ( 1 ) và cố gắng để viết Σ n k = 1 k = Σ n k = 1 O ( 1 )nkO(1)k=1nk=k=1nO(1)

Nếu bạn thử nghĩ về nó như là một hàm của , thì đúng là, nếu f = O ( g ) (khi đối số chuyển thành ) và g không bao giờ là 0 , thì đó làkf=O(g)g0

S(n)=k=1nf(k)=k=1nO(g(k))=O(k=1n|g(k)|)

Lưu ý rằng ở giữa, chúng tôi đã sử dụng lạm dụng thuận tiện ký hiệu để có nghĩa là đối với một số hàm h O ( g ) tổng là n k = 1 h ( k ) . Lưu ý rằng hàm cuối cùng bên trong O đề cập đến hàm n . Bằng chứng không khó lắm, nhưng bạn phải phục vụ cho thực tế là bạn đang phải đối phó với giới hạn trên không có triệu chứng (nghĩa là đối với các đối số đủ lớn), nhưng tổng bắt đầu ngay tại 1 .O(g(k))hO(g)k=1nh(k)On1

Nếu bạn cố gắng suy nghĩ về nó như một hàm của , thì nó cũng là sự thật rằng nếu f = O ( g ) (như là đối số đi vào ) sau đónf=O(g)

S(n)=k=1nf(k)=k=1nO(g(n))=O(ng(n))

Vì vậy, bằng chứng của bạn về cơ bản là chính xác, trong cả hai cách giải thích.


1
Điểm mấu chốt: Hãy lưu ý (đảm bảo) rằng mọi sự xuất hiện của biểu tượng Landau đều giới thiệu (có) hằng số riêng của nó .
Raphael

8

nO(n)

ΣTôi= =1n1Tôilnn+12n= =Ôi(n)

Giới hạn trên Ôi(n)không chặt chẽ , nhưng nó chính xác.


4
Được rồi: 1 / i ≤ 1 = O (1).
JeffE

1
Mối quan tâm được hướng vào dấu hiệu bình đẳng thứ hai. Làm thế nào để tôi xác minh điều đó?
Raphael

2
Nhưng điều đó cũng đúng. Tổng của n thuật ngữ, mỗi thuật ngữ là O (1), thực sự là O (n).
Suresh

2
@Suresh Chỉ khi các hằng số ngụ ý bởiÔis là độc lập với biến tổng, và đó là điểm ở đây (câu hỏi hạt giống).
Raphael

2
Lỗi không nằm trong đẳng thức thứ hai. lỗi (trong biểu thức thứ hai) là ở cách bạn NHẬN tổng kết đó. Đi từΣTôiÔi(1)= =Ôi(n)đúng. Nó tuyên bố rằngTôi= =Ôi(1) is wrong. I realize this is obvious to all concerned, but I think this is the problem with 'seeding' questions :)
Suresh

6

For the second example, you can't claim that

i=O(1)

since i varies with n. After few steps it will be the case that i>n/2. A more appropriate way is to say that i=O(n) since indeed, throughout the summation i never exceeds 1n. By this reasoning,

i=1ni=i=1nO(n)=nO(n)=O(n2)

However the right thing to do is actually use the big-O notation only at the end. Upper bound your summation as tight as you can, and only when your done use the asymptotic notations to avoid these pitfalls.

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.