יחידה 0

דרישות קדם מתמטיות ואלגוריתמיות

כלי ההוכחה, האסימפטוטיקה, הגרפים וההסתברות הדרושים ללימודי סיבוכיות.

מטרות

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

אינטואיציה

תורת הסיבוכיות חוקרת כיצד המשאבים הדרושים גדלים עם אורך הקלט. היא מתעלמת מהבדלים הנדסיים של גורם קבוע, אך לא מהקידוד: לייצוג בינרי של מספר nn יש אורך Θ(log⁡n)\Theta(\log n), ולא nn.

משתנה הגודל הוא בדרך כלל n=∣x∣n=|x|, אורך הייצוג. למספר NN יש ייצוג בינרי באורך ⌊log⁡2N⌋+1\lfloor\log_2N\rfloor+1, אך ייצוג אונרי באורך NN. לכן אלגוריתם המבצע O(N)O(N) איטרציות הוא ליניארי בקלט אונרי ומעריכי באורך הקלט הבינרי. הקידוד הוא חלק מן הבעיה.

בעיית הכרעה מיוצגת כשפה L⊆Σ∗L\subseteq\Sigma^*. מכריע MM חייב לעצור על כל קלט, לקבל בדיוק את המילים ב-LL ולדחות את כל האחרות. אלגוריתם הוא השיטה המופשטת; מודל המכונה קובע מה נחשב צעד ומהם המשאבים הנמדדים.

קבוצות, מחרוזות וגרפים

Σ∗\Sigma^* היא קבוצת כל המחרוזות הסופיות מעל האלפבית Σ\Sigma, כולל ε\varepsilon. קידוד זוג ⟨x,y⟩\langle x,y\rangle חייב להיות חד־משמעי וניתן לפענוח יעיל; השרשור xyxy לבדו עלול לאבד את הגבול. גרף יכול להיכתב כמטריצת שכנויות בגודל Θ(∣V∣2)\Theta(|V|^2) או כרשימת צלעות בגודל O((∣V∣+∣E∣)log⁡∣V∣)O((|V|+|E|)\log|V|). מעבר בין קידודים דורש הוכחה שאורכיהם קשורים פולינומיאלית.

דוגמת קידוד. תוכנית המונה מ-00 עד NN מבצעת Θ(N)\Theta(N) צעדים. על הקלט 1N1^N זה זמן ליניארי. על ייצוג בינרי באורך n=Θ(log⁡N)n=\Theta(\log N), מספר הצעדים הוא 2Θ(n)2^{\Theta(n)}. אותה תוכנית מקבלת סיווג שונה משום שאורך הקלט השתנה.

הגדרות פורמליות

לפונקציות אי־שליליות לבסוף, f(n)=O(g(n))f(n)=O(g(n)) אם קיימים c,n0>0c,n_0>0 כך שלכל n≥n0n\ge n_0 מתקיים f(n)≤cg(n)f(n)\le c g(n). מגדירים Ω\Omega בהיפוך האי־שוויון ו-Θ=O∩Ω\Theta=O\cap\Omega. שפה היא קבוצה L⊆{0,1}∗L\subseteq\{0,1\}^*.

באופן מלא,

f=O(g)  ⟺  ∃c>0 ∃n0 ∀n≥n0: f(n)≤cg(n),f=Ω(g)  ⟺  g=O(f),f=Θ(g)  ⟺  f=O(g) וגם f=Ω(g),f=o(g)  ⟺  ∀c>0 ∃n0 ∀n≥n0: f(n)<cg(n).\begin{aligned} f=O(g)&\iff \exists c>0\ \exists n_0\ \forall n\ge n_0:\ f(n)\le cg(n),\\ f=\Omega(g)&\iff g=O(f),\\ f=\Theta(g)&\iff f=O(g)\text{ וגם }f=\Omega(g),\\ f=o(g)&\iff \forall c>0\ \exists n_0\ \forall n\ge n_0:\ f(n)<cg(n). \end{aligned}

