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:
|