הקדמה לניתוח סיבוכיות של בעיות

‫הקדמה לניתוח סיבוכיות של בעיות‬
‫בספר‪ :‬פרקים‬
‫‪14,15‬‬
‫‪1‬‬
‫סימונים והגדרות‬
‫• )‪ – timep(d‬זמן הריצה של תוכנית ‪ p‬על הקלט ‪.d‬‬
‫• )‪ – Tp(s‬זמן הריצה של תוכנית ‪ p‬במקרה הגרוע על‬
‫קלט בגודל ‪.s‬‬
‫מודל הזמן‪Unit cost :‬‬
‫צעד בסיסי בשפה = יחידת זמן אחת‪.‬‬
‫‪2‬‬
‫סימונים והגדרות‬
‫• הגדרות‪ :‬תהי ‪ f: N → N+‬פונקציה‪.‬‬
‫– )‪ O(f‬היא משפחת הפונקציות ‪ g‬שמקיימות‪:‬‬
‫)‪ g(n) ≤ c⋅f(n‬עבור ‪ c > 0‬כלשהו ולכל ‪.n‬‬
‫– )‪ poly(f‬היא משפחת הפונקציות ‪ g‬שמקיימות‪:‬‬
‫‪ g(n) ≤ a⋅(f(n))c‬עבור ‪ a,c > 0‬כלשהם ולכל ‪.n‬‬
‫• במקום )‪ g∈O(f‬נכתוב )‪ g ≤ O(f‬ונאמר‪ g" :‬חסומה ליניארית‬
‫ע"י ‪."f‬‬
‫• במקום )‪ g∈poly(f‬נכתוב )‪ g ≤ poly(f‬ונאמר‪ g" :‬חסומה‬
‫פולינומיאלית ע"י ‪."f‬‬
‫‪3‬‬
‫סימונים והגדרות‬
:poly-‫ ו‬O ‫• חוקים עבור‬
O(f) + O(g) = O(f + g)
poly(f) + poly(g) = poly(f + g) = poly(f⋅g)
poly(poly(f)) = poly(f)
4
‫השוואה בין שפות תכנות שונות‬
‫• הגדרה‪ :‬תהיינה ‪ M, L‬שפות תכנות )עם טיפוס‬
‫נתונים ‪ .(D‬נניח שלכל תוכנית ‪ p∈M-prog‬יש‬
‫תוכנית שקולה ‪ q∈L-prog‬וכן פונקציה‬
‫פולינומיאלית ‪ fp‬המקיימות‪:‬‬
‫∈‪∀d‬‬
‫))‪∈D: timeq(d) ≤ fp(|d| + timep(d‬‬
‫אזי נכתוב ‪.M ≤ptime L‬‬
‫• אם מתקיים ‪ M ≤ptime L‬וגם ‪ L ≤ptime M‬אזי‬
‫נכתוב ‪.M ≡ptime L‬‬
‫‪5‬‬
‫השוואה בין שפות תכנות שונות‬
‫• טענה‪GOTO ≡ptime WHILE :‬‬
‫• האם קשר זה מתקיים עבור כל השפות המלאות‪-‬‬
‫סבירות?‬
‫• שפות מלאות‪-‬סבירות "מציאותיות" )כמו‬
‫‪ (C,WHILE, GOTO‬מקיימות כולן קשר ‪.≡ptime‬‬
‫אלו הם המודלים הסבירים לחישוב זמן ריצה‪.‬‬
‫‪6‬‬
‫ניתוח סיבוכיות של בעיות‬
‫• הגדרה‪ :‬אלגוריתם פולינומיאלי הוא אלגוריתם‬
‫המיושם כתוכנית ‪ p‬באחד המודלים הסבירים‪ ,‬אשר‬
‫זמן ריצתה פולינומיאלי כפונקציה של גודל הקלט ‪,s‬‬
‫כלומר‪.Tp(s) ≤ poly(s) :‬‬
‫• אלגוריתם נקרא יעיל במידה סבירה אם הוא‬
‫פולינומיאלי‪.‬‬
‫• בעיה שקיים עבורה אלגוריתם יעיל במידה סבירה‬
‫תיקרא ‪.tractable‬‬
‫‪7‬‬
‫השפעת ייצוג הקלט – בעיות בגרפים‬
‫• ייצוגים אפשריים לגרף‪:‬‬
‫‪ .1‬מטריצת סמיכויות‬
‫‪ .2‬רשימת סמיכויות‬
‫‪ .3‬רשימת הקודקודים והקשתות‬
‫• טענה‪ :‬זמן הריצה של אלגוריתם יהיה פולינומיאלי‬
‫בפרמטר |‪ n = |V‬אם"ם הוא פולינומיאלי בגודל הקלט‬
‫בכל אחד מהייצוגים שמנינו‪.‬‬
‫‪8‬‬
‫השפעת ייצוג הקלט – בעיות במספרים‬
‫• ייצוגים אפשריים למספר‪:‬‬
‫‪ .1‬אונרי‬
‫‪ .2‬בינרי‬
‫‪ .3‬דצימלי‬
‫• טענה‪ :‬כאשר מדברים על בעיות הקשורות למספרים‪ ,‬הייצוג‬
‫הסטנדרטי הוא הייצוג הבינרי‪.‬‬
‫• מעכשיו ‪ n‬יהיה סימון לייצוג הבינרי של ‪) n‬אלא אם נאמר‬
‫במפורש אחרת(‪ .‬נוכל לכתוב ‪ niln‬עבור הייצוג האונרי‪.‬‬
‫•‬
‫‪9‬‬
‫הגדרה‪ :‬אלגוריתם נקרא "פולינומיאלי ממש" אם כאשר‬
‫מיישמים אותו לקלט שבו המספרים המיוצגים בשיטה הבינרית‪,‬‬
‫מתקבלת תוכנית שזמן ריצתה פולינומיאלי בגודל הקלט‪.‬‬
‫מחלקות סיבוכיות‬
‫בספר‪ :‬פרק ‪16‬‬
‫‪10‬‬
‫מחלקות סיבוכיות‬
‫• הגדרה‪) PTIME :‬בקיצור ‪ (P‬היא מחלקת בעיות‬
‫ההכרעה שניתן להכריע בזמן פולינומיאלי בגודל‬
‫הקלט‪.‬‬
‫כלומר‪ :‬קיימת תוכנית הכרעה ‪ p‬עבור הבעיה‪ ,‬כך ש‪-‬‬
‫)‪.Tp(s) ≤ poly(s‬‬
‫• הגדרה‪) EXPTIME :‬בקיצור ‪ (EXP‬היא מחלקת‬
‫בעיות ההכרעה שניתן להכריע בזמן מעריכי בגודל‬
‫הקלט‪.‬‬
‫כלומר‪ :‬קיימת תוכנית הכרעה ‪ p‬עבור הבעיה‪ ,‬כך ש‪-‬‬
‫)‪.Tp(s) ≤ 2poly(s‬‬
‫‪11‬‬
‫היררכיית המחלקות‬
‫משפט‪P ⊂ EXP ⊂ R :‬‬
‫הוכחה )חלקית(‪:‬‬
‫ההכלות ‪ P ⊆ EXP ⊆ R‬נובעות ישירות מההגדרות‬
‫של ‪ P‬ושל ‪.EXP‬‬
‫כדי להוכיח שאלו הכלות ממש יש להראות‪:‬‬
‫‪ .1‬קיימת בעיה השייכת ל‪ R-‬אבל לא ל‪.EXP-‬‬
‫‪ .2‬קיימת בעיה השייכת ל‪ EXP-‬אבל לא ל‪.P-‬‬
‫‪12‬‬
‫היררכיית המחלקות‬
TH = { ((p.d).n) | p∈GOTO-prog, timep(d) < n}
TH ∈ EXP :'‫א‬1 ‫טענה‬
TH ∉ P :'‫ב‬1 ‫טענה‬
THexp = { ((p.d).n) | p∈GOTO-prog, timep(d) < 2n }
THexp ∈ R :'‫א‬2 ‫טענה‬
THexp ∉ EXP :'‫ב‬2 ‫טענה‬
13
‫תכונות סגירות‬
‫משפט‪:‬‬
‫המחלקות ‪ P,EXP‬סגורות לאיחוד‪ ,‬חיתוך ומשלים‪.‬‬
‫כלומר‪:‬‬
‫‪A, B ∈ P ⇒ A∪B, A∩B ∈ P‬‬
‫‪A, B ∈ EXP ⇒ A∪B, A∩B ∈ EXP‬‬
‫‪A ∈ P ⇒ A∈ P‬‬
‫‪A ∈ EXP ⇒ A∈ EXP‬‬
‫‪14‬‬
‫רדוקציות פולינומיאליות‬
‫• הגדרה‪ :‬תהיינה ‪.D  A,B‬‬
‫תוכנית ‪ r‬תיקרא רדוקציית התאמה פולינומיאלית של‬
‫‪ A‬ל‪ B-‬אם היא מקיימת את התנאים הבאים‪:‬‬
‫‪ r .1‬היא רדוקציה של ‪ A‬ל‪:B-‬‬
‫∈‪d‬‬
‫〛‪∈D: d ∈ A ⇔〚r‬‬
‫‪〛d ∈ B‬‬
‫∈‪d‬‬
‫‪ r .2‬יעילה‪∈D: timer(d) ≤ poly(|d|) :‬‬
‫‪ r .3‬אינה מנפחת את הקלט‪:‬‬
‫∈‪d‬‬
‫〛‪∈D: 〚r‬‬
‫‪〛d ≤ poly(|d|)‬‬
‫• סימון‪ :‬אם קיימת רדוקציית התאמה פולינומיאלית‬
‫‪A ≤p B‬‬
‫מ‪ A-‬ל‪ B-‬נכתוב‪:‬‬
‫‪15‬‬
‫רדוקציות פולינומיאליות‬
‫• משפט‪ :‬אם ‪ A ≤p B‬אז‪:‬‬
‫‪(1) B∈P ⇒ A∈P‬‬
‫‪(2) B∈EXP ⇒ A∈EXP‬‬
‫• מסקנות‪ :‬אם ‪ A ≤p B‬אז‪:‬‬
‫‪(1) A∉P ⇒ B∉P‬‬
‫‪(2) A∉EXP ⇒ B∉EXP‬‬
‫‪16‬‬
‫סוגי בעיות‪:‬‬
‫בעיות חיפוש‪ ,‬אופטימיזציה והכרעה‬
‫בספר‪ :‬פרק ‪16‬‬
‫‪17‬‬
‫בעיית מעגל המילטון‬
‫)בגרף לא מכוון(‬
‫• הגדרה‪ :‬מעגל המילטון בגרף הוא מעגל פשוט העובר בכל‬
‫הקודקודים‪.‬‬
‫• בעיית החיפוש‪ :‬הקלט יהיה גרף לא מכוון‪ .‬הפלט הנדרש הוא‬
‫תיאור של מעגל המילטון כלשהו בגרף – אם יש כזה‪,‬‬
‫או הודעה מתאימה – אם אין כזה‪.‬‬
‫• בעיית ההכרעה‪:‬‬
‫}‪ G‬גרף לא מכוון שיש בו מעגל המילטון | ‪HAMILTON={G‬‬
‫‪18‬‬
‫בעיית מעגל המילטון‬
‫)בגרף לא מכוון(‬
‫• טענה‪ :‬אפשר למצוא מעגל המילטון בגרף בזמן‬
‫פולינומיאלי אם"ם ‪.HAMILTON∈P‬‬
‫• האם ‪? HAMILTON∈P‬‬
‫לא ידוע אלגוריתם פולינומיאלי לבעיה זו‪.‬‬
‫• טענה‪HAMILTON∈EXP :‬‬
‫‪19‬‬
‫בעיית הקליקה המרבית‬
‫• הגדרה‪ :‬קליקה בגרף היא קבוצת קודקודים אשר כל זוג‬
‫מתוכם מחובר בצלע‪.‬‬
‫• בעיית האופטימיזציה‪ :‬הקלט יהיה גרף לא מכוון‪ .‬הפלט‬
‫הנדרש הוא קליקה מרבית כלשהי‪.‬‬
‫• בעיית ההכרעה‪:‬‬
‫}ב‪ G-‬יש קליקה בגודל ‪CLIQUE ={(G k) | k ‬‬
‫‪20‬‬
‫בעיית הקליקה המרבית‬
‫• טענה‪ :‬אפשר למצוא קליקה מרבית בגרף בזמן‬
‫פולינומיאלי אם"ם ‪.CLIQUE∈P‬‬
‫• האם ‪? CLIQUE∈P‬‬
‫לא ידוע אלגוריתם פולינומיאלי לבעיה זו‪.‬‬
‫• טענה‪CLIQUE∈EXP :‬‬
‫‪21‬‬
‫חישוב אי‪-‬דטרמיניסטי והמחלקה ‪NP‬‬
‫בספר‪ :‬פרק ‪17‬‬
‫‪22‬‬
‫חישוב אי‪-‬דטרמיניסטי‬
‫• הגדרה‪ :‬שפת תכנות אי‪-‬דטרמיניסטית היא שפת‬
‫תכנות רגילה עם תוספת "פונקציה" )‪guess(n‬‬
‫המחזירה מחרוזת של ‪ n‬ביטים להם נקרא "ניחוש"‪.‬‬
‫• הגדרה‪ :‬תהי ‪ p‬תוכנית אי‪-‬דטרמיניסטית )א"ד( ותהי‬
‫‪ D  A‬בעיית הכרעה‪ .‬נאמר ש‪ p-‬מזהה את ‪ A‬אם‬
‫מתקיימות ‪ 3‬הדרישות הבאות‪:‬‬
‫‪ (1‬הפלט של ‪ p‬הוא תמיד ‪ true‬או ‪.false‬‬
‫‪ (2‬אם ‪ d∉A‬אז ‪〚p〛d = false‬תמיד ‪.‬‬
‫‪ (3‬אם ‪ d∈A‬אז קיימת ריצה שבה ‪.〚p〛d = true‬‬
‫‪23‬‬
‫המחלקה ‪NP‬‬
‫הגדרה‪ (NP) NPTIME :‬היא מחלקת בעיות‬
‫ההכרעה שיש עבורן תוכנית א"ד שמזהה אותן‬
‫בזמן ריצה פולינומיאלי *במקרה הגרוע‪.‬‬
‫* עבור כל ניחוש‪.‬‬
‫דוגמאות‪:‬‬
‫• ‪HAMILTON∈NP‬‬
‫• ‪CLIQUE∈NP‬‬
‫‪24‬‬
‫היררכית המחלקות‬
‫משפט‪P ⊆ NP ⊆ EXP :‬‬
‫השערה ‪P ≠ NP :1‬‬
‫השערה ‪NP ≠ EXP :2‬‬
‫‪25‬‬
‫בעיות ב‪:NP-‬‬
‫בעיית הקבוצה הבלתי‪-‬תלויה‬
‫• הגדרה‪ :‬יהי ‪ G‬גרף לא מכוון‪ .‬קבוצת קודקודים ‪ S‬ב‪G-‬‬
‫נקראת קבוצה בלתי‪-‬תלויה )‪ (independent set‬אם‬
‫אף זוג קודקודים מתוך ‪ S‬אינו מחובר בצלע‪.‬‬
‫• בעיית האופטימיזציה‪ :‬הקלט יהיה גרף לא מכוון‪.‬‬
‫הפלט הנדרש הוא קב"ת מרבית כלשהי‪.‬‬
‫• בעיית ההכרעה‪:‬‬
‫}ב‪ G-‬יש קב"ת בגודל ‪IS ={(G k) | k ‬‬
‫‪26‬‬
‫בעיות ב‪:NP-‬‬
‫בעיות באלגברה בוליאנית‬
‫• הגדרות‪:‬‬
‫– נוסחה בוליאנית )פסוק( בנויה ממשתנים‬
‫‪ x1,…,xn‬ואופרטורים בוליאניים ¬ ‪ ∨, ∧,‬ועוד‪,‬‬
‫ומתארת פונקציה }‪.{0,1}n → {0,1‬‬
‫– ליטרל הוא משתנה בוליאני בודד או שלילתו‬
‫)דוגמאות‪(x1, x2 :‬‬
‫‪27‬‬
‫בעיות ב‪:NP-‬‬
‫בעיות באלגברה בוליאנית‬
‫צורות נורמליות של נוסחאות בוליאניות‪:‬‬
‫• פסוק ‪(Conjunctive Normal Form) CNF‬‬
‫‪C1 ∧ C2 ∧ … ∧ Cm‬‬
‫‪28‬‬
‫כל ‪ Ci‬נקרא פסוקית ‪ CNF‬וצורתו‬
‫)… ∨ ‪ (l1 ∨ l2‬כאשר ‪ li‬הוא ליטרל‪.‬‬
‫• פסוק ‪(Disjunctive Normal Form) DNF‬‬
‫‪C1 ∨ C2 ∨ … ∨ Cm‬‬
‫כל ‪ Ci‬נקרא פסוקית ‪ DNF‬וצורתו‬
‫)… ∧ ‪ (l1 ∧ l2‬כאשר ‪ li‬הוא ליטרל‪.‬‬
‫בעיות ב‪:NP-‬‬
‫בעיות באלגברה בוליאנית‬
‫• משפט‪ :‬לכל נוסחה בוליאנית יש נוסחת ‪CNF‬‬
‫שקולה וכן נוסחת ‪ DNF‬שקולה‪.‬‬
‫הגדרות‪:‬‬
‫– הצבה של ערכים למשתנים של נוסחה בוליאנית ‪ϕ‬‬
‫תיקרא הצבה מספקת‪ ,‬אם ערך הנוסחה המתקבל‬
‫הוא ‪.1‬‬
‫– נוסחה ספיקה היא נוסחה שיש עבורה הצבה‬
‫מספקת‪.‬‬
‫‪29‬‬
‫בעיות ב‪:NP-‬‬
‫בעיות באלגברה בוליאנית –‬
‫בעיית הספיקות‬
‫• בעיית החיפוש‪ :‬הקלט יהיה נוסחת ‪ .CNF‬הפלט‬
‫הנדרש הוא הצבה מספקת עבור הנוסחה‪.‬‬
‫• בעיית ההכרעה‪:‬‬
‫}‪ ϕ‬ספיקה | ‪SAT = {ϕ ∈ CNF‬‬
‫‪30‬‬
‫בעיות קשות ל‪ NP-‬והמחלקה ‪NPC‬‬
‫בספר‪ :‬פרק ‪18‬‬
‫‪31‬‬
‫הגדרות‬
‫• הגדרה‪ :‬בעיה ‪ A‬תיקרא קשה ל‪(NP-hard) NP-‬‬
‫≤‪.B‬‬
‫∈‪ B‬מתקיים ‪≤pA‬‬
‫אם לכל ‪∈NP‬‬
‫• הגדרה‪ :‬בעיה ‪ A‬תיקרא שלמה ב‪NP-‬‬
‫)‪ (NP-complete‬אם היא שייכת ל‪ NP-‬וגם קשה‬
‫ל‪.NP-‬‬
‫• מחלקת הבעיות השלמות ב‪ NP-‬נקראת ‪.NPC‬‬
‫‪32‬‬
‫הוכחת שייכות של בעיות ל‪NPC-‬‬
‫∈‪ A‬עלינו להוכיח ש‪:‬‬
‫• כדי להוכיח ש‪∈NPC -‬‬
‫‪A∈NP .1‬‬
‫‪A∈NP-hard .2‬‬
‫≤‪ A‬אז‬
‫∈‪ A‬ומתקיים ‪≤pB‬‬
‫• למה‪ :‬אם ‪∈NP-hard‬‬
‫∈‪.B‬‬
‫‪∈NP-hard‬‬
‫∈‪SAT‬‬
‫• משפט קוק‪∈NPC (Steven Cook) :‬‬
‫‪33‬‬
NPC-‫בעיות ב‬
:‫ללא הוכחה‬
‫ – משפט קוק‬SAT •
HAMILTON •
:‫נוכיח בשקפים הבאים‬
(Traveling Salesman Problem) TSP •
IS •
CLIQUE •
(Vertex Cover) VC •
34
‫בעיות ב‪:NPC-‬‬
‫בעיית הסוכן הנוסע‬
‫• הסוכן הנוסע צריך לבצע מסלול העובר דרך ‪ n‬ערים‪ ,‬כך‬
‫שבכל עיר הוא יבקר בדיוק פעם אחת ולבסוף הוא יחזור לעיר‬
‫המוצא )מעגל המילטון(‪ .‬לכל זוג ערים ‪ i,j‬יש מחיר ]‪M[i,j‬‬
‫לנסיעה מ‪ i-‬ל‪) j-‬גרף מכוון שלם עם משקלים על הקשתות(‪.‬‬
‫• בעיית האופטימיזציה‪ :‬בהינתן מטריצה ‪ M‬בגודל ‪ n×n‬של‬
‫מספרים טבעיים‪ ,‬יש למצוא מעגל המילטון "זול" ביותר‪.‬‬
‫• בעיית ההכרעה‪:‬‬
‫‪35‬‬