Properties of Context-Free Languages

الفصل السابع: خصائص وتبسيط اللغات الخالية من السياق

الهدف: تحويل القواعد إلى شكل قياسي (CNF) واستخدام Pumping Lemma لإثبات عدم الانتماء.
1

Simplifying CFGs (تبسيط القواعد)

قبل تحويل القواعد أو التعامل معها، يجب تنظيفها من "الشوائب". الترتيب مهم جداً:

1. Eliminate $\epsilon$

تخلص من قواعد $A \to \epsilon$.
(إلا إذا كانت S تنتج $\epsilon$).

2. Eliminate Unit

تخلص من قواعد $A \to B$.
(استبدلها بإنتاجات B مباشرة).

3. Eliminate Useless

احذف الرموز التي لا تنتج كلمات (Non-generating) أو لا يمكن الوصول إليها (Unreachable).

⚠️ هام: يجب التخلص من الـ $\epsilon$ أولاً، ثم الـ Unit، وأخيراً الـ Useless. تغيير الترتيب قد يعيد المشاكل!
2

Chomsky Normal Form (CNF)

في CNF، كل قاعدة يجب أن تكون بأحد شكلين فقط:

A $\to$ BC

متغيرين (Variables)

A $\to$ a

رمز نهائي واحد (Terminal)

لماذا CNF مهم؟
  • يجعل شجرة الإعراب (Parse Tree) ثنائية (Binary Tree).
  • يسمح باستخدام خوارزمية CYK للتحقق من انتمائية الكلمة في وقت $O(n^3)$.
  • طول الاشتقاق لأي كلمة طولها $w$ هو بالضبط $2|w| - 1$ خطوة.
3

Pumping Lemma for CFLs

The "uvwxy" Theorem

لأي لغة CFL، يوجد طول ضخ $n$. أي كلمة $z$ طولها $\ge n$ يمكن تقسيمها إلى 5 أجزاء: $z = uvwxy$ بحيث:

الشروط:
  • $|vx| \ge 1$ (على الأقل واحد منهما غير فارغ).
  • $|vwx| \le n$ (الضخ يحدث في نطاق محدود).
النتيجة:

For all $i \ge 0$, $uv^iwx^iy \in L$

نضخ الجزئين $v$ و $x$ معاً وبنفس التكرار.

تستخدم هذه النظرية لإثبات أن لغة مثل $L = \{a^n b^n c^n\}$ ليست CFL (لأننا نضخ في مكانين فقط، والثالث سيختل توازنه).

4

Closure & Decision Properties

Closure Properties (الانغلاق)

Closed: Union ($\cup$), Concatenation, Star (*).
Not Closed: Intersection ($\cap$), Complement, Difference.
Exception: CFL $\cap$ Regular Language = CFL. (مهم!)

Decision Properties (القرارات)

  • Emptiness: هل $L(G) = \emptyset$؟ (نعم، يمكن فحصه بالتحقق من الوصول للرموز النهائية).
  • Finiteness: هل اللغة نهائية؟ (نعم، بالبحث عن Cycles في الـ Dependency Graph).
  • Membership: هل $w \in L$؟ (نعم، باستخدام خوارزمية CYK).
  • Ambiguity: هل القواعد غامضة؟ (غير قابل للحل Undecidable!).
🛡️ EXAM VAULT (خزنة الاختبار)
TRAP / فخ شهير

Intersection of 2 CFLs

هل تقاطع لغتين CFL هو CFL؟
لا!
مثال: $L_1 = \{a^n b^n c^m\}$ (CFL) تقاطع $L_2 = \{a^m b^n c^n\}$ (CFL) ينتج $\{a^n b^n c^n\}$ وهي ليست CFL.

ALGORITHM / خوارزمية

CYK Algorithm

تستخدم لفحص هل الكلمة تنتمي للغة أم لا (Membership).
تعمل فقط مع القواعد بصيغة CNF.
التعقيد الزمني: $O(n^3)$ حيث $n$ طول الكلمة.

→ السابق (Ch 6) الفصل التالي (Ch 8) ←