簡體   English   中英

語言L = a ^(2 ^ k)的無上下文語法

[英]Context-free grammar for language L = a^(2^k)

作為計算理論練習的一部分,要求我找到一種語言L = a ^(2 ^ k)的上下文無關語言。

我如何嘗試解決它:我想使用一個X句子,該句子遞歸地加倍其他句子產生的所有a。 那只會把我引到a,a ^ 2,a ^ 4,a ^ 8這樣的字符串中,這是我要尋找的語法。

但這有可能嗎? 我怎樣才能做到這一點?

S -> aS | X | ε
Χ -> (doubles all previous a's)

並且也有一串加倍的問題a會產生數第a不是由一個^(2 ^ k)的條件接受,例如^ 3,^ 5,d 6都屬於“在“ a ^(2 ^ k)的進展間隙之間”。

考慮一下您的語言中的字符串a^(2^p) ,其中p是無上下文語言在抽水引理中的常數。 我們可以將此字符串寫為uvxyz這樣:

  • |vy| >= 1
  • |vxy| <= p

然后我們知道,如果該語言是上下文無關的,則所有形式uv^nxy^nz字符串都應使用n >= 0的語言。 我們稱a = |uxz| b = |vy| 然后,我們必須具有長度為a, a + b, a + 2b, ...的語言字符串。 假設a = 2^ka = 2^k的冪,而a + b也是2的冪。則b = 2^m - 2^ka + 2b = 2^(m+1) - 2^k = 2^j也是a + 2b = 2^(m+1) - 2^k = 2^j的冪。將其重寫為2^(m+1) = 2^k + 2^j 除以kj的較小者,得到2^r = 2^s + 1 滿足此方程式的唯一方法是s = 0 ,即k = j ,因為否則RHS為奇數,而LHS必須為偶數。 但隨后m = kb = 0 但是, b必須大於0,這取決於泵送引理。

那個丑陋的人,但你明白了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM