Định nghĩa bên phải của người Viking về giới hạn trên và dưới là gì?


19

Đặt là thời gian chạy tệ nhất của sự cố đối với đầu vào có kích thước . Hãy để chúng tôi làm cho vấn đề trở nên hơi kỳ lạ bằng cách sửa cho nhưng cho .f(n)nf(n)=n2n=2kf(n)=nn=2k+1

  1. Vì vậy, giới hạn dưới của vấn đề là gì? Cách tôi hiểu nó chỉ là giới hạn dưới của . Nhưng chúng ta biết rằng ngụ ý rằng tồn tại hằng số , sao cho tất cả , , điều đó không đúng. Do đó, dường như chúng ta chỉ có thể nói . Nhưng thông thường, chúng ta sẽ gọi vấn đề có giới hạn dưới là , phải không?f(n)f(n)=Ω(n2)kn0n>n0f(n)>kn2f(n)=Ω(n)Ω(n2)

  2. Giả sử , có nghĩa là tồn tại hằng số , sao cho tất cả , . Chúng ta cũng giả sử một vấn đề có thời gian chạy . Nếu chúng ta có thể giảm vấn đề này cho tất cả các số nguyên tố sang một vấn đề khác (có cùng kích thước đầu vào), chúng ta có thể nói thời gian chạy của vấn đề khác có giới hạn thấp hơn của không?k n 0 n > n 0 g ( n ) > k n 2 g ( n ) n Ω ( n 2 )g(n)=Ω(n2)kn0n>n0g(n)>kn2g(n)nΩ(n2)


12
Đây là lý do tại sao các nhà toán học sử dụng lim sup và lim inf.
Peter Shor

1
Vì vậy, tôi nghĩ rằng tôi hiểu sự khác biệt. Tôi nghĩ rằng mọi người sẽ chỉ hiểu Omega là vô cùng thường xuyên. Nhưng trong trường hợp tôi muốn phân biệt rõ ràng, có bất kỳ ký hiệu nào tôi có thể sử dụng ngoài việc mở rộng nó không?
Wei Yu

3
@Wei Yu: lim sup và lim inf. Bạn nói với một số không đổi nếu bạn muốn nói rằng thường xuyên và nếu bạn muốn nói cho tất cả đủ lớn . Đặc biệt nếu bạn đang nói chuyện với các nhà toán học.
lim supg(n)n2k
g ( n ) k n 2 lim inf g ( n )kg(n)kn2g(n)kn2n
lim infg(n)n2k
g(n)kn2n
 
Peter Shor

12
@Wei: Đối với hầu hết các nhà lý thuyết phức tạp (xem Lance bên dưới), chức năng của bạn là θ (n ^ 2); đối với hầu hết các nhà thuật toán (xem Knuth hoặc CLRS), hàm của bạn là Ο (n ^ 2) và (n). Cả hai ký hiệu gần như, nhưng không hoàn toàn, tiêu chuẩn trong các giao tiếp của chúng; để làm cho mọi thứ tồi tệ hơn, hai giao tiếp này chồng chéo lên nhau! Vì vậy, nếu vấn đề bạn sử dụng ký hiệu nào, bạn phải nói rõ ràng ký hiệu nào bạn đang sử dụng. (May mắn thay, điều này hiếm khi quan trọng.)
Jeffε

2
@Jeffe. Tôi tin rằng bạn nên gửi bình luận của bạn như là một câu trả lời.
chazisop

Câu trả lời:


13

Định nghĩa đúng của là tồn tại một số sao cho vô số , . Định nghĩa vô hạn thường xuyên cho giới hạn dưới xử lý các vấn đề của bạn và là cách chúng tôi sử dụng nó trong thực tế.k > 0 n f ( n ) k n 2f(n)=Ω(n2)k>0nf(n)kn2

Tôi đã làm một bài về điều này trở lại vào năm 2005.

Một số sách giáo khoa có định nghĩa này đúng, một số thì không.


14
Knuth không đồng ý với bạn: Portal.acm.org/citation.cfm?id=1008329
Jeffε

4
CLRS và Wikipedia cũng không đồng ý với bạn. Định nghĩa vô hạn thường là một thay thế đáng chú ý, nhưng dường như ít được sử dụng rộng rãi.
Ẩn danh

Tôi nghĩ tất cả các định nghĩa này đều đồng ý khi tập hợp các ngoại lệ là biện pháp 0.
Carter Tazio Schonwald

