26
בבבבבבב בבבבבב בNPC בב בבבבבבב לל ללללל לללללל לל לל לללללל לללללל לל לל לללל לל לל לללללל ללללל לל לל לללללל, ללל לל ללל לללללל ללללללל לללללל. ללל לללל, ללללל2 לללללל לללללללל לללללל לל ללל לללללל לללללללל לללל לללללל ללללל לללל לללללל ללללל. ללללל4,5 - ל10 לל לללל לללל. ללל לללללל לל לללל ללללל לללל ללל, ללל ללל לל ללללל ללללללל, לל ללללל לללל ל' ללל לל לללל5 .... בבבבב1 : ללללל ללללDOUBLE-CLIQUE לללל ללל לל לללללG=<V,E ללללל< K . ללללל: ללל לללללל לללל ללל לללללל לללל לל לללללללל לללללK לל ללל. ל"לDOUBLE- CLIQUE לללל לNPC ללללל: ל. ללללל לללללל לNP . לללל ללללל ללללללל לל ללללללללללל לל: לל לללל לל לללל לללללל לללל ללללל לללל, לללל לללללל לללל ללללל ללללל לללללל לל)לללל( ללללללללללK לללללללל.- לללל ללללל לללללל ללללל לללללללללל ל2 לללל לללללללל( ללללללל לללל) ללללללל לללל לל ללל ללללל לללללל ללללל לללK ללללללללל לל"ל לל ללללל. ללללל, ללל ללל לללללללל ללללללK ללל ללללל ללל ללל לללללל. לל ללל לללל ללל לללללללל לללל ללל לללללל לללללל ללללל לללללל לללללללל. לללל ללללל לל לללללל לללללל ללללל. לל ללל ללל לללללל לללθ ( 2K 2 ) לל( K*K ללללל ללל ללללל ללל2 ) לללללל ללל ללללללללללל. לללל ללללל ללללל לNP . ל. ללללל לללללל לNP-HARD . ללללל לללל ללללללל לללל ללללל ללללNPC לללל לללל. לללל לל ללללCLIQUE . לללל ללללללל:CLIQUE ≤ p DOUBLECLIQUE

דוגמאות לשאלות NPC עם פתרונות

  • Upload
    -

  • View
    657

  • Download
    7

Embed Size (px)

Citation preview

Page 1: דוגמאות לשאלות NPC עם פתרונות

עם פתרונות NPC דוגמאות לשאלות ב

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

מבחינת תבנית כדאי להסתכל עליהם.

הן קשות יותר. ממה שהבנתי לא יהיו שאלות ברמה הזו, אבל אני לא יכולה להתחייב, כי10 ו-4,5שאלות ....5במבחן מועד ב' היה את שאלה

: 1 דוגמא

DOUBLE-CLIQUEנגדיר בעיה

.K< ומספר G=<V,Eנתון גרף לא מכוון

כל אחת.Kהשאלה: האם קיימות בגרף שתי קליקות זרות של קודקודים בגודל

NPC שייך לDOUBLE- CLIQUEצ"ל

הוכחה:

.NPנוכיח שייכות לא.נבנה מכונת טיורינג לא דטרמיניסטית כך:

