You are on page 1of 5

‫לוגיקה למדעי המחשב ‪ -‬דפי עזר מאת אלי בר‪-‬יהלום‬

‫אינדוקציה בלוגיקה‬

‫‪ .1‬תרגום משפת היום‪-‬יום לשפת הלוגיקה‬

‫האם מ"‪ A‬גורר ‪ "B‬נובע "‪ B‬גורר ‪ ?"A‬כמובן שלא‪ .‬בשפתנו היום‪-‬יומית ניתן לומר‪ :‬מ" ‪A‬‬
‫גורר ‪ "B‬לא נובע " ‪ B‬גורר ‪ ."A‬אבל איך רושמים זאת בשפת הלוגיקה?‬

‫בשפה שלנו "לא נובע" פירושו "לא תמיד נובע"‪ .‬לכן הכוונה שלנו במשפט הזה היא‪:‬‬
‫שהטענה 'מ" ‪ A‬גורר ‪ "B‬נובע " ‪ B‬גורר ‪ '"A‬איננה תמיד נכונה‪ ,‬כלומר איננה טאוטולוגיה‪.‬‬

‫אם כך‪ ,‬הביטוי המתאים לאמירה הזאת בשפת הלוגיקה הוא‪" :‬הפסוק ) ‪( a → b ) → ( b → a‬‬
‫איננו טאוטולוגיה"‪.‬‬

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

‫‪ .2‬אינדוקציה סמויה‬

‫?‬ ‫∨‪∧ ,‬‬ ‫נתבונן בשאלה‪ :‬האם ניתן לתאר את כל הפעולות הבינריות ע"י‬

‫ברמת הידע שלנו אנו יכולים לענות עליה כך‪:‬‬

‫‪.‬‬ ‫∨‪∧ ,‬‬ ‫פתרון נניח בשלילה שאנחנו יכולים לתאר את כל הפעולות הבינריות ע"י‬
‫אז גם את הפעולה ‪ a NAND b‬ניתן לתאר כך‪ .‬מכיוון ש‪ ,T NAND T = F -‬חייבת‬

‫עם הפרמטרים ‪ T‬בלבד שערכה הוא‬ ‫∨‪∧ ,‬‬ ‫להתקיים שרשרת של פעולות בינריות‬
‫‪.F‬‬

‫על ‪ T‬תיתן ‪– T‬‬ ‫∨‪∧ ,‬‬ ‫‪ ,T‬לכן כל שרשרת של פעולות‬


‫אבל ‪ T ∧ T=T‬וגם ‪∨ T=T‬‬
‫סתירה להנחה שהערך הוא ‪ .F‬מש"ל‬

‫פתרון זה הוא נכון‪ ,‬אבל הוא מכיל צורת חשיבה סמויה שאומרת‪" :‬אם זה מתקיים לפעולה‬
‫אחת‪ ,‬אז זה מתקיים לכל כמות של פעולות"‪ .‬זו צורת החשיבה שאנו מפעילים כשאנו‬
‫אומרים את מילות‪-‬הקסם "וכן הלאה"‪ .‬צורת חשיבה זו מופיעה בהוכחה החל מהמילה‬
‫"לכן" המודגשת‪.‬‬

