Top Banner
המחשב למדעי מבוא וסיבוכיות חישוביות, המחשב מדעי:14 שיעור: נוסף לעיון.2014 .Morten Tyldum : במאי.(The Imitation Game) החיקוי משחקhttps://www.yahoo.com/tech/our-interview-with-turing-test-winner-eugene- goostman-88482732919.html Charles Babbage. Table of the Logarithms of the Natural Numbers from 1 to 108000. William Clowes and Sons, 1841. P.M. Hill and J.W. Lloyd. The Gödel Programming Language. MIT Press, 1994. http://compsoc.dur.ac.uk/whitespace/ http://www.nyx.net/~gthompso/quine.htm http://www.claymath.org/millenium-problems/p-vs-np-problem
44

בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

Feb 12, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

מבוא למדעי המחשבשיעור 14: מדעי המחשב, חישוביות וסיבוכיות

לעיון נוסף: • .2014 .Morten Tyldum :במאי .(The Imitation Game) משחק החיקוי

• https://www.yahoo.com/tech/our-interview-with-turing-test-winner-eugene-goostman-88482732919.html

• Charles Babbage. Table of the Logarithms of the Natural Numbers from 1 to 108000. William Clowes and Sons, 1841.

• P.M. Hill and J.W. Lloyd. The Gödel Programming Language. MIT Press, 1994. • http://compsoc.dur.ac.uk/whitespace/ • http://www.nyx.net/~gthompso/quine.htm • http://www.claymath.org/millenium-problems/p-vs-np-problem

Page 2: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

קצת על הבחינה

Page 3: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

המתכונת3 שעות, בחירה של 3 מתוך 4 שאלות. כל השאלות שוות משקל. •

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

בכל שאלה מספר סעיפים, שלפעמים קשורים זה בזה. הסעיפים לא בהכרח שווי •משקל.

יכולות להיות שאלות וסעיפים מסוגים שונים - כתיבת קוד, הבנת קוד, השלמת קוד, •סיבוכיות של קוד, הסבר מילולי, …

אפשר לענות על כל השאלות, אבל בכל בחינה נבדוק רק 3 שאלות לפי בחירתכם. (אי •אפשר לצבור נקודות חלקיות מ-4 שאלות.)

הבחינה תיערך ללא אפשרות לשימוש בחומר עזר - כל מה שצריך יופיע בטופס •הבחינה.

דף ההנחיות יפורסם לפני מועד הבחינה.•

Page 4: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

מה אתם צריכים לדעתאנחנו נניח שאתם מכירים את כל המבנים הבסיסיים של פייתון שלימדנו. זה כולל: •

מושגים, כגון immutable, איטרטור, תחום הגדרה של משתנה, מצביע וכיוב׳. •אופרטורים, כגון +, *, %, >, in ,and וכיוב׳. •פקודות, כגון yield ,def ,class ,return ,break ,while ,if וכיוב׳. •מחלקות מהספריה של פייתון, כגון dict ,str ,tuple ,list וכיוב׳. •פקודות פייתון שמבצעות פעולות עם אובייקטים מהמחלקות הללו, כגון אתחול, •

שרשור, גישה לאבר, list comprehension ,slicing וכיוב׳.

כלים שלימדנו לפתרון בעיות, כגון רקורסיה, מיון, רשימה משורשרת וכיוב׳. •

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

המתמטיים שראיתם בשיעורים ובתרגולים).

Page 5: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

