Czy {ww '| HamDist (w, w ')> 1} bez kontekstu?

13

Po przeczytaniu ostatniego pytania „Czy uzupełnienie pozbawione kontekstu?” {www...}; Przypomniałem sobie podobny problem, którego nie byłem w stanie odeprzeć:

Czy bez kontekstu?L={www,w{0,1}|w|=|w|HamDist(w,w)>1}

Tutaj wymagamy, aby dwa struny różniły się co najmniej w dwóch pozycjach (odległość Hamminga musi być większa niż ).1

Jest bezkontekstowy, jeśli wymagamy (tzn. Dwa ciągi muszą być po prostu różne).HamDist(w,w)1

Podejrzewam, że język nie jest pozbawiony kontekstu: jeśli przecinamy go ze zwykłymi , otrzymujemy przypadki, w których palmtop powinien „zapamiętać” dwie pozycje w odwrotnej kolejności po osiągnięciu połowy sznurka.0101010

Aktualizacja: jeśli przecinamy ze zwykłym , otrzymujemy język bezkontekstowy, jak pokazuje domotorp w jego odpowiedzi; nieco bardziej złożone z (jeszcze aby „śledzić”) nadal sugeruje, że nie powinien być pozbawiony kontekstu.LR={0101010}LRR={01010101010}1L

Marzio De Biasi
źródło
w w R LR jest w rzeczywistości łatwiejsze, ponieważ dokładnie te słowa nie mają formy (przecięte przez ). wwR
domotorp
@domotorp: racja! zmieniono na nieparzyste naprawiono s (chyba że twoją odpowiedź można by dostosować również do , dla każdego ustalonego nieparzystego ){ ( 0 1 0 ) k } k1{(010)k}k
Marzio De Biasi
Ostatni komentarz: Nie pomaga zaczynać od wiodących zer, ponieważ języki bezkontekstowe są zamknięte na wszelkiego rodzaju cykliczne zmiany. Możesz po prostu wepchnąć je na stos, zaznaczyć ostatni ze specjalnym symbolem, wykonać resztę algorytmu udając, że stos zaczyna się tam, a na końcu go opróżnić. (Wykorzystuje to -transitions, ale to również łatwe, że takie PDA są równoważne z tymi bez.)ϵ
domotorp
może być łatwiej pomyśleć o alfabecie {0,1,2} i rozważyć ciągi znaków z dokładnie dwoma 1 i 2 2. Nie jest w twoim języku, jeśli odległość między 1s i odległość między 2s są równe n.
Kaveh

Odpowiedzi:

4

Przecięcie z słowa o parzystości jest pozbawione kontekstu, ponieważ PDA może w pewien sposób zapamiętać dwie pozycje. Tak czy inaczej, niech najpierw zobaczyć, co ten język jest. Jego dopełnieniem jest . Dlatego . Możemy przepisać to jako .R={0101010}LRL={0a10b10c10db=n/2c=n/2a+d=n/2}L={0a10b10c10dbn/2cn/2a+dn/2}L={0a10b10c10db>n/2c>n/2a+d>n/2b,c,a+d<n/2}

Pierwsze przypadki można łatwo zweryfikować, podobnie jak czwarty.3

b>n/2 : Rozpocznij układanie stosu do pierwszego 1, a następnie zacznij wyskakiwać ze stosu, aż nie będzie pusty. Po opróżnieniu ponownie zacznij układać stos, aż dojdziemy do drugiego 1. Od tego momentu pop stos.

c>n/2 : To samo.

a+d>n/2 : Zacznij wkładać stos do pierwszego 1, a następnie zacznij wyskakiwać ze stosu, aż nie będzie pusty. Po opróżnieniu ponownie zacznij kłaść stos, aż dojdziemy do trzeciego 1. Od tego momentu pop stos.

b,c,a+d<n/2 : Zacznij wkładać stos do pierwszego 1, a następnie zacznij wyskakiwać ze stosu, aż nie będzie pusty. Po opróżnieniu ponownie zacznij układać stos, aż dojdziemy do (domyślnie niedeterministycznie, gdzieś między drugim a trzecim 1). Od tego momentu pop stos.a+n/2

domotorp
źródło
Dzięki domotorp, czytam twój pomysł; Myślę, że to (dwa 1s w lewej połowie) unia odwrotna (dwa 1s w prawej połowie). Jak więc uzyskać ? RL{0a10b10c0c10d (n/2=a+b+c=c+d+1)[(a=c)(c=d)}b=n/2c=n/2a+d=n/2
Marzio De Biasi,
RL jest taki, że HamDist ma najwyżej . Dzieje się tak dokładnie wtedy, gdy dwa z trzech 1-tych pasują, tzn. Jeden jest w tej samej pozycji w pierwszej połowie, tak jak drugi w drugiej połowie. Jeśli te dwa 1 to pierwsze i drugie 1, to otrzymujemy , jeśli są to drugie i trzecie 1, otrzymujemy , a jeśli są to pierwsze i trzecie 1, otrzymujemy , lub równoważnie, (gdzie trochę oszukuję pewnymi stałymi ). 1b=n/2c=n/2b+c=n/2a+d=n/2±1
domotorp
Czy to odpowiada na pełne pytanie?
Michaël Cadilhac
@domotorp: ok, rozumiem, dzięki! Kolejna wątpliwość: z (co jest w porządku) piszesz ale czy jest to równoważne z: ? ( pominięto warunek )LR={...bn/2cn/2...}LR={...b>n/2c>n/2b,c<n/2}LR={...(b<n/2b>n/2)(c<n/2c>n/2)}a+d
Marzio De Biasi
@Michael: Nie. 
domotorp