בעיית קבוצת קודקודי המשוב
בתורת הגרפים, קבוצת קודקודי משוב היא קבוצת קודקודים בגרף שהסרתם מהגרף תיצור גרף ללא מעגלים[1]. במילים אחרות, כל קבוצת קודקודי משוב מכילה לפחות קודקוד אחד של כל מעגל בגרף.
בעיית קבוצת קודקודי המשוב היא הבעיה הבאה: בהינתן גרף ומס' טבעי k, האם קיימת קבוצת משוב בגרף בגודל k? בעיה זו היא NP-שלמה בתורת הסיבוכיות. זו אחת מ21 הבעיות ה-NP-שלמות של קארפ, הבעיות הראשונות שהוצגו כבעיות NP-שלמות. לבעיה זו יש שימושים רבים במערכות הפעלה, בסיסי נתונים ותכנון שבב אלקטרוני מסוג VLSI.
הגדרה פורמלית
[עריכת קוד מקור | עריכה]בעיית ההכרעה הזו מוגדרת באופן הבא:
- בהינתן הקלט הבא: גרף (מכוון או לא מכוון) ומספר טבעי , ענה על השאלה:
- האם קיימת תת-קבוצה של הקודקודים כך שמתקיימים התנאים הבאים:
- הגרף ללא הקודקודים מהקבוצה הוא חסר מעגלים
כלומר, הגרף שנשאר אחרי הסרת הקודקודים מהקבוצה הוא יער מושרה (גרף ללא מעגלים). לכן, מציאת קבוצת המשוב המינימלית בגרף שקולה למציאת היער המושרה המקסימלי בגרף.
NP-קושי של הבעיה
[עריכת קוד מקור | עריכה]ריצ'רד קארפ הראה בשנת 1972 כי הבעיה בגרף מכוון היא NP-קשה. הרדוקציה שקארפ עשה מראה גם את הNP-שלמות של בעיית קבוצת קודקודי המשוב עבור גרף לא מכוון. בעיית קבוצת קודקודי המשוב יכולה להיפתר בזמן פולינומי בגרפים שדרגתם היא לכל היותר 3[2].
הבעיה של מחיקת הקבוצה הכי קטנה של צלעות בגרף על מנת להפוך אותו לגרף חסר מעגלים שקולה למציאת עץ פורש, מה שיכול להתבצע בזמן פולינומי. לעומת זאת, הבעיה של מציאת צלעות בגרף מכוון, ונקראת בעיית קבוצת צלעות המשוב (אנ'), היא NP-שלמה[3].
אלגוריתם מדויק
[עריכת קוד מקור | עריכה]בעיית הNP-אופטימיזציה המתאימה למציאת גודל של קבוצת קודקודי משוב ניתנת לפתרון בזמן , כאשר הוא מספר הקודקודים בגרף[4]. אלגוריתם זה מחשב יער מושרה מרבי, וכאשר יער כזה מתקבל, המשלים שלו הוא קבוצת קודקודי משוב מינימלית. מספר קבוצות קודקודי משוב מינמליים בגרף חסום על ידי [5]. ניתן עדיין למצוא קבוצת קודקודי המשוב בגרף מכוון בזמן , כש זה מספר הקודקודים בגרף המכוון[6].
אלגוריתם קירוב
[עריכת קוד מקור | עריכה]בעיה זו היא APX-שלמה (נובע ישירות מAPX-שלמות של בעיית כיסוי קודקודים[7]). אלגוריתם הקירוב הטוב ביותר עבור הבעיה עם גרף לא מכוון פותרת את הבעיה עם פרמטר קירוב 2, על סמך משפט Becker-Geiger[8].
יישומים במערכות הפעלה
[עריכת קוד מקור | עריכה]במערכות הפעלה, קבוצת משוב קודקודי משחקת תפקיד מרכזי בחקר שחזור קיפאון (Deadlock). בגרף הwait-for (אנ') של מערכת הפעלה, כל מעגל מכוון מתאים למצב קיפאון. על מנת לפתור את כל מצבי הקיפאון השונים, יש צורך לבטל תהליכים חסומים. קבוצת קודקודי המשוב המינימלית בגרף הזה היא המספר המינימלי של תהליכים שיש לבטל[9].
הערות שוליים
[עריכת קוד מקור | עריכה]- ^ גרף ללא מעגלים הוא גרף שבו לא ניתן להגיע מאף קודקוד לעצמו תוך טיול על צלעות קיימות בגרף
- ^ Ueno, Kajitani & Gotoh (1988); Li & Liu (1999)
- ^ Karp (1972)
- ^ Fomin & Villanger (2010)
- ^ Fomin & Villanger (2010)
- ^ Razgon (2007).
- ^ Dinur & Safra 2005
- ^ Becker & Geiger (1996)
- ^ Silberschatz, Galvin & Gagne (2008)