מה לא צריך לדעתאין צורך לזכור בע״פ את פונקציות הספריה של פייתון (למעט כאלו בשימוש •

.(print() או len() כללי ותדיר, כמו

אין צורך לזכור את המתודות של המחלקות הנכללות בספריה של פייתון (כגון •()list.pop() ,str.join() ,list.append וכיוב׳).

הבחינה תכלול רשימה מרוכזת של הפונקציות והמתודות הללו, או תזכורת בכל •שאלה לגבי מה שרלוונטי עבור פתרונה.

החומר הבא שלימדנו לא נכלל בבחינה: אלגוריתם הפרספטרון, השימוש •בספריה Pillow לצורך עיבוד תמונות, תקשורת, גיבוב (hashing), החומר של

השיעור האחרון.

למרות זאת, הקוד שראינו בהקשר עם הנושאים הללו שימש גם להדגמה של •נושאים כלליים בפייתון (לדוגמה: פונקציות, מערכים דו-מימדיים, העברת

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

Page 6: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

דרישות מהפתרוןלא נוריד נקודות על שגיאות תחביר בקוד שאינן מעידות על •

חוסר הבנה.

אין צורך לכתוב תיעוד כפי שנדרשתם בתרגילים. אפשר •להוסיף הסברים בעברית אם נראה לכם נחוץ להבנת

הפתרון.

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

אין צורך להוסיף לפתרון (הוכחות, נוסחאות, דוגמאות, …) •מעבר למה שנדרשתם מפורשות בשאלה.

Page 7: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

הכנה וגישה לבחינהכדאי לעבור על החומר של השיעורים והתרגולים. •

נסו לפתור לפחות חלק מהתרגילים שקיבלתם מחדש, תוך שימוש בכלים מתקדמים יותר •שלמדתם מאז.

נסו לפתור את שתי הבחינות הקודמות ותרגילי החזרה. שימו לב שיש נושאים שלא נלמדו •השנה (ולהיפך).

חלק מתרגילי החזרה קשים יותר מרמת הבחינה. •

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

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

בכל שאלה, עדיף לענות על הסעיפים לפי הסדר (בשל התלות ביניהם), אבל אם נתקעים, •כדאי להמשיך הלאה ולחזור לסעיף הבעייתי מאוחר יותר.

Page 8: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

בהצלחה!

Page 9: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

מדעי המחשב

Page 10: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

מדעי המחשב

תיאוריה קורסים: מבני נתונים, אלגוריתמים,

חישוביות

הנדסת תוכנה קורסים: תכנות מונחה עצמים, סדנת

תכנות

חישוב ומדע קורסים: חישוב קוונטי, כלכלה וחישוב,

ביולוגיה חישובית, חישוב נומרי

מערכות מחשב ,Tetris-ל NAND-קורסים: מערכות הפעלה, ממבנה המחשב, מסדי נתונים, רשתות תקשורת

יישומים קורסים: מערכות לומדות, גרפיקה ממוחשבת,

עיבוד תמונות, בינה מלאכותית

Page 11: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

חישוב כתופעת טבע

Page 12: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

קצת הסטוריה …Gottfried Wilhelm Leibniz 1646-1718

חזון: מיכון החשיבה הלוגיתשני מרכיבים:

• Characteristica Universalis שפה פורמלית אוניברסלית•Calculus Ratiocinator תחשיב לוגי

מכונת החישוב (Staffelwalze) של לייבניץ פעולות חשבון: חיבור, חיסור, כפל, חילוק

Page 13: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

חישוב מכני Charles Babbage 1791-1871

1822 מנוע ההפרשים חישובים נומריים: טורי טיילור

1834 המנוע האנליטי חישוב כללי

Page 14: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

הגדרה מתמטית של חישוב David Hilbert 1920 התוכנית של הילברט

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

Kurt Gödel 1931 הקידוד של גדל משפטי אי-השלמות

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

(נדרשת ”שיטה אפקטיבית“ לבדוק הוכחות - מערכת לוגית אפקטיבית)

Alan Turing 1936 מכונת טיורינג קיימת מכונה אוניברסלית

אי אפשר להכריע את בעיית העצירה (שניתנת לניסוח בתורת המספרים)

Alonzo Church λ תחשיב

Page 15: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

מכונת טיורינג Alan Mathison Turing 1912-1954

Page 16: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

עוד על מכונת טיורינג

לכל אלגוריתם צריך לפתח אוטומט בקרה משלו. •

טיורינג הוכיח שיש מכונה אוניברסלית שהקלט שלה זה זוג • .input על machine והיא מפעילה את (machine, input)

לצורך זה נדרש קידוד סטנדרטי של מכונות. •

האינטרפרטר של פייתון הוא דוגמה למכונה אוניברסלית. •אפשר להריץ דרכו כל תוכנית בפייתון על כל קלט.

Page 17: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

התזה של צ׳רץ׳ וטיורינגכל מה שניתן לחישוב, ניתן לחישוב על ידי מכונת טיורינג. •

פרשנות רעיונית: ההגדרה הפורמלית של מכונת טיורינג מזדהה עם •המושג האינטואיטיבי של חישוב/אלגוריתם.

פרשנות פיסיקלית: לא ניתן לבנות מכשיר שמבצע חישוב שאינו •אפשרי במכונת טיורינג.

פרשנות מעשית: תוכנית מחשב בפייתון שקולה למכונת טיורינג. •

גרסה מודרנית של התזה: אין מנגנון חישוב שמשמעותית •יעיל יותר בזמן או מקום.

האם יש אלגוריתם יעיל שמוצא הוכחות מתמטיות קצרות •למשפטים שיש להם הוכחה כזו?

Page 18: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

שאלת הדיוק

איך מצדיקים את האוניברסליות של חישוב דיגיטלי? - • אי אפשר למדוד אות פיסיקלי בדיוק אינסופי – במערכות דינאמיות ”נחמדות“ השגיאה כתוצאה –

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

חישוב הוא דיגיטלי: מתבצע בצעדים בדידים

על נתונים בדידים שברים מיוצגים בדיוק סופי

מודל העולם הפיסיקלי הוא אנלוגי: התהליכים והערכים

הם רציפים בפרט צצים ערכים בדיוק אינסופי

Page 19: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

תורת הקוונטיםהאם מכניקת הקוונטים ניתנת לדימוי על מכונת טיורינג? •

חישובית - כן, מבחינת היעילות - לא ידוע. •

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

טיורינג.

האם אפשר לבנות מחשב קוונטי? •

זה האתגר המשמעותי ביותר לתזה של צ׳רץ׳-טיורינג.•

Page 20: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

המוחהאם המוח הוא רק מחשב? - •

בפילוסופיה - בעיית גוף-נפש: •מוניזם (מטריאלי): יש רק חומר. •דואליזם: יש עוד משהו (נפש, תודעה, הכרה, …) •

מבחן טיורינג: •אין עדיין תוכנית מחשב שהצליחה במבחן. •התוכנה הרוסית Eugene Goostman הצליחה ב-2014 לשכנע שליש •

מהשופטים במבחן טיורינג שהיא ילד אוקראיני בן 13.

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

Page 21: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

מחשב אוניברסלי

George Boole 1848 אלגברה בוליאנית

Claude Shannon 1937 מעגלים דיגיטליים ניתן לממש אלגברה בוליאנית ע״י מערכים של ממסרי טלפוניה אלקטרו-מכניים

John von Neumann EDVAC 1945 :(stored-program computer) הארכיטקטורה של פון-נוימן

התוכנית מאוכסנת בזיכרון כמו הנתונים.

Claude Shannon 1948 תורת האינפורמציה קודים בינאריים לתיקון שגיאות.

Page 22: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

חישוביות

Page 23: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

בעיית העצירה

Page 24: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

לולאה אינסופית - הפונקציה לא עוצרת:•

בעיית העצירה

Page 25: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

לולאה אינסופית - הפונקציה לא עוצרת:•

בעיית העצירה

קטע מ- יהודה עמיחי, שלווה גדולה

Page 26: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

לולאה אינסופית - הפונקציה לא עוצרת:• The vermin only teaze and pinch Their foes superior by an inch. So, naturalists observe, a flea Has smaller fleas that on him prey; And these have smaller still to bite ‘em, And so proceed ad infinitum.…

קטע מ- Jonathan Swift, On Poetry: A Raphsody

בעיית העצירה

Page 27: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

לולאה אינסופית - הפונקציה לא עוצרת:•

בעיית העצירה

def ad_infinitum(): while (True): print(“again ???!!!”)

Page 28: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

לולאה אינסופית - הפונקציה לא עוצרת:•

פונקציה שכן עוצרת:•

בעיית העצירה

def ad_infinitum(): while (True): print(“again ???!!!”)

def mortalis(): while (False): print(“Never once!”)

Page 29: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

בעיית העצירהאפשר להבדיל בין שני המקרים? •

שאלה מבחינה של פרופסור יובל המבולבל בקורס מבוא למדעי •המחשב:

השלימו את הקוד של הפונקציה הבאה: •def halt(f, data): …

• f אם) f שהוא קלט עבור data-בפייתון ו f הוא פונקציה halt-הקלט ל .(data = None לא מקבלת קלט, נעביר

• False-עוצרת ו f(data) אם הקריאה True מחזירה halt הפונקציהאחרת.

Page 30: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

בעיית העצירהבפרט, הקריאה •

halt(ad_infinitum, None) .False צריכה להחזיר

הקריאה •halt(mortalis, None)

.True צריכה להחזיר

Page 31: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

כריעותנתבונן בקוד הבא: •

הקריאה paradox(f) עוצרת אם ורק אם f(f) לא עוצרת.•

def paradox(f): # f is a Python function if halt(f, f): while (True): pass else: return

Page 32: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

כריעות• paradox(paradox) - ?מה יקרה אם נריץ את הקוד הבא

אם halt(paradox, paradox) מחזירה True, אז •paradox(paradox) לא עוצרת.

אם halt(paradox,paradox) מחזירה False, אז •paradox(paradox) עוצרת.

בשני המקרים נקבל סתירה! •

•!!! halt מסקנה: אי אפשר לכתוב את

Page 33: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

מסקנה

יש בעייה חישובית מוגדרת היטב שאין אף אלגוריתם •שפותר אותה!

יש עוד בעיות כאלה. •

האפשרות לשכפל את הקלט ולתת לפונקציה את •עצמה כקלט (הפנייה עצמית) היא קריטית לטיעון.

Page 34: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

(quine) קוד שמדפיס את עצמו

(Omar Antolin [email protected] מבוסס על קוד של)

Page 35: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

משוואות דיופנטיותהשאלה העשירית של הילברט: למצוא אלגוריתם שמזהה אם •

למערכת משוואות דיופנטיות יש פיתרון.

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

מסקנה: אין פיתרון לבעייה העשירית של הילברט!•

02...

02303

67

322

23

=−−

=−+

=−+

zwwz

zzwzx

xwzzyx

Page 36: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

משפט אי השלמות של גדלמערכת הוכחה יעילה מאפשרת לכתוב את הפונקציה הבאה •

(הקלט הוא שתי מחרוזות): def is_proof(theorem, proof):

נזדקק גם לאיטרטור אינסופי שעובר על כל המחרוזות (לפי •אורך ובכל אורך בסדר לקסיקוגרפי):

class AllStrings:

לבסוף נזדקק לפונקציות שמייצרות טיעונים פורמליים •(כמחרוזות):

def halt_thm(f, data): def nohalt_thm(f, data):

Page 37: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

AllStrings מימוש

Page 38: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב
Page 39: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

המשךבהנחה שמערכת ההוכחה שלנו שלמה:

def halt(f, data): halt_statement = halt_thm(f, data) nohalt_statement = nohalt_thm(f, data) for proof in AllStrings():

if is_proof(halt_statement, proof): return True

elif is_proof(nohalt_statement, proof): return False

Page 40: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

סיבוכיות

Page 41: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

תזכורתסיבוכיות זמן: לכל אורך קלט - כמה פעולות נדרשות •

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

סיבוכיות מקום: לכל אורך קלט - כמה תאי זיכרון (חוץ •מהקלט) נדרשים.

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

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

בודד שגודלו קבוע ולא תלוי בגודל הקלט.

Page 42: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

גרסה כמותיתהשלימו את הקוד של הפונקציה הבאה: •

def halt_in(steps, f, len): …

• f פונקציה ,steps הוא מספר טבעי halt_in-הקלט ל .len בפייתון, ומספר טבעי

• data אם קיים קלט True מחזירה halt_in הפונקציה steps עוצרת אחרי f(data) עבורו הקריאה len באורך

פעולות בסיסיות, או False אחרת.

Page 43: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

NP המחלקהבוודאי יש אלגוריתם לפתור את הבעייה: נעבור בסדר •

לקסיקוגרפי על כל הקלטים באורך len ונבדוק כל אחד.

זה לא אלגוריתם יעיל: יש 2len קלטים אפשריים •(בהנחה שמדובר ברצפים של ביטים).

האם יש אלגוריתם שהסיבוכיות שלו תלוייה רק • ?(steps-וב) len-פולינומית ב

Stephen Cook 1971 זה יפתור המון בעיות .NP-בפרט, את כל הבעיות ב

NP - הבעיות עבורן לכל קלט שמחזיר True יש עד לזה שקל לבדוק.

Page 44: בשחמה יעדמל אובמ - cs.huji.ac.ilyrabani/Lecture Notes/Intro/lecture14.pdf · תנוכתמה.לקשמ תווש תולאשה לכ .תולאש 4 ךותמ 3 לש הריחב

רדוקציות• ,halt_in הפונקציה הבאה מקבלת בדיוק אותו קלט כמו

והיא מתרגמת אותו לקלט לבעייה אחרת X (שיש לה פלט :(False או True

def compile_to_X(steps, f, len):

הפונקציה compile_to_X מבטיחה את התכונה הבאה: אם •פונקציה x(data) פותרת את הבעייה X על כל קלט data. אז

לכל קלט steps, f, len מתקיים: x(compile_to_X(steps, f, len)) == halt_in(steps, f, len)

Richard Karp 1972 מימוש יעיל עבור 21 בעיות .Cook הבעיות הללו קשות לחישוב לפחות כמו הבעייה של

מאז נתגלו אלפי בעיות כאלה.