Representación RUNS conversiones entre representaciones matriz binaria y secuencia Juan Manuel García Sánchez Pablo de la Torre Moreno
Objetivos Características de representación Operaciones Características de compresión
Representación en secuencia Ejemplo de matriz simple Ejemplo de correspondencia runs 1 : : : : : Características de representación
Algoritmo de paso a Runs (I) Definición del tipo ArrayRuns como array de enteros sin signo Estructura de ArrayRuns: número filas y columnas de la matriz original primer bit de la primera fila frecuencias de la fila separador de filas (0) primer bit de la segunda fila... Características de representación
Algoritmo de paso a Runs (II) Ejemplo de matriz Runs 1 : : : : : Ejemplo de correspondencia ArrayRuns Características de representación
Algoritmo de paso a Runs (III) Pasos del algoritmo: –leer matriz en representación simple (obtención de número de filas y columnas) –codificar matriz a ArrayRuns –codificar ArrayRuns a bits Características de representación
Algoritmo de paso a Runs (IV) Pasos de la codificación a bits: –codificar cada elemento en tantos bits como los necesarios para codificar el número de columnas (existen codificaciones mucho más eficientes) –utilizar un TAD adecuado para trabajar con bits –se necesita guardar el número de filas y columnas de la matriz original Características de representación
Algoritmo de paso a Runs (V) Ejemplo de secuencia ArrayRuns Ejemplo de correspondencia en bits (sólo datos) Características de representación
Algoritmo inverso Pasos del algoritmo: –tomar el conjunto de bits Runs y la información del número de filas y columnas –con el número de columnas, calcular el número de bits con el que se codifica cada número y decodificar las frecuencias –codificar de bits a ArrayRuns –codificar de ArrayRuns a representación simple Características de representación
Esquema de representación (resumen) Ejemplo de matriz simple Características de representación Ejemplo de correspondencia Runs en bits (sólo datos)
Operaciones Complementaria Unión Intersección Diferencia Rotación Traslación Otras transformaciones Operaciones
Complementaria (I) Algoritmo en representación simple –para cada bit de la matriz, invertirlo es necesario recorrer toda la matriz Algoritmo en representación Runs –por cada fila de la matriz, invertir el primer bit muy eficiente Operaciones
Complementaria (II) Ejemplo de matriz en representación simple Ejemplo complementaria Operaciones
Complementaria (III) Ejemplo de matriz en representación Runs 1 : : : : : Ejemplo complementaria 0 : : : : : Operaciones
Unión (I) Algoritmo en representación simple –para cada bit de la primera matriz, realizar la operación or con el equivalente de la segunda es necesario recorrer toda la matriz Algoritmo en representación Runs –se procesa de igual manera, pero tan sólo las diferencias de frecuencias más eficiente, puesto que recorre frecuencias, no bits difícil de comprobar visualmente Operaciones
Unión (II) Ejemplo de matrices, representación simple Ejemplo unión Operaciones
Unión (III) Ejemplo de matrices, representación Runs 1 : : : Ejemplo unión 1 : : Operaciones
Intersección (I) Algoritmo en representación simple –para cada bit de la primera matriz, realizar la operación and con el equivalente de la segunda es necesario recorrer toda la matriz Algoritmo en representación Runs –se procesa de igual manera, pero tan sólo las diferencias de frecuencias más eficiente, puesto que recorre frecuencias, no bits difícil de comprobar visualmente Operaciones
Intersección (II) Ejemplo de matrices, representación simple Ejemplo intersección Operaciones
Intersección (III) Ejemplo de matrices, representación Runs 1 : : : Ejemplo intersección 0 : : Operaciones
Diferencia (I) Algoritmo en representación simple –para cada bit de la primera matriz, realizar la diferencia con el equivalente de la segunda es necesario recorrer toda la matriz Algoritmo en representación Runs –se procesa de igual manera, pero tan sólo las diferencias de frecuencias más eficiente, puesto que recorre frecuencias, no bits difícil de comprobar visualmente Operaciones
Diferencia (II) Ejemplo de matrices, representación simple Ejemplo diferencia Operaciones
Diferencia (III) Ejemplo de matrices, representación Runs 1 : : : Ejemplo diferencia 1 : : Operaciones
Rotación Algoritmo en representación simple –para cada bit de la matriz, existen transformaciones matemáticas que modifican su posición pueden ser funciones muy complejas Algoritmo en representación Runs es necesario conocer exactamente los bits de los alrededores, por lo que resulta inevitable tener que transformar de nuevo a matriz simple Operaciones
Traslación (I) Algoritmo en representación simple –dependiendo de la dirección, se coloca la fila o columna primera tras la última o viceversa muy eficiente, pues sólo hay que modificar los índices Algoritmo en representación Runs –se procesa de igual manera al trasladar filas; con las columnas deben modificarse las frecuencias iniciales y finales de cada fila igual de eficiente en las filas, menos en las columnas Operaciones
Traslación (II) Ejemplo de matrices, representación simple Ejemplo traslación (1 abajo, 2 izquierda) Operaciones
Traslación (III) Ejemplo de matriz en representación Runs 1 : : : : : Ejemplo traslación (1 abajo, 2 izquierda) 1 : : : : : Operaciones
Otras transformaciones Algoritmo en representación simple –para cada grupos de bit de la matriz, se aplican las transformaciones matemáticas dadas pueden ser funciones muy complejas Algoritmo en representación Runs para cualquier grupo de bits, salvo en transformaciones lineales muy simples de un solo elemento, es necesario transformar de nuevo a matriz simple Operaciones