วิธีการหารือค่าสัมประสิทธิ์ในสัญกรณ์ใหญ่ -O


10

สัญกรณ์ใดที่ใช้เพื่อพูดคุยเกี่ยวกับสัมประสิทธิ์ของฟังก์ชั่นในสัญกรณ์ใหญ่ -O

ฉันมีสองหน้าที่:

  • f(x)=7x2+4x+2
  • g(x)=3x2+5x+4

เห็นได้ชัดว่าทั้งสองฟังก์ชั่นคือแน่นอนแต่นั่นไม่อนุญาตให้มีการเปรียบเทียบมากไปกว่านั้น ฉันจะพูดถึงค่าสัมประสิทธิ์ 7 และ 3 ได้อย่างไรการลดค่าสัมประสิทธิ์เป็น 3 ไม่เปลี่ยนความซับซ้อนเชิงซีโมติค แต่ก็ยังคงสร้างความแตกต่างอย่างมีนัยสำคัญต่อการใช้งานไทม์ / หน่วยความจำO(x2)Θ(x2)

มันเป็นเรื่องที่ไม่ถูกต้องที่จะบอกว่าคือและเป็น ? มีสัญกรณ์อื่น ๆ ที่คำนึงถึงสัมประสิทธิ์หรือไม่? หรือจะเป็นวิธีที่ดีที่สุดในการหารือเรื่องนี้คืออะไร?fO(7x2)gO(3x2)


มันไม่ผิดก็ซ้ำซ้อนเพียงเพราะ2) O(7x2)=O(x2)

ดูเพิ่มเติมคำถามอ้างอิงของเรา
กราฟิลส์

คำตอบ:


9

เครื่องหมายBig-และใหญ่ -ซ่อนสัมประสิทธิ์ของเทอมนำหน้าดังนั้นหากคุณมีฟังก์ชั่นสองอย่างที่มีทั้งคุณไม่สามารถเปรียบเทียบค่าสัมบูรณ์ของตนได้โดยไม่ต้องดูฟังก์ชั่นเอง มันไม่ผิดที่จะบอกว่าแต่ก็ไม่ได้ให้ข้อมูลเพราะก็เป็นจริงเช่นกัน ในความเป็นจริงมันเป็นสำหรับคงบวกใด ๆ )OΘΘ(n2)7x2+4x+2=Θ(7x2)7x2+4x+2=Θ(3x2)Θ(kx2)k

มีสัญลักษณ์อื่นที่คุณอาจต้องการใช้แทน ตัวอย่างเช่นสัญกรณ์เป็นการเรียกร้องที่แข็งแกร่งกว่าใหญ่ - :Θ

f(x)g(x)limxf(x)g(x)=1

ตัวอย่างเช่นแต่การอ้างสิทธิ์จะเป็นเท็จ คุณสามารถคิดสัญกรณ์ตัวหนอนเป็นสัญกรณ์ที่รักษาค่าสัมประสิทธิ์นำซึ่งน่าจะเป็นสิ่งที่คุณกำลังมองหาถ้าคุณสนใจค่าสัมประสิทธิ์การเจริญเติบโตที่สำคัญ7x2+4x+27x27x2+4x+23x2Θ


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

6

ตัวหนอนเป็นวิธีการหนึ่ง ถ้าคุณต้องการติดกับคุณสามารถพูดได้O

f(x)=7x2+O(x)และ

g(x)=3x2+O(x)(x)


ดียิ่งขึ้น: พูดว่า f (x) = 7x ^ 2 + o (x ^ 2) โดยใช้สัญกรณ์เล็ก ๆ น้อย ๆ เพื่อชี้แจงว่าสิ่งที่เหลืออยู่นั้นเล็กกว่า asymptotically น้อยกว่า x ^ 2
templatetypedef

2
O (x) มีขนาดเล็กกว่าอย่างเคร่งครัด o (x ^ 2) ดังนั้นการใช้ที่จะมีความชัดเจนน้อยกว่าการใช้ big-O ในทางกลับกันการใช้ little-o เป็นเรื่องปกติมากขึ้นเมื่อคุณต้องการบอกว่าคุณมีคำศัพท์แรกที่ถูกต้องเพราะคุณไม่ต้องกังวลเกี่ยวกับคำต่อไป (และถ้าเราต้องการให้ชัดเจนอย่างสมบูรณ์แล้วเราจะต้องอธิบายว่าทำไมเราไม่เพียงแค่เขียน 7x ^ 2 + 4x + 2 ในตอนแรกเนื่องจากมันถูกต้องแน่นอน

คุณพูดถูกต้องแล้ว ... ขอโทษด้วย!
templatetypedef

โปรดทราบว่าวิธีการเขียนที่เข้มงวดนี้จะเป็น "กับ " ไม่ว่าในกรณีใด ๆ สิ่งนี้มีประโยชน์มากหากคุณต้องการแก้ไขมากกว่าค่าคงที่ "ค่าแรก" คุณพูดว่า " " ที่คุณไม่สามารถทำอะไรกับ\f(x)=7x2+g(x)g(x)O(x)f(x)=7x2+4x+O(1)
กราฟิลส์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.