Tại sao nhật ký trong big-O của tìm kiếm nhị phân không phải là cơ sở 2?


35

Tôi mới hiểu được thuật toán khoa học máy tính. Tôi hiểu quá trình tìm kiếm nhị phân, nhưng tôi có một sự hiểu lầm nhỏ với hiệu quả của nó.

Trong một kích thước của phần tử , trung bình, sẽ cần bước để tìm một phần tử cụ thể. Lấy logarit cơ sở 2 của cả hai bên đều mang lại . Vì vậy, số bước trung bình của thuật toán tìm kiếm nhị phân có phải là không? n log 2 ( s ) = n log 2 ( s )s=2nnlog2(s)=nlog2(s)

Bài viết Wikipedia này về thuật toán tìm kiếm nhị phân nói rằng hiệu suất trung bình là . Tại sao cái này rất? Tại sao số này không phải là log 2 ( n ) ?O(logn)log2(n)


Câu trả lời:


86

Khi bạn thay đổi cơ sở của logarit, biểu thức kết quả chỉ khác nhau bởi một yếu tố không đổi, theo định nghĩa của ký hiệu Big-O , ngụ ý rằng cả hai hàm thuộc cùng một lớp đối với hành vi tiệm cận của chúng.

Ví dụ: trong đó C=1

log10n=log2nlog210=Clog2n
.C=1log210

Vì vậy, log 2 n khác nhau bởi một hằng số C và do đó cả hai đều đúng: log 10 n  là  O ( log 2 n ) log 2 n  là  O ( log 10 n ) Nói chung log a nO ( log b n ) cho số nguyên dương ab lớn hơn 1.log10nlog2nC

log10n is O(log2n)
log2n is O(log10n)
loganO(logbn)ab

Một thực tế thú vị khác với các hàm logarit là trong khi với hằng số , n k không phải là O ( n ) , nhưng log n kO ( log n )log n k = k log n khác với log n chỉ là hằng số yếu tố k .k>1nkO(n)lognkO(logn)lognk=klognlognk


Không chỉ cho số nguyên dương: Đối với tất cả thực , b > 1 , ví dụ e . a,b>1e
nbubis

2
Tôi sẽ nói thêm rằng đây là lý do tại sao với ký hiệu big-O, cơ sở của logarit thường không được chỉ định. Điều đó cũng có nghĩa là không có sự nhầm lẫn về cơ sở sử dụng: nó có thể là bất kỳ cơ sở nào thường được sử dụng, vì nó không tạo ra sự khác biệt. O(logn)
Svick

9

log(n)elog

Nhưng, như đã được chỉ ra, trong trường hợp này nó không kết thúc.


7
Có lẽ đáng chú ý hơn nữa là trong khi "log (n)" có thể mơ hồ rằng "O (log (n))" không phải vì cái sau chỉ có một nghĩa, bất kể bạn có thể nghĩ đến cơ sở nào.
Chris
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.