אם הקלט לא תקין המוכנה פשוט תיכנס ללופ, אחרת המכונה תבחר באופן לא קודקודים.Kדטרמיניסטי)תנחש(שתי קבוצות של

הקבוצות זרים )שאין קודקודים משותפים(2בשלב ראשון המכונה תבדוק שהקודקודים ב- הקודקודים הנ"ל הם קליקה. כלומר, לכל זוג קודקודיםKואחר כך לכל קבוצה המכונה תבדוק האם

היא תבדוק שיש צלע ביניהם.Kבקבוצה אם היא תמצא זוג קודקודים שאין צלע ביניהם המכונה תיכנס ללולאה אינסופית.

לאחר בדיקת כל הזוגות המכונה תעצור.

קבוצות( שזה פולינומיאלי.2 זוגות בכל קבוצה ויש K*K )יש θ(2∗K2)סך הכל זמן הבדיקה הוא

.NPולכן הבעיה שייכת ל

לשפה שלנו.NPC . כלומר נראה רדוקציה משפה שידוע שהיא NP-HARDנוכיח שייכות לב.

.CLIQUEנבחר את השפה נראה רדוקציה:

CLIQUE≤pDOUBLE−CLIQUE

נגדיר את הרדוקציה הבאה: נבנה מכונת טיורינג דטרמיניסטית כזו: X. אם Xהמכונה תקבל קלט ( double-clique)בדיקת תקינות קלט, אם הקלט לא תקין התוצאה תהיה משהו שבטוח לא שייך ל

fהוא לא גרף ומספר המכונה תגדיר את ( x DOUBLE CLIQUE שזה בכל מקרה לא יהיה שייך ל5=( פעמיים ותגדיר גרףG< המכונה תשכפל את הגרף G,Kאחרת, אם הקלט תקין, כלומר: בהינתן קלט >

)גרף אחד שמורכב משני העתקים זהים של אותו גרף(G' להיות שני ההעתקים של Gחדש כלומר:

f ( x )=f ( ⟨G , K ⟩ )=⟨ 2∗G , K ⟩

Page 2: דוגמאות לשאלות NPC עם פתרונות

θיצירת ההעתק לוקחת שזה זמן ריצה לינארי בגודל הקלט, ולכן פולינומיאלי. ולכן סך כל זמן הריצה¿של הרדוקציה פולינומי.

נוכיח נכונות הרדוקציה:

x∈CLIQUEצ"ל: 1⇔

f ( x )∈DOUBLE−CLIQUE.(K ומספר G< - הקלט הוא גרף x= <G,K)רק נסמן שמקרה הזה

צד א:

3⇐

x=⟨G , K ⟩∈ IS קיים בגרף G קליקה בגודל K 3⇐

K 3 קיימת קליקה בגודל G בכל העתק של ⇐

קיימות בגרף

G שתי קליקות זרות, כל אחת בגודל 'K )3 )כל אחת בהעתק אחר⇐

f (x)=⟨G ' , K ⟩∈DOUBLE−CLIQUE

צד ב:

3⇐

xCLIQUE לא קיים בגרף G קליקה בגודל K 3⇐

כי ההעתקים לאK' שתי קליקות בגודל G לא קיימות ב

מחוברים, ולכן יכולה להיווצר קליקה רק בקודקודים מהעתק אחד. )ואין שום קליקה שיש בה קודקודים משניהעתקים(

3⇐

f ( x )= ⟨G' ,K ⟩DOUBLE−CLIQUE

כלומר קיבלנו:

CLIQUE≤pDOUBLE−CLIQUE

CLIQUE∈NPC 6.17על פי משפט

3 6.15 ( ועל פי משפט NP שייכת לDOUBLE−CLIQUEולכן על פי חלק א. )⇐

DOUBLE−CLIQUE∈NPC.

Page 3: דוגמאות לשאלות NPC עם פתרונות

: 2 דוגמא

DOUBLE-ISנגדיר בעיה

כל אחת,K של קודקודים, בגודל זרות האם קיימות בגרף שתי קבוצות K< ומספר V,Eנתון גרף לא מכוון >שכל אחת מהן בלתי תלויה.

NPC שייך לDOUBLE-ISצ"ל

הוכחה:

.NPנוכיח שייכות לא.נבנה מכונת טיורינג לא דטרמיניסטית כך:

אם הקלט לא תקין המוכנה פשוט תיכנס ללופ, אחרת המכונה תבחר באופן לא קודקודים.Kדטרמיניסטי)תנחש(שתי קבוצות של

הקבוצות זרים )שאין קודקודים משותפים(2בשלב ראשון המכונה תבדוק שהקודקודים ב- הקודקודים הנ"ל הם בלתי תלויים. כלומר, לכל זוגKואחר כך לכל קבוצה המכונה תבדוק האם

היא תבדוק שאין צלע ביניהם.Kקודקודים בקבוצה אם היא תמצא זוג קודקודים שיש צלע ביניהם המכונה תיכנס ללולאה אינסופית.

לאחר בדיקת כל הזוגות המכונה תעצור.

קבוצות( שזה פולינומיאלי.2 זוגות בכל קבוצה ויש K*K )יש θ(2∗K2)סך הכל זמן הבדיקה הוא

.NPולכן הבעיה שייכת ל

לשפה שלנו.NPC . כלומר נראה רדוקציה משפה שידוע שהיא NP-HARDנוכיח שייכות לב.

.ISנבחר את השפה נראה רדוקציה:

IS≤pDOUBLE−IS

נגדיר את הרדוקציה הבאה: נבנה מכונת טיורינג דטרמיניסטית כזו: הואX. אם Xהמכונה תקבל קלט ( double-is)בדיקת תקינות קלט, אם הקלט לא תקין התוצאה תהיה משהו שבטוח לא שייך ל

fלא גרף ומספר המכונה תגדיר את ( x DOUBLE IS שזה בכל מקרה לא יהיה שייך ל5=( G< המכונה תשכפל את הגרף G,K< שבהינתן קלט >G,Kאחרת, אם הקלט תקין, כלומר: בהינתן קלט >

)גרף אחד שמורכב משני העתקים זהים שלG' להיות שני ההעתקים של Gפעמיים ותגדיר גרף חדש אותו גרף( לאחר מכן המכונה תחבר בין כל הקודקודים שאינם באותו העתק.

θיצירת ההעתק לוקחת θ . הוספת הצלעות בין כל שני קודקודים שאינם באותו העתק לוקחת ¿ (|V|2 ).

θולכן פולינומיאלי. קיבלנו שסך כל זמן הריצה של הרדוקציה הוא (|V|2 שזה פולינומי.(

נוכיח נכונות הרדוקציה:

∋xצ"ל: IS 1⇔

f ( x )∈DOUBLE−IS

.(K< - הקלט הוא גרף וx= <G,Kצד א: )רק נסמן שמקרה הזה

3⇐

x=⟨G , K ⟩∈ IS קיים בגרף G קבוצה ב"ת של קודקודים בגודל K 3⇐

' שתי קבוצות ב"ת זרותG קיימות בגרף

3 )כל אחת נמצאת בהעתק אחר( Kשל קודקודים, כל אחת בגודל ⇐

f (x)=⟨G ' , K ⟩∈DOUBLE−IS

Page 4: דוגמאות לשאלות NPC עם פתרונות

צד ב:

נשים לב שאם קיימת קבוצה ב"ת של קודקודים היא חייבת להיות קבוצה ששייכת רק להעתק אחד! כי חיברנובין כל זוג קודקודים שלא באותו העתק.

3⇐

x IS לא קיימת בגרף G קבוצה ב"ת של קודקודים בגודל K 3⇐

לא קיימת ב- קבוצה ב"ת שלG בכל העתק של

K 3קודקודים בגודל ⇐

' לא קיימת קבוצה ב"ת של קודקודים )כי כל קודקודי הקבוצה חייבים להיות שייכיםG ב

3להעתק אחד( ⇐

K3 קבוצות זרות ב"ת של קודקודים בגודל G' 2לא קיימות ב- ⇐

f (x)Double−IS

כלומר קיבלנו:

IS≤pDOUBLE−IS

IS∈NPC 6.18על פי משפט

3 6.15 ( ועל פי משפט NP שייכת לDOUBLE−ISולכן על פי חלק א' )⇐

DOUBLE−ISשייכת ל NPC.

Page 5: דוגמאות לשאלות NPC עם פתרונות

: 3 דוגמא

DOUBLE-SATנגדיר בעיה

. CNF בצורת Xנתון פסוק

השמות )שונות( מספקות לפסוק.2השאלה: האם קיימות

NPC שייך לDOUBLE-SATצ"ל

הוכחה:

.NPנוכיח שייכות לא. נבנה מכונת טיורינג לא דטרמיניסטית שתבחר באופן לא דטרמיניסטי)תנחש( השמה. כלומר תציב

.FALSE או TRUEבאופן לא דטרמיניסטי לכל משתנה ערך המכונה תבדוק האם ההשמה מספקת, אם ההשמה לא מספקת המכונה תיכנס ללולאה אינסופית. אחרת המכונה תבחר, באופן לא דטרמיניסטי, השמה נוספת שונה מההשמה הראשונה ותבדוק אם

גם היא מספקת.אם כן, היא תעצור. אחרת, המכונה תיכנס ללולאה אינסופית.

θסך כל זמן הבדיקה הוא על פי הניחוש, ואז לעבורFALSE או TRUE כי צריך להציב לכל משתנה ערך ¿.TRUEעל הפסוק מתחילתו עד סופו פעם אחת ולבדוק אם מקבלים בסוף

.NPולכן הבעיה שייכת ל

לשפה שלנו.NPC . כלומר נראה רדוקציה משפה שידוע שהיא NP-HARDנוכיח שייכות לב.

.SATנבחר את השפה נראה רדוקציה:

SAT ≤pDOUBLE−SAT

נגדיר את הרדוקציה הבאה: נבנה מכונת טיורינג דטרמיניסטית כזו: הואX. אם Xהמכונה תקבל קלט ( double-sat)בדיקת תקינות קלט, אם הקלט לא תקין התוצאה תהיה משהו שבטוח לא שייך ל

fפסוק ומספר המכונה תגדיר את ( x DOUBLE SAT שזה בכל מקרה לא יהיה שייך ל5=( וכן פסוקית חדשהq המכונה תוסיף משתנה חדש Xאחרת, אם הקלט תקין, כלומר: בהינתן פסוק

∪q)הנראית כך: q̂ f . ותגדיר פסוק חדש להיות ( (x)=x∩ (q∪ q̂ )

שזה פולינומי.θ(1)הוספת המשתנה והפסוקית החדשה לוקחת

נוכיח נכונות הרדוקציה:

x∈SATצ"ל: 1⇔

f ( x )∈DOUBLE−SAT

צד א:

3⇐

x∈SAT-קיימת ל x 3 השמה מספקת כלשהי⇐

את ערכי ההשמה הזוx ניתן לכל המשתנים בפסוק המקורי

ונקבל השמה מספקת שנייה )יש לשיםq=false ונקבל השמה מספקת אחת, ואת q=TRUEובנוסף נשרשר את

∪q)לב ש q̂ q=false )3 וגם עבור q=TRUE מקבל תמיד ערך אמת, גם עבור (⇐

f קיימות ל (x)שתי השמות

3מספקות ⇐

f (x)∈DOUBLE−SAT

Page 6: דוגמאות לשאלות NPC עם פתרונות

צד ב:

3⇐

x SAT-לא קיימת ל x 3 השמה מספקת⇐

fלא קיימת ל (x) 3 השמה מספקת⇐

f לא קיימות ב (x)שתי

3 השמות מספקות⇐

f (x)Double−SAT

כלומר קיבלנו:

SAT ≤pDOUBLE−SAT

SAT∈NPC 6.12על פי משפט

DOUBLE−SAT 6.15 ( ועל פי משפטNP שייכת לDOUBLE−SATולכן על פי חלק א' ) 3⇐

.NPC שייכת ל

Page 7: דוגמאות לשאלות NPC עם פתרונות

: 4 דוגמא

HISנגדיר בעיה

⌋ האם קיימת בגרף קבוצה בלתי תלויה של קודקודים בגודל K= ומספר V,E> Gנתון גרף לא מכוון >|V|2⌋?

NPC שייך לHISצ"ל

הוכחה:

.NPנוכיח שייכות לא.

⌋נבנה מכונת טיורינג לא דטרמיניסטית שתבחר באופן לא דטרמיניסטי)תנחש( קבוצה של |V|2⌋

קודקודים.

⌋המכונה תבדוק האם |V|2 הקודקודים הנ"ל הם בלתי תלויים. כלומר, לכל זוג קודקודים בקבוצה היא⌊

תבדוק שאין צלע ביניהם.אם היא תמצא זוג קודקודים שיש צלע ביניהם המכונה תיכנס ללולאה אינסופית.

לאחר בדיקת כל הזוגות המכונה תעצור.

θסך הכל זמן הבדיקה הוא ⌋ )יש ¿|V|2⌋*⌊

|V|2 זוגות( שזה פולינומיאלי.⌊

.NPולכן הבעיה שייכת ל

לשפה שלנו.NPC . כלומר נראה רדוקציה משפה שידוע שהיא NP-HARDנוכיח שייכות לב.

.ISנבחר את השפה נראה רדוקציה:

IS≤pHIS

נגדיר את הרדוקציה הבאה: נבנה מכונת טיורינג דטרמיניסטית כך: הוא לאX. אם Xהמכונה תקבל קלט ( HIS)בדיקת תקינות קלט, אם הקלט לא תקין התוצאה תהיה משהו שבטוח לא שייך ל

f המכונה תגדיר את v|<K|גרף, או ש ( x )=Xשזה בכל מקרה לא שייך ל HIS.

קודקודים חדשים. כאשר:|V| = המכונה תוסיף עוד G,K> X>אחרת,בהינתן

K.מתוכם מחוברים זה לזה ואל כל הקודקודים האחרים בגרף

(|V|−K מתוכם לא מחוברים לאף אחד )עומדים בודדים(.(

' להיות הגרף החדש.Gנגדיר את

θיצירת ההעתק לוקחת θ תיקח K. הוספת הצלעות בין כל שני קודקודים מתוך ¿ ((K )2 . וחיבור לכל(

θהצלעות הישנות, ייקח (k )∗¿v∨¿

θובסך הכל שזה פולינומי.¿

נוכיח נכונות הרדוקציה:

∋xצ"ל: IS 1⇔

f ( x )∈HIS

Page 8: דוגמאות לשאלות NPC עם פתרונות

טענה:.(K< - הקלט הוא גרף וx= <G,Kצד א: )רק נסמן שמקרה הזה

3⇐

x=⟨G , K ⟩∈ IS קיים בגרף G קבוצה ב"ת של קודקודים בגודל K כעת, היות הוספנו לגרף . G עוד '

(|V|−K קודקודים שאינם מחוברים לשום צלע- )שהם בטוח קבוצה ב"ת(, הרי שכעת יש לנו קבוצה בלתי(

תלוי של קודקודים בגודל

(¿v∨−K )⏞הקודקודיםהחדשים

+ K⏞תלויה הקבוצההבלתי

=|V|−K+K=¿V∨¿

¿ נקבל שקיימת קבוצה ב"ת בגודל מחצית מהקודקודים: v'∨ ¿2=2∨v∨¿

2=¿v∨¿¿¿

f ( x )=G '∈HIS3⇐

צד ב:

3⇐

x IS לא קיימת בגרף G קבוצה ב"ת של קודקודים בגודל Kכעת, היות ובקבוצה הבלתי תלויה של .

V|−K|) קודקודים יכולים להופיע רק | נצטרךv קודקודים מתוך הקודקודים החדשים, הרי שכדי להשלים ל-|(

קבוצה ב"ת של קודקודים בגודלG קודקודים ישנים בלתי תלויים. ולכן אם לא קיימת בגרף Kלהוסיף לפחות

K :אזי בגרף החדש גודל הקבוצה קטן ממש מ,(¿v∨−K )⏞הקודקודיםהחדשים

+ K⏞קודקודיםישנים

=¿ v∨¿

¿נקבל שלא קיימת קבוצה ב"ת בגודל מחצית מהקודקודים כי: v'∨ ¿2=2∨v∨¿

2=¿v∨¿¿¿:כלומר

f ( x )=G 'HIS

כלומר קיבלנו:

IS≤pHIS

IS∈NPC 6.18על פי משפט

3 6.15 ( ועל פי משפט NP שייכת לHISולכן על פי חלק א' )⇐

HISשייכת ל NPC.

Page 9: דוגמאות לשאלות NPC עם פתרונות

: 5 דוגמא

HCנגדיר בעיה

⌋ האם קיימת בגרף קליקה בגודל K= ומספר V,E> Gנתון גרף לא מכוון >|V|2⌋?

NPC שייך לHCצ"ל

הוכחה:

.NPנוכיח שייכות לא.

⌋נבנה מכונת טיורינג לא דטרמיניסטית שתבחר באופן לא דטרמיניסטי)תנחש( קבוצה של |V|2⌋

קודקודים.

⌋המכונה תבדוק האם |V|2 הקודקודים הנ"ל הם קליקה. כלומר, לכל זוג קודקודים בקבוצה היא⌊

תבדוק שיש צלע ביניהם.אם היא תמצא זוג קודקודים שאין צלע ביניהם המכונה תיכנס ללולאה אינסופית.

לאחר בדיקת כל הזוגות המכונה תעצור.

θסך הכל זמן הבדיקה הוא ⌋ )כי יש ¿|V|2⌋*⌊

|V|2 זוגות( שזה פולינומיאלי.⌊

.NPולכן הבעיה שייכת ל

לשפה שלנו.NPC . כלומר נראה רדוקציה משפה שידוע שהיא NP-HARDנוכיח שייכות לב.

.CLIQUEנבחר את השפה נראה רדוקציה:

CLIQUE≤pHC

נגדיר את הרדוקציה הבאה: נבנה מכונת טיורינג דטרמיניסטית כך: הוא לאX. אם Xהמכונה תקבל קלט ( HC)בדיקת תקינות קלט, אם הקלט לא תקין התוצאה תהיה משהו שבטוח לא שייך ל

f המכונה תגדיר את v|<K|גרף, או ש ( x )=Xשזה בכל מקרה לא שייך ל HC.

קודקודים חדשים. כאשר:|V| = המכונה תוסיף עוד G,K> X>אחרת,בהינתן

(|V|−K מתוכם מחוברים זה לזה ואל כל הקודקודים האחרים בגרף.(

K.)מתוכם לא מחוברים לאף אחד )עומדים בודדים

= להיות הגרף החדש .G' f(x)נגדיר את

תיקחV|−K|. הוספת הצלעות בין כל שני קודקודים מתוך θ(|V|)יצירת ההעתק לוקחת

θ ((|V|−K θ. וחיבור לכל הצלעות הישנות, ייקח (2( (|v|−k )∗¿v∨¿

θובסך הכל שזה פולינומי.¿

נוכיח נכונות הרדוקציה:

x∈CLIQUEצ"ל: 1⇔

f ( x )∈HC

Page 10: דוגמאות לשאלות NPC עם פתרונות

טענה:.(K< - הקלט הוא גרף וx= <G,Kצד א: )רק נסמן שמקרה הזה

3⇐

x=⟨G , K ⟩∈CLIQUE קיים בגרף G קליקה בגודל K כעת, היות הוספנו לגרף . G עוד ' (|V|−K קודקודים(

חדשים שמחוברים לכל הקודקודים - שהם בטוח יכולים להשתתף בכל קליקה, הרי שכעת יש לנו קליקה בגודל

(¿v∨−K )⏞הקודקודיםהחדשים

+ K⏞הקליקההישנה

=|V|−K+K=¿V∨¿

¿ נקבל שקיימת קליקה בגודל מחצית מהקודקודים: v'∨ ¿2=2∨v∨¿

2=¿v∨¿¿¿

f ( x )=G '∈HC3⇐

צד ב:

3⇐

xCLIQUE לא קיימת בגרף G קליקה בגודל K כעת, היות ובקליקה יכולים להופיע רק . (|V|−K )

קודקודים האחרים לא מחוברים לאף אחד(, הרי שכדי להשליםKקודקודים מתוך הקודקודים החדשים )כי ה- ,אזי בגרף החדשK קליקה בגודל G קודקודים . ולכן אם לא קיימת בגרף K| נצטרך להוסיף לקליקה לפחות vל-|

v∨−K¿)גודל הקליקה קטן ממש מ: )⏞הקודקודיםהחדשים

+ K⏞קודקודיםישנים

=¿ v∨¿

¿נקבל שלא קיימת קליקה בגודל מחצית מהקודקודים כי: v'∨ ¿2=2∨v∨¿

2=¿v∨¿¿¿:כלומר

f ( x )=G 'HC

כלומר קיבלנו:

CLIQUE≤pHC

CLIQUE∈NPC 6.18על פי משפט

3 6.15 ( ועל פי משפט NP שייכת לHCולכן על פי חלק א' )⇐

HCשייכת ל NPC.

Page 11: דוגמאות לשאלות NPC עם פתרונות

: 6 דוגמא

IS-CLIQUEנגדיר בעיה

.K< ומספר G=<V,Eנתון גרף לא מכוון

K וגם קבוצה ב"ת של קודקודים בגודל Kהשאלה: האם קיימות בגרף גם קליקה בגודל

NPC שייך לIS- CLIQUEצ"ל

הוכחה:

.NPנוכיח שייכות לא.

Kנבנה מכונת טיורינג לא דטרמיניסטית שתבחר באופן לא דטרמיניסטי)תנחש(שתי קבוצות של קודקודים.

הקודקודים הנ"ל הם קליקה. כלומר, לכל זוג קודקודיםKלקבוצה הראשונה המכונה תבדוק האם היא תבדוק שיש צלע ביניהם. אם היא תמצא זוג קודקודים שאין צלע ביניהם המכונה תיכנסKבקבוצה

ללולאה אינסופית. הקודקודים הנ"ל הם קבוצה ב"ת. כלומר, לכל זוג קודקודיםKלקבוצה השנייה המכונה תבדוק האם

היא תבדוק שאין צלע ביניהם. אם היא תמצא זוג קודקודים שיש צלע ביניהם המכונה תיכנסKבקבוצה ללולאה אינסופית.

לאחר בדיקת כל הזוגות המכונה תעצור.

קבוצות( שזה פולינומיאלי.2 זוגות בכל קבוצה ויש K*K )יש θ(2∗K2)סך הכל זמן הבדיקה הוא

.NPולכן הבעיה שייכת ל

לשפה שלנו.NPC . כלומר נראה רדוקציה משפה שידוע שהיא NP-HARDנוכיח שייכות לב.

.CLIQUEנבחר את השפה נראה רדוקציה:

CLIQUE≤p IS−CLIQUE

נגדיר את הרדוקציה הבאה: נבנה מכונת טיורינג דטרמיניסטית כך: הואX. אם Xהמכונה תקבל קלט ( is-clique)בדיקת תקינות קלט, אם הקלט לא תקין התוצאה תהיה משהו שבטוח לא שייך ל

f המכונה תגדיר את v|<K|לא גרף, או ש ( x )=Xשזה בכל מקרה לא שייך ל IS−CLIQUE.

קודקודים שאינם מחוברים לשום דבר.K עוד G = המכונה תוסיף לגרף G,K> X>אחרת,בהינתן ' להיות הגרף החדשGותגדיר גרף חדש

כלומר:

E'=EV '=V ∪{V n+1 ,V n+2 ,V n+3…,V n+k }

G'=¿V ' ,E '>¿f ( x )=f ( ⟨G , K ⟩ )=⟨G' , K ⟩

θ קודקודים לוקחת Kהוספת שזה זמן ריצה לינארי בגודל הקלט, ולכן פולינומיאלי. ולכן סך כל זמן¿הריצה של הרדוקציה פולינומי.

נוכיח נכונות הרדוקציה:

Page 12: דוגמאות לשאלות NPC עם פתרונות

x∈CLIQUEצ"ל: 1⇔

f ( x )∈ IS−CLIQUE.(K ומספר G< - הקלט הוא גרף x= <G,K)רק נסמן שמקרה הזה

)כי הקודקודים החדשים שהוספנו שלא מחוברים לשום דברK בגודל ISנשים לב שבכל מקרה קיימת בגרף בטוח מהווים קבוצה בלתי תלויה(

צד א:

3⇐

x=⟨G , K ⟩∈CLIQUE קיים בגרף G קליקה בגודל K 3⇐

K 3 בגודל IS וגם K' גם קליקה בגודל G קיים ב⇐

f (x)=⟨G ' , K ⟩∈ IS−CLIQUE

צד ב':

3⇐

xCLIQUE לא קיים בגרף G קליקה בגודל K 3⇐

כי הוספנו רק קודקודים שלאK' אין קליקה בגודל G ב

מחוברים לשום דבר ולא יכולים להשתתף בשום קליקה.

3⇐

f ( x )= ⟨G' ,K ⟩ IS−CLIQUE

Page 13: דוגמאות לשאלות NPC עם פתרונות

: 7 דוגמא

S-CLIQUEנגדיר בעיה

.s וקודקוד K< מספר G=<V,Eנתון גרף לא מכוון

.s המורכבת כולה רק משכנים של Kהשאלה: האם קיימת בגרף קליקה בגודל

NPC שייך לS- CLIQUEצ"ל

הוכחה:

.NPנוכיח שייכות לא.

קודקודים.Kנבנה מכונת טיורינג לא דטרמיניסטית שתבחר באופן לא דטרמיניסטי)תנחש(

– אם יש קודקוד שלא מחוברS הקודקודים האלה מחוברים לקודקוד Kראשית המכונה תבדוק האם

θ(Kהמכונה תיכנס ללולאה אינסופית. ) K הקודקודים הנ"ל הם קליקה. כלומר, לכל זוג קודקודים בקבוצה Kלאחר מכן, המכונה תבדוק האם

היא תבדוק שיש צלע ביניהם. אם היא תמצא זוג קודקודים שאין צלע ביניהם המכונה תיכנס ללולאהאינסופית.

לאחר בדיקת כל הזוגות המכונה תעצור.

θ(Kסך הכל זמן הבדיקה הוא זוגות( שזה פולינומיאלי.K*K )יש (2

.NPולכן הבעיה שייכת ל

לשפה שלנו.NPC . כלומר נראה רדוקציה משפה שידוע שהיא NP-HARDנוכיח שייכות לב.

.CLIQUEנבחר את השפה נראה רדוקציה:

CLIQUE≤pS−CLIQUE

נגדיר את הרדוקציה הבאה: נבנה מכונת טיורינג דטרמיניסטית כך: הואX. אם Xהמכונה תקבל קלט ( s-clique )בדיקת תקינות קלט, אם הקלט לא תקין התוצאה תהיה משהו שבטוח לא שייך ל

f המכונה תגדיר את v|<K|לא גרף, או ש ( x )=Xשזה בכל מקרה לא שייך ל IS−CLIQUE.

ותחבר בינו לבין כל הקודקודיםS עוד קודקוד 'G = המכונה תוסיף לגרף G,K> X>אחרת,בהינתן

Kהאחרים בגרף, בנוסף נגדיר את '=K+1 ותגדיר גרף חדש. Gלהיות הגרף החדש '

כלומר:

E'=E∪ {{V 1 , S '} ,{V 2 , S' }, {V 3 , S ' }…., {V n , S' }

V '=V ∪{S ' }G'=¿V ' ,E '>¿K '=K+1f ( x )=f ( ⟨G , K ⟩ )=⟨G' , K ' , S ' ⟩

θ צלעות לוקחת |v|הוספת קודקוד לוקחת קבוע.והוספת שזה זמן ריצה לינארי בגודל הקלט, ולכן¿

פולינומיאלי. ולכן סך כל זמן הריצה של הרדוקציה פולינומי.

נוכיח נכונות הרדוקציה:

x∈CLIQUEצ"ל: 1⇔

f ( x )∈S−CLIQUE

Page 14: דוגמאות לשאלות NPC עם פתרונות

.(K ומספר G< - הקלט הוא גרף x= <G,K)רק נסמן שמקרה הזה

צד א:

3⇐

x=⟨G , K ⟩∈CLIQUE קיים בגרף G קליקה בגודל K 3⇐

'מחובר לכל הקודקודים האחרים הרי שכלS היות ו

3 והוא עצמו יכול להצטרף לקליקה ' Sקודקודי הקליקה מחוברים ל⇐

K+1' קליקה בגודל G קיים בגרף

s '3המורכבת משכני ⇐

f (x)=⟨G ' , K ⟩∈S−CLIQUE

צד ב':

3⇐

xCLIQUE לא קיימת בגרף G קליקה בגודל K 3⇐

K+1 3' קליקה בגודל G לא קיימת בגרף ⇐

בפרט לא קיים

'.S קליקה שכל קודקודיה שכנים של Gבגרף '

3⇐

f ( x )= ⟨G' ,K ⟩ S−CLIQUE

Page 15: דוגמאות לשאלות NPC עם פתרונות

: 8 דוגמא

G⟩ מכילה את כל הזוגות Almost−Vertex−Coverהשפה , K יש כיסוי קודקודיםG כך שבגרף ⟨

של כל הצלעות למעט צלע אחת. הוכח ש- Kמגודל Almost−Vertex−Cover∈NP−Complete

הוכחה:

.NPנוכיח שייכות לא.

קודקודים.Kנבנה מכונת טיורינג לא דטרמיניסטית שתבחר באופן לא דטרמיניסטי)תנחש(

u)לכל צלע , v נמצאים בקבוצה. v או u המכונה תבדוק שאו (

.1 נמצאים בקבוצה, המכונה תגדיל מונה ב-v ולא uאם לא המכונה תיכנס ללופ אינסופי.1אם בסיום ההרצה המונה גדול מ-

קודקודים( שזה פולינומיאלי.K צלעות, ולכל צלע בודקים E )יש θ(|E|∗K)סך הכל זמן הבדיקה הוא

.NPולכן הבעיה שייכת ל

לשפה שלנו.NPC . כלומר נראה רדוקציה משפה שידוע שהיא NP-HARDנוכיח שייכות לב.

.CLIQUEנבחר את השפה נראה רדוקציה:

Vertex−Cover ≤p Almost−Vertex−Coverנגדיר את הרדוקציה הבאה' נבנה מכונת טיורינג דטרמיניסטית כך:

הואX. אם Xהמכונה תקבל קלט ( s-clique )בדיקת תקינות קלט, אם הקלט לא תקין התוצאה תהיה משהו שבטוח לא שייך ל

f המכונה תגדיר את K<0לא גרף, או ש ( x )=Xשזה בכל מקרה לא שייך ל Almost−Vertex−Cover.

ותחבר ביניהם בצלע אחת. t ו-s עוד שני קודקודים G = המכונה תוסיף לגרף G,K> X>אחרת,בהינתן כלומר:

E'=E∪ {(s , t)}V '=V ∪{s , t }G'=¿V ' ,E '>¿f ( x )=f ( ⟨G , K ⟩ )=⟨G' , K ,S ' ⟩

, ולכן פולינומיאלי. ולכן סך כל זמן הריצה של הרדוקציה פולינומי.הוספת קודקוד וצלע לוקחת קבוע

נוכיח נכונות הרדוקציה:

x∈Vertex−Coverצ"ל: 1⇔

f ( x )∈ Almost−Vertex−Cover.(K ומספר G< - הקלט הוא גרף x= <G,K)רק נסמן שמקרה הזה

צד א:

3⇐

x=⟨G , K ⟩∈Vertex−Cover קיים בגרף G כיסוי קודקודים בגודל K 3⇐

' כיסוי קודקודים בגודלG קיים בגרף

K 3 של כל הצלעות למעט הצלע החדשה⇐

f (x)=⟨G ' , K ⟩∈ Almost−Vertex−Cover

Page 16: דוגמאות לשאלות NPC עם פתרונות

צד ב':

3⇐

xVertex−Cover לא קיים בגרף G כיסוי קודקודים בגודל K 3⇐

' כלשהי שאינה מכוסה בגרףe קיימת צלע

3המקורי ⇐

3 בגרף החדש גם הצלע החדשה לא מכוסה ⇐

צלעות לפחות אינן מכוסות 2 בגרף החדש

3⇐

f ( x )= ⟨G' ,K ⟩ Almost−Vertex−Cover

Page 17: דוגמאות לשאלות NPC עם פתרונות

: 9 דוגמא

NAE-SATנגדיר בעיה

. CNF בצורת נתון פסוק

קיים ליטרל שלא מסתפק. השאלה: האם קיימת השמה מספקת, כך שלכל פסוקית ב-

NPC שייך לNAE-SATצ"ל

הוכחה:

.נראה ש א.

:נגדיר מכונת טיורינג לא דטרמיניסטית המקבלת את

., המכונה מנחשת השמה למשתנים של בהנתן קלט

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

זמן הבדיקה לינארי באורך הקלט )מעבר פעם אחת על הפסוק( ולכן פולינומיאלי.

.נראה רדוקציה פולינומיאלית ב.

(NAE_SAT )בדיקת תקינות קלט, אם הקלט לא תקין התוצאה תהיה משהו שבטוח לא שייך ל Xנבנה מכונת טיורינג כך שבהינתן קלט

f, אם לא, המכונה תגדיר CNFהמכונה ראשית תבדוק האם הוא פסוק בצורת ( x )=x כי אם( Xהוא לא פסוק

CNFאז הוא לא שייך ל NAE_SAT)

= xאחרת אם

.q פסוקית חדשה . ונוסיף ל שלא מופיע ב q חדשה: נגדיר משתנה נבנה נוסחא

זה מכפלת סכומים – בין הליטרלים בפסוקיותCNF. ) לזכור שq את הליטרל בנוסף נוסיף לכל פסוקית ב יש "או" ובין הפסוקיות יש "וגם" – כלומר בכל פסוקית מספיק שליטרל אחד יתקיים, אבל צריך שכל הפסוקיות

. יתקיימו( נחזיר

θסה"כ זמן ריצה: הוספת משתנה ועדכון הפסוקיות לינארי באורך הקלט ולכן פולינומיאלי.¿

1 טענה: ⇔

.

הוכחה:

3 צד א: ⇐

3 השמה מספקת. קיימת ל⇐

, ונקבל השמה מספקת עבור q=1 נגדיר

3( ולכן בכל פסוקית יש ליטרל שלא מסתפק. 0 )שעובר ההשמה הזו שוה qבנוסף לכל פסוקית הוספנו את ⇐

∈NAESAT

Page 18: דוגמאות לשאלות NPC עם פתרונות

SAT 3צד ב: ⇐

נקבל שהפסוקית החדשה לא מסתפקת.q=0 השמה מספקת כעת עבור לא קיימת ל-

.0 שכעת ממילא הוא q נקבל שכל שאר הפסוקיות עדיין לא מסתפקות, כי הוספנו לכל פסוקית את q=1ועבור

Page 19: דוגמאות לשאלות NPC עם פתרונות

10 דוגמא

הוא תת גרףG2 יש להכריע האם G1,G2 . נתונים שני גרפי SUBGRAPH-ISOMORPHISMנגדיר בעיה .G2איזומורפי )נראה אותו דבר( של

SUBGRAPH−ISOMORPHISMצ"ל ∈NPC

SUBGRAPH−ISOMORPHISMא. ∈NP גדול מהגרףG1< המכונה ראשית תבדוק האם הגרף G2=<V2,E2< ו-G1=<V1,E1בהינתן שני גרפים

G2 .אם לא המכונה תיכנס ללופ אינסופי

G2 המתאמת בין הקודקודים של gאחרת, המכונה תבחר באופן לא דטרמיניסטי פונקציה חח"ע לאחר מכן המכונהG1 המכונה תתאים קודוקוד מתוך G2 )כלומר לכל קודוקוד ב-G1לקודקודים של

u)תבדוק האם לכל צלע , v g(u)) הצלע G1 קיימת ב-G2 ב-( , g (v))θסה"כ זמן הבדיקה שזה פולינומיאלי.¿

נראה: ב. לשפה שלנו.NPC . כלומר נראה רדוקציה משפה שידוע שהיא NP-HARDנוכיח שייכות ל

.CLIQUEנבחר את השפה נראה רדוקציה:

CLIQUE ≤p SUBGRAPH-ISOMORPHISM

נגדיר את הרדוקציה הבאה: נבנה מכונת טיורינג דטרמיניסטית כך: המכונה תקבל קלט( SUBGRAPH-ISOMORPHISM )בדיקת תקינות קלט, אם הקלט לא תקין התוצאה תהיה משהו שבטוח לא שייך ל

X אם .X הוא לא גרף ומספר, או ש |v|<K המכונה תגדיר את f ( x )=Xשזה בכל מקרה לא שייך ל

SUBGRAPH-ISOMORPHISM.

להיות גרףG2 כמות שהוא ובנוסף תגדיר גרף חדש G = המכונה תותיר את G,K> X>אחרת,בהינתן קודקודים. Kשהוא קליקה בגודל

fנגדיר את ( x )=¿G ,G 2>¿

θ(Kיצירת הגרף החדש לוקחת קודקודים וחיבור בין כולם( שזה פולינומי.K. )הוספת (2

נוכיח נכונות הרדוקציה:

x∈CLIQUEצ"ל: 1⇔

f ( x )∈SUBGRAPH−ISOMORPHISM

x∈CLIQUE 3צד א: ⇐

K . 3 קליקה בגודל G קיים בגרף ⇐

G2 שהוא קליקה בגודל Kמהווה תת גרף

G 3של ⇐

f ( x )∈SUBGRAPH−ISOMORPHISM

3צד ב: ⇐

xCLIQUE לא קיים בגרף G קליקה בגודל K 3⇐

G2 שהוא קליקה בגודל K לא מהווה תת גרף של G

3⇐

f ( x )= ⟨G ,G 2 ⟩SUBGRAPH−ISOMORPHISM

Page 20: דוגמאות לשאלות NPC עם פתרונות

: 11 דוגמא

S-ISנגדיר בעיה

.s וקודקוד K< מספר G=<V,Eנתון גרף לא מכוון

.s המורכבת כולה רק משכנים של Kהשאלה: האם קיימת בגרף קבוצה בלתי תלויה של קודקודים בגודל

NPC שייך לS- CLIQUEצ"ל

הוכחה:

.NPנוכיח שייכות לא.

קודקודים.Kנבנה מכונת טיורינג לא דטרמיניסטית שתבחר באופן לא דטרמיניסטי)תנחש( אם הקלט לא תקין המכונה תיכנס ללופ אינסופי.

– אם יש קודקוד שלא מחוברS הקודקודים האלה מחוברים לקודקוד Kראשית המכונה תבדוק האם

θ(Kהמכונה תיכנס ללולאה אינסופית. ) הקודקודים הנ"ל הם קבוצה ב"ת. כלומר, לכל זוג קודקודיםKלאחר מכן, המכונה תבדוק האם

היא תבדוק שאין צלע ביניהם. אם היא תמצא זוג קודקודים שיש צלע ביניהם המכונה תיכנסKבקבוצה ללולאה אינסופית.

לאחר בדיקת כל הזוגות המכונה תעצור.

θ(Kסך הכל זמן הבדיקה הוא זוגות( שזה פולינומיאלי.K*K )יש (2

.NPולכן הבעיה שייכת ל

לשפה שלנו.NPC . כלומר נראה רדוקציה משפה שידוע שהיא NP-HARDנוכיח שייכות לב.

.CLIQUEנבחר את השפה נראה רדוקציה:IS≤p S−IS

נגדיר את הרדוקציה הבאה: נבנה מכונת טיורינג דטרמיניסטית כך: הוא לאX. אם Xהמכונה תקבל קלט ( s-is )בדיקת תקינות קלט, אם הקלט לא תקין התוצאה תהיה משהו שבטוח לא שייך ל

f המכונה תגדיר את v|<K|גרף ומספר, או ש ( x )=Xשזה בכל מקרה לא שייך ל IS−S.

ותחבר בינו לבין כל הקודקודיםS עוד קודקוד 'G = המכונה תוסיף לגרף G,K> X>אחרת,בהינתן ' להיות הגרף החדשGהאחרים בגרף,.ותגדיר גרף חדש

כלומר:

E'=E∪ {{V 1 , S '} ,{V 2 , S' }, {V 3 , S ' }…., {V n , S' }

V '=V ∪{S ' }G'=¿V ' ,E '>¿K '=Kf ( x )=f ( ⟨G , K ⟩ )=⟨G' , K ' , S ' ⟩

θ צלעות לוקחת |v|הוספת קודקוד לוקחת קבוע.והוספת שזה זמן ריצה לינארי בגודל הקלט, ולכן¿

פולינומיאלי. ולכן סך כל זמן הריצה של הרדוקציה פולינומי.

נוכיח נכונות הרדוקציה:

Page 21: דוגמאות לשאלות NPC עם פתרונות

∋xצ"ל: IS 1⇔

f ( x )∈S−IS.(K ומספר G< - הקלט הוא גרף x= <G,K)רק נסמן שמקרה הזה

צד א:

3⇐

x=⟨G , K ⟩∈ IS קיים בגרף G קבוצה ב"ת של קודקודים בגודל K 3⇐

'מחובר לכל הקודקודיםS היות ו

s ' 3האחרים הרי שכל קבוצה שהיא מורכבת משכניו של ⇐

K' קבוצה ב"ת של קודקודים בגודל G קיים בגרף

s '3המורכבת משכני ⇐

f (x)=⟨G ' , K ⟩∈S−IS

צד ב':

3⇐

x IS לא קיימת בגרף G קבוצה ב"ת בגודל K 3⇐

'S )כי K' קבוצה ב"ת של קודקודים בגודל G לא קיימת בגרף

3לא יכול להשתתף בשום קבוצה ב"ת כי הוא מחובר לכולם( ⇐

קבוצה ב"ת שכלG בפרט לא קיימת בגרף '

'.Sקודקודיה שכנים של

3⇐

f ( x )= ⟨G' ,K ⟩ S−IS

כי הקודקוד החדש שהוספנו שמחובר לכולםk=K+1לשים לב: אותה בעיה עם קליקה, הכריחה אותנו להגדיר עכשיו תהיהX)כדי שיהיה שכן של כולם( יכול להשתתף בכל קליקה שהיא. ולכן אם קודם הייתה קליקה בגודל

. X+1קליקה בגודל

אם חיברנו קודקוד לכולם הוא בטוח לא יכול להשתתף בשום קליקה שהיא!ISלעומת זאת במקרה של

Page 22: דוגמאות לשאלות NPC עם פתרונות

:1שאלה

הוכח או הפרך:

SAT וידוע: Aנתונה שפה ≤p A 3⇐

A∈NPC.

:2שאלה

הוכח או הפרך:

A≤pSAT 3 וידוע: Aנתונה שפה ⇐

A∈NPC.