שפה חסרת הקשר

שפה חופשית הקשר (או שפה חסרת הקשר) היא שפה פורמלית אשר קיים דקדוק חסר הקשר המגדיר אותה. כלומר, שפה L היא שפה חופשית הקשר אם קיים דקדוק חסר הקשר G כך ש L היא אוסף כל המילים שניתן לגזור מהסימן התחילי של G. ניתן להוכיח, ששפה היא חופשית הקשר אמ״מ קיים אוטומט מחסנית לא דטרמיניסטי המקבל אותה.

דקדוק חסר הקשר

זהו רביעייה G=(V,Σ,R,S) המושגים החדשים שנכנסו לחיינו הם

גזירות

עבור דקדוק חסר הקשר אם יש כלל יצירה מהצורה Az אז נסמן
uAvGuzv . כאשר u,v הם טרמינלים.

עבור שתי טרמנילים (תווים בΣ נקראים טרמינלים בהקשר של דקדוקים חסרי הקשר) u,v נסמן uGv אם ניתן לעבור מ u ל v על ידי 0 או יותר גזירות.

שפה של דקדוק

L(G)=\{w\in\Sigma^{*}\ |\ \ S\overset{*}{\underset{G}{\Rightarrow}}w \}$$ כלומר, שיש סדרת גזירות שתעביר אותנו מהמצב ההתחלתי $S$ אל המחרוזת. #### עצי גזירה טכניקה לגזירה של מילים באמצעות כללי גזירה היא עץ גזירה. בונים אותו באמצעות כללי הגזירה עד להגעת המילה הרצויה שמורכבת מתווים שכולם עלים. למשל עבור הדקדוק $$\displaylines{ S\to AB \\ A\to a|AA|Ab \\ B\to bB|b }

נוכל לבנות עץ גזירה שהשורש שלו הוא S וכל רמה i בעץ תיגזר על ידי הרמה הi1 למשל:

graph TD;
id1((S)) --> id2((A));
id1((S)) --> id3((B));
id7((B)) --> id8((b));
id2((A)) --> id4((A));
id2((A)) --> id5((A));
id4((A)) --> id9((a));
id5((A)) --> id10((a));
id3((B)) --> id6((b));
id3((B)) --> id7((B));

נקבל סך הכל :

SABAbBAbbAAbbAabbaabb

נגדיר דקדוק רב משמעי כדקדוק שניתן לייצר איתו מילה כלשהי עם יותר מעץ גזירה אחד.

למת הניפוח לשפות חסרות הקשר

תהי L שפת חסרת הקשר. אזי, קיים N כך שלכל wL המקיים ֿ#wn אזי:
קיים פירוק w=tuxyz כך ש

סגירויות

השפות חסרות הקשר סגורות ל

והן אינן סגורות ל