ความซับซ้อนของเวลาของอัลกอริทึม: มันเป็นสิ่งสำคัญที่จะระบุฐานของลอการิทึมหรือไม่?


19

เนื่องจากมีเพียงค่าคงที่ระหว่างฐานของลอการิทึมมันไม่ใช่แค่การเขียนเมื่อเทียบกับหรืออะไรก็ตาม ฐานอาจจะเป็นอย่างไรฉ(n)=Ω(เข้าสู่ระบบ⁡n)Ω(เข้าสู่ระบบ2⁡n)


คำตอบ:


63

มันขึ้นอยู่กับลอการิทึม ถ้ามันเป็นเพียงแค่ปัจจัยก็ไม่ได้สร้างความแตกต่างเพราะ big-O หรืออนุญาตให้คุณคูณด้วยค่าคงที่ใด ๆθ

หากคุณใช้ฐานนั้นสำคัญ ในฐานที่ 2 คุณจะมีเพียงในฐาน 10 มันเกี่ยวกับ0.3010)O(2เข้าสู่ระบบ⁡n)O(n)O(n0.3010)


5
ฉันเดาว่านี่จะเกิดขึ้นกับบางอย่างเช่น n ฉันไม่เห็นเหตุผลใด ๆ ในการแสดงตัวเลขเป็น2คล็อกbnแทนที่จะเป็นn-to-the-it-is (ยกเว้นอาจเป็นขั้นตอนกลางของการคำนวณ) 2เข้าสู่ระบบ⁡n2คเข้าสู่ระบบข⁡nn
— David Richerby

7
+1 สำหรับ "ปัจจัยคงที่มีความสำคัญในเลขชี้กำลัง"
— โทรจัน

50

เพราะสัญกรณ์ asymptotic เป็นลบเลือนของปัจจัยคงที่และสองลอการิทึมแตกต่างกันโดยปัจจัยคงที่ฐานทำให้ไม่แตกต่าง: เข้าสู่ระบบa⁡n=Θ(เข้าสู่ระบบข⁡n)สำหรับทุก, B > 1 ดังนั้นไม่จำเป็นต้องระบุฐานของลอการิทึมเมื่อใช้สัญกรณ์ asymptotica,ข>1


13
ฉันชอบดูแทน=∈=
— Nayuki

16
ฉันเกรงว่าสัญกรณ์มาตรฐานจะใช้ . =
— Yuval Filmus

4
@YuvalFilmus สัญกรณ์มาตรฐานนั้นทำให้เข้าใจผิดแตกต่างจากมาตรฐานอย่างสิ้นเชิงในทุก ๆ ที่และทำให้ความซับซ้อนของอัลกอริทึมนั้นดูต่างไปจากสิ่งที่ค่อนข้างคล้ายกับมัน "นี่เป็นสัญกรณ์มาตรฐาน" ไม่ควรเป็นเหตุผลในการสนับสนุนทางออกที่ไม่ดีไปกว่าสิ่งที่ดีกว่าและชัดเจนกว่าในทำนองเดียวกัน (ความหมายของสัญลักษณ์มักจะชัดเจนจากบริบทแล้ว)
— wizzwizz4

7
@ wizzwizz4 การปฏิบัติทั่วไปเป็นเหตุผลที่ยอดเยี่ยม มันส่งเสริมการสื่อสารที่มีประสิทธิภาพ นั่นคือเหตุผลที่พวกเราทุกคนอดทนกับการสะกดคำในภาษาอังกฤษ
— Yuval Filmus

3
บางครั้งก็มีสิ่งที่มากเกินไปจะมีชัดเจนกว่าเข้าสู่ระบบ n = Θ ( บันทึกข n ) n↦เข้าสู่ระบบa⁡n∈Θ(n↦เข้าสู่ระบบข⁡n)เข้าสู่ระบบa⁡n=Θ(เข้าสู่ระบบข⁡n)
— JiK

15

ในฐานะที่เป็นเข้าสู่ระบบx⁡Y=1เข้าสู่ระบบY⁡xและเข้าสู่ระบบx⁡Y=เข้าสู่ระบบZ⁡Yเข้าสู่ระบบZ⁡xเพื่อ เข้าสู่ระบบa⁡nเข้าสู่ระบบข⁡n=เข้าสู่ระบบn⁡ขเข้าสู่ระบบn⁡a=เข้าสู่ระบบa⁡ขข ในฐานะที่เข้าสู่ระบบa⁡ขเป็นค่าคงที่บวก (สำหรับทุก,B>1) เพื่อเข้าสู่ระบบn=Θ(บันทึกขn)a,ข>1เข้าสู่ระบบa⁡n=Θ(เข้าสู่ระบบข⁡n)


