Supongamos que tenemos un código simple que consta de las tres palabras cat, catapulta, y el camello.
Este conjunto de codewords no es de prefijo libre, porque a (toda) la palabra, a saber, gato, es también un prefijo de otra palabra.
Aquí es un (falso) ilustración del problema que esto puede causar. Supongamos que el gato codifica "ejecutar como h***", catapulta codifica tener "un buen momento", y "catenaria" codifica "cuando la cena?".
Imagine ahora que codewords vienen en tipo de lentamente, letra por letra. Si usted consigue las letras
$$\text{c$\qquad$ a$\qquad$ t}$$
usted no sabe qué hacer, este podría ser el mensaje completo, así que es mejor dejar de mirar a la pantalla del ordenador y salir de allí rápido, o tal vez es el comienzo de otra palabra, y es mejor esperar.
Supongamos por el contrario que la única codewords son capturas, la catapulta, la catenaria, y catamount. Esta colección de codewords es de prefijo libre, ya que ninguna de (toda) la palabra es la parte inicial de otra palabra. Si
$$\text{c$\qquad$ a$\qquad$ t} \qquad\qquad \text{or even} \qquad\qquad \text{c$\qquad$ a$\qquad$ t$\qquad$a}$$
viene en, usted sabe que tiene que esperar para que llegue el mensaje.
En un mayor nivel de programación, supongamos que las letras vienen en un flujo continuo, no se separan en codewords. Usted quiere ser capaz de separar esta secuencia de letras en codewords "sobre la marcha".
Si ambos gato y la catapulta se codewords, si ves que el gato no se puede tomar la decisión hasta ver la siguiente carta. Es por eso que el primer ejemplo no es de prefijo libre.
En el segundo ejemplo, no hay ningún problema, si ves un gato, ya sé que no es en la palabra clave de la lista, así que esperar a que el resto.
Comentario:
Hay algunas buenas razones para usar la variable longitud de los códigos. Por ejemplo, supongamos que nuestros mensajes abrumadora mayoría consisten en información numérica, con muy breves fragmentos de texto. A continuación, puede aumentar el rendimiento de un lote para codificar los dígitos como muy corto de cadenas de bits, y las letras del alfabeto como el tiempo de cadenas de bits.
En un lenguaje que debe ser interpretado por un ordenador, es a menudo conveniente tener el prefijo libre de la propiedad, porque puede significar que podamos utilizar un simple analizador. Un analizador que tiene que hacer una buena cantidad de "mirar hacia adelante" con el fin de interpretar una cadena disminuye la eficiencia.