OO הוא חסם עליון לבסוף, לא שוויון. oo מתאר שליטה ממש: n2=o(n3)n^2=o(n^3), אך 3n2≠o(n2)3n^2\not=o(n^2). בין עובדות הגדילה השימושיות:

log⁡n=o(nϵ),na=o(nb) (a<b),nk=2o(n).\log n=o(n^\epsilon),\qquad n^a=o(n^b)\ (a<b),\qquad n^k=2^{o(n)}.

שינוי בסיס קבוע של לוגריתם משנה גורם קבוע בלבד; לעומת זאת 2cn2^{cn} ו-2n2^n אינם בהכרח במרחק גורם קבוע.

טענה. אם אלגוריתם מבצע לכל היותר n3+7nn^3+7n צעדים על כל קלט באורך nn, אז זמן הריצה שלו הוא O(n3)O(n^3).

מהלך ההוכחה

יהי T(n)T(n) מספר הצעדים במקרה הגרוע על קלטים באורך nn. נתון T(n)≤n3+7nT(n)\le n^3+7n לכל n≥1n\ge1. יש להציג קבועים c,n0>0c,n_0>0 כך שלכל n≥n0n\ge n_0 מתקיים T(n)≤cn3T(n)\le cn^3.

עבור n≥1n\ge1 מתקיים 7n≤7n37n\le7n^3, ולכן

T(n)≤n3+7n≤n3+7n3=8n3.T(n)\le n^3+7n\le n^3+7n^3=8n^3.

הבחירה c=8c=8 ו-n0=1n_0=1 מקיימת את הגדרת OO במפורש. אין די באמירה שהאיבר המעוקב ״שולט״: ההוכחה חייבת לספק עדים מכומתים.

טענה. 4n2+3n+9=Θ(n2)4n^2+3n+9=\Theta(n^2).

חסם עליון. עבור n≥1n\ge1: 3n≤3n23n\le3n^2 ו-9≤9n29\le9n^2, ולכן 4n2+3n+9≤16n24n^2+3n+9\le16n^2. בחרו c=16,n0=1c=16,n_0=1.

חסם תחתון. לכל nn מתקיים 4n2+3n+9≥4n24n^2+3n+9\ge4n^2. בחרו c′=4,n0′=1c'=4,n_0'=1. שני הכיוונים נדרשים; כל כיוון מספק קבועים משלו.

בנייה מודרכת

מפת קצבי גידול

שלב 1 מתוך 6
השוואת קצבי גידולעקומות עבור log n, n, n log n, n בריבוע ושתיים בחזקת n בסקאלה אנכית ליניארית.01,0242,0483,0724,09624681012גודל הקלט nערך הפונקציה (סקאלה ליניארית)log₂ n
log₂ n

בהמחשה כדאי להשוות log⁡n,n,nlog⁡n,n2,2n\log n,n,n\log n,n^2,2^n גם בציר רגיל וגם בציר לוגריתמי. חציות עבור nn קטן אינן משנות את הסדר האסימפטוטי.

שיטות הוכחה

הוכחה ישירה ובנייה

להוכחת A⊆BA\subseteq B לוקחים x∈Ax\in A שרירותי ומסיקים x∈Bx\in B. להוכחת שייכות למחלקת סיבוכיות בונים מכונה אחת, מוכיחים נכונות, עצירה וחסם משאבים. קיום אלגוריתם איטי אינו שולל קיום אלגוריתם מהיר.

קונטרה־פוזיטיב וסתירה

P⇒QP\Rightarrow Q שקול ל-¬Q⇒¬P\neg Q\Rightarrow\neg P, אך לא להיפוך Q⇒PQ\Rightarrow P. בהוכחה בדרך השלילה יש לנסח במדויק את השלילה. למשל, שלילת ∀x ∃y R(x,y)\forall x\,\exists y\,R(x,y) היא ∃x ∀y ¬R(x,y)\exists x\,\forall y\,\neg R(x,y).

אינדוקציה