8

ในกรณีส่วนใหญ่การวางฐานของลอการิทึมนั้นปลอดภัยเนื่องจากเป็นคำตอบอื่น ๆ ที่ชี้ให้เห็นสูตรการเปลี่ยนแปลงพื้นฐานสำหรับลอการิทึมหมายความว่าลอการิทึมทั้งหมดเป็นค่าคงที่ทวีคูณซึ่งกันและกัน

มีบางกรณีที่สิ่งนี้ไม่ปลอดภัย ตัวอย่างเช่น @ gnasher729 ได้ชี้ให้เห็นว่าหากคุณมีลอการิทึมในเลขชี้กำลังแล้วฐานลอการิทึมนั้นสำคัญมาก

ฉันต้องการชี้ให้เห็นอีกกรณีหนึ่งที่ฐานของลอการิทึมมีความสำคัญและเป็นกรณีที่ฐานของลอการิทึมขึ้นอยู่กับพารามิเตอร์ที่ระบุว่าเป็นอินพุตของปัญหาโดยตรง ยกตัวอย่างเช่นอัลกอริธึมการเรียงลำดับ radix ทำงานโดยการเขียนตัวเลขในฐานbบางส่วนการสลายการป้อนหมายเลขลงในหลักฐานbจากนั้นใช้การเรียงลำดับการนับเพื่อเรียงลำดับตัวเลขเหล่านั้นทีละหนึ่งหลัก งานที่ทำต่อรอบแล้วΘ(n+b)และมีประมาณlogb⁡Uรอบ (ที่Uเป็นจำนวนเต็มอินพุตสูงสุด) เพื่อให้รันไทม์รวมเป็นO((n+b)logb⁡U) ) สำหรับจำนวนเต็มคงที่ใด ๆbจะทำให้O(nlog⁡U)ง่ายขึ้น อย่างไรก็ตามจะเกิดอะไรขึ้นถ้าbไม่คงที่ เทคนิคฉลาดคือการเลือกb=nซึ่งในกรณีที่ช่วยลดความยุ่งยากในการรันไทม์O(n+logn⁡U) ) ตั้งแต่logn⁡U =log⁡Ulog⁡n , การแสดงออกโดยรวมลดความซับซ้อนของO(nlog⁡Ulog⁡n) ) ขอให้สังเกตว่าในกรณีนี้ฐานของลอการิทึมนั้นสำคัญมากเพราะมันไม่คงที่เมื่อเทียบกับขนาดอินพุต มีอัลกอริธึมอื่น ๆ ที่มี runtimes ที่คล้ายคลึงกัน (การวิเคราะห์แบบเก่าของชุด disjoint-Forest ได้จบลงด้วยคำของlogm/2+2อื่นเช่น) ซึ่งในกรณีที่การทิ้งฐานบันทึกจะรบกวนการวิเคราะห์รันไทม์

อีกกรณีหนึ่งที่เรื่องฐานการบันทึกเป็นเรื่องหนึ่งซึ่งมีพารามิเตอร์ที่ปรับได้จากภายนอกบางส่วนสำหรับอัลกอริทึมที่ควบคุมฐานลอการิทึม ตัวอย่างที่ดีของที่นี่คือ B-ต้นไม้ซึ่งจะต้องมีบางภายนอกพารามิเตอร์ขขความสูงของต้นไม้ B ของลำดับขคือΘ(เข้าสู่ระบบข⁡n)โดยที่ฐานของลอการิทึมมีความสำคัญในขนั้นไม่คงที่

เพื่อสรุปในกรณีที่คุณมีลอการิทึมที่มีฐานคงที่คุณสามารถโดยปกติ (ขึ้นอยู่กับข้อยกเว้นเช่นสิ่งที่ @ gnasher729 ชี้ไปที่) วางฐานของลอการิทึม แต่เมื่อฐานของลอการิทึมขึ้นอยู่กับพารามิเตอร์บางตัวของอัลกอริทึมก็มักจะไม่ปลอดภัยที่จะทำเช่นนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.