Title: Representaci
1Representación RUNS
- conversiones entre representaciones matriz
binaria y secuencia - Juan Manuel García Sánchez
- Pablo de la Torre Moreno
2Objetivos
- Características de representación
- Operaciones
- Características de compresión
3Representación en secuencia
Características de representación
- Ejemplo de matriz simple
- 101111111111100
- 000011101110000
- 000000111000000
- 000011101110000
- 001110000011100
- Ejemplo de correspondencia runs
- 1 1 1 11 2
- 0 4 3 1 3 4
- 0 6 3 6
- 0 4 3 1 3 4
- 0 2 3 5 3 2
4Algoritmo de paso a Runs (I)
Características de representación
- 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
- ...
5Algoritmo de paso a Runs (II)
Características de representación
- Ejemplo de matriz Runs
- 1 1 1 11 2
- 0 4 3 1 3 4
- 0 6 3 6
- 0 4 3 1 3 4
- 0 2 3 5 3 2
- Ejemplo de correspondencia ArrayRuns
- 5 15 1 1 1 11 2 0
- 0 4 3 1 3 4 0 0 6
- 3 6 0 0 4 3 1 3 4
- 0 0 2 3 5 3 2 0
6Algoritmo de paso a Runs (III)
Características de representación
- 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
7Algoritmo de paso a Runs (IV)
Características de representación
- 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
8Algoritmo de paso a Runs (V)
Características de representación
- Ejemplo de secuencia ArrayRuns
- 5 15 1 1 1 11 2 0
- 0 4 3 1 3 4 0 0 6
- 3 6 0 0 4 3 1 3 4
- 0 0 2 3 5 3 2 0
- Ejemplo de correspondencia en bits (sólo datos)
- 1 0001 0001 1011 0010
- 0 0100 0011 0001 0011
- 0100 0 0110 0011 0110
- 0 0100 0011 0001 0011
- 0100 0 0010 0011 0101
- 0011 0010
9Algoritmo inverso
Características de representación
- 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
10Esquema de representación (resumen)
Características de representación
- Ejemplo de matriz simple
- 101111111111100
- 000011101110000
- 000000111000000
- 000011101110000
- 001110000011100
- Ejemplo de correspondencia Runs en bits (sólo
datos) - 1 0001 0001 1011 0010
- 0 0100 0011 0001 0011
- 0100 0 0110 0011 0110
- 0 0100 0011 0001 0011
- 0100 0 0010 0011 0101
- 0011 0010
11Operaciones
Operaciones
- Complementaria
- Unión
- Intersección
- Diferencia
- Rotación
- Traslación
- Otras transformaciones
12Complementaria (I)
Operaciones
- 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
13Complementaria (II)
Operaciones
- Ejemplo de matriz en representación simple
- 101111111111100
- 000011101110000
- 000000111000000
- 000011101110000
- 001110000011100
- Ejemplo complementaria
- 010000000000011
- 111100010001111
- 111111000111111
- 111100010001111
- 110001111100011
14Complementaria (III)
Operaciones
- Ejemplo de matriz en representación Runs
- 1 1 1 11 2
- 0 4 3 1 3 4
- 0 6 3 6
- 0 4 3 1 3 4
- 0 2 3 5 3 2
- Ejemplo complementaria
- 0 1 1 11 2
- 1 4 3 1 3 4
- 1 6 3 6
- 1 4 3 1 3 4
- 1 2 3 5 3 2
15Unión (I)
Operaciones
- 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
16Unión (II)
Operaciones
- Ejemplo de matrices, representación simple
- 101111111111100
- 000011101110000
- 000011101110000
- 000000111000000
- Ejemplo unión
- 101111111111100
- 000011111110000
?
17Unión (III)
Operaciones
- Ejemplo de matrices, representación Runs
- 1 1 1 11 2
- 0 4 3 1 3 4
- 0 4 3 1 3 4
- 0 6 3 6
- Ejemplo unión
- 1 1 1 11 2
- 0 4 7 4
?
18Intersección (I)
Operaciones
- 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
19Intersección (II)
Operaciones
- Ejemplo de matrices, representación simple
- 101111111111100
- 000011101110000
- 000011101110000
- 000000111000000
- Ejemplo intersección
- 000011101110000
- 000000101000000
?
20Intersección (III)
Operaciones
- Ejemplo de matrices, representación Runs
- 1 1 1 11 2
- 0 4 3 1 3 4
- 0 4 3 1 3 4
- 0 6 3 6
- Ejemplo intersección
- 0 4 3 1 3 4
- 0 6 1 1 1 6
?
21Diferencia (I)
Operaciones
- 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
22Diferencia (II)
Operaciones
- Ejemplo de matrices, representación simple
- 101111111111100
- 000011101110000
- 000011101110000
- 000000111000000
- Ejemplo diferencia
- 101100010001100
- 000011000110000
?
23Diferencia (III)
Operaciones
- Ejemplo de matrices, representación Runs
- 1 1 1 11 2
- 0 4 3 1 3 4
- 0 4 3 1 3 4
- 0 6 3 6
- Ejemplo diferencia
- 1 1 1 2 3 1 3 2 2
- 0 4 2 3 2 4
?
24Rotación
Operaciones
- 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
25Traslación (I)
Operaciones
- 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
26Traslación (II)
Operaciones
- Ejemplo de matrices, representación simple
- 101111111111100
- 000011101110000
- 000000111000000
- 000011101110000
- 001110000011100
- Ejemplo traslación (1 abajo, 2 izquierda)
- 111000001110000
- 111111111110010
- 001110111000000
- 000011100000000
- 001110111000000
27Traslación (III)
Operaciones
- Ejemplo de matriz en representación Runs
- 1 1 1 11 2
- 0 4 3 1 3 4
- 0 6 3 6
- 0 4 3 1 3 4
- 0 2 3 5 3 2
- Ejemplo traslación (1 abajo, 2 izquierda)
- 1 3 5 3 4
- 1 11 2 1 1
- 0 2 3 1 3 6
- 0 4 3 8
- 0 2 3 1 3 6
28Otras transformaciones
Operaciones
- 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