ความหมายของคืออะไร?


44

นี่เป็นคำถามพื้นฐาน แต่ฉันคิดว่าเหมือนกับเนื่องจากคำที่ใหญ่กว่าควรมีอิทธิพลเหนือเราไปไม่สิ้นสุด? นอกจากนี้ที่จะแตกต่างจากO (\ นาที (m, n)) นั่นถูกต้องใช่ไหม? ฉันเห็นสัญกรณ์นี้โดยเฉพาะเมื่อพูดถึงอัลกอริธึมกราฟ ตัวอย่างเช่นคุณจะเห็นเป็นประจำ: O (| V | + | E |) (เช่นดูที่นี่ )O(m+n)O(max(m,n))O(min(m,n))O(|V|+|E|)


อาจmขึ้นอยู่กับn
แอนดรู

คำตอบ:


33

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

พูดง่าย ๆ เนื่องจาก

12(m+n)max{m,n}m+n2max{m,n},
คุณสามารถอนุมานได้ว่าO(n+m)และO(max{m,n})มีขอบเขตเทียบเท่ากับซีมโทติค

ในทางกลับกัน O(n+m)จะแตกต่างจากO(min{n,m})เนื่องจากถ้าคุณตั้งค่าn=2mคุณจะได้

O(2m+m)=O(2m)O(m)=O(min{2m,m}).

3
ฉันคิดว่ามันเป็นสิ่งสำคัญที่พวกเขาเขียนในนามธรรม "เราแสดงให้เห็นว่ามันเป็นไปไม่ได้ที่จะกำหนดสัญกรณ์ O-ใหญ่สำหรับฟังก์ชั่นมากกว่าหนึ่งตัวแปรในวิธีที่แสดงถึงคุณสมบัติที่ใช้กันทั่วไปในการวิเคราะห์อัลกอริทึม ไม่ได้หมายความถึงคุณสมบัติเหล่านี้แม้ว่าฟังก์ชั่นภายในสัญกรณ์ใหญ่จะถูก จำกัด โดยเฉพาะอย่างยิ่งไม่ลด "
Raphael

4
ในฐานะที่เป็นติดตามเพื่อแสดงความคิดเห็นดังกล่าวข้างต้นของผมล่าสุดบทความความหมายทั่วไปของ O-สัญกรณ์สำหรับการวิเคราะห์อัลกอริทึมโดยพ Rutanen (2015) จะแสดงวิธีการกำหนดความหมาย O-สัญกรณ์ชุดทั่วไปรวมทั้ง 2 N2
Raphael

25

เชื่อหรือไม่ดูเหมือนว่า (จากประสบการณ์ของฉัน) ว่าอัลกอริธึมหลายคนไม่ได้คิดเกี่ยวกับสัญกรณ์ O ที่มีความหมายอย่างเป็นทางการและเมื่อถูกถามเกี่ยวกับมันคุณจะได้รับคำตอบที่แตกต่างกันหลายประการ ปัญหาบางอย่างถูกกล่าวถึงในเอกสารOn Asymptotic Notation ที่มีหลายตัวแปรโดย Rodney R. Howell

ดูเหมือนว่าหลักสูตรอัลกอริธึมเบื้องต้นส่วนใหญ่ใช้เวลาเป็นจำนวนมากเกี่ยวกับสัญกรณ์ O ขนาดใหญ่ที่มีตัวแปรเดียวจากนั้นสัปดาห์ถัดไปก็ใช้สัญกรณ์กราฟอัลกอริธึมที่มีตัวแปรหลายตัวในแบบสบาย ๆ สัญกรณ์หมายถึงจริง


ลิงค์ในคำตอบของฉันอ้างถึงบทความของธรรมด๊าธรรมดาซึ่งเป็นการรักษาที่ดีสำหรับคำถามนี้
A.Schulz

1
@ A.Schulz: แน่นอนฉันพิมพ์คำตอบของฉันพร้อมกับคุณ
Kristoffer Arnsfelt Hansen

1
ฉันเป็นผู้สนับสนุนที่จะระมัดระวังข้อตกลงของ Landau ดังนั้นฉันจึงเห็นด้วย แต่สิ่งนี้มีการพูดจาโผงผางมากเกินไปสำหรับคำตอบที่ดี
Raphael

4
@ ราฟาเอล: คำตอบนั้นไม่ได้หมายถึงการพูดจาโผงผาง แต่บางทีมันอาจจะเป็นคำพูดที่แม่นยำกว่า คำถามคือโดยพื้นฐานแล้วอะไรคือความหมายของบิ๊กโอที่มีพารามิเตอร์มากกว่าหนึ่งตัว คำตอบก็คือว่ามันควรจะหมายความว่าอะไรก็ตามที่มีฉันทามติเกี่ยวกับในชุมชนอัลกอริทึมสิ่งที่ถูกสอนในหลักสูตรอัลกอริทึม ฯลฯ จุดของฉันคือว่าดูเหมือนจะไม่มีฉันทามติเช่นนั้นเกี่ยวกับสัญลักษณ์ที่แม่นยำ
Kristoffer Arnsfelt Hansen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.