3# תרגיל בית / סיבוכיות

‫‪ 1‬‬
‫‪ ‬‬
‫סיבוכיות ‪ /‬תרגיל בית ‪#3‬‬
‫אריאל סטולרמן‬
‫)‪(1‬‬
‫)‪(a‬‬
‫‪,‬‬
‫להלן אלגוריתם המקבל כקלט את הזוג‬
‫‪,‬‬
‫)‬
‫גרף לא מכוון( ומחזיר את תת הקבוצה‬
‫דוחה אם לא קיים כזה‪ ,‬המשתמש באלגוריתם הכרעת השפה ‪ Clique‬שנסמנו ‪ .A‬נסמן‬
‫‪.1‬‬
‫‪,‬‬
‫תחילה בדוק האם‬
‫‪.2‬‬
‫לכל‬
‫‪.3‬‬
‫עבור‬
‫המהווה קליק בגודל ‪ k‬בגרף ‪ ,G‬או‬
‫‪ .‬‬
‫‪,…,‬‬
‫‪ .‬אם לא‪ ,‬דחה מיד‪ .‬‬
‫‪ 1‬בצע‪ :‬‬
‫•‬
‫הגדר‬
‫•‬
‫אם כן‪ ,‬זרוק את‬
‫‪ .‬‬
‫•‬
‫אחרת החזר את‬
‫ל‪ V-‬והמשך לאיטרציה הבאה‪ .‬‬
‫‪,‬‬
‫‪,‬‬
‫|‬
‫\ ‪,‬‬
‫\‬
‫‪,‬‬
‫‪ ,‬ובדוק האם‬
‫‪ .‬‬
‫‪ .‬‬
‫מהאיטרציה האחרונה‪ ,‬החזר את‬
‫נכונות‪:‬‬
‫תחילה‪ ,‬ברור כי אם אין ב‪ G-‬קליק בגודל ‪ ,k‬עלינו לדחות מיד‪ .‬אם כן קיים קליק‪ ,‬אנו בודקים לכל קודקוד האם ניתן להסתדר בלעדיו‪ .‬כלומר‪ ,‬האם‬
‫ללא קודקוד זה עדיין יש לנו קליק בגודל ‪ k‬בגרף‪ .‬יתכנו מספר קליקים בגרף‪ ,‬אך כל הקודקודים בהם נתקל לראשונה השייכים לקליקים‪ ,‬האלג'‬
‫יעיף אותם‪ ,‬עד שיהיה מצב בו נותר קליק אחד בגודל ‪ k‬בגרף‬
‫לתשובה ‪ F‬מ‪-‬‬
‫‪,‬‬
‫עבור ‪ i‬כלשהו‪ .‬מנקודה זו ואילך‪ ,‬ברור שהוצאת כל קודקוד מקליק זה תביא‬
‫– וקודקוד זה ישאר לאיטרציה הבאה‪ ,‬וכל קודקוד שאינו בקליק יביא לתשובה ‪ - T‬ויועף‪ .‬לבסוף נותר‬
‫‪ ,‬לאחר‬
‫מעבר על כל הקודקודים‪ ,‬והוא בעל קבוצת קודקודים בגודל ‪ k‬בדיוק שהיא קליק כנדרש‪.‬‬
‫כיוון שלאורך הלולאה מצמצמים את ‪ G‬ולא מוסיפים לו קשתות או קודקודים חדשים‪ ,‬אז ברור שהקליק ב‪-‬‬
‫הוא גם קליק ב‪.G-‬‬
‫זמן ריצה‪:‬‬
‫תחת הנחה שזמן ביצוע אלג' ההכרעה הוא יחידת זמן אחת‪ :‬השלב הראשון לוקח ‪1‬‬
‫| |‬
‫מבצע מספר הסרה כך שסה"כ ההסרות בכל ‪ n‬האיטרציות הוא | |‬
‫; השלב השני רץ על כל אחד מ‪ n-‬הקודקודים ולכל אחד‬
‫; השלב השלישי גם כן ‪1‬‬
‫‪ .‬לפיכך זמן הריצה‬
‫‪ -‬פולי' באורך‬
‫הקלט כנדרש‪.‬‬
‫)‪(b‬‬
‫‪,‬‬
‫להלן אלגוריתם המקבל כקלט את זוג הגרפים‬
‫‪ :‬או דוחה אם לא קיים כזה‪ ,‬המשתמש‬
‫ומחזיר את האיזומורפיזם‬
‫באלגוריתם הכרעת השפה ‪ GraphIsomorphism‬שנסמנו ‪:A‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪,‬‬
‫תחילה בדוק האם‬
‫אם כן‪ ,‬יהיו‬
‫‪ .‬אם לא‪ ,‬דחה מיד‪ .‬‬
‫‪,…,‬‬
‫•‬
‫הסר מ‪-‬‬
‫•‬
‫לכל‬
‫‪,…,‬‬
‫ו‪-‬‬
‫את‬
‫ומ‪-‬‬
‫את כל הקשתות בהם משתתף‬
‫‪ .‬‬
‫בדוק‪ :‬‬
‫• הסר מ‪-‬‬
‫ומ‪-‬‬
‫את‬
‫• בדוק האם‬
‫• אם כן‪:‬‬
‫• אם לא‪ ,‬החזר את‬
‫‪.3‬‬
‫‪ .‬לכל‬
‫‪ :1‬‬
‫‪,‬‬
‫‪,‬‬
‫את כל הקשתות בהם משתתף‬
‫‪ .‬‬
‫‪ .‬‬
‫‪ ,‬ועבור לאיטרציה הבאה של ‪ .i‬‬
‫לקדמותו ועבור לאיטרציה הבאה של ‪ .j‬‬
‫החזר את ‪ .f‬‬
‫‪ ‬‬
‫‪ 2‬‬
‫‪ ‬‬
‫נכונות‪:‬‬
‫ל‪-‬‬
‫תחילה‪ ,‬ברור כי אם אין איזו' בין‬
‫•‬
‫עבור ‪1‬‬
‫‪ ,‬עלינו לדחות מיד‪ .‬אם קיים איזו'‪ ,‬נטען כי המיפוי המתבצע בכל שלב הוא נכון‪.‬‬
‫עבור ‪ j‬כלשהו‪ ,‬המתאים לקודקוד‬
‫‪ :‬ידוע כי קיים איזו' כנדרש‪ ,‬אזי קיים מיפוי‬
‫המתאים‬
‫איזשהו קודקוד‬
‫לו איזומורפית‪ ,‬ולכן הסרת הקודקודים משני הגרפים והקשתות היוצאות מהן בהתאמה אמורות להשאיר את הגרפים הנותרים‬
‫איזומורפים אחד לשני‪ .‬‬
‫•‬
‫נניח נכונות עד ‪ ,k‬ונראה נכונות עד ‪1‬‬
‫‪ :‬באופן דומה‪ ,‬ידוע שהגרפים שהתקבלו עד כה המכילים‬
‫עבור ‪ j‬כלשהו‪ ,‬כך שהסרת‬
‫ולכן קיים מיפוי‬
‫‪,‬‬
‫קודקודים הם איזומורפים‪,‬‬
‫והקשתות היוצאות מהן משני הגרפים בהתאמה תשאיר את שני‬
‫הגרפים איזומורפיים‪ .‬כמו כן‪ ,‬בכל מיפוי מסירים את הקודקוד שמופה ומסמנים אותו‪ ,‬כך שלא יתכן מיפוי נוסף אליו באיטרציות‬
‫הבאות‪ .‬‬
‫התהליך עובר על כל הקודקודים ולכן יגיע לשני הגרפים הריקים‪ ,‬ויתקבל האיזו' ‪.f‬‬
‫זמן ריצה‪:‬‬
‫לפי הנחה השלב הראשון של בדיקת קיום איזו' לוקח ‪1‬‬
‫‪ .‬השלב השני לוקח‬
‫שכן רץ לכל קודקוד ב‪-‬‬
‫‪ ,‬והפעולות שמבצע בכל איטרציה מהירות‪ .‬השלב השלישי מיידי‪ .‬לפיכך זמן הריצה של האלג' הוא‬
‫על )בערך( כל קודקוד ב‪-‬‬
‫ולכן פולי' כנדרש‪.‬‬
‫)‪(2‬‬
‫תהי ‪1‬‬
‫‪|1‬‬
‫‪ ,‬ותהי‬
‫‪ .‬להלן הוכחה ש‪-‬‬
‫‪2‬‬
‫‪:‬‬
‫‪ ,‬אזי קיים פולינום כלשהו ‪ p‬ואלג' ‪ A‬הרץ בזמן‬
‫תחילה נניח כי‬
‫המכריע לכל‬
‫| |( האם‬
‫)‬
‫או לא‪ .‬נבנה אלג' ‪ B‬המכריע את‬
‫‪ :‬בהינתן מספר בינארי כלשהו באורך ‪ ,k‬נבנה ממנו את ייצוגו האונרי ע"י חישוב הייצוג העשרוני שהוא לכל היותר ‪1‬‬
‫השפה‬
‫‪ ,2‬ויצירת‬
‫‪ .(1‬נפעיל את אלג' ‪ A‬על המספר האונרי שחישבנו ונחזיר את התשובה של ‪.A‬‬
‫המספר האונרי ע"י שרשור ‪'1‬ים כמספר שקיבלנו )לכל היותר‬
‫נכונות האלג' ברורה‪ ,‬שכן פועל לפי הגדרת השפה – משחזר מתוך מספר בינארי את ייצוגו האונרי ובודק שייכות ל‪ .L-‬זמן הריצה‪ :‬לכל קלט בינארי‬
‫באורך ‪ ,k‬ייצור ייצוגו האונרי ייקח לכל היותר ‪1‬‬
‫פולינום‪ ,‬יתקבל סדר גודל של‬
‫· ‪2‬‬
‫‪2‬‬
‫כעת נניח כי‬
‫‪ 2‬צעדים‪ .‬הפעלת אלג' ‪ A‬על מספר זה תקח ‪1‬‬
‫‪ 2‬צעדים בזמן הריצה )אם ‪ p‬הוא פולינום מסדר ‪1‬‬
‫ולכן קיים ‪ c‬כך ש‪-‬‬
‫‪2‬‬
‫‪2‬‬
‫‪2‬‬
‫‪ A‬המכריע את ‪ L‬בזמן פולינומיאלי‪ :‬בהינתן קלט אונרי ‪1‬‬
‫בזמן‬
‫‪2‬‬
‫לכל‬
‫)מספר בינארי כך ש‪-‬‬
‫‪log‬‬
‫‪ .‬נבדוק באמצעות‬
‫‪ ,‬נעביר אותו לייצוג בינארי ונקבל מספר בינארי באורך‬
‫‪ ,‬ונחזיר את תוצאת ‪.B‬‬
‫באורך ‪ ,k‬ייצור הייצוג הבינארי ייקח‬
‫כמובן שווה ל‪-‬‬
‫‪2‬‬
‫| |(‪ .‬נבנה אלג'‬
‫נכונות האלג' ברורה‪ ,‬שכן פועל לפי הגדרת השפה – מעביר מספר אונרי לייצוגו הבינארי ובודק שייכות ל‪-‬‬
‫· ‪2‬‬
‫|‬
‫(‪ .‬לפיכך ‪ B‬רץ בזמן‬
‫‪ ,‬כנדרש‪.‬‬
‫‪ ,‬אזי קיים אלג' ‪ B‬המכריע את‬
‫‪ B‬האם מספר זה שייך ל‪-‬‬
‫כלשהו‪ ,‬אז‬
‫‪2‬‬
‫זמן לכל היותר‪ ,‬וכיוון ש‪ p-‬הוא‬
‫‪log‬‬
‫צעדים‪ ,‬ויתקבל מספר בינארי באורך‬
‫‪ .‬זמן הריצה‪ :‬לכל קלט אונרי‬
‫‪ .‬הפעלת אלג' ‪ B‬על מספר זה תקח‬
‫· ‪2‬‬
‫כאשר ‪ 2‬הוא קבוע כלשהו‪ .‬סה"כ קיבלנו כי זמן הריצה הוא‬
‫ולכן‬
‫·‬
‫‪2‬‬
‫וזה‬
‫‪ ,‬כנדרש‪.‬‬
‫)‪(3‬‬
‫ל‬
‫‪ ‬לכל‪ ‬היותר‪ ‬השמה‪ ‬אחת‪ ‬מספקת‪| ‬‬
‫תחילה נניח כי‬
‫‪ .‬להלן הוכחה ש‪-‬‬
‫‪ .‬מתקיים כי‬
‫כיוון ש‪-‬‬
‫‪ ,‬ו‪ -‬ל‬
‫‪ ‬לפחות‪ ‬שתי‪ ‬השמות‪ ‬מספקות‪| ‬‬
‫‪ ,‬ובעיה זו דומה לבעיה ‪ :SAT‬עבור קלט‬
‫‪ ,‬אז מספיק להוכיח ש‪-‬‬
‫‪:‬‬
‫‪.‬‬
‫ניקח כעד שתי השמות מספקות ל‪ , -‬והאלג'‬
‫‪.‬‬
‫המוודא יבדוק שאכן שתי השמות אלה מספקות את ‪ .‬ברור כי העד בגודל פולי' לגודל הקלט‪ ,‬וכי האלג' רץ בזמן פולי' גם כן‪ ,‬ולכן‬
‫לפיכך מתקיים כי‬
‫כעת נניח כי‬
‫‪ ,‬כנדרש‪.‬‬
‫‪ .‬נראה רדוקציה‬
‫‪ :‬בהינתן‬
‫חדש שלא מופיע ב‪ . -‬ברור כי מספר ההשמות המספקות את‬
‫להציב ב‪ -‬את אותה השמה פעם אחת עם‬
‫הצבות מספקות‪ ,‬ולכן גם ל‪ , -‬ולפיכך‬
‫‪ .‬נניח כי‬
‫ולכן‬
‫‪ .‬לפיכך‬
‫מכל שפה ב‪ coNP-‬לשפה ב‪ ,NP-‬ולכן‬
‫‪ ,‬נחזיר את הנוסחה‬
‫כפול מאלו המספקות את‬
‫ופעם שניה עם‬
‫‪ ,‬ולכן‬
‫‪ .‬מכאן מתקיים גם‬
‫‪ ,‬כאשר ‪ y‬הוא משתנה‬
‫כיוון שלכל השמה מספקת‬
‫‪,…,‬‬
‫‪ ,‬אזי ל‪ -‬אין‬
‫‪ .‬כמו כן ברור כי בנית הרדוקציה פולי'‪ .‬נניח כי‬
‫‪ ,‬אזי ל‪ -‬לפחות הצבה מספקת אחת‪ ,‬ולכן ל‪-‬‬
‫של‬
‫ניתן‬
‫לפחות ‪ 2‬הצבות מספקות‬
‫‪ .‬כיוון שמצאנו רדוקציה משפה ב‪ coNPC-‬לשפה ב‪ ,NP-‬אז יש רדוקציה‬
‫ולכן‬
‫‪ ,‬כנדרש‪.‬‬
‫‪ 3‬‬
‫‪ ‬‬
‫)‪(4‬‬
‫‪:‬‬
‫להלן הוכחה לכל ש‪-‬‬
‫‪ ,‬אזי קיימת מכונת ‪ nice‬לא דטרמיניסטית הרצה בזמן פולי' שנסמנה ‪ A‬המקבלת את ‪ .L‬לכל‬
‫תהי‬
‫מתקיים‪ :‬קיים לפחות מסלול‬
‫חישוב אחד במכונה ‪ A‬המחזיר ‪ accept‬בריצה על ‪ .‬כמו כן‪ ,‬כל מסלול שאינו מחזיר ‪ quit‬בהכרח יחזיר ‪ ,accept‬אחרת ישנה סתירה בפלט של ‪ A‬ו‪-‬‬
‫מתקיים באופן דומה שקיים לפחות מסלול חישוב אחד במכונה ‪ A‬המחזיר ‪ ,reject‬וכל מסלול‬
‫‪ A‬לא מקבלת את ‪ L‬בסתירה להנחה‪ .‬לכל‬
‫שאינו מחזיר ‪ quit‬בהכרח יחזיר ‪ reject‬מאותם שיקולים‪ .‬כיוון ש‪ A-‬פולי'‪ ,‬אז לכל קלט‬
‫( נובע ש‪-‬‬
‫כלשהו‪ .‬מהחלק הראשון )לכל‬
‫לפיכך מתקיים ש‪-‬‬
‫תהי‬
‫‪ ,‬ומהחלק השני )לכל‬
‫‪.‬‬
‫( נובע ש‪-‬‬
‫‪ ,‬כנדרש‪.‬‬
‫אז קיימת מכונה ‪ A‬לא דטר' הרצה בזמן פולי' המקיימת‪ :‬לכל ‪0,1‬‬
‫‪ .‬כיוון ש‪-‬‬
‫ל‪ A-‬לקבל‬
‫כך ש‪-‬‬
‫| |‪ A ,‬רצה בזמן‬
‫עבור ‪ p‬פולינום‬
‫‪ .‬כיוון ש‪-‬‬
‫ולכן קיימת מכונה ‪ B‬לא דטר' ופולי' המקיימת‪ :‬לכל‬
‫אז‬
‫הגורמת ל‪ B-‬לקבל‬
‫קיימת בחירה אי‪-‬דטר' הגורמת‬
‫‪0,1‬‬
‫קיימת בחירה אי דטר'‬
‫‪ .‬נשים לב כי בכל אחת מהמכונות יתכנו מספר מסלולים מקבלים עבור קלט ‪ ,‬וכי אם המכונה לא אמורה‬
‫לקבל את הקלט‪ ,‬כל מסלול בה ידחה‪.‬‬
‫‪0,1‬‬
‫נבנה את המכונה ‪) C‬לא דטר'( הפועלת באופן הבא על קלט‬
‫‪ :‬מריצה עליו את ‪ A‬ו‪ B-‬במקביל )באופן לא דטר'(‪ ,‬כאשר ‪ A‬מוגדרת להחזיר‬
‫‪ accept‬אם מקבל ו‪ quit-‬אחרת‪ ,‬ו‪ B-‬מוגדרת להחזיר ‪ reject‬אם מקבלת ו‪ quit-‬אחרת‪ .‬נסמן את זמני הריצה )של כל מסלול חישוב לקלט בגודל ‪(n‬‬
‫ושל ‪ B‬ב‪-‬‬
‫של ‪ A‬ב‪-‬‬
‫‪ ,‬כאשר ‪ p,q‬פולינומים כלשהם‪ .‬מתקיים‪ :‬אם‬
‫‪ ,‬כל מסלולי החישוב של ‪ B‬יוציאו ‪ ,quit‬ויהיה לפחות מסלול‬
‫חישוב אחד של ‪ A‬שיוציא ‪) accept‬שאר המסלולים יוציאו ‪ accept‬אם מקבלים או ‪ quit‬אם לא(‪ .‬באופן דומה אם‬
‫יוציאו ‪ ,quit‬ויהיה לפחות מסלול חישוב אחד של ‪ B‬שיוציא ‪ .reject‬זמן הריצה של כל מסלול חישוב ב‪ C-‬הוא‬
‫פולי'‪ .‬לפיכך ‪ C‬היא מכונה מסוג ‪ nice‬המקבלת את ‪ L‬ולכן‬
‫‪ ,‬כל מסלולי החישוב של ‪A‬‬
‫‪max‬‬
‫‪,‬‬
‫‪ ,‬וזה הרי‬
‫כנדרש‪.‬‬
‫)‪(5‬‬
‫להלן הוכחה לכך ש‪-‬‬
‫‪ ‬לא‪ ‬ספיקה‪| ‬‬
‫‪ ‬ספיקה‪ ‬ו‬
‫תחילה נוכיח כי‬
‫‪,‬‬
‫‪,‬‬
‫‪,‬‬
‫‪ :‬נגדיר‬
‫ניקח כעד השמה מספקת ל‪-‬‬
‫היא ‪-DP) DPC‬שלמה(‪:‬‬
‫|‬
‫והאלג' המוודא יבדוק ש‪-‬‬
‫‪ .‬ברור כי שפה זו היא ‪ :NPC‬בהינתן‬
‫‪,‬‬
‫אכן מסתפקת מהשמה זו )וש‪-‬‬
‫ואורך העד פולי'‪ ,‬ולכן השפה ב‪ .NP-‬כמו כן ישנה רדוקציה מיידית‬
‫|‬
‫‪,‬‬
‫‪,‬‬
‫ברור כי‬
‫‪ .‬לפיכך הוכחנו‬
‫‪ ,‬ובאופן דומה ניתן להוכיח ש‪-‬‬
‫‪ ,‬ולכן‬
‫‪,‬‬
‫‪ ,‬כלומר קיימות‬
‫כך ש‪-‬‬
‫‪ ,‬כי‬
‫‪,‬‬
‫‪ .‬נראה שקיימת רדוקציה‬
‫יהיו‬
‫‪,‬‬
‫‪ ,‬וברור כי‬
‫רדוקציות‬
‫אלו‬
‫בהתאמה‪,‬‬
‫אזי‬
‫לכל‬
‫‪ :‬כיוון ש‪-‬‬
‫אזי‬
‫אזי‬
‫‪ ,‬כי‬
‫ניתן‬
‫להחזיר‬
‫את‬
‫‪ ,‬מהגדרת ‪ SAT­UNSAT‬כחיתוך ‪ SAT­CNF‬עם ‪.CNF­UNSAT‬‬
‫כמו כן זמן הריצה של הרדוקציה הוא חיבור זמני הריצה של ‪ f‬ו‪ g-‬שהן פולי' כמוכח לעיל‪ .‬לכן לכל‬
‫‪ ,‬כנדרש‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫כפי שהוכח לעיל‪ .‬כמו כן כיוון ש‪-‬‬
‫‪.‬‬
‫ולכן‬
‫‪,‬‬
‫‪ -‬ברור‬
‫‪.‬‬
‫באופן דומה נגדיר‬
‫תהי‬
‫‪,‬‬
‫נחזיר את הקלט‬
‫אמ"מ קיימת ל‪ -‬הצבה מספקת ו‪ -‬היא נוסחת ‪ CNF‬אמ"מ‬
‫שרדוקציה זו פולי' ושמתקיים‪:‬‬
‫כי‬
‫‪ :‬לכל קלט‬
‫היא נוסחת ‪ .(CNF‬ברור כי הבדיקה‬
‫קיימת רדוקציה פולי' ל‪,SAT­UNSAT-‬‬