Làm thế nào để thảo luận về các hệ số trong ký hiệu big-O


10

Ký hiệu nào được sử dụng để thảo luận về các hệ số của các hàm trong ký hiệu big-O?

Tôi có hai chức năng:

  • f(x)=7x2+4x+2
  • g(x)=3x2+5x+4

Rõ ràng, cả hai chức năng là , thực sự là , nhưng điều đó không cho phép so sánh hơn thế. Làm cách nào để tôi thảo luận về các hệ số 7 và 3. Việc giảm hệ số xuống 3 không làm thay đổi độ phức tạp tiệm cận nhưng nó vẫn tạo ra sự khác biệt đáng kể đối với việc sử dụng bộ nhớ / thời gian chạy.Θ ( x 2 )O(x2)Θ(x2)

sai không khi nói rằng là và là ? Có ký hiệu nào khác có xem xét các hệ số không? Hoặc điều gì sẽ là cách tốt nhất để thảo luận về điều này?O ( 7 x 2 ) g O ( 3 x 2 )fO(7x2)gO(3x2)


Điều đó không sai, nó chỉ là dư thừa, bởi vì . O(7x2)=O(x2)

Câu trả lời:


9

Các ký hiệu Big- và big- ẩn các hệ số của thuật ngữ hàng đầu, vì vậy nếu bạn có hai hàm là cả bạn không thể so sánh các giá trị tuyệt đối của chúng mà không cần nhìn vào các hàm. Sẽ không sai khi nói rằng , nhưng điều đó không mang tính thông tin vì cũng đúng (và, thực tế, đó là cho bất kỳ hằng số dương ).Θ Θ ( n 2 ) 7 x 2 + 4 x + 2 = Θ ( 7 x 2 ) 7 x 2 + 4 x + 2 = Θ ( 3 x 2 ) Θ ( k x 2 ) kOΘΘ(n2)7x2+4x+2=Θ(7x2)7x2+4x+2=Θ(3x2)Θ(kx2)k

Có những ký hiệu khác bạn có thể muốn sử dụng thay thế. Ví dụ: ký hiệu là một yêu cầu mạnh mẽ hơn nhiều so với big- :ΘΘ

f(x)g(x)limxf(x)g(x)=1

Ví dụ: , nhưng yêu cầu sẽ là sai. Bạn có thể nghĩ ký hiệu dấu ngã là ký hiệu duy trì các hệ số hàng đầu, dường như là thứ bạn đang tìm kiếm nếu bạn quan tâm đến hệ số dẫn đầu của thuật ngữ tăng trưởng vượt trội.7x2+4x+27x2 Θ7x2+4x+23x2Θ


Ký hiệu Tilde là những gì tôi đang tìm kiếm. Tôi chắc chắn có một cái gì đó tôi không thể nhớ lại nó được gọi là gì và các tìm kiếm không có kết quả. Cảm ơn!

6

Dấu ngã là một cách tiếp cận. Nếu bạn muốn gắn bó với , bạn có thể nóiO

f(x)=7x2+O(x)

g(x)=3x2+O(x) .


Thậm chí tốt hơn: giả sử f (x) = 7x ^ 2 + o (x ^ 2), sử dụng ký hiệu little-o để làm rõ rằng những gì còn lại nhỏ hơn so với x ^ 2.
templatetypedef

2
O (x) hoàn toàn nhỏ hơn o (x ^ 2), do đó, việc sử dụng đó sẽ không rõ ràng hơn so với sử dụng big-O. Mặt khác, sử dụng little-o chắc chắn phổ biến hơn khi bạn muốn nói rằng bạn đã có thuật ngữ đầu tiên đúng, bởi vì sau đó bạn không cần phải lo lắng về thuật ngữ tiếp theo. (Và nếu chúng ta muốn hoàn toàn rõ ràng, thì chúng ta sẽ cần giải thích lý do tại sao chúng ta không viết xuống 7x ^ 2 + 4x + 2 ngay từ đầu, vì nó hoàn toàn chính xác.

Bạn hoàn toàn đúng ... lời xin lỗi của tôi!
templatetypedef

Lưu ý rằng cách viết nghiêm ngặt này sẽ là " với ". Trong mọi trường hợp, điều này rất hữu ích nếu bạn muốn sửa nhiều hơn hằng số "đầu tiên"; bạn có thể nói " " mà bạn không thể làm với . g ( x ) O ( x ) f ( x ) = 7 x 2 + 4 x + O ( 1 ) ~f(x)=7x2+g(x)g(x)O(x)f(x)=7x2+4x+O(1)
Raphael
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.