בעיות חיפוש והכרעה

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

נתעסק בשתי סוגי בעיות

  1. בעיות חיפוש - מבקשות פתרון כלשהו (יכול להיות כמה פתרונות תקינים אבל צריך להחזיר רק אחד)
  2. בעיות הכרעה - מספקות פתרון חד משמעי - true/false

ונענה על השאלה איך ממדלים אותם ומה הקשר בינהם.

בעיות קנוניות

בעיות חיפוש מפורסמות שילוו אותנו כאשר נרצה למדל בעיות חיפוש נוספות.

3-COL

נתון גרף G=(V,E) ונרצה למצוא צביעה של קודקודי G בשלושה צבעים ללא קשת ״מונוכרומטית״ כלומר לא קיימת קשת ששני הקצוות שלה צבועים באותו הצבע.

Pasted image 20230318173512.png|300
למשל זה גרף שלא ניתן לצבוע כל קשת באופן הנ״ל

3-SAT

נתונה נוסחה בוליאנית בצורה 3CNF נסמנה ρ והמכילה {Xi} משתנים בוליאנים. נרצה למצוא השמה למשתנים שנותנת השמה מספקת כלומר המחזירה true
נזכיר שנוסחה בצורה 3CNF היא נוסחה מהצורה

(X1X2X3)(X4X5X6)

כלומר נוסחה שעוטפת 3 משתנים בוליאניים בפסוקיות או וכל קבוצה של 3 או פחות מחוברת לקבוצה אחרת עם וגם. (נשים לב ש Xi יכול להיות גם מהצורה Xi כלומר המשלים)

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

ρiρi

מציאת מסלול בגרף

עבור גרף G=(V,E) וזוג קודקודים u,vE נרצה לדעת האם קיים בינהם מסלול.

Independent Set

בהינתן גרף לא מכוון ומספר k נרצה לבדוק האם יש בגרף k קודקודים ללא אף קשת בינהם (קבוצה בלתי תלויה)

Pasted image 20230325151424.png|300

מידול בעיות חיפוש

נתאר בעית חיפוש על ידי יחסים
יחס הוא אוסף של זוגות

R={(x,y)  |  (x,y)R}

כאשר

R{0,1}×{0,1}

ו x מייצג בעיה כלשהי וy הוא הפתרון עבורה.

למשל עבור בעיית ה 3col

R3col={(G,I)}

I היא צביעה חוקית של G

סימון: R(x) יהווה את קבוצת אוסף הפתרונות של x קלט כלשהו כלומר

R(x)={y  |  (x,y)R}

אלגוריתם לפתרון בעיית חיפוש

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

כלומר לפתור בעיית חיפוש זה כמו להגיד שלכל x{0,1}

בעיות הכרעה

בעיות שהתשובה עליהן היא true/false ואותם ממדלים על ידי קבוצות.

S{0,1}S={x  |  x has a certain property}

כלומר קבוצת כל הקלטים שמחזירים true עבור הבעיה שלנו.

למשל

S3col={G|  G has a legit coloring}

אלגוריתם A פותר בעית הכרעה S:

A(x)=1xS

סיבוכיות זמן

עבור מכונת טיורינג M בעלת סרט בודד נסמן SM(x) - מספר הצעדים ש M רצה על קלט x עד שעוצרת (אם לא עוצרת אז SM(x)=) .
כדי למדוד יעילות וסיבוכיות נגדיר עבור אלגוריתם M

TM:NN

פונקציית זמן הריצה של M שמקיימת

TM(n)=max|x|=n{SM(x)}

כלומר הזמן המקסימלי הדרוש כדי להריץ את את האלגוריתם M על קלט באורך n.

מה ייחשב יעיל?
״פולינומי״ - החישוב של M יקרא ״יעיל״ אם קיים פולינום P(.) כלשהו כך שלכל n מתקיים

TM(n)P(n)

מצב זה נקרא סיבוכיות זמן פולינומית

אלגוריתם לא יהיה יעיל אם לא קיים פולינום כזה למשל עבור סיבוכיות מעריכית כמו 2n .

הבחנה

אלגוריתם יעיל הוא אלגוריתם שרץ בזמן פולינומי לאורך הקלט שלו למשל אם הקלט הוא x,y אז האלגוריתם צריך לרוץ בזמן P(x+y)

מחלקות של בעיות חיפוש

נרצה בתוך עולם של בעיות החיפוש למצוא את קבוצת בעיות החיפוש שיש להן אלגוריתם יעיל שמוצא פתרון. נסמן את קבוצה זאת כ PF - polynomial find. יתקיים עבורו ש

