miércoles, 28 de octubre de 2015

Compresión de texto

Objetivo: Comprimir esta frase de la forma más efectivamente posible.


Esta semana voy a jugar al pádel.
Mediante el código Ascii, vamos a asociar un código a cada letra. Cada código tiene asociado a su vez un conjunto de 0 y 1.

Esta frase en código Ascii sería así:
E     s     t     a          s      e    m    a    n    a         v      o     y         a          j      u      g
69-115-116-97-32-115-101-109-97-110-97-32-118-111-121-32-97-32-106-117-103-
a      r          a    l            p    a    d     e      l     .
-97-114-32-97-108-32-112-97-100-101-108-46

El problema es que este conjunto es demasiado extenso, con lo que vamos a tratar de acortarlo.

Para ello, vamos a asociar a cada letra y símbolo un número, que esté a su vez asociado al código de la letra en Ascii.
Como esto es un texto sin números, podemos asociar a los códigos Ascii, un número de uno o dos dígitos, ahorrando en algunos casos hasta 2 dígitos; pero no solo podemos asociarlos a números de dos dígitos, sino también a símbolos, que ocupan un solo caracter, con lo que cuando lleguemos a una asignación de doble dígito, podemos cambiar y usar símbolos.

Además, esto en textos extensos es mucho más efectivo, puesto que en lugar de asociarlos a letras, podemos asociarlos a palabras, lo que nos hace ser mucho más productivos.
a → 1        E → $
e → 2        Espacios → %
o → 3       g → *
u → 4       . → .
l →  5
s → 6
t → 7
m → 8
n → 9
v → @
y → #
j → +
r → ^
p → &
d → \
Con lo que la frase quedaría así:
$671%628191%@3#%1%+4*1^%15%&1\25.

Así, la frase tiene 33 caracteres, frente a los 84 iniciales.

Tras estas dos entradas relacionadas con la compresión, vamos a hacer una pequeña reflexión entre los compresores.
Ya hemos explicado como funcionan, gracias al post anterior sobre las imágenes y a éste sobre el texto, así que una vez visto su funcionamiento, podemos deducir que hay algunos más efectivos que otros, como es lógico.

Pero incluso, hay algunos que en lugar de reducir la información, lo que hacen es agrandarlas. Esto se debe a que en lugar de guardar una estimación, guarda una copia exacta, con el mismo nivel de detalle, aunque si queremos eso es mejor guardar otra copia en lugar de una compresión.

También tenemos otros, que son capaces de guardar una aproximación.

El objetivo de la compresión es siempre reducir el tamaño de la información, intentando que esta reducción de tamaño no afecte al contenido. No obstante, la reducción de datos puede afectar o no a la calidad de la información:

  • Sin pérdida. Los datos comprimidos son exactos a los no comprimidos. Esto hace que la compresión necesite más o menos tiempo de descompresión, sin embargo no pierde calidad. Además, la tasa de bits que se transmiten en cierto tiempo  siempre varía. Es el usado en los textos.

En los textos extensos, por ejemplo, podemos asociar a palabras un símbolo como por ejemplo el @ o la #.

Un ejemplo de la transferencia sin pérdida es el que hemos representado en este post.


  • Con pérdida. Los datos guardados son una estimación, con lo que se reduciría la calidad, ya que reduce el tamaño. Aquí la tasas de bits que se transmiten en cierta unidad de tiempo puede ser constante o ser variable.


Por ejemplo:
Tenemos una foto, que tiene diferentes tonalidades de blanco al gris en una línea.
El compresor, en lugar de guardar cada una de las tonalidades de la foto original, hace una estimación entre los extremos donde hay grandes cambios de tonalidad, con lo que a lo mejor, la foto se nos quedaría con un tono de blanco intermedio y un tono de gris intermedio.

Imagen original:





Imagen comprimida:




Esto da lugar a una estimación muy aproximada de la imagen.



miércoles, 21 de octubre de 2015

Formatos de compresión

En esta entrada, voy a explicaros con un ejemplo, como funcionan los formatos de compresión, y vamos a comparar los que consigamos.
cool_abstract_cube_wallpaper_hd.jpg

Supongamos que esta imagen tiene el siguiente formato:







































Cuyo formato es: [(Columnas x Filas), Nº de colores; (Fila, Columna), Color]