מוכיחים בסיס ומעבר P(n)⇒P(n+1)P(n)\Rightarrow P(n+1). בסימולציות מכונות האינווריאנט הטיפוסי הוא: לאחר ii צעדי סימולציה, הקידוד מייצג בדיוק את הקונפיגורציה לאחר ii צעדים של המכונה המדומה. הבסיס בודק את הקלט, והמעבר בודק מעבר יחיד.

ספירה ושובך היונים

יש 2n2^n מחרוזות בינריות באורך nn, אך 22n2^{2^n} פונקציות בוליאניות על nn ביטים. פער זה מוכיח שקיימות פונקציות שאינן ניתנות לייצוג קטן מסוגים מסוימים, אף שאינו בהכרח מזהה פונקציה מפורשת.

לכסון

מונה מכונות M1,M2,…M_1,M_2,\ldots ובונים אובייקט החולק על MiM_i בקלט הייעודי ה-ii. אין די בסיסמה ״נהפוך את התשובה״: יש להבטיח שהסימולטור עוצר ונכנס בתקציב. משום כך משפטי היררכיה כוללים תנאי בנייה ופער.

הסתברות

במרחב סופי Ω\Omega, אירוע הוא תת־קבוצה ו

Pr⁡[A∣B]=Pr⁡[A∩B]Pr⁡[B]\Pr[A\mid B]=\frac{\Pr[A\cap B]}{\Pr[B]}

כאשר Pr⁡[B]>0\Pr[B]>0. אי־תלות פירושה Pr⁡[A∩B]=Pr⁡[A]Pr⁡[B]\Pr[A\cap B]=\Pr[A]\Pr[B]. אי־תלות בזוגות אינה מבטיחה אי־תלות משותפת.

חסם האיחוד אינו דורש אי־תלות:

Pr⁡[⋃i=1mAi]≤∑i=1mPr⁡[Ai].\Pr\left[\bigcup_{i=1}^m A_i\right]\le\sum_{i=1}^m\Pr[A_i].

לעומת זאת, כדי להכפיל הסתברויות כישלון של ניסויים דרושה אי־תלות. ליניאריות התוחלת,

E[∑iXi]=∑iE[Xi],\mathbb E\left[\sum_iX_i\right]=\sum_i\mathbb E[X_i],

תקפה גם למשתנים תלויים. עבור אינדיקטור IAI_A, מתקיים E[IA]=Pr⁡[A]\mathbb E[I_A]=\Pr[A].

הגברה. אם ריצה עצמאית מצליחה בהסתברות 2/32/3 ואין קבלה שגויה, אז kk ריצות וקבלה אם אחת הצליחה נכשלות בהסתברות לכל היותר (1/3)k(1/3)^k. בשגיאה דו־צדדית והצבעת רוב דרוש חסם ריכוז; הנוסחה הזו אינה מספיקה. ״בהסתברות גבוהה״ פירושו בדרך כלל לפחות 1−1/nc1-1/n^c עבור c>0c>0 קבוע, ולא רק מעל חצי.

קריאת טענות פורמליות

סדר הכמתים קובע תלות. ב-∀M ∃cM ∀x\forall M\,\exists c_M\,\forall x, הקבוע תלוי במכונה אך לא בקלט. טענה עם ∃c ∀M ∀x\exists c\,\forall M\,\forall x חזקה בהרבה. בכל הוכחת חברות במחלקה מפרידים:

  1. סמנטיקה — המכונה מכריעה בדיוק את השפה.
  2. עצירה — כל החישובים הנדרשים עוצרים.
  3. משאבים — החסם מתקיים לכל קלט באורך הנתון.

דוגמה פתורה

גרף עם NN קודקודים דורש Θ(N2)\Theta(N^2) ביטים כמטריצת שכנויות, אך Θ((N+M)log⁡N)\Theta((N+M)\log N) ביטים כרשימת צלעות. לכן יש לבדוק שפולינומיאליות נשמרת ביחס לקידוד הרלוונטי.

