Является ли bin(n)bin(2^(k+1) * n + 1)^R контекстом бесплатно?

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 . Если контекстно-свободен, может ли кто-нибудь помочь мне построить контекстно-свободную грамматику?

2 ответа

Если предположить, x^R средства x наоборот, то вы ищете строки в виде

n1(many zeros)(n)^R

Так как "много нулей" в этом случае просто 0*регулярное выражение, вы можете адаптировать любую грамматику для n(n+1)^R на этот язык, и он по-прежнему будет контекстно-свободным

Давайте посмотрим на п =5, к =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 ^ (k + 1) добавит k + 1 нулей. Поскольку k - натуральное число, необходимо добавить хотя бы один ноль. При добавлении единицы к этому номеру младший значащий бит перевернется с 1 на 0. Конечный результат состоит в том, что bin(2^(k+1) * n + 1) = x(0^k)1,

Язык bin(n)bin(2^(k+1) * n + 1)^R состоит из строк в форме x(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,

Другие вопросы по тегам