הצורה הנורמלית של גרייבך

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה לניווט קפיצה לחיפוש

בתורת השפות הפורמליות, אומרים כי דקדוק חסר הקשר מוצג בצורה הנורמלית של גרייבך (אותה הגתה שילה גרייבך) אם כל כללי הגזירה שלו הם מהצורה , כאשר סימן טרמינלי, משתנה שאינו טרמינלי, ו- מילה המורכבת מאפס משתנים או יותר.[1]

כל דקדוק המוגדר באמצעות הצורה הנורמלית של גרייבך הוא חסר הקשר, וכל דקדוק חסר הקשר ששפתו אינה מכילה את המילה הריקה יכול להיכתב באופן שקול כדקדוק בצורה הנורמלית של גרייבך.[2]

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

אלגוריתם להפיכת תחביר לצורה הנורמלית של גרייבך[1][עריכת קוד מקור | עריכה]

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

נגדיר שתי בניות עזר לפישוט האלגוריתם.

בניית עזר 1[עריכת קוד מקור | עריכה]

לכל כלל ב- מהצורה , כאשר כל כללי הם מהצורה , נשמיט את הכלל ונוסיף במקומו את הכללים .

בניית עזר 2[עריכת קוד מקור | עריכה]

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

לכל נוסיף את הכללים:

ולכל נוסיף את הכללים:

כעת נציג את האלגוריתם תוך שימוש מתמיד בבניות העזר.

שלב 1[עריכת קוד מקור | עריכה]

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

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

שלב 2[עריכת קוד מקור | עריכה]

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

שלב 3[עריכת קוד מקור | עריכה]

נדאג שגם כל הכללים של משתני העזר יהיו מהצורה כאשר טרמינל בעזרת בניה 1.

שלב 4[עריכת קוד מקור | עריכה]

כעת כל הכללים הם מהצורה או מהצורה כאשר טרמינל ו- מורכב הן ממשתנים והן מסימנים טרמינלים.

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

כעת בידינו דקדוק מהצורה הנורמלית של גרייבך ששקול לדקדוק המקורי.

שימושים[עריכת קוד מקור | עריכה]

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

בנוסף, ניתן להשתמש בצורה הנורמלית של גרייבך למעבר מדקדוק חסר הקשר נתון לאוטומט מחסנית בעבור שפה מסוימת.

ראו גם[עריכת קוד מקור | עריכה]

לקריאה נוספת[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ 1.0 1.1 שמואל זקס ונסים פרנסיז, אוטומטים ושפות פורמליות ב, האוניברסיטה הפתוחה, 2000, עמ' 103-109
  2. ^ שילה גרייבך, "A New Normal-Form Theorem for Context-Free Phrase Structure Grammars", הז'ורנל של ACM, ינואר 1965