jueves, 14 de febrero de 2013

[TEORÍA DE LA INFORMACIÓN] Noisy channel simmulation

Para esta primera entrada de clase, realizamos una simulación de transmición de palabras binarias. Para esto escribí un pequeño programa que genera palabras en base a ciertos parámetros:

1 - Porcentaje 0 y 1
2 - Largo de palabra
3 - Numero de palabras
4 - Probabilidad de que 0 se quede como 0
5 - Probabilidad de que 1 se quede como 1
6 - Repeticiones por palabra

Mi código genera de estos datos N palabras de N largo, para eso yo genero un caracter (0 o 1) y lo agrego a un string. Despues agrego ese string a una lista y al terminar de generar todas las palabras inmediatamente las transmito.

Por cada transmición genero N palabras de la original. Al regresar, comparo cada una con su original y saco los errores que se generaron.

El código que realiza la función de generación de palabras es el siguiente:
El código que transmite la palabra es:

Después generé un script que corre el programa de transmición y generación de palabras:

Utilizé los parametros del script para generar 30 palabras de largos 1 a 9 (elevados a 2) con 30 transmiciones por palabra.

Y los resultados son los siguientes:

En el eje "y" tengo la probabilidad de error y en el eje "x" el largo de la palabra. Como se puede ver el comportamiento es que al aumentar la probabilidad de cambio (tanto en 0 como 1) tambien aumenta la cantidad de errores, al mismo tiempo disminuí la probabilidad de que exista un error, aún así hubo transmiciones completamente erroneas.

La liga al proyecto:
https://github.com/victoralex911/teoria-informacion

1 comentario:

  1. Faltó el código de las estadísticas; van 3 por el código. En el reporte, el análisis y la visualización se pudieran haber mejorado bastante; van también 3 pts ahí.

    ResponderEliminar