אלגוריתמים 1 חוברת תרגילים נא לשלוח כל הערה לגיל כהן במייל cohen@cs.technion.ac.il
מפתח שאלות לפי נושאים 1, 45, 54, 55, 56, 76 5, 63 :BFS :DFS מיון טופולוגי: 17, 31, 32, 57, 67, 68 2, 25, 26, 28, 50 21, 32, 58, 67, 68, 80 1, 2, 6, 7, 11, 12, 15, 19, 27, 33, 46, 47, 59, 60, 64 17, 22, 33, 34, 35, 61, 62, 69, 79, 83 3, 38, 39, 48, 70, 74, 77 רכיבים בלתי פריקים: רכיבים קשירים היטב: עצים פורשים מינימום: מסלולים קלים ביותר: אלגוריתמים חמדנים: 9, 24, 36, 41 8, 23, 37, 40, 42, 65, 66, 73, 81 קוד :Huffman תכנון דינאמי: 18, 30, 49, 78 :FFT זרימה ברשתות: 10, 13, 16, 19, 29, 43, 44, 51, 53, 71, 72, 82 שידוכים: 4, 14, 20, 40, 52 אחר: 75 שאלה אינטגרטיבית (כזו המערבת מספר נושאים) תופיע תחת כל הנושאים הרלוונטים.
מוסכמות והנחות להלן רשימה של הנחות ומוסכמות אשר תקפות אלא אם כן השאלה: נכתב במפורש אחרת בגוף עבור כל אלגוריתם שאתה מציע עליך להוכיח נכונות ולנתח סיבוכיות. במידה ואין דרישת סיבוכיות מפורשת, הינך נדרש לספק אלגוריתם בעל הסיבוכיות הטובה ביותר שתוכל. פתרונות בסיבוכיות שאינה אופטימאלית יזכו לניקוד מתאים. אין צורך להוכיח את האופטימאליות (כלומר, אינך נדרש לספק הוכחה לכך שאין אלגוריתם הפועל בסיבוכיות טובה יותר מזו שהצעת). ג. כל גרף הוא סופי ופשוט (אין קשתות מקבילות ואין לולאות עצמיות). במידה והגרף אינו מכוון, הוא קשיר. ( + ). O V E E) ד. סיבוכיות לינארית של אלגוריתם הפועל על גרף פירושה
שאלה 1.2 1 נתון גרף ממושקל פשוט וקשיר G שבו משקל כל קשת הוא מצא אלגוריתם או המוצא עץ פורש מינימום של G ב-( E )O V + זמן. שאלה 2 נאמר שגרף פשוט לא מכוון (E הוא פסאודו-עץ אם הוא קשיר, וכל קשת בו נמצאת על מעגל פשוט אחד לכל היותר. הוכח כי כל רכיב בלתי-פריק של פסאודו-עץ הוא גשר או מעגל פשוט (זכור כי גשר היא קשת אשר הסרתה פוגעת בקשירות הגרף).. 1 E 3 V 1 2 יהא (E פסאודו-עץ. הוכח כי יהא ג. (E פסאודו-עץ עם משקלות על הקשתות. הצע אלגוריתם למציאת עץ.O( V) פורש מינימום של G הרץ בזמן שאלה 3 גרף לא מכוון. הצע אלגוריתם הצובע את הגרף בלכל היותר ( ( k + d )) min,1 k 1max k n d 1 d k צבעים, כאשר היא הדרגה ה- k -ית בגודלה בגרף (כלומר היא הדרגה המקסימאלית בגרף, d n ו- המינימאלית). הסק כי ( ) ( ) + 1 1 G d χ χ G +
שאלה 4,{ 1,2,,n} r n r מלבן לטיני מגודל n הוא מטריצה מגודל המכילה מספרים מהקבוצה n כך שכל המספרים בכל שורה ובכל עמודה שונים זה מזה. ריבוע לטיני מסדר הוא r n. n מלבן לטיני מגודל n בשאלה זו נתכנן אלגוריתם המשלים מלבן לטיני מגודל n r לריבוע לטיני מסדר n. כלומר, אלגוריתם המוסיף שורות למלבן לטיני כך שהריבוע המתקבל הוא ריבוע לטיני מסדר n. G V = L R יהא (E גרף דו-צדדי כך ש- הוכח כי אם רגולרי,. L = R כלומר דרגת כל הצמתים שווה ל- G. קיים שידוך מושלם ב- אז ו- d>0, d 0< r< n, r n הצע אלגוריתם המקבל מלבן לטיני מגודל כאשר ומוסיף למלבן. ( r 1) שורה כך שיתקבל מלבן לטיני מגודל n + על האלגוריתם לרוץ בזמן 2 ( ( )). O n n r ג. הצע אלגוריתם המקבל מלבן לטיני מגודל. n על האלגוריתם לרוץ בזמן r ומשלים אותו לריבוע לטיני מסדר n 2 (( ( )) ). O n n r שאלה 5 גרף מכוון. הצע אלגוריתם המחלק את קשתות הגרף לשתי קבוצות זרות E ) 1 כך שהגרפים ו- הם חסרי מעגלים מכוונים. על האלגוריתם E ) 2, E= E E 1 2 ( + ) לרוץ בזמן. O V E
םי- שאלה 6 גרף לא מכוון עם משקלות על הקשתות. הוא תת-גרף k -פורש יער k G T = E' ) של המהווה יער בעל יער עצים. k -פורש יקרא יער k -פורש מינימאלי אם סכום משקלות קשתותיו אינו גדול מסכום המשקלות של אף יער k -פורש אחר. הצע אלגוריתם המוצא יער k -פורש מינימאלי. שאלה 7 U V גרף לא מכוון עם משקלות על הקשתות. תהא קבוצת צמתים. U הצע אלגוריתם המוצא עץ פורש מינימום של G המקיים את התנאי הבא: כל צמתי בעץ זה הם עלים. שים לב כי ייתכנו בהחלט עלים מ-.V\ U שאלה 8 k יהא d מספר טבעי, ו- ויהיו איברים ב-. Z d, 1, x הצע אלגוריתם המחשב בכמה xn אופנים ניתן להכניס סימנים של חיבור וחיסור בין ה-, x i כך שתוצאת הביטוי המתקבל.(d k Z d תהיה (כל החישובים מתבצעים מודולו 2 Z 10 x i כך למשל, אם ה- 7,6,9 ו- k=2 -ים הם אז עבור האלגוריתם יחזיר כי ( ) ( ) ( ) ( ) 7+ 6+ 9 2 mod10 7 6 9 2 mod10 7+ 6 9 4 mod10 7 6+ 9 0 mod10.o( d) על האלגוריתם לרוץ בסיבוכיות זמן של nd) )O ובסיבוכיות מקום של
שאלה 9 אליס ובוב משחקים משחק אליס זורקת זוג קוביות הוגנות מבלי שבוב יוכל לראות את תוצאות הזריקה, ועל בוב לגלות את סכום התוצאות. חוקי המשחק הם כאלו: בוב יכול לשאול את אליס סדרת שאלות, כך שלכל שאלה על אליס לענות בכנות לבוב את אחת / התשובות ל כן הצע אלגוריתם (אם תרצה, אסטרטגיה) שיבטיח לבוב את התשובה עם מספר ממוצע של 119/36~3.305 שאלות (הממוצע נלקח מעל הטלת הקוביות). הערה: שים לב כי אין משמעות לניתוח הסיבוכיות של האלגוריתם, ולכן אינך נדרש לספק כזו, שכן אין פרמטר הולך וגדל לפיו נרצה להעריך את האלגוריתם. שאלה 10 N = ( Gcst,,, ) הצע אלגוריתם אשר בהינתן רשת זרימה עם קיבולים שלמים, מוצא חתך מינימום בעל מספר מינימאלי של קשתות מבין כל חתכי המינימום ברשת. רמז: הגדר פונקציית קיבול חדשה. שאלה 11 נתון גרף לא מכוון (E עם משקלות על הקשתות.,e הצע אלגוריתם הרץ בזמן לינארי, שבהינתן קשת מכריע האם עץ פורש קיים מינימום המכיל את e.,e הצע אלגוריתם הרץ בזמן לינארי, שבהינתן קשת מכריע האם עץ פורש כל מינימום מכיל את e.
שאלה 12 גרף לא מכוון עם משקלות על הקשתות. הוכח כי לכל עץ פורש מינימום T. המוציאה כפלט את Prim קיימת הרצה של G של T שאלה 13 e. e E ( (, ),,, ) N = תהא V E c st רשת זרימה, ותהא הצע אלגוריתם המכריע האם נמצאת בכל חתך מינימום ברשת. שאלה 14 k k בנים ו- n במסיבה משתתפים n בנות. כל בן מכיר בנות, וכל בת מכירה בנים (0< k ). יחס ההיכרות הוא הדדי. הוכח שכולם יכולים להשתתף בריקוד זוגות, כאשר כל זוג מורכב מבת ובן שמכירים זו את זה. הצע אלגוריתם המארגן ריקוד זוגות כאשר כל זוג זה. מורכב מבת ובן שמכירים זו את k הצע ג. אלגוריתם המארגן ריקודים כך שכולם ירקדו פעם אחת בדיוק עם כל מי שהם מכירים. שאלה 15 גרף לא מכוון וקשיר עם משקלות על הקשתות. הצע אלגוריתם המכריע האם ל- G עץ פורש מינימום יחיד. הצע אלגוריתם המכריע האם ל- G בדיוק שני עצים פורשים מינימום.
שאלה 16 U1, U2 V גרף מכוון, ויהיו שתי קבוצות צמתים הצע אלגוריתם זרות. המחשב את מספר הקשתות המינימאלי שיש להסיר מהגרף, כך שלא יהיה שום מסלול.U 2 Uאל 1 צומת ב- מצומת ב- שאלה 17 גרף מכוון ללא מעגלים (DAG) עם משקלות על הקשתות., s הצע אלגוריתם אשר בהינתן צומת מוצא את משקל מסלול קל ביותר מ- s ( + ) לשאר צמתי הגרף. על האלגוריתם לרוץ בסיבוכיות זמן של. O V E st, הצע אלגוריתם אשר בהינתן זוג צמתים בגרף, מוצא את משקל מסלול קל ( + ). O V E ל- t ביותר מ- s המכיל לפחות 3 קשתות. סיבוכיות הזמן הנדרשת היא 1 i< j n ברצוננו למצוא. a,, 1 an נתונים ג. n מספרים ממשיים כך ש- הוא j a k = i k מינימאלי. הציעו פתרון לבעיה, המבוסס על רדוקציה לסעיף ב'. שאלה 18 ( 0,1 ),( 0,2 ),,( 0,n) נתונים n חלקיקים נושאי מטען חשמלי הנמצאים בנקודות במישור.. q j גודל מטען החלקיק ה- j הוא אנו נרצה לחשב את הכח המופעל על כל אחד מהחלקיקים. הכח המופעל על החלקיק ה- j נתון על ידי F j Cqq = Cqq i j i j 2 2 i< j > ( j i) i j ( j i)
בסיבוכיות זמן קטנה ככל n ( F j) j = 1 כאשר C הוא קבוע קולון. הצע אלגוריתם המחשב את האפשר. שאלה 19 k ו- e' E גרף לא מכוון וקשיר עם משקלות על הקשתות. תהא מספר k טבעי. הצע אלגוריתם המכריע האם ניתן לשנות את משקלן של קשתות כלשהן,.e' G השונות מ- 'e בגרף, כך שלאחר השינוי קיים עץ פורש מינימום של המכיל את שאלה 20 (, '), H = V E בהינתן גרף מכוון (E ברצוננו למצוא תת גרף מכוון שלו כך שבתת,1 = הגרף הנ"ל לכל צומת דרגת הכניסה = דרגת היציאה או להודיע שלא קיים כזה. הצע אלגוריתם לפתרון הבעיה. שאלה 21,G בשאלה זו נעסוק באלגוריתם למציאת רכיבים קשירים היטב.(Kosaraju-Sharir) עבור גרף SCC גרף העל של הרכיבים הקשירים יסומן ב- G. מהו היחס בין מספר עצי ה- DFS בחלק הראשון של האלגוריתם (חישוב זמני נסיגה) לבין מספר עצי ה- DFS בחלק השני (גילוי הרכיבים)?<, >,,, = post( x) נתבונן בהרצת ה- DFS הראשונה באלגוריתם (חישוב זמני נסיגה), כלומר לכל v U U צומת. x זמני נאמר כי הנסיגה של קבוצת צמתים מופיעים ברצף אם אין צומת עם זמן הנסיגה שלו בין זמני נסיגה של שני צמתים ב-. U
הוכח / הפרך את הטענות הבאות: SCC,G C עבור רכיב קשיר היטב שהוא מקור בגרף העל תמיד (לכל ריצה) זמני הנסיגה של צמתי C מופיעים ברצף. SCC,G C ג. עבור רכיב קשיר היטב שהוא בור בגרף העל תמיד (לכל ריצה) זמני הנסיגה של צמתי C מופיעים ברצף. שאלה 22 G = נתון גרף מכוון (E עם משקלים אי-שליליים על הקשתות, פרט לקשת אחת s V שמשקלה שלילי. נניח שאין מעגלים בעלי משקל שלילי בגרף. נתון צומת =e (,a b),v V ( + log ) O V E V הצע אלגוריתם בסיבוכיות המוצא עבור כל צומת משקל את. המסלול הקל ביותר מ- s ל- v. שאלה 23,..., 1 a d -חלוקה ]. של המערך היא חלוקה שלו ל- an] נתון מערך של n מספרים ממשיים מקטעים. המחיר של מקטע ב- d -חלוקה הוא סכום המספרים באותו מקטע. המחיר d של d -חלוקה הוא המקסימום של מחירי המקטעים שהיא מגדירה. לדוגמה [5,6],[9],[4,2,7] היא 3 -חלוקה עם מחיר 13. הצע אלגוריתם אשר בהינתן מערך כנ"ל ומספר, d מוצא d -חלוקה מינימאלית.
שאלה 24 P= ( p,..., 1 pn) W = ( w,..., 1 תהא wn) קבוצת הודעות ותהא סדרת המשקלים המתאימים, p > p > > p > 1 2 n p1 2. P המקיימת יהא T עץ Huffman בשתי רמות סמוכות. בינארי עבור הוכח כי כל העלים בעץ נמצאים באותה רמה או שאלה 25 בהינתן גרף לא מכוון, הצע אלגוריתם המכריע האם ניתן לכוון את קשתות הגרף (לתת לכל קשת כיוון יחיד) כך שהגרף המכוון המתקבל הינו קשיר היט שאלה 26 l מהו מספר הצמתים בגרף העל של עץ בעל n צמתים אשר מתוכם עלים? שאלה 27 T יהא. E w גרף לא מכוון וקשיר, ותהא פונקצית משקל עבור עץ פורש מינימום של G. ) 'e. )w הצע אלגוריתם המעדכן את E ל- e' נניח ומוסיפים קשת חדשה עם משקל ( { '}). G' = V, E e כך שיהיה עפ"מ של הגרף החדש T T. e' E נניח ומסירים קשת הצע אלגוריתם המעדכן את כך שיהיה עפ"מ של ( { }) הגרף החדש 'e 'G =,V \E או מודיע שאין עפ"מ לגרף זה.
שאלה 28 פינחס העכבר אוהב גבינת פרמז'ן ועל כן החליט להתגנב למטבח ולהביא אספקה. בהיותו עכבר יסודי, לפני היציאה למבצע הוא הצליח לאסוף את המודיעין הבא: מפה של מקומות המסתור במטבח ונתיבי התנועה האפשריים ביניהם. המפה היא למעשה גרף (E לא מכוון וקשיר בו כל צומת מציין מקום מסתור וקשת מחברת בין שני מקומות שהגישה ביניהם אפשרית. מיקומה של הגבינה צומת C. ג. מיקומו של שמיל החתול צומת. B ד. נקודת החדירה למטבח (ממנה הוא מתחיל) - צומת. A C על מנת לגנוב את הגבינה עליו למצוא מסלול מנקודת ההתחלה A לגבינה ובחזרה ל-. A על המסלולים אל הגבינה ובחזרה להיות שונים לחלוטין, כלומר הם אינם עוברים דרך אותם מקומות מסתור. כמו כן אסור למסלולים לעבור דרך הצומת בה נמצא שמיל החתול. הצע אלגוריתם שמכריע האם לפינחס קיימת דרך להשיג את הגבינה. האלגוריתם איננו צריך למצוא את הדרך לגבינה ובחזרה,אלא רק לדווח האם קיימת כזאת דרך או ל על האלגוריתם לרוץ בסיבוכיות (E )O. היות ופינחס הוא עכבר זהיר עד גבול הפרנואידיות, הוא ישתמש באלגוריתם רק אם תוכיח את נכונותו.
שאלה 29 s t ( S, V\ S ),( S, V\ S ) 1 1 2 2 תהא ),,, Gcst N = ( רשת זרימה. יהיו שני חתכי נגדיר ברשת. ( S1 S2, V\ ( S1 S2) את החיתוך של שני החתכים להיות ) ואת האיחוד של שני החתכים. N. נסמן ב- N) σ( ( S1 S2, V\ ( S1 S2) להיות ) את קבוצת כל חתכי המינימום של הוכח כי (N )σ סגורה לאיחודים ולחיתוכים.. max ( ) S N = σ ( ) S N min ( ) S N = σ( ) S N ו- S נגדיר S הצע אלגוריתם המוצא את החתכים min ( ), ( ). S N S N max ג. הצע אלגוריתם המכריע האם ברשת זרימה קיים חתך מינימום יחיד. שאלה 30 { n} יהיו, 1,2,, AB. נגדיר { :, } A+ B= a+ b a Ab B.O( nlogn) A+ הצע אלגוריתם המחשב את B בזמן שאלה 31.(DAG) גרף מכוון חסר מעגלים הצע אלגוריתם המוצא את אורכו של מסלול ארוך ביותר בגרף.
שאלה 32 u, v גרף מכוון (E נקרא קשיר למחצה אם עבור כל זוג צמתים קיים מסלול מכוון או שקיים מסלול מכוון מ- v ל- u (או שניהם). הצע אלגוריתם המכריע האם מ- u ל- v גרף נתון הוא קשיר למחצה. שאלה 33. st, V לא-מכוון גרף עם משקלות אי-שליליות על הקשתות. יהיו עבור p, מסלול p ב- G צוואר הבקבוק של הוא משקל הקשת הקלה ביותר ב- p (המוטיבציה להגדרה נובעת מכך שאנו חושבים על משקל קשת כעל עובי). הצע. על אלגוריתם המוצא מסלול בעל צוואר בקבוק מקסימאלי מבין כל המסלולים מ- s ל- t האלגוריתם לרוץ בסיבוכיות זמן של ElogV) )O. שאלה 34. s V גרף מכוון עם משקלות אי-שליליות על הקשתות, ויהא הצע s אלגוריתם המוצא לכל צומת v V את משקלו של מעגל קל ביותר המכיל הן את והן את v. שאלה 35. st, V גרף מכוון עם משקלות על הקשתות. תהא e' ויהיו E e' הצע אלגוריתם המכריע האם הקשת כל מסלול קל ביותר מ- s נמצאת על ל- t
e' הצע אלגוריתם המכריע האם הקשת נמצאת על איזשהו מסלול קל ביותר מ- s ל- t. שאלה 36 הוכח / הפרך את הטענות הבאות המתייחסות לאלגוריתם של.Huffman כאשר אין כל הנחה על תדירות ההופעה של כל אות בקובץ הקלט, לא ניתן לכווץ אותו אף בביט בודד. כל קובץ. כלומר, לא קיים אלגוריתם אשר מקטין ממש את גודלו של אם כל תו מופיע בקובץ בתדירות קטנה מ- 1/3 מילת קוד באורך 1. אזי בהכרח בעץ Huffman לא תהיה Huffman ג. אם קיים תו שתדירותו גדולה מ- 2/5 אזי מילת הקוד שיקבל בעץ הינה בהכרח מאורך 1. n,ω( logn) Huffman ד. האורך הממוצע של מילת קוד בעץ הינו כאשר הינו מספר התווים. שאלה 37 f נתבונן בבניין בן n קומות. ידוע כי קיימת קומה כך שאם נשליך ביצה מקומה זו, הביצה ומקומת גבוהות יותר הביצה תישבר, אך אם נזרוק את הביצה מקומה נמוכה מ- f, (ייתכן כי לא תישבר 1= f כלומר הביצה נשברת כבר מהקומה הראשונה. ייתכן כי, כלומר הביצה לא נשברת מאף קומה). אנו מעוניינים לחשב את. f f = n+ 1
נניח שעומדות לרשותנו k ביצים זהות, והפעולה היחידה שמותרת לנו היא להשליך ביצה מקומה כלשהי, וצפייה בתוצאת ההשלכה. ניתן להשתמש בשנית אך ורק בביצה שלא נשברה. נסמן ב- ), nk )E את המספר המינימאלי של השלכות אשר תמיד יספיק על מנת לחשב k n את f בבניין בן קומות, ובעזרת ביצים. ( ) כך לדוגמה 4 9,2 E כי ניתן לפעול על פי האסטרטגיה הבאה: נטיל את הביצה מהקומה הרביעית. אם הביצה נשברה נטיל את הביצה השניה החל מהקומה הראשונה. אם הביצה לא נשברה נטיל אותה בשנית מהקומה השביעית. o o אם נשברה נטיל את הביצה השניה החל מהקומה החמישית. אם לא נשברה נטיל את הביצה הראשונה החל מהקומה השמינית. ניתן לראות שבכל מקרה מספיקות 4 הטלות. ניתן גם להראות ש- 3 הטלות עשויות שלא להספיק, ולכן. E ( 9,2) = 4 ), nk. )E האם זמן הריצה פולינומיאלי ביחס n, הצע אלגוריתם אשר בהינתן k מחשב את לגודל הקלט? שאלה 38 בקיוסק של ראובן החליטו על מבצע. כל מי שקונה זוג מוצרים מקבל את הזול מביניהם, p1,, p2n 2n חינם. לאחר שבחרנו מוצרים במחירים ברצוננו לסדר אותם בזוגות על מנת לקבל את ההנחה. הצע אלגוריתם המניב זוגות של מוצרים כך שהסכום הכולל שנאלץ לשלם על המוצרים הוא מינימאלי.
שאלה 39,W בבעיית תרמיל הגב (Knapsack) נתון תרמיל שלו קיבולת משקל אפשרית של. p i w i a i. a,, 1 an ונתונים n עצמים כל עצם מאופיין על ידי משקל ורווח בעיית תרמיל הגב היא בעיית בחירת תת-קבוצה של עצמים לאריזה בתרמיל באופן שהרווח הכולל עבורם יהיה מקסימאלי, תוך שאיננו מפירים את אילוץ המשקל. בגרסת השברים של בעיית התרמיל המצב דומה, אולם הפעם אנו יכולים לבחור חלקים מכל עצם (אך לא יותר מפעם אחת כל עצם). 120,100, 60 10,20,30 לדוגמה, יהיו נתונים שלושה עצמים עם משקלים ורווחים בהתאמה. נניח כי 50= W. פתרון אופטימאלי לבעיה המקורית יניב רווח כולל של 220, בעוד שפתרון אופטימאלי לגרסת השברים יניב רווח כולל של 240 (בחר יחידה שלמה של כל אחד משני העצמים הראשונים, ושני-שליש מהעצם השלישי). הצע אלגוריתם חמדן הפותר בצורה אופטימאלית את גרסת השברים של בעיית התרמיל. הצע אלגוריתם הפותר את בעיית התרמיל המקורית (בשלמים) תחת ההנחה שכל w 2 w 1 עצם שוקל או (כלומר, ישנם רק שני משקלים אפשריים). על האלגוריתם לרוץ בסיבוכיות זמן של nlogn) )O. שאלה 40 (, ). T = V E הצע אלגוריתם, מבוסס תכנון דינאמי, המוצא שידוך מקסימום בעץ על האלגוריתם לרוץ בסיבוכיות זמן (V )O.
שאלה 41 הוכח כי בעץ σ -ארי Huffman יש לכל היותר צומת אחד ללא σ בנים. שאלה 42 { } w: E N 0 s גרף לא מכוון. צומת מקור ו- t יהא צומת יעד. תהא פונקצית משקל על הקשתות, c: ו- E N פונקצית מחיר על הקשתות. נתון לנו בנוסף, תקציב. B בעיית המסלול הקצר ביותר תחת אילוצי תקציב, היא למצוא ב- G מסלול k 1 i = 1 (, ) w v v i i+ 1 בעל משקל כולל מינימאלי, תוך עמידה באילוצי s= v v v = t 1 2 k. k 1 i= 1 (, ) c v v B i i+ 1 התקציב, דהיינו - הפותר את בעיית המסלול קצר ביותר תחת אילוצי 2 הצע אלגוריתם הרץ ב-( B )O V תקציב, או מודיע שאין כזה בגרף הנתון. האם זמן הריצה פולינומיאלי באורך הקלט? שאלה 43 תהא ), st N = ( G, c, רשת זרימה. ε ב- c( e),ε >0 קשת e E תקרא קשת קריטית מלמעלה אם לכל הגדלת תגרום להגדלת ערך זרימת המקסימום ב-. N ε ב- c( e) ( ) 0< ε c e, הקטנת קשת e E תקרא קשת קריטית מלמטה אם לכל תגרום להקטנת ערך זרימת המקסימום ב-. N הצע אלגוריתם יעיל ככל שתוכל המוצא את כל הקשתות הקריטיות מלמעלה.
הצע אלגוריתם יעיל ככל שתוכל המוצא את כל הקשתות הקריטיות מלמטה. שאלה 44 G גרף מכוון. כיסוי במסלולים של צמתי הוא קבוצת מסלולים זרים, כך שכל צומת ב- G בצמתים ב- G מוכל באחד המסלולים בכיסוי. (מסלול עשוי להיות מורכב מצומת יחיד)..G הצע אלגוריתם המחשב את מספר המסלולים הקטן ביותר הדרוש לכיסוי במסלולים של שאלה 45 v V. s V גרף לא מכוון, ויהא הצע אלגוריתם המחשב לכל צומת את. מספר המסלולים הקצרים ביותר מ- s ל- v שאלה 46 G T גרף לא מכוון עם משקלות על הקשתות. הכובד של עץ פורש של הוא משקל הקשת הכבדה ביותר בעץ (לקשת כזו נקרא צוואר הבקבוק). עץ פורש שהכובד שלנו הוא הקטן ביותר מבין כל העצים הפורשים יקרא עץ פורש קל ביותר. הוכח / הפרך כל עץ פורש מינימום הוא גם עץ פורש קל ביותר. הוכח / הפרך כל עץ פורש קל ביותר הוא גם עץ פורש מינימום. ג. הצע אלגוריתם, אשר בהינתן מספר b, מכריע האם כובד עץ פורש קל ביותר הוא.O( E) לכל היותר b. על האלגוריתם לרוץ בזמן.O( E) ד. הצע אלגוריתם המוצא עץ פורש קל ביותר בסיבוכיות זמן
שאלה 47 (, ) G = V E 2 2 (, ) G = V E 1 1 יהיו ו- שני גרפים לא מכוונים וקשירים מעל אותה קבוצת צמתים, ו-(' T = E 2 2 (, ') T = V E 1 1 עם משקלות על הקשתות. יהיו שני עצים פורשים מינימום של (, ). V E E 1 2 - G 2 G 1 ו- בהתאמה. נסמן ב- G,G1 את גרף האיחוד של G2 G הוכח / הפרך כל עץ פורש מינימום של מכיל קשתות מ-' 'E E בלבד. 1 2 G הוכח / הפרך קיים עץ פורש מינימום של המכיל קשתות מ-' 'E E בלבד. 1 2,G1, G2, T1, T2 G ג. הצע אלגוריתם למציאת עץ פורש מינימום של בהינתן הרץ בזמן.O( VlogV) שאלה 48 E) חתך בגרף לא מכוון הוא חלוקה של צמתי הגרף לשתי קבוצות. בהינתן חתך את מספר הקשתות החוצות את החתך. כלומר, ( ) = { :, } e A ab E a Ab A e( A) נסמן ב- ( AV, \ A) נרצה להוכיח את המשפט הבא מתורת הגרפים: בכל גרף לא מכוון (E קיים חתך. לצורך כך הצע אלגוריתם חמדן שיבנה חתך שכזה (נהוג e( A) כך ש- E/2 ( AV, \ A) להשתמש באלגוריתמים לצורך הוכחות קיום במתמטיקה). הערה: אין צורך לנתח את סיבוכיות האלגוריתם (אלא רק להראות שהוא מסתיים בזמן סופי), שכן האלגוריתם לא נועד להרצה, אלא להוכחת משפט מתמטי.
שאלה 49.(t i { 0,1}) T = tt t 0 1 n 1 נתונה מחרוזת בינארית ברצוננו למצוא את המספר המינימאלי i המקיים כי אם נסובב את המחרוזת T באופן ציקלי ימינה פעמים, נקבל בחזרה את i 1 המחרוזת המקורית T. T נניח ו- 010010 = T לדוגמה: במקרה הנ"ל הערך המבוקש הוא 3 שכן אחרי הזזת צעד.T''' = 010010 אחד נקבל = 001001,T' שני צעדים = 100100 '' T ולאחר שלוש הזזות נקבל הצע אלגוריתם לפתרון הבעיה הרץ בזמן nlogn) )O. שאלה 50 v V ab, V גרף לא מכוון, ויהיו שני צמתים שונים ב- G. צומת נקרא.v ל- b שימושי (ביחס ל- ), ab )),G אם קיים מסלול פשוט בין a שעובר דרך O( V + E) הצע אלגוריתם הרץ בזמן המוצא את כל הצמתים השימושיים ב- G במקרה ש- G הינו עץ. הוכח כי שני צמתים הם באותו רכיב אי-פריק המכיל לפחות שלושה צמתים אם ורק אם הם על מעגל פשוט המכיל לפחות שלושה צמתים. O( V + E) ג. הצע אלגוריתם הרץ בזמן המוצא את כל הצמתים השימושיים ב- G (כאשר G אינו בהכרח עץ). שאלה 51. st, V גרף מכוון. יהיו הצע אלגוריתם המחשב את המספר המקסימאלי של מסלולים זרים בקשתות מ- s ל- t.
שאלה 52. S A,, A, B,, B 1 k 1 k n תהא S קבוצה בת איברים. תהנה שתי חלוקות של איברי הצע A,, A, B,, B 1 k 1 k אלגוריתם המכריע האם ניתן לבחור k איברים כך שכל קבוצה מבין מכילה לפחות אחד מבין k האיברים הנבחרים. שאלה 53 U V כיסוי בצמתים של גרף לא מכוון (E הוא קבוצת צמתים כך שלכל קשת U. { ab, } U מתקיים ש- כיסוי בצמתים נקרא כיסוי מינימום אם מספר ( ab, ) U הצמתים בו אינו עולה על מספר הצמתים בכל כיסוי בצמתים. הצע אלגוריתם למציאת כיסוי מינימום בגרף דו-צדדי. שאלה 54. s V גרף לא מכוון וקשיר, ויהא נרצה לתכנן אלגוריתם המוצא אורך v V מסלול קצר ביותר מ- s לכל מבין המסלולים שאורכם הוא ריבוע שלם (דהיינו ( + ),0,1,4,9,16). הצע אלגוריתם לפתרון הבעיה בעל סיבוכיות זמן של. O V E שאלה 55 BFS u V V = n גרף לא מכוון וקשיר על נריץ את לכל צמתים. החל מהצומת u, ונגדיר Γ ( u) = du[ v] v V
הוא הערך שניתן ל- v בסיום הרצת האלגוריתם (שים לב כי ערך זה זהה כאשר v] du[ לכל הרצת BFS המתחילה ב- u, ולכן (u )Γ מוגדר היטב). n. n 1 Γ( u) 2 הוכח כי u Γ הוכח / הפרך עבור גרף נתון, אם מקבל מינימום ב- u אז בהכרח צומת בעל דרגה מקסימאלית. שאלה 56 E) גרף דו-צדדי הוא גרף לא מכוון כך ש- V ניתנת לחלוקה לשתי קבוצות זרות.V 2, V1 באופן V2 כזה שכל קשת בגרף מחברת בין צומת של V 1 וצומת של צביעה חוקית של (E גרף (צמתי) היא התאמה של צבע לכל צומת בגרף באופן שכל שני צמתים שכנים נצבעים בצבעים שונים. גרף נקרא k -צביע אם קיימת עבורו צביעה חוקית המשתמשת ב- k צבעים לכל היותר. ג. הוכח כי גרף הוא דו-צדדי אם ורק אם הוא 2 -צביע. הוכח כי גרף הוא דו-צדדי אם ורק אם הוא אינו מכיל מעגלים באורך אי-זוגי. הצע אלגוריתם הרץ ב-( E )O V + המכריע האם גרף נתון הוא דו-צדדי. { } L= l, l,, l n 1 2 תהא ד. קבוצה של ישרים במישור. הוכח כי מספיקים שני צבעים על מנת לצבוע את התאים הנוצרים על ידי הישרים, כך שכל זוג תאים שכנים צבוע בצבע שונה (שני תאים הם שכנים אם קיים ישר המכיל קטע המשותף לגבולותיהם).
n שאלה 57 לפניך קבוצה של תיבות שכל אחת מהן מאופיינת על ידי גובה, אורך ורוח כאן, הסדר 1 2 3 שבו נתונים מימדיה של תיבה אינו חשוב; לכן, תיבה שמימדיה זהה לזו שמימדיה B A. 2 1 או לזו שמימדיה 3 ניתן להכניס תיבה לתוך תיבה אם ורק אם ניתן 3 1 2. B לסובב את A כך שכל שלושת מימדיה יהיו קטנים ממש מאלו של אין להכניס שתי תיבות (או יותר) זו ליד זו לתוך תיבה אחרת, גם אם הדבר אפשרי מבחינת מידות התיבות. קבוצה טלסקופית היא קבוצה של תיבות המוכנסות זו בזו. הצע אלגוריתם המוצא קבוצה טלסקופית מקסימאלית (כלומר קבוצה גדולה ביותר של תיבות הניתנות להכנסה זו בזו). שאלה 58 v v1, v2 גרף מכוון נקרא גרף מעקפים אם לכל שני צמתים קיים צומת בגרף, כך שיש.( v= v 2 v= v 1 v 2 v 1 ומ- (ייתכן כי ל- v ל- v מסלול מכוון מ- או יעד בגרף מכוון הוא צומת שיש מסלול מכוון אליו מכל צומת אחר בגרף. הוכח כי גרף הוא גרף מעקפים אם ורק אם קיים בו יעד. הוכח כי גרף הוא גרף מעקפים אם ורק אם בגרף העל של הרכיבים הקשירים ג. היטב שלו יש בור יחיד. הצע אלגוריתם המכריע האם גרף מכוון נתון הוא גרף מעקפים. האלגוריתם מוצא יעד בגרף. במידה וכן,
שאלה 59 E) p,, 1 תהנה pn נקודות במישור. נגדיר גרף באופן הבא צמתי הגרף הם הנקודות, ויש קשת בין כל שני צמתים. נצייד את קשתות הגרף עם משקלות משקל כל קשת הוא המרחק האוקלידי בין זוג הנקודות המתאימות לצמתים. הוכח כי בכל עץ פורש מינימום של G אין צומת בעל דרגה 7 או יותר. שאלה 60 T, T' גרף לא מכוון, קשיר ובעל משקלות על הקשתות. שני עצים יהיו T = T, T,, T = T' 1 2 k פורשים מינימום של G. הוכח כי קיימת סדרה של עצים פורשים 1 i< k מינימום כל G כך שכל שני עצים עוקבים הם סמוכים במובן הבא: לכל ישנה T i רק קשת אחת הנמצאת ב- + T. ולא ב- i 1 שאלה 61 xi xj < ck ( m n) m ו- x,, 1 xn נתונים n משתנים אי-שוויונים מהצורה כך ש- c k מספר ממשי לכל 1 k m. הצע אלגוריתם הקובע האם קיים פתרון חוקי למערכת אי-השוויונים. שאלה 62 s V גרף מכוון בעל משקלות אי-שליליות על הקשתות. יהא ושני. 0 R, B מספרים E כל קשת בגרף צבועה באחד מבין שלושת הצבעים לבן כחול, או אדום.
הצע אלגוריתם המוצא מסלול קל ביותר מ- s לכל צומת בגרף, המשתמש בלכל הפחות קשתות אדומות ובלכל היותר B קשתות כחולות. על האלגוריתם לרוץ בסיבוכיות זמן R ( ( + log )). O RB E V V שאלה 63 הוכח כי גרף מכוון הינו חסר מעגלים (מכוונים) אם ורק אם בכל ריצת DFS עליו לא מתקבלות קשתות אחוריות. O( V + E) הצע אלגוריתם בעל סיבוכיות זמן המכריע האם קיים בגרף מכוון נתון מעגל מכוון. שאלה 64.G נתונים שני עצים פורשים מינימום של גרף לא מכוון וקשיר נמיין את המשקלים של הקשתות השייכות לעצים (כלומר, לכל אחד משני העצים נקבל רשימה ממויינת של מספרים). הוכח כי שתי הרשימות זהות. שאלה 65 a,, 1 תהא an סדרת מספרים. הצע אלגוריתם המוצא תת-סדרה מונוטונית לא-יורדת 2 ארוכה ביותר של הסדרה. על האלגוריתם לרוץ בסיבוכיות זמן של ) n )O.
שאלה 66 S ( ). S = a,, 1 an נתונה סדרה של n מספרים חיוביים תת-סדרה של נקראת מבודדת אם היא אינה מכילה שני איברים שכנים ב-. S ערך תת-סדרה של S הוא סכום המספרים בתת-הסדרה. הצע אלגוריתם המחשב תת-סדרה מבודדת שערכה מקסימאלי. שאלה 67 L: V R גרף מכוון ותהא פונקציה המתאימה לכל צומת מספר ממשי. לכל צומת v V נסמן ב-( v )R את קבוצת הצמתים אליהם יש מסלול מכוון מ- v ונגדיר ( ) l v = min{ L( u) } ( ) u R v O( V + E) הצע אלגוריתם בעל סיבוכיות זמן אשר בהינתן גרף מכוון וחסר מעגלים.l( v) v V L E) ופונקציה כנ"ל, מחשב לכל צומת את O( V + E) הצע אלגוריתם בעל סיבוכיות זמן אשר בהינתן גרף מכוון (לאו דווקא.l( v) v V L חסר מעגלים) (E ופונקציה כנ"ל, מחשב לכל צומת את שאלה 68 O( V + E) גרף מכוון. הצע אלגוריתם בעל סיבוכיות זמן המחשב קבוצה בעלת מספר מקסימאלי אפשרי של צמתים, כך שיש ב- G (לאו דווקא מסלול U V פשוט) דרך כל צמתי U.
שאלה 69 נתונה רשת תקשורת המורכבת מ- n מחשבים ו- m ערוצים (כל ערוץ מחבר בין שני p( e) e מחשבים והינו דו-כיווני), כך שלכל ערוץ נתונה הסתברות שיקרוס. ההסתברויות בלתי-תלויות. הצע אלגוריתם אשר בהינתן רשת כנ"ל ושני מחשבים בה, מוצא את מסלול התקשורת הבטוח ביותר ביניהם, כלומר את המסלול שההסתברות שיקרוס קטנה ביותר (מסלול קורס אם ערוץ אחד או יותר בו קורסים). שאלה 70 { }, 1, v, V = מופיעים בסדר זה על ציר הממשיים vn גרף לא מכוון שצמתיו.(v j v i (כלומר לכל 1 i< j n מתקיים כי מופיע לפני d 1 G של צמתי d -חלוקה היא חלוקה שלהם ל- d מקטעים זרים, כלומר בחירה של d 1 i1 i2 d 1 אינדקסים < i < n < < המגדירים את המקטעים,, v d -חלוקה. v,, v, v,, v, נקראת בלתי תלויה אם לא קיימים בה v 1 i1 i1+ 1 i2 id 1+ 1 n שני צמתים שכנים השייכים לאותו מקטע. G הצע אלגוריתם בעל סיבוכיות זמן (E )O V + המוצא d -חלוקה בלתי תלויה של כך ש- d קטן ככל האפשר. שאלה 71, 1, f, כך שלכל דיסק נתונה רשימת הסרטים fk דיסקים קשיחים ו- k נתונים m סרטים אותם הוא מכיל (דיסק לא יכיל מספר עותקים מאותו סרט, אך עותקים של סרט מסוים (downloads) לסרטים, עשויים להופיע במספר דיסקים). בנוסף, נתונות בקשתות לשידור
b j. f i מייצג את מספר בקשות השידור עבור הסרט כמו כן, מייצג את מספר r i כך ש- הסרטים המקסימאלי שהדיסק j מסוגל לשדר (סרט המשודר מספר פעמים יספר כמספר הפעמים ששודר). הצע אלגוריתם המוצא שידור של הסרטים מהדיסקים תחת האילוצים לעיל, או מודיע שאין שידור כזה. שאלה 72. על f i { f f } 1,, n משפחות מוזמנות לחתונה. נסמן ב- n i את מספר האנשים במשפחה n מנת לעודד היכרות בין האורחים מעוניינים החתן והכלה לפזר את המוזמנים בין השולחנות כך שבני אותה משפחה ישובצו לשולחנות שונים (כלומר, שלא יהיה מצב m שבאותו שולחן יושבים שניים או יותר מאותה משפחה). מספר השולחנות הוא וסביב כל שולחן יכולים לשבת לכל היותר k אנשים. הצע אלגוריתם המשבץ את האורחים בהתאם, או מודיע שלא קיים שיבוץ חוקי. שאלה 73 w i c i. c,, 1 cn במדינת ארצות-הבריל ישנם n סוגי מטבעות ערכו של המטבע הוא K דולצ' םי. לקוחה ובידה שטר שערכו דולצ'ים נכנסת לסניף בנק ומבקשת מפקיד הבנק לפרוט את השטר למספר מינימאלי של מטבעות. הצע אלגוריתם הפותר את הבעיה. שאלה 74 n>1 שבר הרמוני הוא שבר מהצורה n/1 עבור שלם. הוכח כי כל מספר רציונלי ב-[ 0,1 ( ניתן לכתיבה כסכום סופי של שברים הרמוניים שונים. כך למשל,
4 1 1 1 1 = + + + 17 5 29 1233 3039345 שאלה 75 גרף מכוון ללא לולאות עצמיות. נאמר ש- G טורניר הוא אם לכל שני v נאמר שצומת. v u u v צמתים uv, V קיימת בדיוק אחת משתי הקשתות או הוא שורש בגרף אם לכל u V קיים מסלול מכוון מ- v ל- u. הצע אלגוריתם המוצא שורש של טורניר ב-( V )O. שאלה 76 Q (, ), V E כי בהרצת הוכח BFS על גרף אם התור (המשמש את האלגוריתם) מכיל v 1 את הצמתים,v1,v2, vr כך ש- v r בראש התור ו- בסופו אז [ ] [ ] d v d v + r 1 1 [ ] [ ] d[ v ] d v d v 1 2 r C, D שאלה 77 עבור תתי-קבוצות של המספרים השלמים, נסמן { :, } C+ D= c+ d c C d D. C+ D= c+ D נקצר ונסמן =C במידה ו-{ c { הוכח, בעזרת אלגוריתם חמדן, כי אם A היא תת-קבוצה סופית של המספרים השלמים, X 2α, X A המקיימת A+ A α A אז קיימת קבוצה כך ש-
b A ( X + A) ( b+ A) A/2 הערה: אין צורך לנתח את סיבוכיות האלגוריתם (אלא רק להראות שהוא מסתיים בזמן סופי), שכן האלגוריתם לא נועד להרצה, אלא להוכחת משפט מתמטי. שאלה 78, FFT O( nlogn) בהרצאה ראינו כי ניתן להכפיל שני פולינומים מדרגה n בזמן בעזרת 2 וזאת אל מול האלגוריתם הנאיבי הרץ בזמן ) n )O. בשאלה זו תתבקש לתכנן אלגוריתם פשוט יותר מ- FFT שזמן הריצה שלו טוב יותר מזה של האלגוריתם הנאיבי (אך נופל מזה של.(FFT cx+ d ו- ax+ b הראה כיצד להכפיל את שני הפולינומים הלינאריים תוך שימוש בשלוש פעולות כפל בלבד. הצע אלגוריתם אשר בהינתן שני פולינומים ממעלה n (הנתונים בהצגה הסטנדרטית לפי המקדמים) מחשב את מכפלת הפולינומים בזמן.O n ( log 2 3 שים ). log 3 1.58< 2 2 לב כי זמן ריצה זה טוב יותר משל האלגוריתם הנאיבי שכן שאלה 79. s V גרף מכוון עם משקלות חיוביות על הקשתות, ויהא נאמר כי קשת uv ל- v היא שימושית אם קיים מסלול קל ביותר מ- s שהקשת היא האחרונה בו. uv נאמר שמסלול מ- s ל- t היא שני קל ביותר אם משקלו הוא הקל ביותר מבין כל ל- t. ל- t המסלולים מ- s שמשקלם גדול ממש ממשקל המסלול הקל ביותר מ- s
t ל- P מסלול מ- s יהא P ל- t. מסלול קל ביותר מ- s הוכח כי אם ורק אם כל קשתות P שימושיות. P מסלול מ- s יהא P ל- t. הוכח כי אם הוא שני קל ביותר אז ב- P יש בדיוק קשת אחת שאינה שימושית. ל- t ג. הצע אלגוריתם, יעיל ככל שתוכל, המוצא מסלול שני קל ביותר מ- s או מודיע כי לא קיים כזה. שאלה 80 U U V נאמר כי גרף מכוון. קבוצה סגורה היא ואין קשת אם O( V+ E) מכוונת היוצאת מצומת ב- U לצומת שאינו ב- U. הצע אלגוריתם הרץ בזמן המוצא קבוצה סגורה מגודל מינימאלי. שאלה 81 n אליס ובוב משחקים את המשחק הבא נתונה סדרה של מספרים המסודרים בשורה. a1, a2,, an משמאל לימין - אליס ובוב משחקים לסירוגין כשכל אחד בתורו לוקח את המספר הימני ביותר או את השמאלי ביותר. אליס משחקת ראשונה. בסיום המשחק הרווח של אליס הוא סכום המספרים שהיא לקחה פחות סכום המספרים שבוב לקח. הרווח של בוב הוא סכום המספרים שהוא לקח פחות סכום המספרים שאליס לקחה. כל מטרת 3,8,1 שחקן היא להגיע לרווח מירבי. למשל אם הסדרה ההתחלתית היא אז הרווח של 1,3 4 אליס הוא 4- ושל בוב הוא (לא משנה איזה מבין המספרים אליס תבחר בצעד 8 הראשון, בוב יבחר את המספר בכדי להביא למקסימום את הרווח שלו, מה שיותיר לאליס את אותו מספר מבין 1,3 שלא בחרה בצעד הראשון).
2 הצע אלגוריתם הרץ בזמן ) n )O לעצמה. המחשב את הרווח המקסימאלי שאליס יכולה להבטיח שאלה 82 תהא c) N = ( G, st,, רשת זרימה בה הקיבולים של כל הקשתות הם מספרים שלמים זוגיים, f מלבד קשת אחת שלה קיבול תהא אי-זוגי. שלם זרימה מקסימאלית בשלמים ברשת e ונניח שערכה אי-זוגי. הוכח / הפרך - רוויה. שאלה 83 k { k} w: E 1,2,, גרף לא מכוון וקשיר עם פונקצית משקל עבור,O( ke) ויהא כלשהו,. s V הצע אלגוריתם, הרץ בזמן המוצא את המסלולים הקלים. v V ביותר בגרף מ- s לכל