Lingue regolari che non possono essere espresse con solo 2 operazioni regex


12

Pensavo che tutte le lingue regolari potessero essere espresse con espressioni regolari (se una lingua è regolare, può essere espressa con regex), ma mi è stato detto che hai bisogno di tutte e tre le operazioni regolari (concatenazione, unione e stella) per questo tenere.

Ad esempio, mi è stato detto che se potessi usare solo le operazioni di regex di unione e concatenazione (2 su 3), ci sarebbe un linguaggio normale che non posso descrivere solo con quei due.

Lo stesso vale per la star e l'unione di Kleene. Quali sono alcuni esempi di questo?

Risposte:


19

L={ab}abL={a,b}


3
{a,b}

Quindi perché non posso descrivere L = {a, b} senza unione? È perché non possono essere rappresentati come elementi separati con stella e concatenazione? Poteva fare solo ab, bb, aba ecc.?
user3295674

@ user3295674 Esatto.
DylanSp

e qualcosa come L = {a *} non sarebbe possibile solo con l'unione e la concatenazione, giusto? Grazie mille!
user3295674

Non capisco nemmeno come la stella sarebbe definita senza la concatenazione disponibile.
G. Bach,


4

A(ab)(a(ab)b)(aa)

Se uno ora consente di usare le stelle, ma non le stelle nidificate , allora è un problema aperto (per almeno 45 anni) sapere se si possono ottenere tutte le lingue regolari. Questa domanda è nota come problema generalizzato dell'altezza della stella . È simile al problema dell'altezza delle stelle menzionato da Yuval Filmus, con la differenza che la complementazione è ora consentita.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.