RPF (R זאת בעיית חיפוש) אם:

(x,y)R:|y|PR(|x|)

כלומר אורך הפולט הוא פולינומי לאורך הקלט.

הבחנה

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

מחלקה חשובה נוספת של בעיות חיפוש נקראת PC שמתארת בעיות שוידוא פתרון ניתן לעשות ביעילות. polynomial check. במקרה זה, R3colPC . באופן פורמלי יותר RPC אם R חסום פולינומית וקיים אלגוריתם פולינומי A כך שלכל זוג איברים (x,y) יתקיים A(x,y)=1(x,y)R.

שאלה: האם PFPC ?
אינטואיטיבית נראה שכן אבל בפועל זה לא המצב.
אם כן , ישנו RPF ושמקיים RPC ולכן אין הכלה. ההסבר ללמה זה נכון היא שבאלגוריתם וידוא פתרון לפעמים לאמת פתרון קשה מאוד יהיה יותר מורכב מלמצוא אותו. לדוגמה :

R={(m,x,0)  |  x{0,1}  ,  m is turing machine}{(m,x,1)  |  x{0,1}  ,  m is turing machine that accept x}

RPF עבור m,x תמיד 0 היא תשובה נכונה כי זה איחוד של כל הקלטים עם 0 וקלטים תקינים עם 1.

RPC היא בעצם בעיה הדורשת מאיתנו לבדוק האם m עוצרת על x שזאת בעיה לא כריעה.

הבחנה

לא ידוע האם PCPF

מחלקות של בעיות הכרעה

מהן המקבילות של PC,PF בעולם של בעיות הכרעה?

כלומר

