Otro ejemplo muy fácil es el siguiente: use la complejidad de Kolmogorov para demostrar que no es regular.Lww={ww∣w∈{0,1}∗}
Le doy una prueba muy informal con la esperanza de que pueda ayudarlo a comprender mejor el papel de la complejidad de Kolmogorov.
La idea clave es la siguiente: un autómata finito (que reconoce un lenguaje normal ) tiene una cantidad finita de "memoria"; por lo tanto, al ejecutar una cadena de entrada cuando ha "procesado" la primera parte de la entrada la pertenencia de en depende solo de su estado actual y de la segunda parte de la entrada .DLDx=yzyxLDz
Ahora suponga que es regular; entonces hay un DFA que lo reconoce.LwwDww
Sea una cadena de longitud incompresibley|y|=n≫|D|
Para todas las entradas , al final de la primera parte , el DFA estará claramente en el mismo estado , y por hipótesis solo aceptará si la parte restante es tal que puede dividirse en dos mitades iguales (es decir, ); por ejemplox=yzyDwwqizx=yzyz=ww
Let y = 10110
y z
x = 10110 0 >> rejected
x = 10110 1 >> accepted (w=101, |y|>|z|)
x = 10110 00 >> rejected
x = 10110 01 >> rejected
....
x = 10110 10110 >> accepted (w=10110, |y|=|z| !!!)
....
x = 10110 1101101 >> accepted (w=101101, |z|<|y|
Pero es importante notar que solo hay una cadena de longitudeso es aceptado ( ).z|y|z=y
Entonces, dada la descripción de , el estado al final de , y la longitudpodemos simular el comportamiento de en todas las cadenas y ver cuál acepta ... pero acepta exactamente .Dwwqiy|y|Dww2|y|z=y
Entonces, con un programa de tamañoℓ=|Dww|+logi+logy+c
( se necesita espacio para almacenar la descripción de ,
espacio para almacenar , espacio para almacenar la longitud de , se necesita espacio para las instrucciones que simulan el DFA )|Dww|Dwwlogiqilogyyc
podemos "reconstruir" la cadena ; pero para lo suficientemente grande tenemoslo cual es una contradicción porque es incompresible.yyℓ<|y|y