Big O (logn) log base e หรือไม่?


102

สำหรับโครงสร้างข้อมูลประเภทต้นไม้ค้นหาแบบไบนารีฉันเห็นสัญกรณ์ Big O โดยทั่วไปจะระบุเป็น O (logn) ด้วยตัวพิมพ์เล็ก 'l' ในบันทึกนี่หมายความว่าล็อกฐาน e (n) ตามที่อธิบายโดยลอการิทึมธรรมชาติหรือไม่ ขออภัยสำหรับคำถามง่ายๆ แต่ฉันมักจะมีปัญหาในการแยกแยะระหว่างลอการิทึมโดยนัยที่แตกต่างกัน


59
ดังที่คนอื่น ๆ ได้ชี้ให้เห็นอย่างชัดเจนมันไม่สำคัญ ลอการิทึมทั้งหมดแตกต่างกันโดยค่าคงที่ขึ้นอยู่กับฐานที่เกี่ยวข้องเท่านั้น เนื่องจากปัจจัยเหล่านี้เป็นค่าคงที่จึงไม่เกี่ยวข้องกับวัตถุประสงค์ของการวิเคราะห์แบบไม่แสดงอาการ ประการที่สองการพิจารณาฐานโดยนัยนั้นขึ้นอยู่กับบริบท ตามกฎง่ายๆให้ใช้สิ่งต่อไปนี้: 1. เมื่อนักคณิตศาสตร์เขียนlog nเขาหมายถึงลอการิทึมธรรมชาติ 2. เมื่อนักวิทยาศาสตร์คอมพิวเตอร์เขียนlog nเขาหมายถึงฐานสอง 3. เมื่อวิศวกรเขียนlog nเขาหมายถึงฐานสิบ สิ่งเหล่านี้มักจะเป็นจริง
สัน

4
@ Jason อนุสัญญาอื่น (ในคณิตศาสตร์) คือ ln n หมายถึงลอการิทึมธรรมชาติและ log n เป็นฐานสิบ คิดว่า ln ย่อมาจาก 'ลอการิทึมธรรมชาติ' ของฝรั่งเศส
Internet man

2
ฐานของลอการิทึมคือจำนวนชายด์ที่แต่ละโหนดมี ถ้าเป็นต้นไม้ไบนารีก็จะเป็นบันทึกฐาน 2
พอล

3
ขอขอบคุณสำหรับคำตอบของคุณ Jason และนี่คือสิ่งที่ต้องคิด จากที่ฉันได้ศึกษาว่าฐานข้อมูลล็อกอยู่ในฐานใด (ฉันคิดว่า 2) ฉันได้เห็นคำตอบเดียวกันนั่นคือมันไม่สำคัญเพราะคุณสามารถกำจัดค่าคงที่ log_10 (2) ปัญหาของฉันเกี่ยวกับสิ่งนี้คือตัวอย่าง: 5 log_10 (5) <5 ในขณะที่ 5 log_2 (5)> 5. ฉันป้อนสิ่งเหล่านี้อย่างรวดเร็วในการคำนวณของฉันเพื่อช่วยกำหนดแนวความคิดโดยที่ O (n logn) มีเวลาทำงานที่ดีกว่าหรือแย่กว่า O (n) ขึ้นอยู่กับฐานมันไม่สำคัญ ดังนั้นฉันคิดว่าคำตอบที่ถูกต้องสำหรับสิ่งนี้ควรเป็นที่บันทึกตามบริบทหมายถึงฐาน 2 ในแอปพลิเคชันวิทยาศาสตร์คอมพิวเตอร์ส่วนใหญ่
Doug Mead

@jason ฉันจะบอกว่ามันง่ายกว่าที่จะใช้ ln (การตีความของนักคณิตศาสตร์);) อีกสองตัวอย่างมีเหตุผล
belford

คำตอบ:


79

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

นอกจากนี้ตามความเห็นของฉันการเขียน O (log 2 N) นั้นดีกว่าสำหรับตัวอย่างของคุณเพราะมันสื่อสารถึงที่มาของเวลาทำงานของอัลกอริทึมได้ดีกว่า

