Sea
una función de codificación. Recordamos que confundiremos voluntariamente
con . La función es de decodificación única si rige la implicación siguiente:
Sea la imagen bajo la función de codificación del alfabeto . Recursivamente, se define y . Para cada , es pues la familia de palabras en consistente de códigos de palabras de longitud en .
Si es de decodificación única, entonces la relación (3) implica que toda palabra en se expresa de manera única como la concatenación de palabras en . Sintetizaremos esta última propiedad, diciendo que es de factorización única sobre .
Se define también .
En efecto, veamos cada una de las implicaciones requeridas. Por un lado:
1. 2. Es claro que si hubiera una palabra , ella tendría más de una factorización y en consecuencia no podría ser de decodificación única.
1. 3. Supongamos que hubiese una palabra . Existen entonces tales que . Por la descomposición única a fortiori y .
Por otro lado:
2. & 3.
1. Si acaso
entonces bien
es un prefijo de
o al revés. Supongamos lo primero, entonces
, para alguna palabra . Por la condición 3. debe estar en . Por la condición 2. se ha de tener
y
. Continuando de la misma forma para el resto de la palabra resulta la condición 1.
Sea una función de codificación y su imagen. Definimos, iterativamente
En efecto, veamos primero que las longitudes de los restos están acotadas. Sea la longitud mayor de las palabras de código:
. Por inducción en se ve de manera directa:
Naturalmente:
Ahora bien, la condición es claramente equivalente a que . Por tanto, si acaso para algún entonces no puede ser de decodificación única.
Esto proporciona el algoritmo de Sardinas-Patterson para decidir si un código es de decodificación única:
|