טעויות נפוצות

  • להתייחס ל-O(g)O(g) כשוויון.
  • למדוד קלט מספרי לפי ערכו ולא לפי מספר הביטים.
  • לפרש ״בהסתברות גבוהה״ כ״יותר מחצי״ בלבד.
  • להוכיח דוגמאות במקום את כל המקרים המכומתים.
  • להכפיל הסתברויות ללא אי־תלות.
  • להסתיר קבוע התלוי בקלט.
  • להוכיח נכונות רק למופעים חיוביים.

הצעת המחשה

להציג את log⁡n,n,nlog⁡n,n2,2n\log n,n,n\log n,n^2,2^n בציר אנכי לוגריתמי ולסמן מאיזה תחום סדר הגדילה מתבהר.

תרגילים

תרגיל 1 — הוכחת Θ\Theta

הוכיחו מההגדרה כי 2n3+100n2=Θ(n3)2n^3+100n^2=\Theta(n^3). ציינו במפורש את הקבועים ואת n0n_0 בכל כיוון.

פתרון

טענה. 2n3+100n2=Θ(n3)2n^3+100n^2=\Theta(n^3).

חסם עליון (OO). עבור n≥1n\ge1 מתקיים 100n2≤100n3100n^2\le100n^3, ולכן

2n3+100n2≤2n3+100n3=102n3.2n^3+100n^2\le2n^3+100n^3=102n^3.

בחרו c=102c=102 ו-n0=1n_0=1.

חסם תחתון (Ω\Omega). לכל n≥1n\ge1 מתקיים 2n3+100n2≥2n32n^3+100n^2\ge2n^3. בחרו c′=2c'=2 ו-n0′=1n_0'=1.

מכאן f=O(n3)f=O(n^3) וגם f=Ω(n3)f=\Omega(n^3), ולכן f=Θ(n3)f=\Theta(n^3). הקבועים אינם חייבים להיות מיטביים; הם חייבים להיות חיוביים ואחידים לכל nn גדול מספיק.

תרגיל 2 — הפרכת OO

הוכיחו כי הטענה 2n=O(n100)2^n=O(n^{100}) שגויה. כתבו את השלילה של הגדרת OO והשלימו אותה.

פתרון

שלילת OO. הטענה 2n=O(n100)2^n=O(n^{100}) שקולה ל-

∃c>0 ∃n0 ∀n≥n0: 2n≤c n100.\exists c>0\ \exists n_0\ \forall n\ge n_0:\ 2^n\le c\,n^{100}.

שלילתה היא

∀c>0 ∀n0 ∃n≥n0: 2n>c n100.\forall c>0\ \forall n_0\ \exists n\ge n_0:\ 2^n>c\,n^{100}.

הוכחה. ידוע lim⁡n→∞2n/n100=∞\lim_{n\to\infty}2^n/n^{100}=\infty. לכן לכל c,n0c,n_0 קיים n≥n0n\ge n_0 שעבורו 2n/n100>c2^n/n^{100}>c, כלומר 2n>cn1002^n>cn^{100}.

מה אין כאן. בדיקת ערכים קטנים אינה הוכחה: ההגדרה עוסקת בהתנהגות לבסוף.

תרגיל 3 — קידוד אונרי מול בינרי

תהי AA השפה של קלטים אונריים 1N1^N, ותהי BB השפה של ייצוגים בינריים של אותם מספרים. אלגוריתם מונה מ-00 עד NN ב-Θ(N)\Theta(N) צעדים. הוכיחו כי האלגוריתם רץ בזמן ליניארי באורך הקלט על קלט מ-AA, אך מעריכי באורך הקלט על קלט מ-BB. הסבירו מדוע אין סתירה.

פתרון

על קלט x=1Nx=1^N מתקיים ∣x∣=N|x|=N, ומספר הצעדים Θ(N)=Θ(∣x∣)\Theta(N)=\Theta(|x|) — זמן ליניארי.

על ייצוג בינרי של NN באורך n=⌊log⁡2N⌋+1=Θ(log⁡N)n=\lfloor\log_2 N\rfloor+1=\Theta(\log N) מספר הצעדים הוא Θ(N)=2Θ(n)\Theta(N)=2^{\Theta(n)} — זמן מעריכי באורך הקלט.

