200 likes | 242 Views
יסודות פתרון בעיות אלגוריתמיות. צבי שירן. דוגמה לאלגוריתם. בחר במספר שלם חיובי חבר את ספרות המספר חלק את התוצאה ב-3 כתוב את שארית החלוקה. מהי תוצאת ביצוע האלגוריתם שלעיל עבור המספר 1977?. 0.
E N D
יסודותפתרון בעיות אלגוריתמיות צבי שירן
דוגמה לאלגוריתם • בחר במספר שלם חיובי • חבר את ספרות המספר • חלק את התוצאה ב-3 • כתוב את שארית החלוקה מהי תוצאת ביצוע האלגוריתם שלעיל עבור המספר 1977? 0 אלגוריתם הוא מתכון לביצוע משימה. אלגוריתם מורכב תמיד מקבוצת הוראות חד-משמעיות ואפשריות לביצוע, אשר סדר ביצוען מוגדר היטב.
אלגוריתם • צורת הכתיבה של אלגוריתמים נקראת כתיבה בפסאודו- קוד. • פסאודו-קוד של אלגוריתם הוא ייצוג או כתיבה של האלגוריתם בדרך דמוית שפת תכנות, כלומר, במילים ובמשפטים בשפה חופשית אבל ברורה וחד- משמעית. • אלגוריתם = מתכון מתמטי • אלגוריתם להכפלת שני מספרים ("כפל ארוך") • אלגוריתם להעלאה בחזקה של מספר אחד באחר • אלגוריתם למציאת המחלק המשותף הגדול ביותר של שני מספרים שלמים חיוביים מכאן והלאה נתמקד באלגוריתמים כפתרון לבעיות אלגוריתמיות בעיה אלגוריתמית היא בעיה אשר נתונות בה נקודת מוצא ומטרה ונדרש אלגוריתם שלאחר ביצועו מגיעים מנקודת המוצא אל המטרה.
בעיה אלגוריתמית • שייט נמצא על גדת נהר ועמו כרוב, כבש וזאב. הוא רוצה לעבור לגדה השנייה בסירה קטנה ולהעביר את השלושה. הסירה יכולה להכיל בו- זמנית רק את השייט ועוד אחד מבין שלושת הפריטים שאיתו. השייט אינו יכול להשאיר את הזאב ואת הכבש ביחד או את הכבש ואת הכרוב ביחד ללא השגחתו. • פתחו אלגוריתם שינחה את השייט כיצד להעביר את הכבש, את הזאב ואת הכרוב מהגדה האחת אל האחרת. האם זה פתרון יחיד? איך ניתן להכליל את האלגוריתם כך שהוא יתאים גם למקרים נוספים למשל (כלב, חתול ועכבר)? אלגוריתם הפותר בעיה אלגוריתמית שעבורה כמה נקודות מוצא, צריך להיות כללי ולפתור את הבעיה עבור כולן.
אלגוריתם עם הוראת תנאי לביצוע • שני מְכָלים, מכל א ומכל ב, מכילים מספר שונה של תפוזים. סכום מספרי התפוזים בשני המכלים הוא זוגי. • פתחו אלגוריתם להעברת תפוזים בין המכלים, כך שתתבצע רק העברה אחת של מספר תפוזים, ולאחר ההעברה יכילו המכלים מספר שווה של תפוזים • שימו ♥: יש אפשרויות רבות לנקודת המוצא, כי יש אפשרויות רבות לזוגות מספרי תפוזים : שונים זה מזה שסכומם זוגי. האלגוריתם: חשב את מספר התפוזים להעברה: חצי מההפרש בין מספרי התפוזים שבמכלים אם במכל א יש יותר תפוזים, העבר ממכל א למכל ב את מספר התפוזים המחושב אם במכל ב יש יותר תפוזים, העבר ממכל ב למכל א את מספר התפוזים המחושב אלגוריתם נוסף: חשב את מספר התפוזים להעברה: חצי מההפרש בין מספרי התפוזים שבמכלים אם במכל א יש יותר תפוזים, העבר ממכל א למכל ב את מספר התפוזים המחושב אחרת, העבר ממכל ב למכל א את מספר התפוזים המחושב 30ממכל א למכל ב 18ממכל ב למכל א כמה תפוזים יש להעביר מהמכל המלא יותר למכל הפחות מלא? מכל א: 160, מכל ב: 100 כמה תפוזים יש להעביר מהמכל המלא יותר למכל הפחות מלא? מכל א: 935, מכל ב: 971 500 ממכל א למכל ב כמה תפוזים יש להעביר מהמכל המלא יותר למכל הפחות מלא? מיכל א: 1001, מיכל ב: 1 מהו האלגוריתם?
תרגול – שלושה פתקים על השולחן מונחות שלוש מעטפות בשורה, בכל מעטפה יש פתק ועליו רשום מספר. במעטפה אחת יש פתק שעליו רשום המספר 0, ובשתי המעטפות האחרות יש פתקים שרשומים עליהם מספרים שונים מ 0- . המעטפה שבה נמצא הפתק שעליו רשום 0 איננה המעטפה האמצעית בשורה. א. יש אינסוף אפשרויות לנקודת המוצא, כי על שניים מהפתקים רשומים מספרים כלשהם שונים מ- 0. תארו חמש אפשרויות שונות של נקודת המוצא. ב. פתחו אלגוריתם שמטרתו היא לשים באמצע, בין שתי המעטפות האחרות, את המעטפה עם הפתק שעליו רשום 0. הפעולות שבהן יש להשתמש לביצוע המשימה הן: קריאת המספר הרשום על המעטפה, והחלפת מקומות בין מעטפות שכנות.
פתרון – שלושה פתקים אלגוריתם : פתח פתק ימני אם ערכן 0 החלף פתק ימני עם פתק אמצעי אחרת, החלף פתק שמאלי עם פתק אמצעי
אלגוריתם שבו קיימת הוראה לביצוע-חוזר על השולחן יש קלפים המסודרים בשורה. מספר הקלפים בשורה הוא אי- זוגי, והקלף האמצעי הוא לבן. כל הקלפים שמשמאל לקלף הלבן הם שחורים וכל הקלפים שמימינו אדומים. נתונות גם שתי סימניות: סימניה 1- המוצבת על הקלף שבקצה השמאלי וסימניה 2- המוצבת על הקלף שבקצה הימני. פתחו אלגוריתם אשר מסדר את שורת הקלפים מחדש כך שכל הקלפים האדומים יהיו משמאל לקלף הלבן וכל השחורים מימינו. הפעולות המותרות לביצוע הן: • הצבת סימניה מימין או משמאל לקלף שעליו היא מוצבת. הצבת סימניה כוללת קריאת צבע הקלף שעליו היא מוצבת. • החלפה זה בזה של מקומות הקלפים שעליהם מוצבות הסימניות. תרגיל שנו את האלגוריתם כך שבתום הביצוע תושג מטרה אחרת: הקלפים שמשני צידי הקלף הלבן יהיו מסודרים לסירוגין לפי צבעים (כלומר, ש, א, ש, ..., ל, .... א, ש, א). איזה אפשרויות קיימות? (א- אדום, ל-לבן, ש-שחור) איך נדע מתי לעצור?
פתרון תרגילאלגוריתם שבו קיימת הוראה לביצוע-חוזר תרגיל שנו את האלגוריתם כך שבתום הביצוע תושג מטרה אחרת: הקלפים שמשני צידי הקלף הלבן יהיו מסודרים לסירוגין לפי צבעים (כלומר, ש, א, ש, ..., ל, .... א, ש, א). אלגוריתם לפתרון מונה מספר הפעולות מקבל את הערך 0 כל עוד הקלף שעליו מונחת הסימניות אינו לבן בצע: אם מונה מספר הפעולות זוגי (כולל 0) בצע: החלף את מקומות הקלפים שעליהם נמצאות הסימניות הצב סמניה -1 על הקלף הבא מימין הצב סמניה-2 על הקלף הבא משמאל הגדל את מונה מספר הפעולות באחד
תבניות רעיונות לתבניות? • פעולת ההחלפה (במיון או בתרגיל קודם) • מציאת ערך מקסימלי בין שני מספרים • מציאת מרחק בין שתי נקודות • לעתים קרובות, פתרונות לבעיות אלגוריתמיות כוללים פעולות, אשר חוזרות שוב ושוב בפתרונות שונים. לכל פעולה כזו יש מבנה אלגוריתמי בסיסי המתאר אופן ביצוע של משימה מנקודת מוצא למטרה. כיוון שפעולה זו משמשת שוב ושוב בפתרונות שונים נוח לקרוא לה בשם, ולהתייחס אל המבנה האלגוריתמי שלה כאל תבנית אלגוריתמית לביצוע משימה. • תבנית מורכבת מהמרכיבים הבאים: • שם התבנית, המבטא בצורה מאוד תמציתית משימה לביצוע או את דרך ביצועה (למשל החלפת ערכים). • נקודת מוצא, המציינת את המצב ההתחלתי הנתון של המשימה לביצוע. • מטרה, המתארת את המצב הסופי, את הפלט הדרוש, או את הערך שיש להחזיר בתום הביצוע. • אלגוריתם, המתאר מתכון לביצוע המשימה. האלגוריתם הוא לב התבנית
מה למדנו? • אלגוריתם • הוא מתכון לביצוע משימה, המורכב מקבוצת הוראות חד-משמעיות ואפשריות לביצוע אשר סדר ביצוען מוגדר היטב. • בעיה אלגוריתמית • היא בעיה שבה מתוארות נקודת מוצא ומטרה המגדירות משימה, ונדרש אלגוריתם הפותר את המשימה, כלומר מגיע מנקודת המוצא אל המטרה. • בבעיות אלגוריתמיות ייתכנו אפשרויות רבות, לפעמים אינסוף, לנקודת המוצא. • פסאודו-קוד – • צורתכתיבת האלגוריתם, במילים ובמשפטים בשפה חופשית אך ברורה וחד-משמעית. • סדר ביצוע ההוראות של אלגוריתם הוא על פי סדר הופעתן, אם לא נאמר אחרת. • כאשר יש צורך להתנות ביצוע של הוראות בקיום תנאי מסוים, האלגוריתם יכלול הוראה לביצוע-בתנאי (אם... אחרת...) • כאשר יש צורך בביצוע-חוזר של הוראות, האלגוריתם יכלול הוראה לביצוע-חוזר (כל עוד ... בצע ...) • הוראה לביצוע-בתנאי והוראה לביצוע- חוזר הן הוראות בקרה המנחות את אופן הביצוע של הוראות האלגוריתם
תרגיל – סימון מוצרים מפעל מסמן כל מוצר שלו בסימן המורכב מאות גדולה באלף- בית האנגלי ומספרה. כלומר סדרת הסימנים של המפעל היא הסדרה .A0, A1, …, A9, B0, B1, …, Z0, …, Z9 A0 הוא הסימןהראשון בסדרה ו- 9Z הוא הסימן האחרון בסדרה. א. מהם הסימנים שעוקבים לסימנים B9 ,A1, ו-0Z? ב. פתחו אלגוריתם לקריאת סימן שאינו הסימן האחרון בסדרה ולכתיבת הסימן הבא אחריו. הפעולות המותרות הן: קריאת סימן (המורכב מאות ומספרה), כתיבת אות, כתיבת ספרה.
פיתרון תרגיל – סימון מוצרים א. ב. האלגוריתם: • קלוט את סימון המוצר ופרק אותו לשנים, אות (תו שמאלי) וספרה (תו ימני) • אם הספרה קטנה מ-9 • הוסף אחד לספרה • אחרת • עבור לתו הבא על פי הABC • אפס את הספרה • החזר את הסימן העוקב כצירוף של האות (תו שמאלי) והספרה (תו ימני)
בעיה אלגוריתמית - חידת התפוחים האלגוריתם: טעם תפוח מהצנצנת עם השלט "מעורב", אם מתוק , שים שלט מתוק על הצנצנת שהיה כתוב עליה מעורב שים שלט חמוץ על הצנצנת שהיה כתוב עליה מתוק ושים שלט מעורב על הצנצנת שהיה כתוב עליה חמוץ אחרת, שים שלט חמוץ על הצנצנת שהיה כתוב עליה מעורב שים שלט מתוק על הצנצנת שהיה כתוב עליה חמוץ ושים שלט מעורב על הצנצנת שהיה כתוב עליה מתוק • לפניכם 3 צנצנות מלאות בתפוחים , בצנצנת אחת יש תפוחים מתוקים, בשנייה יש תפוחים חמוצים , ובשלישית התפוחים מעורבבים, (חמוצים ומתוקים). • על כל צנצנת יש מדבקה עם סוג התפוחים שיש בה (מתוקים, חמוצים, מעורבבים) • הבעיה היא שכל אחת מהמדבקות נמצאת על הצנצנת הלא נכונה ! המשימה היא : עליכם לבחור אחת מהצנצנות, לטעום תפוח אחד (כמובן שאתם יודעים לזהות איזה סוג תפוח זה) ולהחליף את כל המדבקות למקומות הנכונים שלהם , מותר לכם לטעום רק תפוח אחד מצנצנת אחת
מיון מספרים • נתונה סדרה של מספרים : • חלק א: עליכם לסדר את המספרים בסדר עולה משמאל לימין על פי הכללים הבאים: • מותר להחליף בין שני מספרים שכנים • מהו מספר הצעדים המינימלי הדרוש לסידור הרשימה? • מלאו בטבלה את התוצאות לאחר כל צעד • חלק ב: עליכם לסדר את המספרים בסדר עולה משמאל לימין על פי הכללים הבאים: • מותר להחליף בין שני מספרים שכנים • מותר לבצע כמה החלפות בו-זמנית • מהו מספר הצעדים המימלי הדרוש לסידור הרשימה? (פעולות שמבוצעות בו זמנית נחשבות צעד אחד) חלק ב: חלק א: המיון הסדרתי המהיר ביותר בעולם ימיין שישה מספרים בעשרה צעדי חישוב. המיון המקבילי יבצע את המשימה בחמישה צעדי חישוב (אך יידרשו שלושה מעבדים). האלגוריתם המקבילי פועל פי שתיים יותר מהר מהאלגוריתם הסידרתי, ודורש פי שלוש יותר מעבדים.
אלגוריתם צביעה נסו לצבוע בעזרת 4 צבעים את המפה הבאה: רותי בונה תכשיט מחרוזים וחוטים שמחברים ביניהם. היא מעוניינת לקבל תכשיט כך שלא יהיו שני חרוזים המחוברים בחוט ולשניהם אותו צבע. א. מהו המספר המינימלי של צבעים שנדרשים לביצוע המשימה? ב. נסו לבנות תכשיט עבורו יידרשו לפחות 5 צבעים שונים. מפת המחוזות של אנגליה נתנה את ההשראה למשפט ארבעת הצבעים. משפט ארבעת הצבעים שגילה צעיר בריטי בשם פרנסיס גאתרי ב 1812 שניסה לצבוע את מפת המחוזות וגילה שניתן לעשות זאת בעזרת 4 צבעים בלבד. כל מפה שהיא - לא חשוב כמה היא מבולגנת ניתנת לצביעה בעזרת 4 צבעים בלבד. פיתרון: 4 צבעים
קידוד - חלק א להלן מסר מקודד משמאל לימין. 10010110100000000010000101010000001101100000010001110000011101100110 יש לפענח את המשפט לפי טבלת הקידוד הבאה : You can do itפתרון :
קידוד - חלק ב הצגת האלגוריתם להלן מסר מקודד משמאל לימין. 0011001011110011110101111101000010010001110011101010 יש לפענח את המשפט לפי טבלת הקידוד הבאה : Can you do itפתרון : מה ההבדל בין 2 השיטות? מי יעילה יותר? פיתרון: הקוד השני הוא קוד הופמן אורך הקוד של האותיות אינו אחיד והוא תלוי בשכיחות של כל אות. משמש לדחיסה.