עלה לכל קודקוד

VC ≤p MODEST

גרף נקרא צנוע אם הדרגה המקסימלית שלו היא לכל היותר 11. הבעיה "האם ניתן להסיר לכל היותר kk קודקודים כך שהגרף הנותר יהיה צנוע" היא NP-שלמה, ברדוקציה VC≤pMODEST\mathrm{VC}\le_p\mathrm{MODEST}.

הבנייה

על קלט ⟨G,k⟩\langle G,k\rangle עם G=(V,E)G=(V,E):

  1. לכל קודקוד v∈Vv\in V הוסף קודקוד חדש ℓv\ell_v (עלה) וקשת יחידה {v,ℓv}\{v,\ell_v\}.
  2. החזר את הגרף המתקבל G′G' ואת אותו kk.

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

המחשה

בנייה מודרכת

כיסוי קודקודים → גרף צנוע

שלב 1 מתוך 7
⟨G, k = 3⟩ ∈ VC ?צנוע ⇔ כל דרגה ≤ 1
כיסוי קודקודים לגרף צנוע: עלה תלוי על כל קודקוד מקוריגרף המקור G, משולש a, b, c עם קודקוד תלוי d היוצא מ־c, מופיע בצד אחד. בצד השני הגרף G′ תולה עלה קטן על כל אחד מ־a, b, c ו־d. ליד כל קודקוד ששורד מופיע תג דרגה, קודקודים שנמחקו מסומנים בקו חוצה, וההדגשות מראות את הכיסוי U המשמש כקבוצת הסרה, קבוצת הסרה שמבזבזת יחידה על עלה, ואת מפת התיקון שמחליפה את העלה בקודקוד שהוא תלוי בו.G — גרף המקורabcd
קודקוד מקורי מתוך V (עיגול גדול)קשת מקורית מתוך E

נכונות — שני הכיוונים

VC ∈ ⟹ MODEST ∈

נניח ⟨G,k⟩∈VC\langle G,k\rangle\in\mathrm{VC}; אז קיים כיסוי U⊆VU\subseteq V עם ∣U∣≤k|U|\le k. נסיר מ-G′G' בדיוק את UU ונראה שהגרף הנותר צנוע.

יהי ww קודקוד ששרד; נחשב את דרגתו בגרף הנותר.

  • אם w=ℓvw=\ell_v הוא עלה: שכנו היחיד בכלל הוא vv, ולכן דרגתו ≤1\le1. ✓
  • אם w=v∈V∖Uw=v\in V\setminus U: שכניו בגרף הנותר הם העלה ℓv\ell_v, וכן קודקודים u∈V∖Uu\in V\setminus U עם uv∈Euv\in E. אבל UU כיסוי, ולכן לכל קשת uv∈Euv\in E מתקיים u∈Uu\in U או v∈Uv\in U; מכיוון ש-v∉Uv\notin U נובע u∈Uu\in U, כלומר uu הוסר. לכן ל-vv לא נותר אף שכן מקורי, ודרגתו היא בדיוק 11 (העלה בלבד). ✓

לכן כל דרגה בגרף הנותר היא ≤1\le1 — הגרף צנוע — והסרנו ∣U∣≤k|U|\le k קודקודים.

MODEST ∈ ⟹ VC ∈

נניח שקיימת S⊆V′S\subseteq V' עם ∣S∣≤k|S|\le k שהסרתה מותירה גרף צנוע. נבנה ממנה כיסוי של GG.

נחליף עלים בקודקודיהם. נגדיר U=(S∩V) ∪ { v ∣ ℓv∈S }.U=\bigl(S\cap V\bigr)\ \cup\ \{\,v\ \mid\ \ell_v\in S\,\}. כלומר כל עלה ב-SS מוחלף בקודקוד המקורי שהוא תלוי בו. אז U⊆VU\subseteq V ו-∣U∣≤∣S∣≤k|U|\le|S|\le k (ההעתקה אינה מגדילה: כל איבר של SS תורם לכל היותר איבר אחד).

UU כיסוי של GG. תהי uv∈Euv\in E ונניח בשלילה u∉Uu\notin U וגם v∉Uv\notin U. מהגדרת UU נובע u∉S,ℓu∉S,v∉S,ℓv∉S.u\notin S,\quad \ell_u\notin S,\quad v\notin S,\quad \ell_v\notin S . לכן כל ארבעת הקודקודים u,ℓu,v,ℓvu,\ell_u,v,\ell_v שרדו את ההסרה, וכן שרדו הקשתות {u,ℓu}\{u,\ell_u\}, {v,ℓv}\{v,\ell_v\} ו-{u,v}\{u,v\} (קשת שורדת כאשר שני קצותיה שורדים). אז דרגת uu בגרף הנותר היא לפחות 22 — השכנים ℓu\ell_u ו-vv — בסתירה לכך שהגרף הנותר צנוע.

לכן u∈Uu\in U או v∈Uv\in U, כלומר UU כיסוי בקודקודים של GG בגודל ≤k\le k, ומכאן ⟨G,k⟩∈VC\langle G,k\rangle\in\mathrm{VC}.

סיבוכיות הרדוקציה

זמןO(|V| + |E|)
מקוםO(|V| + |E|)
גודל הפלט2|V| vertices, |E| + |V| edges

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

מה זה קונה

הבעיה NP-קשה, וגם ב-NP\mathrm{NP} (העד הוא SS; המאמת מסיר ובודק דרגות), ולכן NP-שלמה. לגרסת המינימיזציה שלה קיים אלגוריתם קירוב ביחס 33.

מלכודות

  • בלי העלים הרדוקציה נשברת. הזהות אינה עובדת: בגרף שהוא קשת בודדת אפשר להסיר 00 קודקודים ולקבל גרף צנוע (דרגה 11), אבל כיסוי בקודקודים דורש 11. העלה הוא בדיוק מה שסוגר את הפער.

  • SS יכולה להכיל עלים. אין להניח ש-S⊆VS\subseteq V — קיבלנו אותה "מהשמיים". החלפת עלה בקודקוד שלו היא מה שמחזיר אותנו ל-VV, ובדיוק כמו ב-VC≤pDS\mathrm{VC}\le_p\mathrm{DS} הגודל רק קטן בהחלפה.

השרשרת

נשענת על

מאיפה זה נקרא

  • 2025"הוכיחו כי בעיית ההכרעה הבאה היא NP-שלמה... רמז: בצעו רדוקציה מ-VC והוסיפו עלה לכל קודקוד."
  • בעיה זו אינה מופיעה בשיעורים כלל; היא הופיעה בבחינה של 2025 יחד עם הרמז המפורש. הבנייה שלמעלה עוקבת אחרי הרמז, וההוכחה כאן היא השלמה מלאה שלו.