אין סתירה: אותה תוכנית נמדדת ביחס לאורכי קלט שונים. הקידוד הוא חלק מהבעיה, ולכן סיווג הסיבוכיות תלוי בו.

תרגיל 4 — חסם איחוד בלי אי־תלות

נבחרים kk ערכים; לכל ii, ההסתברות שהערך ה-ii רע היא לכל היותר 1/n21/n^2. הוכיחו כי ההסתברות שלפחות ערך אחד רע היא לכל היותר k/n2k/n^2, בלי להניח אי־תלות. הסיקו את המקרה k=nk=n. הסבירו מדוע אסור להכפיל את הסתברויות ההצלחה בלי הנחה נוספת.

פתרון

יהי AiA_i האירוע שהערך ה-ii רע. לפי חסם האיחוד,

Pr⁡[⋃i=1kAi]≤∑i=1kPr⁡[Ai]≤∑i=1k1n2=kn2.\Pr\left[\bigcup_{i=1}^k A_i\right]\le\sum_{i=1}^k\Pr[A_i]\le\sum_{i=1}^k\frac1{n^2}=\frac{k}{n^2}.

חסם האיחוד אינו דורש אי־תלות. עבור k=nk=n מתקבל לכל היותר 1/n1/n.

כדי לכתוב Pr⁡[⋂iAic]=∏iPr⁡[Aic]\Pr[\bigcap_i A_i^c]=\prod_i\Pr[A_i^c] נדרשת אי־תלות. בלי זה המכפלה אינה חוקית.

תרגיל 5 — תוחלת עם תלות

יהי G=(V,E)G=(V,E) גרף. לכל קודקוד vv נסמן ב-IvI_v אינדיקטור לכך ש-vv נבחר, ונניח Pr⁡[Iv=1]=p\Pr[I_v=1]=p לכל vv. יהי X=∑v∈VIvX=\sum_{v\in V}I_v. הוכיחו כי E[X]=∣V∣p\mathbb E[X]=|V|p גם אם מנגנון הבחירה יוצר תלות בין הקודקודים.

פתרון

לפי ליניאריות התוחלת,

E[X]=E[∑vIv]=∑vE[Iv]=∑vPr⁡[Iv=1]=∣V∣p.\mathbb E[X]=\mathbb E\left[\sum_v I_v\right]=\sum_v\mathbb E[I_v]=\sum_v\Pr[I_v=1]=|V|p.

ליניאריות אינה דורשת אי־תלות. התלות משפיעה על שונות ועל הסתברות זנב, לא על התוחלת עצמה.

סיכום

יש לעקוב אחר כמתים, אורך קלט, קידוד ומרחב ההסתברות. הרגלים אלה מונעים טעויות יסוד בהמשך.

תרגול מודרך

משימה 1 — כמתים ותלות קבועים

נסחו במדויק את שני המשפטים הבאים והשוו את חוזקם:

  1. לכל מכונה MM קיים קבוע cMc_M כך שלכל קלט xx מתקיים TM(x)≤2cM ∣x∣T_M(x)\le 2^{c_M\,|x|}.
  2. קיים קבוע cc אחד כך שלכל מכונה MM ולכל קלט xx מתקיים TM(x)≤2c ∣x∣T_M(x)\le 2^{c\,|x|}.

באיזו מהן מותר שהקבוע תלוי ב-MM? האם מותר לבחור את הקבוע אחרי שרואים את xx?

פתרון

המשפט הראשון הוא

∀M ∃cM ∀x: TM(x)≤2cM ∣x∣.\forall M\ \exists c_M\ \forall x:\ T_M(x)\le 2^{c_M\,|x|}.

הקבוע תלוי ב-MM אך לא ב-xx: אסור לבחור cMc_M לאחר ראיית xx.

המשפט השני הוא

∃c ∀M ∀x: TM(x)≤2c ∣x∣,\exists c\ \forall M\ \forall x:\ T_M(x)\le 2^{c\,|x|},