V={y{0,1}:V(x,y)=1xSy{0,1}:V(x,y)=0xS

סך הכל, נגדיר מחלקה של בעיות הכרעה שניתנות לווידוא כ NP ויתקיים SNP אם קיים ל S מוודא פולינומי מסוג NP :
כלומר אם קיים מוודא VS() ופולינום PS() כך ש

xS|y|PS(|x|):VS(x,y)=1xS|y|PS(|x|):VS(x,y)=0

ו VS הינו אלגוריתם שזמן ריצתו הוא פולינומי ב |x| .

נשים לב

אומנם אמרנו ש PC היא המקבילה של NP ומתקיים PFPC אבל יתקיים ש PNP בגלל ה עד הריק, לכל SP יש אלגוריתם פולינומי AS שמכריע את S ויתקיים ש S כזו היא ב NP כי נוכל להגדיר מוודא פולינומי באופן הבא VS(x,y)=AS(x) כלומר הוא מתעלם מהעד ומכריע רק לפי הקלט.

משפט: לכל בעית חיפוש R ניתן להגדיר בעית הכרעה מתאימה SR={ x | y:(x,y)R} ובפרט מתקיים RPFSRP .

בעיית קליקה

יהי G=(V,E) גרף לא מכוון.
קבוצת קודקודים SV נקראת ״קליקה״ אם לכל u,vS יש קשת בין u ל v

Pasted image 20230319193616.png|300

נגדיר את בעיית החיפוש הבאה

R4Clique={(G,S) |S is a clique with size 4 in G }

נרצה להראות ש R4CPF . כלומר לבנות אלגוריתם שמוצא פתרון בזמן פולינומי לגודל של S . ראשית נשים לב שהיחס עצמו חסום פולינומית כי לכל (G,S) ביחס מתקיים |S||G| . כעת נוכל לבנות את האלגוריתם

A(G):
	create S with 4 vertex
	for all u,v in S 
		if (u,v) not in E
			return NULL
		return S 

זה האלגוריתם הנאיבי ביותר ולכן ברור שהוא פותר את הבעיה. הוא גם פולינומי כי מספר תתי הקבוצות בגודל 4 הוא (|V|4)|V|4.

נרחיב את הבעיה לבעיה כללית יותר

RkClique={((G,k),S) |S is a clique with size at lest k in G }

כעת נרצה לבדוק האם היחס הזה גם שייך ל PF . במקרה הזה מתקיים שהאלגוריתם מהתרגיל הקודם אינו פולינומי כי נקבל שנרצה לבנות את תתי הקבוצות בגודל k הינו

(|V|k)(|V|k)k

שבהתאם ל k יכול להיות אקספוננציאלי לגודל הקלט למשל אם k=|V|2 נקבל שזמן הריצה יהיה גדול או שווה ל 2|V|2 .

(|V||V|2)|V|2=2|V|2

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

האם RkCPC ? כן
בהינתן ((G,k),S) האלגוריתם יבדוק אם |S|k ושלכל u,vS מתקיים {u,v}E אם הבדיקות עברו בהצלחה יחזיר 1 אחרת 0. כעת יותר קל לאמת כי אנחנו מביאים איזשהו ״עד״ כמו שאמרנו. זמן הריצה יהיה חסום על ידי

(|S|2)|S|2|G|2

בעיית composite

נגדיר את בעיית ההכרעה הבאה

composite={nN | n is not prime}

נרצה להראות שהבעייה שייכת ל NP . אכן נגדיר

V(n,k)
	if 1<k<n AND n mod k == 0 
		return 1
	return 0

האלגוריתם אכן מקיים אי שלמות ונאותות עבור composite :

ncomposite2kn1:V(n,k)=1

אחרת אם הוא לא שייך בוודאי שאין לו מחלק בתחום הזה כי הוא ראשוני

והוא בהחלט פולינומי כיוון שגודל ה״עד״ חסום בגודל הקלט.

סיכום: סוגי מחלקות

חיפוש :

  1. מציאה PF קבוצה של יחסים R חסומים פולינומית כך שלכל R קיים אלגוריתם פולינומי שמוצא פתרון כלשהו
  2. ווידוא PC קבוצה של יחסים R חסומים פולינומית כך שלכל R קיים אלגוריתם פולינומי שמקבל (x,y) ומוודא שהוא אכן שייך ל R
    הכרעה :
  3. מציאה P קבוצה של S בעיות כך שלכל בעיה קיים אלגוריתם פולינומי שמכריע אותה כלומר האם איבר שייך לקבוצה או לא.
  4. ווידוא NP קבוצה של S כך שלכל בעיה קיים מוודא פולינומי VS

הכלה של המחלקות

הראנו אם כן ש PFPC וש PNP .
מה לגבי: PCPF ו NPP ?

אם כן ההכלה של אחד בשני אינה כה ברורה אבל נוכל לטעון את הטענה הבעיה

PCPFNPP

הוכחה:
: נניח PCPF ונרצה להראות ש NPP .
תהי SNP כלומר קיים VS פולינומי כך ש

xSy:|y|P(|x|):VS(x,y)=1

נגדיר

RS={(x,y)  |  VS(x,y)=1}

RS אכן חסום פולינומית כי מוגדר לפי הזוגות שהמוודא מקבל ולפי הגדרה y חסום פולינומית ל x המתאים לו. כמו כן VS הוא אלגוריתם פולינומי ולכן RSPC .

מההנחה ש PCPF מתקיים RSPF ולכן קיים אלגוריתם פולינומי ARS שמקיים

ARS(x)≠⊥↔RS(x)y:|y|P(|x|):VS(x,y)=1xS

לכן נוכל להגדיר AS(x) אלגוריתם פולינומי ל S על ידי

AS(x)={1ARS(x)≠⊥0ARS(x)=⊥

ומתקיים ש SP כדרוש.

: נניח NPP וצריך להראות ש PCPF.
יהי RPC נרצה להראות שהוא גם ב PF
אם כן, עבור R מתקיים שישנו אלגוריתם פולינומי AR כך ש

(x,y)RAR(x,y)=1

אם כן, נגדיר

SR={x  |  y:|y|P(|x|):(x,y)R}

מתקיים SRNP כי אפשר להשתמש ב AR בתור המוודא הפולינומי ל SR כי מהגדרתו נובע ש xSR אמ״מ AR(x,y)=1 כאשר קיים y שכזה חסום פולינומי באורכו של x.

מההנחה מתקיים ש SRP כלומר קיים ASR אלגוריתם שמכריע את SR

ASR(x)=1xSR

כעת , נגדיר בעיה שקולה ל SR :

SR={[x,yo] | y:(x,yoy)R}

כלומר בעיה שמכילה את הקלט ביחד עם כל התחיליות של הפתרון שלו בבעיית החיפוש R . גם כאן מתקיים SRNP כיוון שנוכל להשתמש בוריאציה של AR כמוודא פולינומי כלומר

[x,y]SRy:A(x,yy)=1

זה עדיין פולינומי כי מציאת y שכזה היא עדיין פולינומית ולכן SRNP , מההנחה מתקיים גם ש SRP ולכן קיים לו אלגוריתם ASR שמכריע כל קלט מהצורה [x,y] .

אלגוריתם פולינומי למציאת פתרון של R (קלט: x)

כדרוש.