פייתון/פייתון גרסה 3/סיבוכיות/סימון אסימפטוטי

מתוך testwiki
(הבדל) → הגרסה הקודמת | הגרסה האחרונה (הבדל) | הגרסה הבאה ← (הבדל)
קפיצה לניווט קפיצה לחיפוש

סימון אסימפטוטי משמש לתיאור התנהגותן של פונקציות שערכיהם הולכים וגדלים. נציג שלושה סימונים.

O notation

תהי  g(n) פונקציה שואפת לאינסוף.

נסמן f=O(g) אם ורק אם קיימים c>0-ים לכל m כך שעבור כל nm מתקיים ש- f(n)c*g(n)

כלומר עבור ערכי n הולכים וגדלים שמקבלת  f, היא קטנה יותר מ- g עד כדי כפל בקבוע.

דוגמות

  1. תהי g(n)=n ו-f(n)=2n+2 אז נוכל לומר כי f=O(n) (הצבה g(x)) מפני שעבור כל c=3, m=2 בהכרח מתקיים ש-2n+23*n (*)
  2. תהי g(x)=x4 ו-f(x)=6x42x3 אז נוכל לומר כי f=O(x4) (הצבה g(x)) מפני שעבור כל c=13, m=1 בהכרח מתקיים ש-6x42x3x4
  3. תהי g(n)=n אזי עבור log(n),n,nlog(n),n2,n3... נוכל לומר כי f=O(g)

Big Theta

  1. תהי  f=Ω(g) אם ורק אם  g=O(f) כלומר אם מתקיים ש-g מתפקדת כ-O אז נסמן אותה  f=Ω(g).

דוגמות

תהי g(n)=n ו-f(n)=2n+2 אז נוכל לומר כי g=O(2n+2) (הצבה f(x)) מפני שעבור כל c=1, m=1 בהכרח מתקיים ש-n1*(2n+2) ולכן Ω(n)=2n+1 (**)

Big Omega

 f=Θ(g) אם ורק אם  f=O(g) וגם  f=Ω(g) כלומר ל-f יש O(g), ולאותו הפונקציה, g מתקיים שיש O שהוא הפונקציה f עצמה,  g=O(f) .

דוגמות

  1. הוכחנו כי אם מתקיים ש-g(n)=n ו-f(n)=2n+2 אזf=O(n) (*) וגם מתקיים ש-  g=O(f) (**) ולכן Θ(g)=2n+1.
  2. a>1 logan=Θ(log2n) (נובע מזהות logan=log2nlog2a

דוגמה להשוואה בין יעילותם של פונקציות