2
Vấn đề với định nghĩa "vô cùng thường xuyên" là chúng thường không loại trừ "vô cùng thường xuyên không". Vì vậy, chúng ta có một hậu quả khủng khiếp là với định nghĩa này nhưng cũng , trong đó và có nghĩa là những mệnh lệnh nghiêm ngặt trong một số giác quan. Tôi thực sự không thích điều này. Ít nhất đề xuất ngoại lệ của biện pháp 0 Carter là ít kinh khủng hơn một chút, trong khi vẫn cho phép một trật tự tốt hơn so với thông thường. f ( n ) = o ( n + 1 ) Ω of(n)=Ω(n2) f(n)=o(n+1)Ωo
András Salamon

2
@Jukka: Không, tôi đang lạm dụng ở đây. Như bạn gợi ý tôi phải sửa đối số của mình để sử dụng thay vì . Vậy, tôi trình bày lại sự phản đối thực tế mà không sử dụng hoặc . Với "vô cùng thường xuyên", người ta có sự bất thường là , , nhưng . Vì vậy, thậm chí không tạo thành một đơn đặt hàng trước. oOooOn=Ω(f(n))f(n)=Ω(n2)nΩ(n2)Ω
András Salamon

4

Với định nghĩa của Knuth , bạn chỉ có thể khẳng định . Khi bạn quan sát, điều này không trực quan và xảy ra đối với các chức năng mà Vitányi và Meertens gọi là "hoang dã". Họ đề nghị xác địnhf(n)Ω(n)

Ω(f(n))={gδ>0:n0>0:n>n0:g(n)δf(n)}.

(Điều này giống với định nghĩa của Lance.) Với định nghĩa này .f(n)Ω(n2)


2

Tôi không biết về cách sử dụng rộng rãi nhất, nhưng tôi tin rằng tôi biết về cách sử dụng lâu đời nhất (đối với khoa học máy tính).

Trong bài viết năm 1969 của Hartmanis & Stearns "Về độ phức tạp tính toán của các thuật toán", Hệ quả 2.1 là:

Nếu và là các hàm thời gian sao cho thìUTinfnT(n)U(n)0SUST

Trong đó là lớp phức tạp của tất cả các vấn đề được tính toán trong . T (n) phải tuân theo đối với một số nguyên và tất cả và , nhưng nó không phải là có thể xây dựng được theo thời gian.SKO(K(n))T(n)n/kknT(n)T(n+1)

Hàm của bạn tuân theo quy tắc thứ nhất cho nhưng không tuân theo quy tắc thứ hai.k=1

Hệ quả 2.2 là sự đáp ứng của những điều trên và sử dụng tối cao giới hạn, nhưng vẫn có những yêu cầu này. Tôi đoán khi các thuật toán trở nên phức tạp hơn theo năm tháng, có thể các yêu cầu đã được nới lỏng.


2

Tôi nghĩ chúng ta nên phân biệt giữa hai điều:

  • một hạ cấp cho một chức năng
  • một vấn đề thấp hơn cho một vấn đề (thuật toán)

Đối với các hàm, khi chúng ta sửa một thứ tự, định nghĩa của hạ / hạ sẽ theo sau nó. Nếu mối quan hệ thứ tự là tiệm cận majorization (bỏ qua các yếu tố không đổi)

fg:c,nm>n. f(x)cg(x)

thì định nghĩa là định nghĩa thông thường của và . Cả hai đều được sử dụng rộng rãi trong các lĩnh vực khác như tổ hợp.ΩOΩ

Nhưng khi chúng ta nói về một vấn đề thấp hơn (một thuật toán), điều chúng ta thực sự muốn nói là vấn đề đó đòi hỏi một lượng tài nguyên nhất định (để chạy thuật toán giải quyết vấn đề). Thông thường các lớp phức tạp được tham số hóa bởi các hàm như và chúng tôi đơn giản nói rằng vấn đề được giới hạn bởi một hàm, nhưng điều này chỉ hoạt động đối với các hàm đẹp (ví dụ: thời gian chạy của thuật toán là đơn điệu, v.v.). Điều chúng tôi muốn nói trong những trường hợp này là chúng tôi cần thời gian chạy để giải quyết vấn đề, tức là ít hơn thời gian chạy là không đủ, điều này chính thức trở thành định nghĩa của Lance rằng thời gian chạy của thuật toán không phải là .n 2 n 2 o ( t ( n ) )Time(t(n))n2n2o(t(n))

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.