Seguendo la risposta qui , descriverò un metodo per dimostrare la non regolarità basato sulla complessità di Kolmogorv.
Questo approccio è discusso in "Un nuovo approccio alla teoria del linguaggio formale di Kolmogorov Complexity" , di Ming Li e Paul MB Vitanyi (vedere la sezione 3.1).
Sia denota la complessità di Kolmogorov di una stringa x , ovvero la lunghezza della codifica più breve di una macchina di Turing M , tale che M ( ϵ ) = x (qualsiasi delle solite definizioni lo farà). Si può quindi usare il seguente lemma per dimostrare la non regolarità:K(x)xMM(ϵ)=x
KC-Regolarità : Sia un linguaggio regolare, quindi esiste una costante c che dipende solo da L , tale che per tutte le x ∈ Σ ∗ , Se y è la stringa n ′ t h (relativa all'ordinamento lessicografico ) in L x = { y ∈ Σ ∗ | x y ∈ L } , quindi K ( y ) ≤ O ( log n )L⊆Σ∗cLx∈Σ∗yn′thLx={y∈Σ∗|xy∈L} .K(y)≤O(logn)+c
Si può capire (e provare) il lemma sopra come segue, per ogni , per descrivere la stringa n ′ t h in L x si deve specificare:x∈Σ∗n′thLx
- L'automa che accetta L
- Lo stato nell'automa dopo l'elaborazione del prefisso x
- L'indice n
Dal momento che abbiamo solo bisogno di ricordare lo stato dopo l'elaborazione , e non x sé, possiamo nascondere questo fattore nella costante a seconda L . L'indice n richiede log n bit per descrivere e otteniamo il risultato sopra (per completezza, è necessario aggiungere le istruzioni specifiche richieste per generare y , ma questo aggiunge solo un fattore costante alla descrizione finale).xxLnlogny
Questo lemma mostra come legare la complessità di Kolmogorov di tutte le stringhe che sono membri di per un linguaggio regolare L e x ∈ Σ ∗ . Per dimostrare la non regolarità, si può supporre che L sia regolare e dimostrare che i limiti sono troppo restrittivi (ad esempio, la complessità di Kolmogrov limitata per un insieme infinito di stringhe).LxLx∈Σ∗L
La risposta collegata sopra contiene un esempio di come usare questo lemma per mostrare non è regolare, molti altri esempi sono riportati nel documento. Per completezza, mostriamo qui come dimostrare L = { 0 n 1 n | n ≥ 0 } non è regolare.L={1p|p is prime}L={0n1n|n≥0}
Dato un , indichiamo con y x i il i ' t h parola in L x . Si noti che y 0 i 1 = 1 i . Usando il suddetto lemma, concentrandosi su prefissi x della forma x = 0 i e fissaggio n = 1 , otteniamo ∀ i ≥ 0 : K ( y 0 i 1x∈{0,1}∗yxii′thLxy0i1=1ixx=0in=1 . Poiché y 0 i 1 = 1 i , ciò significa che possiamo vincolare la complessità di Kolmogorov di tutte le stringhe della forma 1 i con una costante, che è ovviamente falsa. Vale la pena ricordare che avremmo potuto esaminare una singola x , ad esempio x = 0 n per n abbastanza grandeche soddisfa K ( 0 n ) ≥ log n (iniziamo con un prefisso di elevata complessità). Poiché y x 1 = 1 n , otteniamo∀i≥0:K(y0i1)≤cy0i1=1i1ixx=0nnK(0n)≥lognyx1=1n , contraddizione (supponiamo n > 2 c ).K(1n)<cn>2c