簡體   English   中英

bin(n)bin(2^(k+1) * n + 1)^R 上下文無關嗎?

[英]Is bin(n)bin(2^(k+1) * n + 1)^R context free?

bin 是二進制中最短的數

bin(n)bin(2^(k+1) * n + 1)^R 上下文無關嗎?

k,n 屬於自然數。

我知道 bin(n)bin(n + 1)^R 是上下文無關的,但我不知道如何解決 bin(n)bin(2^(k+1) * n + 1)^R 。 如果是上下文無關的,有人可以幫助我構建上下文無關的語法嗎?

假設x^R表示x反轉,那么您正在尋找形式中的字符串

n1(many zeros)(n)^R

由於在這種情況下“許多零”只是0* ,這是一個正則表達式,您可以將n(n+1)^R任何語法適應這種語言,並且它仍然是上下文無關的。

讓我們看看 n=5, k=2

n = 101
2^(k+1) = 2^3 = 1000
1000 * 101 is 101000
101000 + 1 is 101001
101001^R is 100101

最后的字符串是

n1(zeroes)n^R
101100101

問題是語言bin(n)bin(2^(k+1) * n + 1)^R是否是上下文無關的。 我認為bin(n)表示沒有任何前導零的自然數n的二進制表示。

假設bin(n') = x 這里, x是一個以1開頭的有限二進制數字串。 讓我們確定 bin(2^(k+1) * n + 1) 是什么樣的。 首先,請注意,將一個數乘以 2 會在該數的二進制表示的末尾添加一個零; 與使用十進制時乘以十相同。 乘以 2^(k+1) 將添加 k+1 個零。 由於 k 是自然數,因此必須至少添加一個零。 在這個數字上加 1 會將最低有效位從 0 翻轉為 1。最終結果是bin(2^(k+1) * n + 1) = x(0^k)1

語言bin(n)bin(2^(k+1) * n + 1)^Rx(x(0^k)1)^R形式的字符串組成。 我們可以通過顛倒每個連接的子字符串和連接的順序來分配^R以查看這些字符串的形式為x1(0^k)(x^R) 我們注意到這些字符串的最外層部分以任意二進制字符串x開頭,以x^R結尾; 我們可以使用上下文無關文法來處理這個問題,就像我們可以處理回文語言一樣。 最里面的組件是1(0^k) ,它描述了正則語言10* 我們當然可以在 CFG 中處理它。 一個有效的 CFG 如下:

S := 0S0 | 1S1 | T
T := T0 | 1

推導這一點的主要見解是確定(bin(2^(k+1) * x + 1)^R

暫無
暫無

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

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