תרגול 3 תשעז

מתוך Math-Wiki

חזרה לדף מערכי התרגול.

צורות נורמליות: CNF ,DNF[עריכה]

ישנן שתי "צורות נורמליות" להצגת כל פסוקית - DNF ו CNF.

תרגיל[עריכה]

יהי [math]\displaystyle{ A }[/math] פסוק ויהי [math]\displaystyle{ C }[/math] צורת CNF שלו ו-[math]\displaystyle{ D }[/math] צורת DNF שלו. הוכיחו או הפריכו: [math]\displaystyle{ C\equiv D }[/math]

פתרון: ברור שהוכחה....

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

DNF[עריכה]

ביטוי בצורת DNF מורכב מאוסף "פסוקיות" המחוברות ביניהן על ידי פעולות "או". כל פסוקית בעצמה מורכבת מאטומים המחוברים ביניהם על ידי פעולות "וגם". כל אטום הוא משתנה או שלילת משתנה.

בצורה סכמטית: [math]\displaystyle{ D_1 \lor D_2 \lor \dots \lor D_n }[/math] כאשר כל [math]\displaystyle{ D_i }[/math] מהצורה [math]\displaystyle{ p_1\land p_2 \land \dots \land p_m }[/math] וכל [math]\displaystyle{ p_i }[/math] שווה למשתנה [math]\displaystyle{ x }[/math] או לשלילתו [math]\displaystyle{ \lnot x }[/math].

דוגמא: נמצא את צורת DNF של טבלת האמת הבאה:


[math]\displaystyle{ f(x_1,x_2,x_3) }[/math] [math]\displaystyle{ x_3 }[/math] [math]\displaystyle{ x_2 }[/math] [math]\displaystyle{ x_1 }[/math]
0 0 0 0
0 0 0 1
1 0 1 0
1 1 0 0
0 0 1 1
1 1 0 1
0 1 1 0
0 1 1 1

נתמקד בשורות שערך האמת שלהן הוא 1 (שורות 3, 4, 6).

לשורה 3 נתאים את הפסוקית [math]\displaystyle{ D_1=\lnot x_1 \land x_2 \land \lnot x_3 }[/math]

מה עשינו? החלפנו כל משתנה שערכו 0 בשלילה שלו, וכל משתנה שערכו 1 השארנו בלי לגעת.

מה יצא לנו מזה? שימו לב שרק הצבה של ערכי האמת של [math]\displaystyle{ x_1,x_2,x_3 }[/math] שמופיעים בשורה 3 תתן ערך אמת 1 ב [math]\displaystyle{ D_1 }[/math]. כל הצבה אחרת (כלומר: הצבה של ערכי אמת של המשתנים בשורה אחרת) תתן 0 ב [math]\displaystyle{ D_1 }[/math].

באופן דומה נייצר [math]\displaystyle{ D_2 }[/math] עבור שורה 4 ו [math]\displaystyle{ D_3 }[/math] עבור שורה 6:

[math]\displaystyle{ D_2=\lnot x_1 \land\lnot x_2 \land x_3, \quad D_3=x_1\land \lnot x_2 \land x_3 }[/math]

כעת ה DNF של טבלת האמת היא פשוט

[math]\displaystyle{ D_1\or D_2 \or D_3=(\lnot x_1 \land x_2 \land \lnot x_3) \or (\lnot x_1 \land \lnot x_2 \land x_3) \or (x_1 \land \lnot x_2 \land x_3) }[/math].

CNF[עריכה]

ביטוי בצורת CNF מורכב מאוסף "פסוקיות" המחוברות ביניהן על ידי פעולות "וגם". כל פסוקית בעצמה מורכבת מאטומים המחוברים ביניהם על ידי פעולות "או". כל אטום הוא משתנה או שלילת משתנה.

בצורה סכמטית: [math]\displaystyle{ C_1 \land C_2 \land \dots \land C_n }[/math] כאשר כל [math]\displaystyle{ C_i }[/math] מהצורה [math]\displaystyle{ q_1\lor q_2 \lor \dots \lor q_m }[/math] וכל [math]\displaystyle{ q_i }[/math] שווה למשתנה [math]\displaystyle{ x }[/math] או לשלילתו [math]\displaystyle{ \lnot x }[/math].

נדגים על הדוגמא לעיל.

נתמקד בשורות שערך האמת שלהן הוא 0 (שורות 1, 2, 5, 7, 8)

לשורה 1 נתאים את הפסוקית [math]\displaystyle{ C_1= x_1 \lor x_2 \lor x_3 }[/math]

מה עשינו? כל משתנה שערכו 0 השארנו בלי לגעת, וכל משתנה שערכו 1 החלפנו בשלילתו.

מה יצא לנו מזה? שימו לב שרק הצבה של ערכי האמת של [math]\displaystyle{ x_1,x_2,x_3 }[/math] שמופיעים בשורה 1 תתן ערך אמת 0 ב [math]\displaystyle{ C_1 }[/math]. כל הצבה אחרת (כלומר: הצבה של ערכי אמת של המשתנים בשורה אחרת) תתן 1 ב [math]\displaystyle{ C_1 }[/math].

באופן דומה נייצר [math]\displaystyle{ C_2,C_3,C_4,C_5 }[/math] עבור שורות 2 , 5, 7 ו-8:

[math]\displaystyle{ C_2= x_1 \lor \lnot x_2 \lor \lnot x_3, C_3=\lnot x_1\lor \lnot x_2 \lor x_3 }[/math]

[math]\displaystyle{ C_4=x_1 \lor \lnot x_2 \lor \lnot x_3, C_5= \lnot x_1 \lor \lnot x_2 \lor \lnot x_3 }[/math]

כעת ה CNF של טבלת האמת היא פשוט

[math]\displaystyle{ C_1 \land C_2 \land C_3 \land C_4 \land C_5 }[/math]


הרחבה על עניינים אלו (שלושת התרגולים הראשונים) ניתן למצוא פה 88-101 חשיבה מתמטית