ในสัญกรณ์ big-O () ปัจจัยคงที่จะถูกลบออก การแปลงจากฐานลอการิทึมหนึ่งไปยังอีกฐานหนึ่งเกี่ยวข้องกับการคูณด้วยค่าคงที่

ดังนั้น O (log N) จึงเทียบเท่ากับ O (log 2 N) เนื่องจากปัจจัยคงที่

อย่างไรก็ตามหากคุณสามารถเรียงพิมพ์บันทึก2 N ในคำตอบของคุณได้อย่างง่ายดายการทำเช่นนั้นจะเป็นการสอนมากกว่า ในกรณีของการค้นหาต้นไม้ไบนารีคุณถูกต้องที่บันทึก2 N ถูกนำมาใช้ในระหว่างการสร้างรันไทม์ big-O ()

ก่อนที่จะแสดงผลลัพธ์เป็นสัญกรณ์ big-O () ความแตกต่างมีความสำคัญมาก เมื่อหาค่าพหุนามที่จะสื่อสารผ่านสัญกรณ์ big-O ตัวอย่างนี้จะไม่ถูกต้องสำหรับการใช้ลอการิทึมอื่นที่ไม่ใช่บันทึก2 N ก่อนที่จะใช้สัญลักษณ์ O () ทันทีที่ใช้พหุนามเพื่อสื่อสารรันไทม์กรณีเลวร้ายที่สุดผ่านสัญกรณ์ big-O () ไม่สำคัญว่าจะใช้ลอการิทึมอะไร


4
แต่มันง่ายมากที่จะแสดงว่าlog_2 nอยู่ในΘ(log_a n)ฐานใด ๆaดังนั้นฉันไม่แน่ใจว่าฉันเห็นว่าการใช้ฐาน 2 "ถูกต้องมากกว่า" อย่างไร
bcat

1
Kinopkio และ bcat ขอบคุณที่ช่วยให้มันมีประโยชน์ ตอนแรกเขียนไม่ค่อยดี :)
Heath Hunnicutt

2
ฉันเพิ่มความชัดเจน แต่ฉันรู้สึกเจ็บปวดที่คุณคิดว่าคำตอบของฉันอาจทำให้คนสับสน จริงๆแล้วคำตอบส่วนใหญ่ที่นี่ไม่ได้คำนึงถึงสัญชาตญาณของ OP และพยายามสอนเขามากนัก ฉันไม่ค่อยประทับใจกับการแข่งขันมากนักฉันเศร้าที่บาร์ต่ำสำหรับการเรียนการสอน
Heath Hunnicutt

11
"ในระหว่างการหาค่าของพหุนาม O () ในกรณีของการค้นหาแบบไบนารีเฉพาะ log2 เท่านั้นที่ถูกต้อง" -1 สำหรับคณิตศาสตร์ที่ไม่ดี นิยามของ x (n) ~ O (f (n)) บอกว่ามีค่าคงที่ c เช่นนั้น c * (f (n)) <x (n) สำหรับ n ทั้งหมด> n_0 ดังนั้นค่าสัมประสิทธิ์คงที่จึงไม่เกี่ยวข้องอย่างสมบูรณ์ในระหว่างการวิเคราะห์
rlbond

3
เนื่องจาก log2 (x) มีค่าเท่ากับ log10 (x) / log10 (2) คุณจึงสามารถหาค่าได้ไม่ว่าจะด้วยวิธีใดก็ตาม บันทึกไม่ใช่ฐาน 2 อย่างเคร่งครัด ณ จุดใดจุดหนึ่ง
rlbond

81

Big O สัญกรณ์ไม่ได้รับผลกระทบจากฐานลอการิทึมเพราะลอการิทึมทั้งหมดในฐานที่แตกต่างกันจะเกี่ยวข้องกับปัจจัยคงที่ , เทียบเท่ากับO(ln n)O(log n)

ป้อนคำอธิบายภาพที่นี่


2
กราฟิกมีความเรียบร้อย แต่ให้คิดถึงการหาที่มาของ O () - พหุนาม ... ก่อนที่จะใช้ O () เฉพาะ log-base-2 เท่านั้นที่ถูกต้องสำหรับการค้นหาแบบไบนารี
Heath Hunnicutt

