ฟังก์ชั่นเปรียบเสมอ asymptotically?


15

เมื่อเราเปรียบเทียบความซับซ้อนของอัลกอริธึมสองตัวมันเป็นกรณีที่หรือ (อาจเป็นได้ทั้งคู่) โดยที่และคือเวลาทำงาน (ตัวอย่าง) ของอัลกอริธึมทั้งสองg ( n ) = O ( f ( n ) ) f g(n)=O(ก.(n))ก.(n)=O((n))ก.

เป็นเช่นนี้เสมอหรือไม่ นั่นคืออย่างน้อยหนึ่งในความสัมพันธ์และถืออยู่เสมอนั่นคือสำหรับฟังก์ชั่นทั่วไป , ? ถ้าไม่เราต้องตั้งสมมติฐานอะไรและ (ทำไม) มันก็โอเคเมื่อเราพูดถึงอัลกอริทึมที่ใช้เวลา?g ( n ) = O ( f ( n ) ) f g(n)=O(ก.(n))ก.(n)=O((n))ก.

คำตอบ:


21

ไม่ใช่ทุกฟังก์ชั่นที่เปรียบเทียบได้กับสัญกรณ์พิจารณาฟังก์ชั่นและ ยิ่งไปกว่านั้นฟังก์ชั่นเช่นจะเกิดขึ้นจริงตามเวลาทำงานของอัลกอริทึม พิจารณาอัลกอริธึมแรงเดรัจฉานที่เห็นได้ชัดเพื่อตรวจสอบว่าจำนวนเต็มที่กำหนดเป็นจำนวนเฉพาะหรือไม่:( n ) = n กรัม( n ) = { 1 ถ้า  n  เป็นเลขคี่ , n 2 ถ้า  nคือแม้ g ( n ) nO()(n)=n

ก.(n)={1ถ้า n แปลก, n2ถ้า n เป็นคู่.
ก.(n)n
IsPrime(n):
  for i ← 2 to (n-1)
     if i·⌊n/i⌋ = n
        return False
  return True

อัลกอริทึมนี้ต้องการการดำเนินการทางคณิตศาสตร์เมื่อคือเท่ากันการดำเนินงานเมื่อเป็นแบบประกอบ แต่การดำเนินการเมื่อเป็นจำนวนเฉพาะ ดังนั้นอย่างเป็นทางการขั้นตอนวิธีนี้คือหาที่เปรียบมิได้กับอัลกอริทึมที่ใช้ดำเนินการทางคณิตศาสตร์สำหรับทุก nn O ( √)Θ(1)nO(n)nΘ(n)nn n

ส่วนใหญ่เวลาที่เมื่อเราวิเคราะห์ขั้นตอนวิธีการเราเพียงต้องการ asymptotic ผูกพันบนของฟอร์มสำหรับบางฟังก์ชั่นที่ค่อนข้างง่ายฉตัวอย่างเช่นหนังสือเรียนส่วนใหญ่จะรายงาน (และถูกต้อง) เพียงอย่างเดียวที่ทำงานในการดำเนินการทางคณิตศาสตร์ฟังก์ชันขอบเขตบนทั่วไปเป็นผลคูณของเลขชี้กำลังพหุนามและลอการิทึม (แม้ว่าสัตว์ประหลาดอื่น ๆ เช่นแฟคทอเรียลและลอการิทึมแบบวนซ้ำก็ปรากฏขึ้นเป็นครั้งคราว) ไม่ยากที่จะพิสูจน์ว่าฟังก์ชั่นสองอย่างนี้เทียบเคียงกันได้O((n))IsPrime(n)O(n)

ดูเพิ่มเติมคำถามนี้ MathOverflow


7

จากวิกิพีเดียความหมายของสัญกรณ์ O ใหญ่:

ถ้าหากว่ามีค่าคงที่เป็นบวก M เช่นนั้นสำหรับค่าที่มีขนาดใหญ่เพียงพอของ , f ( x )คือ M มากที่สุดคูณด้วยg ( x ) ในค่าสัมบูรณ์ นั่นคือf ( x ) O ( g ( x ) )ถ้าหากว่ามีจำนวนจริงเป็นบวกMและจำนวนจริงx 0เช่นนั้นx(x)ก.(x)(x)O(ก.(x))Mx0

|(x)|<=M|ก.(x)|เพื่อทุกสิ่งx>x0

เกิดอะไรขึ้นสำหรับฟังก์ชั่นที่ไม่ได้มาบรรจบกัน (เป็นค่าคงที่หรือไม่สิ้นสุด)

ดูฟังก์ชั่นและg ( x ) = 10(x)=|xsผมn(x)|ก.(x)=10

สำหรับแต่ละมีบางx > x 0เช่นนั้นx = k πดังนั้นf ( x ) = 0 - ดังนั้นสำหรับแต่ละM - M f ( x ) > g ( x )จะให้ผลเป็นเท็จและg ( x )x0x>x0x=kπ(x)=0MM(x)>ก.(x)ก.(x)O((x))

อย่างไรก็ตามมันง่ายที่จะเห็นว่าไม่ถูก จำกัด ด้วยค่าคงที่ใด ๆ ดังนั้นสำหรับแต่ละM , x 0 , มีบางx > x 0ซึ่งf ( x ) < M g ( x )จะให้ผลเป็นเท็จและf ( x ) O ( g ( x ) )|xsผมn(x)|Mx0x>x0(x)<Mก.(x)(x)O(ก.(x))

หมายเหตุ: สำหรับคำนิยามหากบิ๊กโอที่อนุญาตให้ความแตกต่างคงที่สูงสุดระหว่างและg ( x )ความคิดเดียวกันจะใช้กับg ( x ) = log ( x )M(x)ก.(x)ก.(x)=เข้าสู่ระบบ(x)


6

นี่คือฟังก์ชั่นคู่โมโนโพนิกที่ไม่ได้เปรียบเทียบแบบเชิงเส้นกำกับ สิ่งนี้มีความเกี่ยวข้องเนื่องจากความซับซ้อนส่วนใหญ่ที่เกิดขึ้นในทางปฏิบัตินั้นเป็นจริงแบบโมโนโทนิก

กรัม( x ) = Γ ( x - 1 / 2 + 3 / 2 )

(x)=Γ(x+1)=x!
ก.(x)=Γ(x-1/2+3/2)

Γ


4

Lประสบการณ์(2เข้าสู่ระบบx+เข้าสู่ระบบเข้าสู่ระบบx)/x2,ก.L=โอ(ก.)=ω(ก.)/ก.

ผลที่สุดคือฟังก์ชั่น "ง่าย ๆ " สองอย่างที่เกิดขึ้นในการวิเคราะห์อัลกอริทึมนั้นเปรียบได้ ที่นี่ "ง่าย" หมายความว่าไม่มีคำจำกัดความของกรณี (นอกเหนือจากกรณีฐานจำนวนมาก) และไม่มีฟังก์ชั่นที่น่าแปลกใจปรากฏขึ้นเช่นฟังก์ชั่น Invermann ซึ่งบางครั้งตัวเลขในเวลาทำงาน


ดี! อย่างไรก็ตามเป็นที่น่าสังเกตว่าองค์ประกอบธาตุนั้นเกิดขึ้นบ่อยครั้งในการวิเคราะห์กรณีโดยเฉลี่ย (ของอัลกอริทึม d & c) สิ่งที่ฉันรู้ว่ามีค่าคงที่ทั้งสองด้านโดยค่าคงที่ดังนั้นพวกเขาจึงไม่เจ็บเปรียบเทียบเชิงเปรียบเทียบ
ราฟาเอล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.