210 likes | 414 Views
Design and Analysis of Algorithms Recitation 8 Reductions. 2010 Gal Tamir Based on recitations of Liane Lewin-Eytan and Alex Shraer. Clique בעיית . קליק בגרף לא מכוון G=(V, E) הוא תת-קבוצה WV שכל שני צמתים בה שכנים, כלומר W משרה תת גרף של G שהוא מלא.
E N D
Design and Analysis of AlgorithmsRecitation 8Reductions 2010 Gal Tamir Based on recitations of LianeLewin-Eytan and Alex Shraer Design and Analysis of Algorithms, Technion EE
Clique בעיית • קליק בגרף לא מכוון G=(V, E) הוא תת-קבוצה WV שכל שני צמתים בה שכנים, כלומר W משרה תת גרף של G שהוא מלא. • בעיית אופטימיזציה – מציאת קליק בגודל מקסימאלי • בעיית החלטה –בהינתן גרף G ומספר שלם חיובי k, האם קיים קליק ב-G בעל גודל לפחות k ? Clique = {<G, k> | k יש קליק בעל גודל לפחות G ב-} Design and Analysis of Algorithms, Technion EE
Vertex-Cover (VC) בעיית • כיסוי בצמתים של גרף לא מכוון G=(V, E) הוא תת-קבוצה WV כך שלכל קשת (u,v)E מתקיים uW או vW • בעיית אופטימיזציה – מציאת כיסוי בעל גודל מינימאלי • בעיית החלטה – בהינתן גרף G ומספר שלם חיובי k, האם קיים כיסוי בעל גודל לכל היותר k ? VC = {<G, k> | k יש כיסוי בצמתים בעל גודל לכל היותר G ל-} Design and Analysis of Algorithms, Technion EE
תרגום בעיית הקליק לבעיית VC • הגדרה: בהינתן גרף G=(V, E), הגרף המשלים מכיל את הקשתות שאינן ב-E. כלומר: • הרדוקציה: בהינתן קלט לבעיית ה-Clique, הפלט של הרדוקציה יהיה הקלט לבעיית ה-VC. • צריך להוכיח (תקפות): ב-G יש קליק בגודל k אמ"מ ל- יש כיסוי בצמתים בגודל Design and Analysis of Algorithms, Technion EE
הוכחת תקפות: כוון • נניח שב- G יש קליק WV כך ש-|W|k . נראה ש: V\W הוא VC ב- • נתבונן בקשת כלשהי. • מכיוון ש- , לפחות אחד מבין u או v אינו שייך ל-W • למה? • לכן, לפחות אחד מביניהם נמצא ב- V\W. • הקשת (u,v) מכוסה ע"י V\W. • באותו אופן, כל קשת ב- מכוסה ע"י V\W ולכן V\W הוא כיסוי של גודלו הוא: |V\W| |V|-k Design and Analysis of Algorithms, Technion EE
הוכחת תקפות: כוון • נניח של- יש כיסוי בצמתים WV כך ש-|W||V|-k . נראה ש: V\W הוא קליק ב- G. • יהיו u,v V\W שני צמתים כלשהם. כלומר u,vV אבל u,vW. • אין קשת (u,v) ב- • למה? • לכן, • כלומר, בין כל שני צמתים שאינם בכיסוי ב- קיימת קשת ב-G. • V\W הוא קליק ב- G. גודלו הוא: |V\W| k Design and Analysis of Algorithms, Technion EE
Independent Set בעיית • קבוצה בלתי תלויה (Independent Set) בגרף לא מכוון G=(V, E) הוא תת-קבוצה WV שלכל u, v W אין קשת בין u ל- vבגרף. • בעיית אופטימיזציה (maximum independent set) – מציאת קבוצה בלתי תלויה בגודל מקסימאלי • בעיית החלטה –בהינתן גרף G ומספר שלם חיובי k, האם קיימת קבוצה בלתי תלויה בגודל לפחות k ? Independent Set = {<G, k> | k יש קבוצה בלתי תלויה בגודל לפחות G ב-} Design and Analysis of Algorithms, Technion EE
תרגום בעיית הקליק לבעיית הקבוצה הבת"ל • רעיונות ? • הרדוקציה: בהינתן קלט לבעיית ה-Clique, הפלט של הרדוקציה יהיה • צריך להוכיח (תקפות): ב-G יש קליק בגודל k אמ"מ ב- יש קבוצה בלתי תלויה בגודל k • בנוסף, יש להוכיח שהרדוקציה מלאה, וניתנת לחישוב בזמן פולינומי Design and Analysis of Algorithms, Technion EE
הוכחת תקפות: ב- G יש קליק WV כך ש-|W|k • לכל שני צמתים W u, v, מתקיים (u, v)E • לכל שני צמתים W u, v, מתקיים ב- יש קבוצה בלתי תלויה WV כך ש-|W|k Design and Analysis of Algorithms, Technion EE
Subset-Sum בעיית • נתון: קבוצת מספרים שלמים S ומספר שלם t. הבעיה: האם קיימת תת קבוצה S’S שסכום איבריה הוא t? נגדיר את השפה המתאימה: Subset-Sum = {<S, t> | כך ש: S’S קיימת תת קבוצה } • נראה כי ניתן לתרגם את VC לבעיית Subset-Sum • נתחיל עם קלט <G, k> לבעיית ה-VC • נבנה סדרת מספרים שלמים S ומספר שלם t • נוכיח שב-G יש כיסוי בגודל k אמ"מ קיימת תת-קבוצה של S שסכום איבריה t. • בהמשך נגדיר את המספרים הבאים: • מספר xi לכל צומת vi • מספר yj לכל קשת ej • מספר t • רעיון הרדוקציה: אם קיימת תת קבוצה של xi-ים ו-yj-ים שסכומה t, אז ה-xi-ים שנבחרו מתאימים לצמתים בכיסוי, וה-yj-ים שנבחרו מתאימים לקשתות שבדיוק אחד מקצותיהן בכיסוי. בנוסף, גודל הכיסוי הוא בדיוק k. Design and Analysis of Algorithms, Technion EE
v 1 הוא צומת קצה של אחרת G ייצוג הגרף • נייצג את הגרף G בעזרת מטריצה B בגודל x|E||V| באופן הבא: דוגמא: Design and Analysis of Algorithms, Technion EE
S יצירת סדרת מספרים • המספרים xi, yj ו-t ייוצגו בבסיס 4 "משופר" • ספרת ה-MSD(הספרה המשמעותית) תהיה לכל היותר k, והספרות האחרות יהיו בבסיס 4 רגיל • את המספרים נרשום בשורות נפרדות של טבלה • המספרים מיוצרים באופן הבא: • עבור כל צומת viניצר מספרxi כך שספרת ה-MSD שלו היא 1 ואחריה באות |E| הספרות המתאימות לשורה viבמטריצה B המייצגת את G. כלומר, עבור i=0, 1, …, |V|-1, המספר xi הוא: • עבור כל קשת eiניצר מספרyj כך שספרת ה-MSD שלו 0 ו-|E| הביטים התחתונים שלו הם שורה במטריצת הזהות מגודל |E|x|E|. כלומר, עבור j=0, 1, …, |E|-1, המספר yj הוא: • לבסוף, ניצור את t. ספרת ה-MSD של t הוא k, וכל |E| הספרות התחתונות שלו הם 2. כלומר: Design and Analysis of Algorithms, Technion EE
בבסיס 10 בבסיס 4 "משופר" MSD v 1 דוגמא – יצירת המספרים k 1284+1040+1093+1+16+64+256 = 3754 Design and Analysis of Algorithms, Technion EE
תקפות משפט: ל- G יש כיסוי בצמתים WV בגודלk אמ"מ לקבוצה S שמורכבת ממספרי x ו-y כפי שהוגדר יש תת קבוצה שסכומה בבסיס 4 ה"משופר" |E| Design and Analysis of Algorithms, Technion EE
הוכחת תקפות: כוון • נניח של- G יש כיסוי בצמתים WV בגודל k : • נגדיר את :S’ • ניקח כל ןx כך ש-vi בכיסוי W: • וכל yj כך ש : • נראה ש: • MSD: חיבור k הביטים המתאימים ל- נותן את הספרה k שהיא הספרה המובילה של t (בבסיס 4 "משופר") • כל ספרה j<|E| ב-t שווה ל-2, ומתאימה לקשת מסוימת ej. נראה שהסכום במקום ה- j של איברי S’ הוא 2. • W הוא כיסוי בצמתים, לכן לכל ej קיים לפחות מספר אחד , עם "1" במקום ה-j. • אם קיימים שני מספרים כאלה אז סכומם נותן 2 ו- • אחרת - ול-yjיש "1" במקום ה-j. במקרה זה הסכום של ו-yj נותן 2 {yj | W יש בדיוק צומת קצה אחד ב-ej ל- } Design and Analysis of Algorithms, Technion EE
הוכחת תקפות: כוון • נניח שמצאנו תת קבוצה של המספריםS’S שסכום איבריה t. כלומר: • נראה ש-C הוא כיסוי בצמתים בעל גודל k • לכל j<|E| , לכל היותר 3 מספרים עם "1" במקום ה-j (הקשת ej ושני צמתי הקצה שלה), לכן אף פעם אין carry לספרה הבאה • ערך הספרה ה-j ב-t היא 2 • כיוון שהסכום הוא 2, ומתוך המספרים y, רק המספר yjתורם לסכום (ואין carry מהספרה הקודמת), בהכרח יש מספר אחד מתוך ה-x-ים שתורם גם הוא לסכום. מכיוון שבעמודה j יש "1" רק עבור x-ים המתאימים לשני קצוות הקשת ej, קיבלנו שאחד מצמתי הקצה תורם לסכום, כלומר נמצא ב-C. מכיוון שזה נכון לכל j המתאים לקשת , C הוא כיסוי. • ערך ה-MSD ב-t הוא 4, וה-MSD של ה-y-ים הוא 0. לכן בדיוק kx-ים תורמים לסכום. כלומר |C|=k Design and Analysis of Algorithms, Technion EE
Integer-Programming (IP)בעיית • קלט: מטריצת שלמים AZmxn(m שורות, n עמודות) וקטור שלמים b Zm • בעיית החלטה – האם קיים וקטור x Znכך ש: Axb ? IP = {(A,b)| Axb כך ש: x Zn קיים } • בעיית 01-IP (או Binary Programming): 01-IP = {(A,b)| Axb כך ש: x {0,1}n קיים } • במילים אחרות: נתונה מערכת אי שוויונות עם מקדמים שלמים: האם קיים פתרון בו לכל i, xiשלם (או במקרה של 01-IP, {0,1}xi) ? • 01-IP הוא מקרה פרטי של IP שבו {0,1}xi Design and Analysis of Algorithms, Technion EE
תרגום VC לבעיית IP • הרדוקציה: f(<G>,k) = (A,b) כלומר, בהינתן גרף לא מכוון G=(V, E) ומספר טבעי k, נראה כיצד לבנות בזמן פולינומי ב-|G| מטריצת שלמים A בגודל mxn ווקטור שלמים בגודל m, כך שקיים וקטור בינארי x בגודל n המקיים Axb אמ"מ קיים כיסוי בצמתים ב-G שגודלו לכל היותר k • לכל צומת uV יהיה משתנה xu • לכל e=(u,v)E ניצור אי שוויון xu+ xv 1 • בנוסף, נוסיף אי-שוויון שנרשום בצורה הבאה: -x1- x2-…-xn -k • כלומר, n=|V| ו-m=|E|+1 • הרדוקציה פולינומית: הזמן לבנות את מערכת המשוואות המגדירה את A ו-b הוא O(mn) כלומר O(|E||V|) Design and Analysis of Algorithms, Technion EE
הוכחת תקפות כוון 1 • (<G>, k)VC קיימת קבוצת צמתים |W| k המהווה כיסוי • נבנה ממנה פתרון למערכת המשוואות: • קל לוודא שהאי-שוויונות מתקיימים (A, b)01-IP כוון 2 • (A, b)01-IP קיים וקטור x{0,1} שהוא הפתרון. נבנה קבוצת צמתים W: • האי-שוויון אומר שיש לכל היותר k צמתים ב-W • אי שוויון xu+ xv 1 לכל (u,v)E אומר שה-W שבחרנו היא כיסוי חוקי (<G>, k)VC Design and Analysis of Algorithms, Technion EE
Integer Programming • הרדוקציה VC p IP מאד דומה – כל מה שצריך לשנות הוא להוסיף אי שוויונות xu0 ו- 1-xu - לכל uV • 01-IP הוא מקרה פרטי של IP בו יש אילוצים נוספים על ערכי המשתנים ולכן ברור ש: 01-IP p IP Design and Analysis of Algorithms, Technion EE