1
@Heath Hunnicutt: เลขที่log_2 xแตกต่างจากlog_b xปัจจัยคงที่c(b)สำหรับฐานใด ๆที่เป็นอิสระจากb x
สัน

4
แต่ทำไมคุณถึงพูดถึงเรื่องนี้ในเมื่อมันไม่เกี่ยวข้องกับคำถามและทำหน้าที่สร้างความสับสนเท่านั้น?
hobbs

4
hobbs: เพราะข้อเท็จจริงนั้นคือเหตุผลที่ OP ได้รับแรงบันดาลใจในการสอบถาม ฉันพยายามเชื่อมโยงแนวคิดของเขากับคำตอบดังนั้นเขาจึงเข้าใจว่าเหตุใดเขาจึงมีสัญชาตญาณของเขาเหตุใดจึงใช้ไม่ได้กับ O () แต่อย่านำสิ่งที่เขาเรียนรู้ที่นี่ไปใช้กับส่วนที่มาของการวิเคราะห์มากเกินไป คำตอบสั้น ๆ ที่ไม่ได้กล่าวถึงสาเหตุที่แท้จริงของความเข้าใจผิดอาจนำไปสู่ความเข้าใจผิดเพิ่มเติม มันเป็นการสอนที่ไม่ดี
Heath Hunnicutt

4
@Heath Hunnicutt: หากคุณกำลังทำการวิเคราะห์แบบไม่แสดงอาการก็ไม่สำคัญ การที่คุณรอจนถึงนาทีสุดท้ายเพื่อโยน big-O เข้าไปไม่ได้เปลี่ยนความจริงที่ว่าฉันสามารถคูณและหารลอการิทึมทั้งหมดของฉันด้วยค่าคงที่โง่ ๆ และเปลี่ยนฐานในทุกขั้นตอน นั่นคือถ้าฉันมีการวิเคราะห์ที่เกี่ยวข้องlog_2 nฉันก็สามารถเข้าไปแทนที่log_2 nทุกที่โดยlog_pi 2 * log_2 n / log_pi 2การวิเคราะห์ที่มีlog_pi 2 * log_pi nอยู่ทุกหนทุกแห่ง log_pi nตอนนี้การวิเคราะห์ของฉันคือในแง่ของ
สัน

9

ไม่สำคัญว่ามันคือฐานอะไรเนื่องจากสัญกรณ์ big-O มักจะเขียนแสดงเฉพาะลำดับสูงสุดที่ไม่มีอาการnดังนั้นค่าสัมประสิทธิ์คงที่จะลดลง เนื่องจากฐานลอการิทึมที่แตกต่างกันจะเทียบเท่ากับค่าสัมประสิทธิ์คงที่จึงไม่จำเป็น

ที่กล่าวว่าฉันอาจจะถือว่าล็อกเบส 2


@Kinopiko: มันผิดอะไรกันแน่? ยิ่งไปกว่านั้นคำตอบของฉันแตกต่างจากของคุณและคนอื่น ๆ อย่างไร
Daniel Pryden

อ่าบางทีฉันอาจผิดพลาดในการใช้ "สัมประสิทธิ์" ฉันจะแก้ไขเพื่อชี้แจง
Daniel Pryden

นั่นเป็นปัญหาหลักของฉันกับคำตอบของคุณ นอกจากนี้ยังไม่ชัดเจนเล็กน้อยว่าคุณหมายถึงอะไร "มันจะยังคงมีผลอยู่บ้าง" มีผลต่ออะไรบ้าง?
bcat

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

1
@Kinopiko: ตกลง ฉันคิดว่าเรากำลังพูดในสิ่งเดียวกัน ฉันจะบอกว่า O (100) = O (1) เพราะ O (100) = O (100 * 1) = O (C * 1) = O (1) ซึ่งเป็นสิ่งที่ฉันหมายถึงโดยการแสดงออกคงที่ไม่จำเป็น นั่นคือคำสั่งของใด ๆคงที่คือ 1
แดเนียล Pryden

