Bạn có thể thao tác và rút ra kết luận về các chức năng được mô tả không có triệu chứng?


7

Câu hỏi này là bài tập về nhà (mặc dù không sử dụng vấn đề thực tế)!

Giả sử bạn có một chức năng được mô tả là:

f(n)O(2n2).

Bạn có thể tiếp tục điều trị như sau:

f(n)=2n2

và thực hiện toán học trên nó và giữ ý nghĩa tiệm cận của nó?

Trong trường hợp trên tôi có thể phỏng đoán rằng ngụ ý (giả sử hệ số có vấn đề trong ví dụ này)?f(n)O(2n2)f(n)/2O(n2)


6
Bạn sẽ cần phải rất cẩn thận. Hãy nhớ rằng O () là một tập hợp các hàm. Lấy một đại diện chỉ có thể dẫn đến kết luận sai.
adrianN

1
"Sau đó, bạn có thể tiếp tục coi điều này là:" - không. "Giữ ý nghĩa tiệm cận của nó" - ý của bạn là gì? Một số thông tin mang qua, một số không. "Trong trường hợp trên tôi có thể phỏng đoán" - bạn có thể phỏng đoán bất cứ điều gì bạn muốn; Điều thú vị là liệu bạn có thể chứng minh bất cứ điều gì. Xem ở đây để làm thế nào để chứng minh quan hệ tiệm cận. Bạn cũng có thể trực tiếp đi đến các định nghĩa: yêu cầu bồi thường sau khi mở gì? Bạn biết gì về sau khi mở ? Lấp đầy khoảng trống ở giữa. OfO
Raphael

Câu trả lời:


8

Đối với một số thao tác, chẳng hạn như cộng, nhân, bạn có thể thao tác trực tiếp trên ký hiệu tiệm cận. Ví dụ: nếu và , thì và . Đối với một số hoạt động khác, chẳng hạn như phân chia, nó phụ thuộc sau đó. Ví dụ: với và , việc nói là không đúng (xem xét và ). Tuy nhiên, nếu là hằng số cố định, thìg(n)=O(n2)f(n)=O(n2)g(n)+f(n)=O(n2)g(n)f(n)=O(n4)g(n)=O(n2)f(n)=O(n2)g(n)f(n)=O(1)g(n)=n2f(n)=ncg(n)c=O(n2) .


Có một số tài liệu về các hoạt động thường được "cho phép" đối với ký hiệu tiệm cận? Hoặc bạn có thể suy ra rằng lũy ​​thừa luôn được phép (phép nhân) và logarit là phụ thuộc (phép chia)?
Tyler Kelly

3
@ user3470987 Mặc dù có thể có một danh sách ở đâu đó, bạn cũng có thể tạo nó một cách nhanh chóng. Đây là một bài tập tuyệt vời.
Yuval Filmus

1
@ user3470987 Đây là vấn đề của hương vị. Những người như tôi sẽ khuyên bạn đừng bao giờ làm điều này vì nó có thể dễ dàng dẫn đến nhầm lẫn và sai lầm.
Raphael

3

Để đáp các thắc mắc như phỏng đoán của bạn, sử dụng định nghĩa của . Diễn giải từ wikipedia tại thời điểm viết:O

fO(g) iff với mọi , đối với một số hằng số và .f(x)M×g(x)x>x0Mx0

Vì vậy, nếu , thì cho một số hằng số và (tôi gọi nó là thay vì để tránh nhầm lẫn sau). Bạn sẽ nhận thấy chúng ta có thể kết hợp thành một hằng số, cho bạn biết .f(n)O(2n2)f(n)C×2n2  n>n0Cn0CM2CO(2n2)=O(n2)

Chúng ta có thể nói gì về ? Bây giờ chúng ta có thể sử dụng đại số bình thường cho bất đẳng thức, chẳng hạn như chia cả hai bên cho 2 để có được:f(n)/2

f(n)/2Cn2  n>n0

Đây có còn là không? Để kiểm tra điều này, chúng ta cần tìm các hằng số và sao cho định nghĩa trên được giữ. Trong trường hợp này, và hoạt động. Lưu ý rằng cũng hợp lệ; bạn có thể sử dụng bất kỳ phương pháp nào bạn muốn để tìm các hằng số này, miễn là bạn biết chúng là hằng số.O(n2)Mx0M=Cx0=n0M=327.6C

Trong thế giới thực, bạn sẽ có thể "tắt" hầu hết điều này khi thực hiện phân tích của mình, như NP-hard thực hiện trong câu trả lời của anh ấy, nhưng đó chỉ những phím tắt để viết nó ra một cách nghiêm ngặt như thế này (đó là những gì tôi mong đợi bài tập về nhà cụ thể về ). Nếu bạn không chắc chắn liệu nó có hợp lệ hay không, hãy loại bỏ các bằng cách sử dụng định nghĩa, thực hiện đại số về bất đẳng thức, sau đó đưa nó trở lại bằng cách tìm các hằng số thích hợp (hoặc đơn giản chỉ ra rằng chúng tồn tại).OOO

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.