เหตุใดบันทึกใน big-O ของการค้นหาแบบไบนารีจึงไม่ได้เป็นฐาน 2


35

ฉันยังใหม่กับการเข้าใจอัลกอริทึมวิทยาศาสตร์คอมพิวเตอร์ ฉันเข้าใจกระบวนการค้นหาแบบไบนารี แต่ฉันมีความเข้าใจผิดเล็กน้อยเกี่ยวกับประสิทธิภาพ

ในขนาดขององค์ประกอบมันจะใช้เวลาโดยเฉลี่ยnขั้นตอนในการค้นหาองค์ประกอบเฉพาะ การฐาน 2 ลอการิทึมของอัตราผลตอบแทนที่ทั้งสองฝ่ายเข้าสู่ระบบ2 ( s ) = n ดังนั้นจะไม่ค่าเฉลี่ยของจำนวนขั้นตอนสำหรับการค้นหาแบบทวิภาคจะเข้าสู่ระบบ2 ( s ) ?s=2nnlog2⁡(s)=nlog2⁡(s)

บทความนี้วิกิพีเดียในการค้นหาแบบทวิภาคกล่าวว่าผลการดำเนินงานเฉลี่ย ) ทำไมเป็นเช่นนี้ ทำไมไม่ได้หมายเลขนี้เข้าสู่ระบบ2 ( n ) ?O(log⁡n)log2⁡(n)


คำตอบ:


86

เมื่อคุณเปลี่ยนฐานของลอการิทึมนิพจน์ที่ได้จะแตกต่างกันโดยปัจจัยคงที่ซึ่งตามนิยามของ Big-O สัญกรณ์หมายความว่าทั้งสองฟังก์ชันนั้นอยู่ในคลาสเดียวกันโดยคำนึงถึงพฤติกรรมของซีมโทติค

ตัวอย่างเช่น โดยที่ C=1

log10⁡n=log2⁡nlog2⁡10=Clog2⁡n
10C=1log2⁡10

log10⁡nlog2⁡nC

log10⁡n is O(log2⁡n)
log2⁡n is O(log10⁡n)
loga⁡nO(logb⁡n)ab

k>1nkO(n)log⁡nkO(log⁡n)log⁡nk=klog⁡nlog⁡nk


a,b>1e

2
O(log⁡n)

9

log⁡(n)elog

แต่อย่างที่ได้รับการแสดงในกรณีนี้มันไม่ได้จบลงด้วยความสำคัญ


7
อาจเป็นไปได้ที่จะสังเกตเห็นได้ว่าในขณะที่ "log (n)" อาจไม่ชัดเจนว่า "O (log (n))" ไม่ใช่เพราะสิ่งหลังมีความหมายเพียงอย่างเดียวไม่ว่าคุณจะนึกถึงอะไรก็ตาม
— Chris
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.