לוגיקה בוליאנית

לוגיקה בּוּליאנית הוא ענף בלוגיקה מתמטית ובאלגברה בוליאנית המקבל את שמו ממפתחה הראשון, ג'ורג' בול. ענף זה עוסק בפסוקים אלגבריים שערכי איבריהם אמת או שקר בלבד. הערכים מיוצגים על ידי הסימונים ′ 1 ′   {\displaystyle '1'\ } ("אמת") ו- ′ 0 ′   {\displaystyle '0'\ } ("שקר") בהתאמה. לענף שימוש רב בתחשיב פסוקים, באלקטרוניקה ובמדעי המחשב. בלוגיקה הקלאסית יכולה כל טענה להיות מוגדרת כ'אמת' או 'שקר' בלבד, וכל זאת כמובן כתלות בעולם בו מדובר. אי לכך, יצוג מתמטי של טענה יכול לקבל אחד משני ערכים מתמטיים בלבד. ערכים אלו מסומנים במתמטיקה בתור '1' (קרי: "אחד לוגי") ו- '0' (קרי: "אפס לוגי"). בלוגיקה המתמטית שלוש פעולות בסיסיות מהן ניתן לגזור את הפעולות המתקדמות יותר (ראו בהמשך). פעולות אלה הן חיבור לוגי אשר מבטא את הקשר "או", כפל לוגי המבטא את הקשר "וגם" ו-היפוך המבטא את הקשר "לא". פעולות אלה הן מקרים פרטיים של פעולות האיחוד, החיתוך וההשלמה בתורת הקבוצות כאשר החיבור והכפל הלוגיים הן פעולות בינאריות ואילו ההיפוך היא פעולה אונארית. היות שכל ביטוי יכול להיות מוגדר כ'שקר' או 'אמת' בלבד, תוצאת כל אחת מהפעולות יכולה להיות '0' ו-'1' בלבד, בהתאמה. מכאן נובע שפונקציה העושה שימוש בפעילות זו מוגדרת עבור שדה דו-ערכי של '0' ו-'1'. תכונה חשובה בלוגיקה בוליאנית היא תכונת הדואליות. לדוגמה: הפעולה הדואלית של ( A + B ) {\displaystyle (A+B)} היא ( A ′ B ′ ) ′ {\displaystyle (A'B')'} . כלומר אם A = 1 {\displaystyle A=1} ו- B = 0 {\displaystyle B=0} אזי התוצאה היא 1 בשני הביטויים ובהתאמה לשאר הפעולות. בעוד ופונקציות אחרות המוגדרות מעל קבוצות כגון הטבעיים, השלמים, הרציונליים, הממשיים או המרוכבים יכולות לקבל מספר ערכים אינסופי, פונקציות בוליאניות-לוגיות מוגדרות, כאמור, רק מעל הקבוצה { 0 , 1 } {\displaystyle \left\{0,1\right\}} (שהיא, הלכה למעשה, שדה השלמים המודולריים Z 2 {\displaystyle \mathbb {Z} _{2}} ), כמו כן המשתנים המרכיבים אותן, מכאן נובע כי לכל פונקציה שכזו יש רק מספר אפשרויות סופי של "הצבות", כלומר - ישנו מספר קבוע של צירופים אפשריים במבוא הפונקציה. לפונקציה עם משתנה אחד יש רק שני צירופי מבואות אפשריים, לפונקציה עם שני משתנים ישנם רק ארבעה צירופי מבואות אפשריים ולפונקציה עם שלושה מבואות רק שמונה צירופי מבואות אפשריים, כאשר באופן כללי אם ישנה פונקציה בוליאנית-לוגית עם מספר משתנים n   {\displaystyle n\ } יהא מספר צירופי המבואות האפשריים שלה 2 n   {\displaystyle 2^{n}\ } (לא במקרה, זוהי גם נוסחה בסיסית לרוחב פס נתונים במחשב כאשר n   {\displaystyle n\ } מבטא מספר סיביות המידע). היות שלכל פונקציה בוליאנית-לוגית ישנו מספר קומבינציות מבוא סופי, נתן לרכז את כל צירופי המבואות האפשריים ומוצאי הפונקציה התואמים להם בטבלה אשר נקראת טבלת אמת, וזאת בניגוד לרב הפונקציות האחרות במתמטיקה, בהן כדי להציג את כל צירופי המבואות והמוצאים האפשריים יש להיעזר בביטויים אלגבריים (ברם, זוהי תכונה כללית של שדות שלמים מודולריים, אך קיומם של שני איברים בלבד ב - Z 2 {\displaystyle \mathbb {Z} _{2}} מפשטת מאוד את הניתוח במקרה זה). ערך מורחב – אינדוקציה מתמטית למספר הצירופים הסופי השלכה נוספת: בעוד וברב ענפי המתמטיקה האחרים יש להוכיח טענה על ידי הצגת ביטויים המיצגים את כל המצבים האפשריים, דבר שהוא באופן יחסי אבסטרקטי משהו, כאשר מספר המבואות הוא סופי נתן להוכיח טענה בוליאנית-לוגית על ידי אינדוקציה שלמה, כלומר הצבת כל הצירופים האפשריים ובדיקה כי הטענה אכן מתקיימת בנוגע אליהם. נוכיח בדרך זו את הזהות הבאה: A   ⋅ A ¯ = 0 {\displaystyle A\ \cdot {\bar {A}}=0} . נציב A   = 1 {\displaystyle A\ =1} : 1   ⋅ 1 ¯ = 0 {\displaystyle 1\ \cdot {\bar {1}}=0} נציב A   = 0 {\displaystyle A\ =0} : 0   ⋅ 0 ¯ = 0 {\displaystyle 0\ \cdot {\bar {0}}=0} בכך הוכחנו את נכונות הזהות עבור כל A   {\displaystyle A\ } לוגי כלשהו: '0', '1', או ביטוי בוליאני-לוגי. באופן דומה, ניתן להוכיח זהויות גם עבור יותר ממשתנה בוליאני-לוגי אחד. ערך מורחב – פעולה בוליאנית בנוסף לשלוש הפעולות הבסיסיות, ישנן עוד מספר פעולות בוליאניות שימושיות נוספות אשר את כולן נתן "לבנות" מן הפעולות הבסיסיות יותר, והן: ניתן להוכיח כי בעזרת כללי דה-מורגן והזהות עבור A ¯ ¯ = A   {\displaystyle {\overline {\overline {A}}}=A\ } , ניתן להרכיב את כל הביטויים הבוליאניים-לוגיים על ידי שימוש ב-NOT לוגי ו-AND או OR לוגי בלבד. באמצעות הפעלת שלילה על הזהות A   ⋅ A   = A   + A   = A   {\displaystyle A\ \cdot A\ =A\ +A\ =A\ } ניתן להוכיח ש NOT A=A NOR A=A NAND A נמצא שאפשר להשתמש בפונקציה אחת (NOR או NAND) בלבד לכל הפעולות לעיתים, ביטויים בוליאניים לוגיים עשויים להיות ארוכים מאוד ומסורבלים מאוד. ישנן מספר שיטות בהן נעשה שימוש על מנת לאפשר צמצום של ביטויים בולאיניים. ישנן מספר זהויות שימושיות בהן נתן לעשות שימוש על מנת לצמצם ולפשט ביטויים לוגיים: A   ⋅ A ¯ = 0 {\displaystyle A\ \cdot {\bar {A}}=0} A   + A ¯ = 1 {\displaystyle A\ +{\bar {A}}=1} A   ⋅ A   = A   + A   = A   {\displaystyle A\ \cdot A\ =A\ +A\ =A\ } A   ⊕ B   = A ⋅ B ¯ +   B ⋅ A ¯ {\displaystyle A\ \oplus B\ =A\cdot {\bar {B}}+\ B\cdot {\bar {A}}} A   ⊕ B   ¯ = A ⋅ B ¯ +   B ⋅ A ¯ ¯ = A   ⋅ B   + A ¯ ⋅ B ¯   {\displaystyle {\overline {A\ \oplus B\ }}={\overline {A\cdot {\bar {B}}+\ B\cdot {\bar {A}}}}=A\ \cdot B\ +{\bar {A}}\cdot {\bar {B}}\ } A ⋅ ( B + C ) = A ⋅ B + A ⋅ C {\displaystyle A\cdot (B+C)=A\cdot B+A\cdot C} A + ( B ⋅ C ) = ( A + B ) ⋅ ( A + C ) {\displaystyle A+(B\cdot C)=(A+B)\cdot (A+C)} נשים לב כי החוק הראשון זהה לחוק באלגברה הליניארית המוכרת לנו ואילו החוק השני לא קיים בה. ערך מורחב – כללי דה-מורגן כללים חשובים נוספים המסייעים לפישוט ביטויים בוליאניים-לוגיים הם כללי דה-מורגן. כללים אלה קושרים בין פעולות החיבור הלוגי, הכפל הלוגי והשלילה. p + q ¯ = p ¯ ⋅ q ¯ {\displaystyle {\overline {p+q}}={\bar {p}}\cdot {\bar {q}}} p ⋅ q ¯ = p ¯ + q ¯ {\displaystyle {\overline {p\cdot q}}={\bar {p}}+{\bar {q}}} בעזרת פעולות אלה נתן להמיר כל ביטוי כך שיתבסס על פעולות NAND ו-NOR בלבד על ידי הפעלת שלילה כפולה (שאיננה משנה את ערך הביטוי) על כל הביטוי ושימוש בזהויות אלה עבור אחת מפעולות השלילה. כלל דה-מורגן הוא המחשה של מושג ה'דואליות' שהוזכר במבוא לעיל. ערך מורחב – מפת קרנו מפת קרנו היא שיטה יעילה ונוחה לצמצום מהיר של ביטויים בעלי עד ארבעה משתנים. שיטה זו מתבססת על שימוש ב"מפה" שהיא הלכה למעשה טבלה אשר לאחר הכנסת הנתונים הרלוונטיים לתוכה מאפשרת צמצום נוח של ביטוי המבוא. לתורת הלוגיקה הבוליאנית מספר יישומים חשובים, ביניהם: תחשיב פסוקים - נתן לערוך שימוש במשתנים בוליאניים כתוצאות של טענות ופסוקים מתמטיים ובכך לפשט עבודות שונות בתורת הלוגיקה המתמטית. מיתוג ואלקטרוניקה ספרתית - שימוש נרחב מאוד בתורת הלוגיקה הבוליאנית נעשה בתחומי המיתוג והאלקטרוניקה הספרתית. נהוג לעשות שימוש ב - '1' כמיצג עבור "מתח גבוה" וב-'0' עבור "מתח נמוך" (בעבר 5 וולט ו-0 וולט, אך עקב מזעור המעגלים המשולבים יש ירידה מתמדת במתח המייצג "1" לוגי; כיום המתח הזה אף נמוך מ-1 וולט). בעזרת כלים מתחום הלוגיקה הבוליאנית נעשה שימוש על מנת לתאר, לתכנן ולפשט מבנה של מערכות אלקטרונית-לוגיות רבות, בעיקר מבוססות שערים לוגיים, ביניהן מונים, דלגלגים ו-מרבבים. ניתן לעשות שימוש בכללי הלוגיקה הבוליאנית על מנת לפשט תנאים ולולאות. בתוכנות עריכה של שפות תכנות, ניתן להגדיר משתנה בוליאני שערכו אמת או שקר. פונקציה רווחת היא if הבודקת האם מתקיים שביטוי מסוים הוא אמת או שקר, ובהתאם מוציעה לפועל פקודה/ות מסוימת, אחרת (else) מוציאה לפועל פקודה/ות אחרת. למשל (בצורה של פסאודו קוד) : if age > 18 print ("בגיר") else print ("קטין") אלגברה בוליאנית, באנגלית