Trouver des exemples de langues «anti-palindromiques»


15

Soit Σ={0,1} . Un langage LΣ est dit d'avoir la propriété « anti-palindrome » si pour chaque chaîne w qui est un palindrome, wL . De plus, pour chaque chaîne u qui n'est pas un palindrome, soit uL ou Reverse(u)L , mais pas les deux (!) (Exclusif ou).

Je comprends la propriété anti-palindrome, mais je n'ai trouvé aucune langue possédant cette propriété. Le plus proche que je pouvais trouver est ΣL , mais il n'a pas l'exclusivité ou d'une partie ... qui est, par exemple, les 01 et 10 sont en L .

Quelqu'un pourrait-il me donner un exemple d'une langue qui a cette propriété? Ou peut-être même plus qu'un seul exemple, car je ne vois pas quel genre de limitations cela met sur une langue. (Doit-il être non régulier? Sans contexte? Ou même pas en R ? Et etc.)


"Je n'ai trouvé aucune langue possédant cette propriété." - vous venez d'en définir un en donnant la propriété, en supposant qu'il existe une langue qui remplit la condition.
Raphael

7
Je ne suis pas d'accord, ce qu'il a défini était une classe de langues. Cela ne constitue pas une définition bien définie d'une langue.
Shreesh

Réponses:


12

Un exemple sera .L={x  |  binary(x)<binary(xR),x[0,1]}

Et encore un autre exemple .L={x  |  binary(x)>binary(xR),x[0,1]}

L'idée est que si vous faites une règle pour n'en choisir qu'un seul. Vous devez choisir la règle pour que les palindromes soient rejetés ( f ( x ) < f ( x R ) , pour les palindromes, vous devez avoir f ( x ) = f ( x R ) ) .Vous pouvez également changer l'alphabet, j'ai pris alphabet binaire juste pour obtenir une réponse rapide.xxRf(x)<f(xR)f(x)=f(xR)

et L ' ci-dessus ne sont pas réguliers. Et chaquelangueanti-palindromiquesera non régulière et peut être aussi mauvaise qu'une langue non RE. Exemple d'une langue indécidable: L = { x | tel que b i n a r y ( x ) < b i n a r y ( x R ) si x et x R Halt ou x et x R Halt, sinon siLLL={x  |  binary(x)<binary(xR)xxR xxR Arrêter }x}

Klaus Draeger a expliqué dans le commentaire ci-dessous que le langage anti-palindromique donné au début de la réponse est hors contexte: L={x0y1xR | x,y{0,1}}


Je vois, il est donc vrai que chaque langue anti-palindrome est non régulière. Mais peut-on dire qu'elle doit être en ? car même en développant cette idée, chaque commande / fonction que nous utiliserons peut être calculée avec une MT dans R .. à droite? RR
Marik S.

@Marik Il existe des fonctions bien définies mais non calculables . Par exemple, mappage de nombres représentant M, w dans le problème de Halting à [0,1].
Shreesh

Oui, mais ces fonctions pourront-elles définir un ordre total sur ? Σ
Marik S.

1
Oui. Par exemple si x et x R ou Halt, sinon x ou x R selon ce qui se trouve dans Halt } . Halt est tout ( M , w ) tel que ML={x|xxR,binary(x)<binary(xR)xxRxxR}(M,w)Ms'arrête sur . w
Shreesh

1
Et si vous prenez le langage de diagonalisation, il devient non RE.
Shreesh

10

À propos de la génération de quelques exemples:

En nous appuyant sur la réponse de @shreesh, nous pouvons prouver que chaque langage anti-palindrome doit être de la forme pourcertainescommandes totales strictes < .

L={x | x<xR}()
<

En effet, compte tenu de tout anti-palindrome , on peut définir un < associé comme suit. Nous commençons par prendre n'importe quelle énumération x 0 , x 1 , de { 0 , 1 } , où chaque mot apparaît exactement une fois. Ensuite, nous modifions l'énumération: pour chaque paire de non-palindromes x , x R , nous échangeons leur position afin de faire apparaître celle qui appartient à L avant l'autre. La nouvelle énumération induit un ordre total < satisfaisant ( ) .L<x0,x1,{0,1}x,xRL<()

Que chaque défini comme ( ) est non palindrome est trivial, donc ( ) est une caractérisation complète des langages non palindromes.L()()

En répondant à la question initiale, nous savons maintenant que nous pouvons obtenir plusieurs exemples de langages anti-palindromes en créant des ordonnances < . Nous savons également qu'en faisant cela, nous ne nous limitons pas à une sous-classe de langues, en perdant la généralité.L<


A propos de la question "ces langues peuvent-elles être régulières?":

Pour prouver que tout anti-palindrome n'est pas régulier, supposons par contradiction qu'il est régulier.L

  1. La régularité étant préservée par retournement , est également régulière.LR
  2. La régularité étant préservée par l'union, , qui est l'ensemble de tous les non-palindromes, est également régulier.LLR
  3. La régularité étant préservée par le complément, l'ensemble de tous les palindromes est régulier.

De la dernière déclaration, nous pouvons tirer une contradiction en pompant. (Voir par exemple ici pour une solution)


1
Ou plus simplement, vous pouvez observer que pour qu'un DFA accepte le langage des palindromes, il doit considérer la première moitié de la chaîne tout en analysant la seconde moitié - mais un DFA a un nombre fini d'états et ne peut pas stocker un chaîne arbitrairement longue. C'est le même raisonnement qui montre que le langage des parenthèses équilibrées n'est pas régulier (la profondeur de parenté peut être arbitrairement grande).
Kevin

Je vois, mais si tout qui a cette propriété si de la forme L = { x | x < x R } indique-t-il que chaque langue est également sans contexte? Ou sinon CFL, alors doit-il être en R ? puisque chaque commande < peut être calculée en R avec une TM. LL={x|x<xR}R<R
Marik S.

@MarikS. La grammaire de rici ci-dessous prouve que peut être sans contexte. Je suis à peu près sûr que certains L sont non récursifs, car il existe de nombreux langages de ce type - dans ma preuve ci-dessus, nous pouvons faire des choix infiniment infinis sur lesquels mettre en premier entre x et x R , et chaque combinaison donne un L distinct . La cardinalité de ces langages est donc la même que { 0 , 1 } N , ce qui est indénombrable. LLxxRL{0,1}N
chi

9

Pour ce que ça vaut, voici une grammaire simple sans contexte pour un langage anti-palindromique:

S0S01S10X1XϵX0X1

(En fait, c'est le langage anti-palindromique proposé par @shreesh, utilisant la comparaison lexicographique pour l'opérateur inférieur à.)


8
Ce qui conduit à une description encore plus explicite: . L={x0y1xR | x,y{0,1}}
Klaus Draeger
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.