[(6x6),4;(1,1),A;(1,2),A;(1,3),N;(1,4),N;(1,5),R;(1,6),R;(2,1),A;(2,2),A;
(2,3),N;(2,4),N;(2,5),R;(2,6),R;(3,1),B;(3,2),B;(3,3),R;(3,4),R;(3,5),A;
(3,6),A;(4,1),N;(4,2),N;(4,3),B;(4,4),B;(4,5),A;(4,6),A;(5,1),N;(5,2),N;
(5,3),B;(5,4),B;(5,5),A;(5,6),A;(6,1),N;(6,2),N;(6,3),B;(6,4),B;(6,5),A;
(6,6),A]

Como este formato es demasiado grande (297 caracteres), necesitamos hacerlo más pequeño, para ello vamos a buscar un patrón que se repita, para hacer que sea más compacto el formato.




Nuevo formato, cuya fórmula es [(Columnas x Filas),Nº de colores;(Nº de la columna del color, nº de la fila del color),Color]

[(6x6),4;(1,1),(1,2),(2,1),(2,2),(3,5),(3,6),(4,5),(4,6)(5,5),(5,6),(6,5),(6,6),A;(1,3),(1,4),(2,3),(2,4),(5,1),(5,2),(6,1),(6,2),N;(1,5),(1,6),(2,5),(2,6),(3,3),(3,4),(4,3),(4,4),R;(3,1),(3,2),(4,1),(4,2),(5,3),(5,4),(6,3),(6,4),B]

Este tiene 232 caracteres, 65 caracteres menos que el primer formato.

Pero podemos seguir haciéndolo más pequeño: [(Colu[(6x6),4;2;A,N,R,B,R,A,N,B,A]mnas x Filas), Nº de Colores; Fila, (Orden de Colores según la fila)]

[(6,6),4;F1,(A,A,N,N,R,R);F2,(A,A,N,N,R,R);F3,(B,B,R,R,A,A);
F4,(B,B,R,R,A,A);F5,(N,N,B,B,A,A);F6,(N,N,B,B,A,A)]

Que tiene unos 111 caracteres. Otra reducción de 121 caracteres.

Aunque todavía se puede acortar más:
[(Columnas x Filas), Nº de Colores; Orden de Colores según la fila]

[(6x6),4;A,A,N,N,R,R;A,A,N,N,R,R;B,B,R,R,A,A;B,B,R,R,A,A;
N,N,B,B,A,A;N,N,B,B,A,A]

Lo que hace que tengamos unos 81 caracteres.

Pero podemos reducirlo todavía más, para ello tenemos que combinar las columnas, para que una columna en la fórmula, sean dos en la imagen.
Quedaría una foto tal que así:





















Cuyo formato sería: [(Columnas x Filas), Nº de Colores; Nº de columnas iguales; Colores]

[(6x6),4;2;A,N,R,B,R,A,N,B,A]

Esto nos reduce la ecuación a 29 caracteres.

Resumiendo, el formato original era de 297 caracteres, en una primera compresión, conseguimos reducirlo a 232 caracteres, ahorrando unos 65 caracteres. Pero, volvimos a reducirlo más, hasta los 111 caracteres, 186 caracteres menos que el formato inicial. Aunque llegamos a la conclusión de que este formato era bueno, seguimos buscando el formato más pequeño, y encontramos uno que se reducía a los 81 caracteres. Cuando parecía que esta reducción de 216 caracteres, surgió una mejor: ¡Una con tan solo 29 caracteres! Esto quiere decir que hemos conseguido ahorrarnos 268 caracteres, es decir, ¡una reducción del 86'13%!

miércoles, 7 de octubre de 2015

PC

Hoy os voy a hablar de los ordenadores de sobremesa. Para ello subo esta presentación de diapositivas, donde hablo de los componentes internos:
- Microprocesador
- Placa Base
- RAM/ROM
- Puertos de entrada/salida
- Discos Duros
- Tarjeta Gráfica
- Tarjeta de Sonido
- Tarjeta de Red
- Fuente de Alimentación
- Ventiladores
- Caja
Presentación PC

jueves, 1 de octubre de 2015

Historia de la Informática

¡Buenas!

El primer trabajo de TICO del curso, ha sido la realización de una línea del tiempo acerca de la historia de la informática.

Os dejo la mía aquí: Línea del tiempo sobre la informática

¡Un saludo!

PD: ¡Próximamente subiré un nuevo post con una sorpresa!