מבוא כללי לתכנות (ולמדעי המחשב) 1843-0310 מרצה :אמיר רובינשטיין אוניברסיטת תל אביב סמסטר א' 2014-5 שיעור 10 .1תורת הגרפים -המשך - .2 צביעת מפות בעיות נוספות הצצה אל לב התאוריה של מדעי המחשב – מבוא לסיבוכיות - שאלת מיליון הדולרP vs. NP : תזכורת מונחים בגרפים כמה הגדרות לגרף לא מכוון: a שכנים ( – )neighborsשני צמתים המחוברים בקשת. c דרגה ( )degreeשל צומת – מספר השכנים של צומת. b סימון :הדרגה של צומת vמסומנת )deg(v d הערה :נהוג שלצורך חישוב דרגה קשת עצמית נספרת פעמיים. מסלול ( )pathבגרף מצומת vלצומת – uסדרת צמתים ,הראשון בהם הוא vוהאחרון ,u כאשר בין כל שני צמתים סמוכים בסדרה יש קשת. מעגל ( )cycleבגרף הוא מקרה פרטי של מסלול ,המתחיל ומסתיים באותו צומת. גרף קשיר ( - )connectedגרף שבו קיים מסלול מכל צומת לכל צומת. a +1 גרף ממושקל ( – (weightedגרף שבו לקשתות מוצמדים ערכים, c -2 -1 b בד"כ מספריים ,הנקראים משקלים (מה הם יכולים לייצג?) d 2 תזכורת שבעת הגשרים של Königsberg • האם ניתן לטייל בעיר ולחצות כל גשר בדיוק פעם אחת? • מה הפרטים החשובים כאן? האם יש בגרף מסלול שעובר בכל קשת בדיוק פעם אחת? בנינו מודל ( )modelלבעיה ,המייצג אותה בצורה מופשטת. 3 תזכורת מסלול /מעגל אוילר • הגדרה :מסלול אוילר בגרף הוא מסלול שעובר בכל קשת בדיוק פעם אחת. מהו מעגל אוילר? • השאלה שלנו אם כן הפכה להיות :מתי גרף מכיל מסלול /מעגל אוילר? • משפט (אוילר:)1736 , גרף קשיר מכיל: מסלול אוילר ,אם כל צמתיו למעט בדיוק 2בעלי דרגה זוגית. -מעגל אוילר אם כל צמתיו בעלי דרגה זוגית. האם בגרף זה יש מסלול /מעגל אוילר? 4 תזכורת מסלול /מעגל אוילר -פייתון def euler(G): n = len(G[0]) #number of nodes אלגוריתם לבדיקת קיום מסלול /מעגל אוילר* .1מונה דרגות אי-זוגיות = 0 odd_deg = 0 for i in range(n): .2לכל שורה במטריצה: 2.1נספור כמה שכנים יש בשורה ]deg = sum(G[i]) #how many edges 'touch' G[i if deg%2 == 1: 2.2אם הכמות היא אי-זוגית: 2.2.1נגדיל מונה ב1 - odd_deg = odd_deg +1 if odd_deg==0: )"print(“Euler cycle elif odd_deg==2: )"print(“Euler path else: )"print("no Euler path .3אם מונה == :0 3.1נדפיס "מעגל אוילר" .4אחרת אם הוא בדיוק :2 4.1נדפיס "מסלול אוילר" .5אחרת: 5.1נדפיס "אין מסלול אוילר" * בהנחה שהגרף קשיר ,ושאין בו קשתות עצמיות (מצומת לעצמו) 5 תזכורת House of Santa • האם תוכלו לצייר את הבית מבלי להרים את העיפרון? האם יש בגרף מסלול אוילר? • הפשטה מאפשרת לראות דמיון בין בעיות ! 6 תזכורת דוגמה לשני סוגי גרפים (יש עוד רבים) • גרף דו-צדדי ()Bipartite V2 V1 • קליקה /גרף מלא ()Clique /complete graph 7 כמות קשתות בגרף לא מכוון תרגיל: כמה קשתות יש בגרף מלא (קליקה) עם nצמתים? שימו לב כי זהו מספר הקשתות המקסימלי בגרף לא מכוון (לא כולל קשתות עצמיות). 8 צביעת מפות 1 להלן שתי מפות. נגדיר מפה כחיתוך המישור לאזורים רציפים. נגדיר צביעה חוקית של מפה: צביעה של כל מדינה בצבע אחד ,כך שאין שתי מדינות גובלות עם אותו צבע. 2 שאלות: .1מהו מספר הצבעים המינימלי הדרוש לצביעה חוקית של כל אחת מהמפות? .2דוגמה למפה בה דרושים לפחות 5צבעים? 9 מתוך http://csunplugged.org ,CSUnplugged אתר בעברית :חפשו "מדעי המחשב ללא מחשב" משפט 4הצבעים ()4 color theorem תוצאה מאוד מפורסמת (ומפתיעה?): משפט ארבעת הצבעים :כל מפה (של אזורים רציפים) ניתנת לצביעה ב 4 -צבעים. בשנת 1852צעיר בריטי בשם פרנסיס גאתרי ניסח זאת כהשערה. במשך למעלה מ 120 -שנה טובי המתמטיקאים בעולם ניסו להוכיח את השערת ארבעת הצבעים ללא הצלחה. המשפט הוכח בשנת .1976ההוכחה מראה שניתן לסווג כל מפה לאחת מבערך אלף סוגי מפות .אחד מצעדי ההוכחה כולל בחינת כאלף סוגים אלו באמצעות מחשב. ההוכחה שנויה במחלוקת מבחינה פילוסופית .מדוע? מה דעתכם? הערה :מציאת צביעה ב 4 -צבעים אינה תמיד קלה (אבל כאמור תמיד קיימת). 10 מפות כגרפים כל מפה ניתנת לייצוג באמצעות גרף. צמתים = המדינות /האזורים קשתות = בין צמתים שמייצגים שתי מדינות גובלות תהיה קשת שימו לב :כל מפה ניתנת לייצוג כגרף ,אך ההיפך לא נכון (מדוע?). הערה :אם מגבילים את הגרף כך שניתן לצייר אותו בלי חיתוכי קשתות ,אז שני הכיוונים נכונים (כל מפה היא גרף ולהיפך). גרפים כאלו נקראים גרפים מישוריים (.)planar graphs נתמקד בשאלה הכללית יותר הבאה: 11 בהינתן גרף ,Gהאם ניתן לצבוע אותו באמצעות kצבעים בלבד? צביעת גרפים – 2צבעים שאלה :מתי גרף ניתן לצביעה ב 2 -צבעים בלבד? גרף כזה נקרא -2צביע (.)2-colorable כן -2צביע לא -2צביע רמז :האלגוריתם הבא בודק אם גרף הוא -2צביע: .1נצבע צומת שרירותי כלשהו בצבע אדום. .2נצבע את כל שכניו בכחול ,את כל שכני שכניו שוב באדום ,וכך הלאה. .3אם בשלב כלשהו אנו נתקלים בשכן שכבר צבוע באותו הצבע ,נכריז "לא -2צביע". .4אחרת נכריז "כן 2צביע". 12 -2צביע? Petersen graph צביעת גרפים – 2צבעים שאלה :מתי גרף ניתן לצביעה ב 2 -צבעים בלבד? גרף כזה נקרא -2צביע (.)2-colorable לא -2צביע כן -2צביע משפט :גרף ניתן לצביעה ב 2 -צבעים אם ורק אם* אין בו מעגלים באורך איזוגי. זה גם בדיוק התנאי להיותו של גרף דו-צדדי (.)Bipartite שאלה :מה סיבוכיות הזמן של בדיקה האם גרף בעל nצמתים הוא -2צביע? האלגוריתם שהוצג קודם עובר על כל הצמתים ( )nוכל הקשתות (פחות מ )½n2 -פעם אחת .לכן סה"כ אלגוריתם ריבועי. 13 * כלומר זהו תנאי מספיק והכרחי. אם הוא מתקיים הגרף -2צביע .אם הגרף 2צביע התנאי מתקיים. 3צבעים? שאלה :מתי 3צבעים יספיקו לצביעה חוקית של גרף? אלגוריתם :Brute force כל צומת יכול לקבל אחד משלושה צבעים. בסה"כ יש 3nדרכים לצבוע גרף עם nצמתים ב 3 -צבעים. פשוט נעבור על כולן ונבדוק אם יש אחת חוקית. חדשות רעות : לא ידוע כיום אלגוריתם שעונה על שאלה זו ,ושאינו בעל סיבוכיות אקספוננציאלית*. כלומר לא ידוע אלגוריתם פולינומיאלי לבעיה זו. למעשה ,הדבר נכון לכל מספר צבעים !! k>2 נחזור לזה בהמשך. 14 * אם כי יש אלגוריתמים אקספוננציאליים יעילים יותר מזה שמופיע למעלה. עוד בעיה מפורסמת :איזומורפיזם בגרפים • בעיית הגרפים האיזומורפיים ( :)isomorphic graphsבהינתן שני גרפים ,האם הם בעצם אותו גרף בחילוף שמות הצמתים? ax bw cz dy y x b a w z d c x a y v e ??? b c z u w f d image from: http://dx.doi.org/10.1016/j.pbiomolbio.2012.05.007 • גם כאן החדשות רעות ...לא ידוע אלגוריתם פולינומיאלי שעונה על שאלה זו. • סיבוכיות אלגוריתם בגישת ?brute force 15 בעיות מפורסמות נוספות בתורת הגרפים • בעיית המסלול הקצר ( :)shortest pathמציאת מסלול בין שני צמתים ,כך שמספר הקשתות בו (או סכום המשקלים אם יש) מינימלי. • בעיית הזרימה המקסימלית ( :)maximal flowמציאת זרימה חוקית מ )source( s -ל)target( t - שערכה מקסימלי (המשקלים – קיבולות זרימה). • בעיית העץ הפורש המינימלי ( :)minimum spanning treeמציאת קבוצת קשתות מינימלית שמחברת את כל הצמתים ,מבלי שייווצרו מעגלים. לכל אלו יש גרסאות רבות ,ואלגוריתמים יעילים (פולינומיאליים) 16 הצצה אל לב התיאוריה של מדעי המחשב: מבוא לתורת הסיבוכיות 17 מצבי ידע ולמידה "קושי של בעיה" או "קושי חישובי" הוא מהרעיונות הבסיסים והמרכזיים במדעי המחשב. אחת ההגדרות של למידה היא מעבר של בעיה לדרגת קושי נמוכה יותר. ? = 7*8 בעיה קשה 18 בעיה קלה בעיה טריוויאלית מצבי ידע ולמידה דרך הסתכלות נוספת היא מנקודת מבט של סך הידע שנצבר (לפחות על פי הידוע). המחקר המדעי מנסה להקטין דרגת קושי של בעיות. בעיה קשה** x7 + 2x4 - 7x + 4 = 0 ?=x 19 בעיה קלה* x2 + 2x - 7 = 0 ?=x בעיה טריוויאלית x=3+0 ?=x * יש דרך יעילה לפתור כל משוואה ריבועית (יש נוסחה). ** לא ידועה דרך כללית לפתור משוואות ממעלה ,7למעט מקרים ספציפיים. קשה אבל קל לאימות יש בעיות קשות ,שמקיימות תכונה מעניינת: אם נקבל לידנו פתרון חוקי ,אימות הפתרון ( )verificationהוא קל. בעיה קשה אבל קלה לאימות x7 + 2x4 - 7x + 4 = 0 ?=x בעיה זו קלה לאימות כי חישוב כפל וחיבור הן בעיות קלות. 17 + 2*14 – 7*1 + 4 = 0 20 4דרגות קושי של בעיות .1בעיות טריוויאליות – אנו יודעים את הפתרון שלהן ,מצריכות שליפה מהזיכרון .2בעיות קלות – איננו יודעים פתרון ,אבל יש לנו דרך יעילה לחשב פתרון .3בעיות קשות אבל קלות לאימות – איננו יודעים פתרון או דרך יעילה לחשב פתרון ,אבל אם נקבל לידנו פתרון חוקי ,יש לנו דרך יעילה לאמת אותו .4בעיות קשות באמת – קיימות רק דרכים בלתי-יעילות (אקספוננציאליות) גם לחישוב פתרון וגם לאימות פתרון נתון. בהקשר של פתרון בעיות ע"י מחשב, יעיל = בעל סיבוכיות פולינומית, 21 בלתי-יעיל = בעל סיבוכיות אקספוננציאלית O)…( סיבוכיות זמן והסימון constant O(1) תזכורת "... – "קצב גידול של לכל היותרO)…( logarithmic O(logn) linear O(n) Polynomial time Moderate order of growth. Considered efficient. quadratic O(n2) … exponential O(2n) O(3n) O(n!) Exponential time Extreme order of growth. Considered inefficient. 22 התמודדות חישובית עם בעיות .1בעיות טריוויאליות אינן מעניינות מבחינה חישובית. .2לבעיות קלות יש אלגוריתמים יעילים ,ולכן אינן צריכות להדאיג. אבל אפשר לנסות לשפר את האלגוריתמים /להוכיח חסם תחתון לבעיה המעיד כי לא ניתן לשפר עוד. .3התמודדות עם בעיות קשות אבל קלות לאימות: .1 חקר ולמידה למציאת פתרון יעיל ,וע"י כך הפיכתן לבעיות קלות או אפילו טריוויאליות. .2 אם הבעיה לא גדולה מדיי ,גישת ה ,brute force -או בשם אחר חיפוש ממצה ( exhaustive )searchתספיק. .3 פתרונות מקורבים ( :)approximatedפתרונות יעילים שאינם תמיד נכונים ,אבל לא רחוקים מפתרון נכון. .4בעיות קשות באמת – דרכים 2-3לעיל. 23 בחזרה לצביעת גרפים שאלה :לאילוו מחלקות קושי שייכות בעיות הצביעה: 24 • ב 2-צבעים? • ב 3-או יותר צבעים? • ב 4 -צבעים עבור המקרה הפרטי של גרף מישורי? ? P = NP - Pמחלקת הבעיות* הקלות ()Polynomial - NPמחלקת הבעיות* הקשות אבל קלות לאימות ( ,Non-deterministic polynomialלא נסביר את השם)... מה היחס בין שתי המחלקות הללו? הסבר ודיון. NP P=NP ? P השאלה הפתוחה הגדולה של מדעי המחשב (הפרס -מיליון דולר): האם היכולת לזהות ביעילות פתרון חוקי של בעיה מעידה על יכולת לפתור אותה ביעילות? ? Is P = NP * פורמלית ,המחלקות Pו NP -מתייחסות לבעיות הכרעה בלבד – בעיות שהתשובות עליהן הן כן/לא. 25 מסלולי אוילר /המילטון מסלול אוילר ( :)Eulerמסלול שעובר בכל קשתות הגרף בדיוק פעם אחת. בעיית מסלול אוילר שייכת למחלקה .P תזכורת -הבעיה "האם גרף קשיר מכיל מסלול/מעגל אוילר" ניתנת לפתרון בזמן ריבועי: עוברים על כל המטריצה בסיבוכיות זמן ) O(n2וסופרים כמה דרגות אי-זוגיות יש. אם יש 0או 2עונים "כן" ,אחרת עונים "לא". מסלול המילטון ( :)Hamiltonמסלול שעובר בכל צמתי הגרף בדיוק פעם אחת. למרות הדמיון בין הבעיות ,לא ידוע כיום אלגוריתם פולינומי לבעיה זו. אבל בעיית מסלול המילטון ב :NP -בהינתן פתרון (מסלול המילטון חוקי) ,קל לבדוק שאכן הוא כזה (בודקים שכל הצמתים מופיעים ,שאין חזרות ,ושבין כל שני צמתים יש קשת). 26 )travelling salesperson( הסוכן הנוסע http://www.youtube.com/watch?v=xi5dWND499g 27 הסוכן הנוסע – ייצוג כגרף בהינתן גרף עם משקלים על הקשתות ,ומספר נוסף ,K האם יש מסלול שעובר בכל הצמתים בדיוק פעם אחת ,ומשקלו הכולל לכל היותר ? K (לפעמים דורשים גם חזרה לצומת ההתחלה) עד היום לא נתגלה אלגוריתם פולינומי לבעיה זו. גם בעיית הסוכן הנוסע שייכת ל( NP -בהינתן מסלול חוקי.)... טענה :אם יתגלה כי בעיית הסוכן הנוסע ב ,P -אז גם בעיית מסלול המילטון ב.P - הסבר בכיתה. במקרה כזה אומרים שיש רדוקציה פולינומית מבעית מסלול המילטון לבעיית הסוכן הנוסע. 28 מספרים ראשוניים 29 מספרים ראשוניים בעית בדיקת הראשוניות :בהינתן מספר שלם חיובי ,Nהאם הוא ראשוני? עד לא מזמן ידעו לומר שהבעיה ב.NP - ב 2002 -נתגלה שהבעיה למעשה ב.P - הערה :יש להבדיל בין בדיקת ראשוניות לבין: פירוק לגורמים ראשוניים ( :)factorizationבהינתן ,Nמציאת הגורמים הראשוניים שמכפלתם שווה לו .למשל .12 = 22*3 בעיית הפירוק לגורמים שייכת ל!! NP - אלגוריתם ההצפנה המפורסם RSAמסתמך על זה. 30 המחלקה NPC • NPCהוא קיצור של ( NP-Completeבעברית-NP :שלם). • לא נסביר את השם הזה... • זוהי תת מחלקה של NPהכוללת כ 1000 -בעיות בעלות התכונה המפתיעה הבאה: )1אם לאחת מהן יש פתרון פולינומי לכולן יש וגם P = NP )2אם לאחת מהן אין פתרון פולינומי לאף אחת אין וגם P ≠ NP ומכאן העניין הרב שיש במחלקה זו. P=NP=NPC • הרוב המכריע של מדעני המחשב NPC ? NP סבורים כי .P ≠ NP P אם אכן כך – לכל הבעיות ב NPC -אין ולא יהיה פתרון יעיל!!! • מבין הבעיות שראינו ,בעיית הצביעה ב k>2 -צבעים ,מסלול המילטון והסוכן הנוסע שייכות ל .NPC -לא הוכח שפירוק לגורמים ובעיית האיזומורפיזם שייכות ל.NPC - 31 Believed Classification of problems we saw NPC Hamiltonian paths TSP k>2 coloring + ~1000 more… NP Graph Isomorphism Factorization … P 2-coloring Euler paths Sorting a list Searching a list +,* … 32 A Comic relief The Travelling Salesperson Problem 33 A Comic relief (2) Why it's good to know a problem is NPC… 34
© Copyright 2024