והוא חזק בהרבה. כתיבת תלות בתת־סקריפט (cMc_M מול cc) מונעת בלבול בבחינה.

משימה 2 — שלושת חלקי הוכחת שייכות

תהי LL שפה. תארו במדויק מה חייבים להוכיח כדי לטעון L∈CL\in\mathcal C כאשר C\mathcal C מוגדרת באמצעות מכונות עם חסם משאבים נתון. הסבירו מדוע דוגמה אחת של קלט אינה מספיקה, ומדוע אלגוריתם איטי נוסף אינו שולל שייכות.

פתרון

יש להפריד שלוש חובות:

  1. סמנטיקה: המכונה מקבלת בדיוק את מחרוזות LL ודוחה את השלמה.
  2. עצירה: כל חישוב נדרש עוצר (קבלה ודחייה).
  3. משאבים: החסם מתקיים לכל קלט באורך nn, כולל מופעי־לא.

דוגמאות אינן מכסות את הכמת ∀x\forall x. שייכות למחלקה היא קיומית באלגוריתם: די במכונה אחת תקינה; קיום מכונה איטית אחרת אינו שולל שייכות.

משימה 3 — מקרה מסכם: זמן, קידוד והסתברות

אלגוריתם מקבל מספר בינרי NN, יוצר NN ניסויים, ובכל ניסוי אירוע רע בהסתברות לכל היותר 1/N31/N^3 (ללא הנחת אי־תלות בין הניסויים).

  1. הוכיחו כי האלגוריתם אינו פולינומיאלי באורך הקלט n=∣N∣n=|N|.
  2. הוכיחו חסם על ההסתברות לאירוע רע כלשהו.
  3. הסבירו מתי הסתברות כישלון קטנה מ-11 מוכיחה קיום בחירה טובה, ומתי אין זה מספיק לאלגוריתם יעיל.
  4. הבחינו בין זמן תוחלת לבין זמן מקרה גרוע.
פתרון
  1. אורך הקלט n=Θ(log⁡N)n=\Theta(\log N). יצירת NN ניסויים דורשת לפחות N=2Θ(n)N=2^{\Theta(n)} צעדים, ולכן הזמן אינו פולינומיאלי ב-nn.

  2. לפי חסם האיחוד, בלי אי־תלות:

Pr⁡[אירוע רע כלשהו]≤N⋅N−3=N−2=2−Θ(n).\Pr[\text{אירוע רע כלשהו}]\le N\cdot N^{-3}=N^{-2}=2^{-\Theta(n)}.
  1. אם Pr⁡[כישלון]<1\Pr[\text{כישלון}]<1 אז Pr⁡[הצלחה]>0\Pr[\text{הצלחה}]>0, ולכן קיימת בחירת אקראיות בלי אירוע רע (השיטה ההסתברותית). קיום אינו מספק אלגוריתם יעיל למציאת הבחירה; לכך נדרשים דגימה, חזרה, דה־רנדומיזציה או חיפוש.

  2. זמן תוחלת קטן אינו גורר חסם פולינומיאלי לכל ריצה. אם בהסתברות זעירה האלגוריתם רץ זמן עצום, התוחלת עשויה להיות קטנה בעוד שאין חסם מקרה־גרוע פולינומיאלי.

בכל טיעון הסתברותי יש לכתוב: על מה ההתפלגות, מהו המשתנה, האם החסם לתוחלת או לזנב, ומה נדרש לכל קלט.

מקורות

  • ראיית סיכום סטודנטים: הסיכום הממוזג, עמ' 1, 98 ו-141; משמש להתאמת דגשים בלבד ולא כאסמכתה סופית.
  • ראיית קורס: תמלילי סמסטר א' 2026, שיעורים 1-2, למסגור יסודות הקורס; אין כאן טענה למיקום שורות מדויק.
  • אימות: Sipser, מהדורה 3, עמ' 3-24.
  • אימות: Arora-Barak, טיוטה, עמ' 9-14 ונספח A.
  • אימות: Papadimitriou, עמ' 1-18 ופרק ההסתברות.