8

ถูกต้องทั้งคู่ คิดเกี่ยวกับสิ่งนี้

log2(n)=log(n)/log(2)=O(log(n))
log10(n)=log(n)/log(10)=O(log(n))
logE(n)=log(n)/log(E)=O(log(n))

3

ใช่เมื่อพูดถึงสัญกรณ์ big-O ฐานไม่สำคัญ อย่างไรก็ตามเมื่อต้องเผชิญกับปัญหาการค้นหาจริงในเชิงคำนวณก็มีความสำคัญ

เมื่อพัฒนาสัญชาตญาณเกี่ยวกับโครงสร้างต้นไม้การเข้าใจว่าต้นไม้ค้นหาแบบไบนารีสามารถค้นหาได้ในเวลา O (n log n) เพราะนั่นคือความสูงของต้นไม้นั่นคือในต้นไม้ไบนารีที่มีโหนดโหนดต้นไม้ ความลึกคือ O (n log n) (ฐาน 2) หากแต่ละโหนดมีลูกสามลูกต้นไม้จะยังคงสามารถค้นหาได้ในเวลา O (n log n) แต่ใช้ลอการิทึมฐาน 3 ในการคำนวณจำนวนชายด์แต่ละโหนดมีผลกระทบอย่างมากต่อประสิทธิภาพ (ดูตัวอย่าง: ข้อความลิงก์ )

สนุก!

พอล


คุณหมายถึงว่าความสูงของต้นไม้ไบนารีคือ log n ไม่ใช่ n log n ใช่ไหม?
เซลล์


1

ก่อนอื่นคุณต้องเข้าใจความหมายของฟังก์ชัน f (n) เป็น O (g (n))

นิยามอย่างเป็นทางการคือ: * ฟังก์ชัน f (n) ถูกกล่าวว่าเป็น O (g (n)) iff | f (n) | <= C * | g (n) | เมื่อใดก็ตามที่ n> k โดยที่ C และ k เป็นค่าคงที่ *

ดังนั้นให้ f (n) = log ฐาน a ของ n โดยที่ a> 1 และ g (n) = log ฐาน b ของ n โดยที่ b> 1

หมายเหตุ:หมายความว่าค่า a และ b อาจเป็นค่าใดก็ได้ที่มากกว่า 1 ตัวอย่างเช่น a = 100 และ b = 3

ตอนนี้เราได้รับสิ่งต่อไปนี้: log base a of n ถูกกล่าวว่าเป็น O (log ฐาน b ของ n) iff | log base a ของ n | <= C * | บันทึกฐาน b ของ n | เมื่อใดก็ตามที่ n> k

เลือก k = 0 และ C = log ฐาน a ของ b

ตอนนี้สมการของเรามีลักษณะดังนี้: | log base a ของ n | <= log base a ของ b * | log ฐาน b ของ n | เมื่อใดก็ตามที่ n> 0

สังเกตทางขวามือเราสามารถจัดการกับสมการได้: = log base a of b * | log base b of n | = | บันทึกฐาน b ของ n | * ฐานบันทึก a ของ b = | ฐานบันทึก a ของ b ^ (ฐานบันทึก b ของ n) | = | ฐานล็อก a ของ n |

ตอนนี้สมการของเรามีลักษณะดังนี้: | log base a ของ n | <= | ฐานล็อก a ของ n | เมื่อใดก็ตามที่ n> 0

สมการจะเป็นจริงเสมอไม่ว่าค่า n, b หรือ a จะเป็นอย่างไรนอกเหนือจากข้อ จำกัด a, b> 1 และ n> 0 ดังนั้น log base a ของ n คือ O (log ฐาน b ของ n) และเนื่องจาก a, b ไม่สำคัญว่าเราสามารถเว้นมันได้

คุณสามารถดูวิดีโอ YouTube ได้ที่นี่: https://www.youtube.com/watch?v=MY-VCrQCaVw

คุณสามารถอ่านบทความได้ที่นี่: https://medium.com/@randerson112358/omitting-bases-in-logs-in-big-o-a619a46740ca

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