נאמר כי קיימת רדוקציה מבעיה לבעיה אם אפשר לפתור את על ידי גישה לאלגוריתם שפותר את .
רדוקציית קארפ
תהיינה בעיות הכרעה. רדוקציית קארפ מ ל הינה פונקצייה שניתנת לחישוב בזמן פולינומי ומקיימת
טרנזיטיביות של רדוקציות קארפ
רידוקציות בין 3 בעיות הן טרנזיטיביות כלומר אם קיימת רידוקציית קארפ מ וריקודציית קארפ מ אז קיימת רידוקציית קארפ
הערה
אם יש רדוקציית קארפ מ ל יש גם רדוקציית קוק מ ל שכן נוכל לכל לחשב ולבדוק האם
משפט: אם וכן יש רדוקציית קארפ מ ל אזי . הוכחה: נבנה את האלגוריתם ל בהינתן קלט
חשב
החזר
IS ו 3-SAT
נבנה רידוקצייה קארפ מבעיות ההכרעה של 3-SAT ל IS כלומר
כדי להוכיח שקיימת רידוקצייה כזאת נרצה למצוא פונקצייה חשיבה פולינומית שתקיים
נתאר את הרידוקצייה באמצעות דוגמה על הנוסחה
נבנה את באופן הבא:
כל שלישייה תהווה שלושה קודקודים שכולם מחוברים אחד לשני עם קשת.
בין כל ליטרל נעביר קשת לשלישה שלו אם קיימת כזאת.
כך למשל עבור הנוסחה הנ״ל נקבל
וניתן לראות שקיימת השמה מספקת מהצורה שזאת גם קבוצה בלתי תלויה של קודקודים.
תיאור הרידוקציה (קלט: ב )
נבנה גרף ומספר באופן הבא:
כל מופע של ליטרל ב יהיה קודקוד ולכן מספר הקודקודים ב הוא מספר הפסוקיות כפול .
הקשתות ב יהיו בין כל הליטרלים תחת אותה הפסוקית ובין כל ליטרל ושלילתו. מהווה את מספר הפסוקיות ב
הוכחה נכונות:
נרצה להוכיח שאם ספיקה אז ובנוסף נוכיח את הcp של הכיוון השני כלומר לא ספיקה אז. .
יהי ספיקה אז נוכיח שבגרף שאנחנו בונים יש בגודל .
אם היא ספיקה אז בכל פסוקית יש לפחות ליטרל אחד שמקבל בכל פסוקית. נוכל לבחור ליטרל אחד בידיוק מכל פסוקית שקיבל והקודקודים שנבחרו מהווים קבוצה בת״ל בגודל מספר הפסוקיות. הקבוצה הזאת היא בת״ל כי לא ייתכן שבכל פסוקית ליטרל ושלילתו יהיו ולכן מאיך שבנינו את הגרף בין כל הקודקודים האחרים כשכל אחד מפסוקית אחרת לא תהיה קשת.
אם מכילה קבוצה בת״ל בגודל קבוצה זאת חייבת לקחת בידיוק קודקוד אחד מכל עמודה (שקול לפסוקית) וכל שנשאר לעשות זה להציב True עבור הליטרלים שבחרנו.
כמעט קליקה
נאמר שקבוצת קודקודים בגרף היא כמעט קליקה אם יש קשתות בין כל זוג קודקודים ב למעט אחד.
נגדיר את בעיית ההכרעה
נרצה לבנות רידוקצייה קארפ מ Clique ל Almost-Clique באופן הבא:
בהנתן גרף נבנה כך ש
נבנה זאת על ידי
ויתקיים
כלומר הוספנו שתי קודקודים וחיברנו אותם עם כל הקודקודים בגרף הישן.
נוכיח שאם אחד הוא קליקה אז השני הוא כמעט קליקה.
נניח ש הוא קליקה ונסמן ב את הקליקה ב . לפי הבנייה ברור כי הוא כמעט קליקה בגודל שכן אין קשת בין הקודקודים שהוספנו.
כעת נניח ש היא כמעט קליקה ולכן קיימת כמעט קליקה בגודל .
אם שתי הקודקודים שהוספנו שייכים ל אז הקשת החסרה היא בהכרח ולכן כשנוריד את הקודקודים האלו נקבל קליקה בגודל ב .
אם זה לא המצב, קיימים שני קודקודים אחרים שאין בינהם קשת ולכן נוכל פשוט להוריד את את אחד מהם ביחד עם הקודוקדים שהוספנו אם צריך ונקבל שוב קליקה.
הבחנה
לכל בעיית הכרעה יש רדוקציית קוק ל
לא לכל בעיית הכרעה יש רדוקציית קארפ ל למשל אם היא קבוצת כל הקלטים ו
קליקה ו IS
נבנה רידוקציית קארפ מ ל באופן הבא:
בהינתן קלט ל נבנה קלט ל כך של
באופן הזה מתקיים ש כי קיימת קבוצה בת״ל בגודל ולכן
ולכן בהכרח קיימת קליקה בגודל ב .
הכיוון השני זהה לחלוטין.
סגירות לרדוקציית קארפ
טענה:
המחלקה סגורה לרדוקציית קארפ (כלומר אם ויש רדוקציית קארפ מ ל אז גם ) והמחלקה לא סגורה לרדוקציית קארפ.
מסקנה: אם אזי .
טענה:
המחלקה סגורה לרדוקציית קארפ.
יהי לכן קיים מוודא ופולינום כך ש:
נניח כי יש רדוקציית קארפ מ ל כלומר קיימת פונקציה שניתנת לחישוב בזמן פולינומי ומקיימת
נגדיר מוודא עבור אשר מקבל זוג מחשב את מחזיר את תשובת המוודא על .
האלגוריתם של הינו פולינומי כי ו רצים בזמן פולינומי , נסמן את הפולינום החוסם את כ ויתקיים