Boletín 2 – COD Por Javier Belenguer Faguás 1)Sea un alfabeto

Anuncio
Boletín 2 – COD
Por Javier Belenguer Faguás
1)Sea un alfabeto con un solo símbolo ¿cuáles son sus lenguajes código?
Sus lenguajes códigos son todos aquellos compuestos de una sola palabra que es la
concatenación un determinado número de veces del símbolo del alfabeto, esto es así porque si
el lenguaje código estuviera formado por varias palabras, al haber un solo símbolo, las
palabras que fueran la concatenación del símbolo un número de veces que fuera común
múltiplo de los números de veces que aparece el símbolo en las palabras del lenguaje código
podrían ser formadas con cualquiera de las palabras del lenguaje y por lo tanto tendría más de
una factorización y no sería un lenguaje código.
2) ¿Es {ab,abb,babb} un lenguaje código?
No es un lenguaje código dado que la palabra “abbabb” tiene varias factorizaciones en
palabras del lenguaje, pudiendo ser escrita concatenando dos veces el símbolo “abb” o
concatenando “ab” y “babb”.
3) ¿Son los lenguajes códigos cerrados para la unión?
Teniendo los lenguajes código {a, ab} y {ab, ba} que aparecen en el tema 2 de la asignatura, su
unión {a, ab, ba} no es un lenguaje código dado que la palabra “aba” tiene varias
factorizaciones en palabras del lenguaje, pudiendo escribirse concatenando los símbolos “a” y
“ba” o concatenando “ab” y “a”, por lo que los lenguajes códigos NO son cerrados para la
unión.
4) ¿Son los lenguajes códigos cerrados para la concatenación?
La concatenación L1L2 consiste de todas aquellas palabras de la forma vw donde v es una
palabra de L1 y w es una palabra de L2, dado que L1 y L2 son lenguajes código solo hay como
máximo una forma de escribir cada palabra mediante L1 y una mediante L2,
CONTINUAR
5) Demuestre que los códigos instantáneos son cerrados para la concatenación.
Dado que la condición necesaria y suficiente para que un lenguaje código sea instantáneo es
que sea prefijo y todo lenguaje prefijo que no contenga λ es un lenguaje código y mediante la
concatenación de palabras que no sean λ no se puede generar λ, es condición necesaria y
suficiente demostrar que los lenguajes generados son prefijos.
Dados dos lenguajes L1 y L2 que son lenguajes códigos instantáneos, su concatenación L1L2
consiste de todas aquellas palabras de la forma vw donde v es una palabra de L1 y w es una
palabra de L2, y dado que L1 y L2 son lenguajes prefijos, las partes v de las palabras de L1L2 no
serán prefijos unas de las otras y lo mismo ocurrirás con las partes w, y dado que si una
palabra es prefijo de otra cualquier subconjunto de la primera palabra que contenga el
principio de la misma será prefijo, al no ser v un prefijo de ninguna otra parte v de una palabra
las palabras que forman tampoco son prefijos entre sí, y por lo tanto L1L2 es un lenguaje
prefijo. Por lo tanto los códigos instantáneos son cerrados para la concatenación.
1
7) Demuestre que si L ⊆ A* es un lenguaje código, entonces Ln también lo es para cada n > 0.
Dado el lenguaje código L, Ln es el lenguaje formado por la concatenación de n veces el
lenguaje L, por lo que las palabras que lo forman son un subconjunto de las palabras que se
pueden formar a partir del lenguaje L, y dado que L es un lenguaje código, un subconjunto de
las palabras también es un lenguaje código, al tener como mucho el mismo número de formas
de escribir una palabra que L, es decir, una. Por lo tanto si L ⊆ A* es un lenguaje código,
entonces Ln también lo es para cada n > 0.
8) Sea A un alfabeto. Demuestre que An es un lenguaje código maximal para cada n > 0.
Para un alfabeto A, el lenguaje código que más palabras es capaz de escribir es A, es decir, el
propio alfabeto, ya que puede generar cualquier palabra que se puede escribir mediante ese
alfabeto. El lenguaje An está formado por todas las posibles palabras que de longitud n que se
pueden escribir a partir de A ya que es la concatenación n veces de A, por ello es un lenguaje
código, ya que es un subconjunto de las palabras de A y este es un lenguaje código, y dado que
no se puede añadir ninguna palabra a An sin que deje de ser un lenguaje código ya que ya
contiene todas las palabras de longitud n y añadir otra haría que hubiera más de una forma de
generar una palabra, An es un lenguaje código maximal. Por lo tanto An es un lenguaje código
maximal para cada n > 0.
9) Sea L = {a}n ∪ ({a}m)*{b} ¿Cuáles son los casos, dependiendo de n y de m, en los que L es un
lenguaje código?
Dado que ({a}m)*{b} siempre causa que el lenguaje L incluya la palabra “b”, el lenguaje L NO es
código para ningún valor de n y de m en el que m > 0 o, ya que ({a}m)n{b} = ({a}n)m{b} y esa
palabra y sus múltiplos podrán escribirse tanto concatenando {a}n m veces y concatenando al
final “b”, como usando directamente la palabra ({a}m)n{b}. Por otro lado λ no puede
pertenecer a un lenguaje código por lo que n tiene que ser mayor o igual a 0, por lo tanto L es
un lenguaje código para n > 0 y m = 0.
11) i) Si un código es completo, entonces ¿es un lenguaje código maximal?
Un lenguaje código completo no es necesariamente maximal, dado que la condición para que
un lenguaje código sea maximal es que al añadir cualquier palabra al lenguaje este deje de ser
código, mientras que la condición para que un lenguaje código sea completo es que al añadir
cualquier palabra al lenguaje este deje de ser prefijo, y por lo tanto deje de ser instantáneo, la
cual es una condición menos restrictiva que la de los lenguajes maximales e incluye más
lenguajes, algunos de los cuales no son maximales.
12) Sea una fuente de memoria nula S = (A,p) con A = {a,b,c} y p(a) = p(b) = p(c) = 1/3.
Obtenga un código binario para S de acuerdo al desarrollo del primer teorema de
Shannon y calcule su longitud media. ¿Es óptimo?
La longitudes de los símbolos de la fuente son:
𝑙(𝑎) = 𝑙(𝑏) = 𝑙(𝑐) = 1
Por lo que la longitud media es:
1
ℒ(𝐴) = 𝑝(𝑎) ∗ 𝑙(𝑎) + 𝑝(𝑏) ∗ 𝑙(𝑏) + 𝑝(𝑐) ∗ 𝑙(𝑐) = 3 ∗ ( ∗ 1) = 1
3
Por otro lado, la entropía de la memoria nula es:
2
ℋ(𝑆) = − ∑
1 ≤ 𝑖≤ 𝑛
𝑝𝑖 log 2 𝑝𝑖
= −(𝑝(𝑎) ∗ log 2 𝑝(𝑎) + 𝑝(𝑏) ∗ log 2 𝑝(𝑏) + 𝑝(𝑐) ∗ log 2 𝑝(𝑐))
1
1
= −3 ∗ ( ∗ log 2 ) = −(−1.58) = 1.58
3
3
Si expresamos la entropía en r unidades entonces:
ℋ𝑟 (𝑆) =
ℋ(𝑆)
log 2 𝑟
Donde r es el número de símbolos del alfabeto, por lo que:
ℋ3 (𝑆) =
ℋ(𝑆) 1.58
=
=1
log 2 3 1.58
Se tiene por lo tanto que:
ℋ3 (𝑆) ≤ ℒ(𝐴) ≤ ℋ3 (𝑆) + 1; 1 ≤ 1 ≤ 2
Por lo que no hay ningún lenguaje con mejor longitud media, y por lo tanto es óptimo para 3
símbolos. El lenguaje código B generado por la codificación de Shannon es {1, 00, 01}, cuyas
longitudes son:
𝑙1 = 1; 𝑙2 = 2; 𝑙3 = 2;
ℒ(𝐵) = 𝑝1 ∗ 𝑙1 + 𝑝2 ∗ 𝑙2 + 𝑝3 ∗ 𝑙3 =
1
1
1
5
∗ 1 + ∗ 2 + ∗ 2 = = 1.67
3
3
3
3
La entropía en r unidades para 2 símbolos es:
ℋ(𝑆) 1.58
ℋ2 (𝑆) =
=
= 1.58
log 2 2
1
Por lo que:
ℋ2 (𝑆) ≤ ℒ(𝐵) ≤ ℋ2 (𝑆) + 1; 1.58 ≤ 1.67 ≤ 2.58
Por lo tanto B es un código binario óptimo.
13) ¿Qué condición debe cumplirse en el alfabeto fuente para que la codificación de
Shannon proporcione códigos binarios óptimos en el caso de que todos los símbolos del
alfabeto fuente sean equiprobables?
CONTINUAR
14) ¿Son completos los códigos binarios óptimos?
Los lenguajes código óptimos son instantáneos, y por tanto prefijos,
CONTINUAR
3
Descargar