‫צורת החשיבה הזאת נכונה מאד‪ .‬אבל הלוגיקה היא מדע הנותן לחשיבה האנושית צורה‬
‫מתמטית; לפיכך ל"וכן הלאה" הזה נצטרך לתת צורה מתמטית פורמלית – כאקסיומה‬
‫)כלל‪-‬יסוד בצורת העבודה שלנו(‪ .‬השם המקובל לאקסיומה זו הוא "אינדוקציה"‬
‫)משמעות השם הוא בערך "הסקה" בלטינית(‪.‬‬

‫‪ .3‬אקסיומת האינדוקציה‬

‫אקסיומה אם ‪ (P(x‬תכונה )פונקציה( של מספרים טבעיים שיכולה לקבל ערך ‪ T‬או ‪,F‬‬
‫ואם מתקיימים שני תנאים‪:‬‬
‫בסיס האינדוקציה ‪P(1)=T‬‬

‫צעד האינדוקציה אם מתקיים ‪ ,P(k)=T‬אז גם ‪P(k+1)=T‬‬

‫אז לכל ‪ n‬טבעי מתקיים ‪.(P(n‬‬

‫הסבר‪ :‬אם יש בידי חיה דמיונית שנקראת כלבתול‪ ,‬ואם מתקיימים התנאים‪:‬‬

‫)הערה‪ :‬זה‪ ,‬בעצם‪ ,‬אומר ‪(n=1‬‬ ‫בסיס הכלבתול שלי ירוק‬

‫הילד של כל כלבתול ירוק הוא כלבתול ירוק )הערה‪ :‬אם נרצה להוכיח‬ ‫צעד‬
‫טענה זו‪ ,‬נצטרך להניח שהאבא ירוק ואז להוכיח שהבן ירוק!(‬

‫)כלומר‪ :‬דור ‪ n‬עבור כל‬ ‫אז אני יכול לומר בוודאות שכל הצאצאים של הכלבתול שלי‬
‫‪ (n‬יהיו ירוקים‪.‬‬

‫בחיי היום‪-‬יום‪ ,‬אם נרצה להסביר איך הסקנו את המסקנה‪ ,‬נשתמש בביטוי "וכן‬
‫הלאה" )למשל‪" :‬הילדים יהיו ירוקים‪ ,‬לכן גם הנכדים‪ ,‬לכן גם הנינים וכן‬
‫הלאה"(‪ .‬כעת‪ ,‬במקום ה"וכן הלאה" הסתמי‪ ,‬נוכל להסתמך על אקסיומת‬
‫האינדוקציה‪.‬‬

‫‪ .4‬שיטת ההוכחה באינדוקציה‬

‫נניח שאנו רוצים להוכיח טענה כלשהי שתלויה באיזה‪-‬שהוא מספר ‪) n‬זה יכול להיות‬
‫מספר בנוסחה – או גודל כמותי אחר‪ ,‬כגון כמות הסוגריים באיזו‪-‬שהיא נוסחה(‪ .‬ההוכחה‬
‫תיראה באופן הבא‪:‬‬

‫הוכחה באינדוקציה על ‪.n‬‬

‫בסיס האינדוקציה יהי ‪ .n=1‬אז ______________________________________________‬

‫_____________________________________‬

‫מש"ל בסיס‬

‫צעד האינדוקציה נניח שהטענה נכונה עבור ‪ ,n=k‬כלומר ____________________‪.‬‬

‫___________________________‪.‬‬ ‫נוכיח עבור ‪ :n=k+1‬צ"ל‬


‫ולפי הנחת האינדוקציה‬

‫מש"ל‬

‫‪ .5‬דוגמאות‬

‫כעת נוכל לפתור את השאלה משעורי הבית בצורה מתמטית מדוייקת‪:‬‬

‫‪.‬‬ ‫∨‪∧ ,‬‬ ‫פתרון נניח בשלילה שאנחנו יכולים לתאר את כל הפעולות הבינריות ע"י‬
‫אז גם את הפעולה ‪ a NAND b‬ניתן לתאר כך‪ .‬מכיוון ש‪ ,T NAND T = F -‬חייבת‬

‫עם הפרמטרים ‪ T‬בלבד שערכה הוא‬ ‫∨‪∧ ,‬‬ ‫להתקיים שרשרת של פעולות בינריות‬
‫‪.F‬‬

‫נוכיח שזה אינו אפשרי‪ ,‬כלומר נוכיח את הטענה הבאה‪:‬‬

‫על ‪ T‬בלבד נותן ערך ‪.T‬‬ ‫∨‪∧ ,‬‬ ‫טענה לכל ‪ ,n‬שרשור של ‪ n‬פעולות בינריות‬

‫הוכחה אינדוקציה על ‪.n‬‬

‫בסיס ‪ .n=1‬במקרה זה השרשור הוא ‪ T ∧ T‬או ‪ – T ∨ T‬ולפי טבלת האמת הערך הוא‬
‫‪.T‬‬
‫מש"ל בסיס‬

‫צעד נניח שהטענה נכונה עבור כל שרשרת של ‪ k‬פעולות‪ .‬נוכיח שזה כך גם עבור‬
‫‪.n=k+1‬‬

‫‪ .‬אז נתבונן בסוגריים הכי פנימיים )פעולה‬ ‫∨‪∧ ,‬‬ ‫תהי שרשרת של ‪ k+1‬פעולות‬

‫בינרית שלא מכילה בתוכה עוד פעולות בינריות(‪ .‬בסוגריים האלה יש או ‪ T ∧ T‬או ∨ ‪T‬‬
‫‪ .T‬לכן )בכל אחד משני מקרים אלה( ערך הסוגריים הפנימיים האלה הוא ‪ ,T‬לכן ערך‬
‫כל הביטוי לא ישתנה אם אציב ‪ T‬במקום הסוגריים‪.‬‬

‫אבל אז קיבלנו שרשור של ‪ k‬פעולות בלבד – ולפי הנחת האינדוקציה ערכו ‪ .T‬מש"ל‬

‫נראה כעת עוד בעיה "צורנית" שניתן להוכיח באינדוקציה‪.‬‬

‫בעיה ביטוי חשבוני ייקרא נכון‪ ,‬אם הוא מהצורה ‪ ,A*B‬כאשר * ‪ -‬סימן פעולה ‪,: ,x,-,+‬‬

‫ואילו כל אחד מהביטויים ‪ A,B‬יכול להיות אחד מהשניים‪:‬‬

‫מספר או )ביטוי חשבוני נכון( ]ביטוי חשבוני נכון בין שני סוגריים[‪.‬‬
‫הוכח‪ :‬בביטוי חשבוני נכון אף פעם לא יבואו שני סימני סוגריים () ברציפות‪.‬‬

‫הוכחה נסמן את מספר סימני הפעולה בביטוי באות ‪ n‬ונוכיח באינדוקציה על ‪.n‬‬

‫בסיס ‪ .n=1‬במקרה זה הביטוי הוא ‪ ,A*B‬כאשר ‪ A‬ו‪ B-‬מספרים‪ ,‬כלומר אין סוגריים כלל‬
‫– בפרט לא שני סימני סוגריים () ברציפות‪ .‬מש"ל בסיס‬

‫צעד נניח שהטענה נכונה עבור כל ביטוי עם ‪ k‬פעולות או פחות‪ .‬נוכיח שזה כך גם עבור‬
‫‪.n=k+1‬‬

‫יהי ביטוי עם ‪ k+1‬סימני פעולה‪ .‬אז צורתו ‪ .A*B‬נניח שיש צירוף () בביטוי‪ .‬אז הוא או‬
‫כולו ב‪ A-‬או כולו ב‪] B-‬כי בין ‪ A‬ל‪ B-‬מבדיל סימן פעולה שאיננו ( או ) [‪.‬‬

‫נניח שב‪ A-‬יש ()‪ A .‬הוא ביטוי מהצורה )‪ ,(C‬כאשר ‪ C‬הוא ביטוי חשבוני נכון‪ .‬כל סימן‬
‫) שיש ב‪ A-‬הוא סימן מ‪ C-‬או הסימן האחרון שאחרי ‪ .C‬אחרי הסימן האחרון לא בא‬
‫סימן (‪ ,‬לכן הצירוף () חייב להופיע ב‪ .C-‬אך ב‪ C-‬יש ‪ k‬או פחות סימני פעולה – סתירה‬
‫להנחת האינדוקציה‪.‬‬

‫כנ"ל נטפל במקרה שבו ב‪ B-‬יש ()‪ .‬מש"ל‬

‫תרגילים‬

‫הוכח באינדוקציה‪ :‬בביטוי חשבוני נכון )לפי ההגדרה שבדוגמה למעלה(‬ ‫‪(1‬‬
‫לא באים שני סימני פעולה בזה אחר זה‪.‬‬

‫יהי ‪ X‬ביטוי חשבוני נכון‪ .‬נסמן ‪ m‬את מספר סימני "(" בביטוי‪.‬‬ ‫‪(2‬‬

‫מצא נוסחה למספר סימני ")" בביטוי ‪ X‬כפונקציה של ‪ . m‬הוכח את הנוסחה‬


‫באינדוקציה‪.‬‬

‫יהי ‪ X‬ביטוי חשבוני נכון‪ .‬נסמן ‪ m‬את מספר סימני הפעולה בביטוי‪.‬‬ ‫‪(3‬‬

‫מצא נוסחה למספר סימני ")" בביטוי ‪ X‬כפונקציה של ‪ . m‬הוכח את הנוסחה‬


‫באינדוקציה‪.‬‬

‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪n‬‬


‫‪+‬‬ ‫‪+ ... +‬‬ ‫=‬ ‫הוכח באינדוקציה‪:‬‬ ‫‪(4‬‬
‫‪1⋅ 2 2 ⋅3‬‬ ‫‪n( n +1) n +1‬‬

‫פתרון מפורט של תרגיל לדוגמה‪ :‬תרגיל ‪3‬‬

‫ננסה לשער השערה שאותה נוכיח באינדוקציה‪ .‬אנו רואים שבביטוי "‪ " 5+4‬יש פעולה‬
‫אחת ו‪ 0-‬סימני ) ‪ ,‬שביטוי מהצורה )‪ 4*(1+3‬יש בו ‪ 2‬פעולות וסימן ) אחד‪ .‬ננסח את‬
‫ההשערה‪:‬‬

‫השערה‪ :‬יש ‪ m-1‬סימני ) בביטוי עם ‪ m‬פעולות‪.‬‬

‫הערה‪ :‬ניסוח ההשערה עצמו מהווה פעולה אינטואיטיבית שאינה בהכרח "מדוייקת"‬
‫מתמטית; אך הוכחתה צריכה להיות מדוייקת מאד‪.‬‬
‫הוכחה‪ :‬אינדוקציה על ‪.m‬‬

‫‪ .1‬בסיס ‪ .m=1‬לפי הגדרת הביטוי‪ ,‬הביטוי הוא מהצורה ‪ ,A*B‬כאשר ‪ A,B‬מספרים‪.‬‬


‫בפרט‪ ,‬אין סוגריים ומספר ה‪-)-‬ים הוא ‪ .0=1-1‬מש"ל בסיס‬

‫‪ .2‬צעד נניח שהטענה נכונה עבור ‪ k‬פעולות או פחות‪ .‬הנחה‪ :‬לכל ביטוי נכון עם ‪n‬‬
‫פעולות‪ , n ≤ k ,‬קיימים ‪ n-1‬סימני )‪.‬‬

‫צ"ל‪ :‬לביטוי עבור ‪ k+1‬פעולות קיימים ‪ k‬סימני )‪.‬‬

‫יהי ביטוי כנ"ל‪ .‬אז צורתו היא ‪ ,A*B‬כאשר ‪ A‬ו‪ – B-‬או מספרים או ביטויים בין‬
‫סוגריים‪.‬‬

‫נתבונן בשלושה מקרים‪:‬‬

‫‪ A .1‬מספר‪ .‬אז ‪ B‬נראה כך‪ ,(C) :‬כאשר ‪ C‬ביטוי חשבוני נכון עם ‪ k‬פעולות‬
‫בדיוק‪.‬‬

‫לפי הנחת האינדוקציה‪ ,‬ב‪ C-‬קיימים ‪ k-1‬סימני )‪ .‬עוד סימן אחד מהסוגריים‬
‫סביב ‪ ,C‬וב‪ A-‬אין סימנים כלל‪ .‬סה"כ ‪ k‬סימני )‪.‬‬

‫‪ B .2‬מספר‪ .‬אז כמו מקרה ‪ 1‬בדיוק‪ ,‬רק להיפך‪.‬‬

‫‪ ,(A=(C),B=(D .3‬כאשר ‪ C,D‬ביטויים חשבוניים נכונים‪.‬‬

‫נסמן את מס' הפעולות ב‪ C-‬באות ‪ ,x‬אז ב‪ D-‬יש ‪ k-x‬פעולות )כי יש עוד‬


‫פעולה אחת בין ‪ A‬ל‪) x ≤ k .(B-‬אחרת ‪ D‬מספר ואז ‪ B‬אינו ביטוי נכון(‪.‬‬
‫‪) k − x ≤ k‬אחרת ‪ C‬מספר ואז ‪ A‬אינו ביטוי נכון(‪ .‬לכן‪ ,‬לפי הנחת האינדוקציה‪,‬‬
‫ב‪ C-‬יש ‪ x-1‬סימני ) ואילו ב‪ D-‬יש ‪ k-x-1‬סימני )‪.‬‬

‫אז סך מספר סימני ) בביטוי שלנו – שנראה )‪ - (C)*(D‬הוא‪:‬‬

‫‪x-1‬‬ ‫‪+1‬‬ ‫‪+‬‬ ‫‪k-x-1‬‬ ‫‪+1‬‬ ‫‪=k‬‬


‫מתוך ‪C‬‬ ‫בסוף ‪A‬‬ ‫מתוך ‪D‬‬ ‫בסוף ‪B‬‬

‫אחרי ‪C‬‬ ‫אחרי ‪D‬‬

‫מש"ל‬