Est {ww '| HamDist (w, w ')> 1} sans contexte?


13

Après avoir lu la question récente "est le complément de {www...} Hors -contexte?" ; Je me suis souvenu d'un problème similaire que je n'ai pas pu réfuter:

Est L={www,w{0,1}|w|=|w|HamDist(w,w)>1} sans contexte?

Ici, nous exigeons que les deux cordes diffèrent dans au moins deux positions (la distance de Hamming doit être supérieure à 1 ).

Il est hors contexte si nous exigeons que HamDist(w,w)1 (c'est-à-dire que les deux chaînes doivent simplement être différentes).

Je soupçonne que la langue n'est pas hors-contexte: si nous croisons avec le régulier 0101010 nous obtenons les cas où un PDA doit « se souvenir » deux positions dans l' ordre inverse après avoir atteint la moitié de la chaîne.

Mise à jour: si nous coupons L avec le R={0101010} régulier, nous obtenons un langage sans contexte comme l'a montré domotorp dans sa réponse; un LR légèrement plus complexe avec R={01010101010} (un de plus 1 à "garder une trace") suggère toujours que L ne devrait pas être hors contexte.


est en fait plus facile, car ce sont exactement les mots qui ne sont pas de la forme w w (coupés par R ). LRwwR
domotorp

@domotorp: c'est vrai! changé en impair fixe s (à moins que votre réponse ne puisse également être adaptée à { ( 0 1 0 ) k } , pour tout k impair fixe )1{(010)k}k
Marzio De Biasi

Un dernier commentaire: il n'est pas utile de commencer par des zéros non significatifs, car les langages sans contexte sont fermés pour toutes sortes de changements cycliques. Vous pouvez simplement les pousser dans la pile, marquer le dernier avec un symbole spécial, faire le reste de l'algorithme en faisant semblant que la pile commence là, et à la fin la vider. (Cela utilise des transitions , mais il est également facile que de tels PDA soient équivalents à ceux sans.)ϵ
domotorp

il pourrait être plus simple de penser à l'alphabet {0,1,2} et de considérer les chaînes avec exactement deux 1 et deux 2. Ce n'est pas dans votre langue si la distance entre 1s et la distance entre 2s sont toutes les deux n.
Kaveh

Réponses:


4

L'intersection avec R={0101010 mots de longueur paire } est sans contexte, car un PDA peut mémoriser deux positions, en quelque sorte. Quoi qu'il en soit, nous allons d' abord voir ce que cette langue L est. Son complément est RL={0a10b10c10db=n/2c=n/2a+d=n/2} . Par conséquent, L={0a10b10c10dbn/2cn/2a+dn/2} . Nous pouvons réécrire ceci comme L={0a10b10c10db>n/2c>n/2a+d>n/2b,c,a+d<n/2} .

Les 3 premiers cas peuvent être facilement vérifiés, tout comme le quatrième.

b>n/2 : commencez à mettre la pile jusqu'au premier 1, puis commencez à sauter de la pile jusqu'à ce qu'elle ne soit pas vide. Une fois qu'il est vide, recommencez à mettre la pile jusqu'à ce que nous atteignions le deuxième 1. À partir de là, éclatez la pile.

c>n/2 : idem.

a+d>n/2 : Commencez à mettre la pile jusqu'au premier 1, puis commencez à sortir de la pile jusqu'à ce qu'elle ne soit pas vide. Après qu'il soit vide, recommencez à mettre la pile jusqu'à ce que nous atteignions le troisième 1. À partir de là, éclatez la pile.

b,c,a+d<n/2 : Commencez à mettre la pile jusqu'au premier 1, puis commencez à sauter de la pile jusqu'à ce qu'elle ne soit pas vide. Une fois qu'il est vide, recommencez à mettre la pile jusqu'à ce que nous atteignionsa+n/2 (deviné de manière non déterministe, quelque part entre le deuxième et le troisième 1). À partir de là, éclatez la pile.


Merci domotorp, je lis votre idée; Je pense que est { 0 a 1 0 b 1 0 c 0 c 1 0 d( n / 2 = a + b + c = c + d + 1 ) [ ( a = c ) ( c = d ) }RL{0a10b10c0c10d (n/2=a+b+c=c+d+1)[(a=c)(c=d)}(deux 1 sur la moitié gauche) réunissez son revers (deux 1 sur la moitié droite). Alors, comment obtenez-vous ? b=n/2c=n/2a+d=n/2
Marzio De Biasi

est que HamDist est au plus 1 . Cela se produit exactement si deux des trois 1 correspondent, c'est-à-dire que l'un est dans la même position dans la première moitié, comme l'autre dans la seconde moitié. Si ces deux 1 sont les premier et deuxième 1, alors nous obtenons b = n / 2 , s'ils sont les deuxième et troisième 1, nous obtenons c = n / 2 , et s'ils sont les premier et troisième 1, nous obtenons b + c = n / 2 , ou de manière équivalente, a + d = n / 2RL1b=n/2c=n/2b+c=n/2a+d=n/2 (où je triche un peu avec des constants ).±1
domotorp

Est-ce que cela répond à la question complète?
Michaël Cadilhac

@domotorp: ok I got it, thanks! Another doubt: from LR={...bn/2cn/2...} (which is ok) you write LR={...b>n/2c>n/2b,c<n/2} but, is it equivalent to: LR={...(b<n/2b>n/2)(c<n/2c>n/2)}? (a+d condition omitted)
Marzio De Biasi

@Michael: No.  
domotorp
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.