אוטומטים ושפות פורמליות/תכונות של שפות חסרות הקשר/צורות נורמליות לדקדוקים חסרי הקשר
בפרק דקדוקים חסרי הקשר ראינו כי ניתן להמיר כל אוטומט מחסנית לדקדוק ח"ה. יותר מכך, נשים לב לכללי הגזירה שנוצרים בתהליך. כל כלל גזירה נראה כמו אחת הצורות הבאות
כאשר משתנים ו- טרמינלים. כלומר, כל דקדוק חסר-הקשר ניתן להביע על-ידי דקדוק שכל כלל בו הוא אחד מהצורות לעיל. צורה זו אינה מינימלית. למשל, את הכלל ניתן להחליף בכללים יותר פשוטים, בהן כל משתנה הופך או לשני משתנים או לאות בודדת. צורה זו ידועה בתור הצורה הנורמאלית של חומסקי.
הצורה הנורמלית של חומסקי לדקדוקים חסרי-הקשר
עריכה
משפט: כל שפה חסרת הקשר שאינה ריקה, ואינה מכילה את המילה הריקה, ניתן ליצירה על-ידי דקדוק ח"ה שכל כלל בו הוא אחד משתי הצורות הבאות: כאשר משתנים ו- טרמינל. |
הוכחה: נראה אלגוריתם להמרת כל דקדוק ח"ה לצורה הנורמלית של חומסקי. על מנת להגיע לצורה הנדרשת, עלינו להתמודד עם מספר אתגרים:
- ביטול כללי-אפסילון, דהיינו, כללים מהצורה
- ביטול כללי-יחידה, דהיינו כללים מהצורה עבור שני משתנים A,B.
נושא נוסף הינו משתנים חסרי-משמעות, למשל, משתנים שלעולם לא ניתן להגיע אליהם אם מתחילים במשתנה ההתחלתי S ומתקדמים אך ורק לפי כללי הגזירה. אנו נניח שבדקדוק הנתון אין משתנים שלא ניתן להגיע אליהם, כלומר, כלל המשתנים בעלי משמעות.
ביטול מעברי-אפסילון
נשים לב כי אנו מניחים כי השפה אינה מכילה את המילה הריקה, אחרת לא נוכל לייצר מילה זו ללא כללי-אפסילון. על מנת לבטל כללי-אפסילון, נביט בכל המשתנים שיכולים לייצר אפסילון, כלומר, כל המשתנים בהם ניתן לאחר כמה גזירות, להגיע למילה הריקה, . על-מנת לבטל את כלל האפסילון מבלי לשנות את השפה, נביט בכל פעם שמשתנה יוצר את המשתנה A, למשל עבור ייתכנו שני מקרים. בראשון, A הופך אפסילון. מקרה זה קל להחלפה בכלל . מאידך, A יכול להפוך למילה אחרת שאינה אפסילון, ולכן הכלל חייב להשאר, אבל נדאג שבמקרה זה A לא יכול להפוך להיות אפסילון, על-ידי ביטול הכללים מהצורה , לכל משתנה .
ראשית נמצא את כל המשתנים שיוצרים אפסילון. דבר זה קל לביצוע בצור איטרטיבית: ראשית נסמן את כל המשתנים בהם קיים הכלל . לאחר מכן, נבדוק את כל המשתנים בהם יש כלל כאשר ידוע שגם B וגם C יכולים ליצור אפסילון. נחזור על הבדיקה שוב ושוב עד שלא נמצאים יותר משתנים חדשים שעשויים לייצור אפסילון.
כעת נחליף כל כלל מהצורה בו משתנה B יכול ליצור אפסילון, לכלל , ונמחק את כל הכללים מהצורה .
טענה: בהנתן דקדוק ח"ה G, אשר יוצר את השפה , הבנייה לעיל יוצרת דקדוק שאינו מכיל כללי-אפסילון, וכן |
הוכחה: תהי . לא ייתכן כי זו המילה הריקה, כי ב- אין כללים המייצרים אפיסלון. נראה באינדוקציה ש מיוצרת גם על-ידי הדקדוק .
בסיס: , נובע כי ב- קיים הכלל או כלל מהצורה כאשר A יכול ליצור אפסילון (כי ככה בנינו את הכללים של . מכאן נובע שגם ב , .
צעד האינדוקציה: נניח כי נוצר על-ידי ביצוע גזירות. אזי,
כמו מקודם, הכלל הראשון חייב לנבוע מתוך כלל של מהצורה כאשר חלק מהמשתנים יכולים ליצור אפסילון, ובהעדר חלק מהם, נשאר בדיוק מחרוזת הXים. מכאן ש- והטענה נובעת.
הכיוון השני מוכח על-ידי אינדוקציה דומה.
פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.
ביטול מעברי-יחידה
הרעיון העומד מאחורי ביטול כללי יחידה (דוגמאת ) הוא מציאת כלל האפשרויות הנובעות מכלל היחידה. למשל, עבור הדקדוק נוכל לבטל את מעבר היחידה ולהוסיף במקומו את הכללים ישירות. רעיון זה לא תמיד מצליח - למשל, אם קיים מעגל של משתנים , לא נוכל לבצע החלפה פשוטה.
כדי לפתור בעיה זו מוצאים את כל זוגות המשתנים כך ש . פעולה זו ניתנת לביצוע בצורה איטרטיבית (בדומה למציאת כל המשתנים היוצרים אפסילון, כפי שהוסבר מעלה). ביטול כללי היחידה מתבצע על ידי האלגוריתם הבא. בהנתן דקדוק ח"ה נגדיר דקדוק :
- מצא את כל זוגות המשתנים כך ש .
- לכל זוג משתנים כנ"ל, עבור כל כלל שאינו כלל יחידה, הוסף ל- את הכלל .
טענה: מתקיים . ההוכחה באינדוקציה. פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה. |
על-ידי ביטול מעברי-אפסילון ומעברי-יחידה מתקבל דקדוק בצורה הנורמלית של חומסקי.
הצורה הנורמאלית של גרייבאך
עריכה
משפט: כל שפה חסרת הקשר שאינה ריקה, ואינה מכילה את המילה הריקה, ניתן ליצירה על-ידי דקדוק ח"ה שכל כלל בו הוא מהצורה הבאה: כאשר הוא טרמינל, ו מחרוזת של (אפס או יותר) משתנים. |
הוכחת המשפט חורגת מגבולות קורס זה. הרעיון הכללי הוא לפתח כל כלל גזירה עד שיופיע טרמינל במיקום הראשון. הקושי בהוכחה הינו קיומם האפשרי של מעגלים היוצרים עוד ועוד משתנים במיקום הראשון. בעיה זו מצריכה "מעקף" - הוספת משתנה היוצר טרמינל במקום הראשון, ולאחריו את סדרת המשתנים שאולי היו נוצרים בסדרת הגזירות היוצרת את אותו טרמינל.
הפרק הקודם: למת הניפוח לשפות חסרות הקשר |
צורות נורמליות לדקדוקים חסרי הקשר | הפרק הבא: דו-משמעות |