1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
11 \paperpackage widemarginsa4
15 \use_numerical_citations 0
16 \paperorientation portrait
19 \paragraph_separation indent
21 \quotes_language english
25 \paperpagestyle default
29 Organización de Datos (75.06)
46 Leandro Lucarella (77891)
48 Ricardo Markiewicz (78226)
51 Primera Entrega, 28 de Junio del 2004
55 \begin_inset LatexCommand \tableofcontents{}
62 Introducción al compresor
65 Método de compresión utilizado
68 Dada la asignación de confeccionar un compresor de archivos de cualquier
69 índole, con alguna optimización particular para archivos de texto, hemos
70 optado por la implementación del esquema:
72 Block Sorting + Move to front + Huffman Estático.
76 Si bien un compresor estadístico final más robusto como el PPMC o bien un
77 Huffman Dinámico podrían producir ratios de compresión un tanto mejores,
78 a fines de resguardar la confección de un compresor estable y poseer tiempo
79 suficiente para realizar pruebas y optimizaciones, se optó por el Huffman
80 Estático, al cual se lo contrapuso con una implementación Third Party de
81 uno dinámico, y las diferencias fueron mínimas tanto en tiempo como en
82 compresión, descartando así la posibilidad de extender el estático al dinámico.
85 Además de la capacidad natural de todo compresor (esto es, de comprimir/descompr
86 imir), la implementación que describiremos a continuación cuenta con features
87 especiales que se verán detallados en la
90 \begin_inset LatexCommand \ref{sec:Features-Especiales}
96 , los cuales a saberse son:
99 Persistencia del Modelo Orden-0 de Huffman (AKA: Huffman Canónico)
102 ZeroGroupping (Abreviación de ceros a la salida del MTF)
105 Word-Scaping (Optimización para textos detallada posteriormente)
111 Para obtener una documentación de la API, se incluye en formato HTML en
112 el CD-ROM la documentación generada con Doxygen para los distintos componentes
114 Esta documentación se encuentra en el directorio
124 Antes de pasar a la descripción de la implementación de nuestro compresor,
125 detallaremos a continuación las instrucciones pertinentes para la correcta
126 y óptima utilización de nuestro compresor.
134 Como hemos ancitipado anteriormente, el compresor cuenta con features especiales
135 que pueden ser utilizados a través de flags en la invocación del programa.
136 Antes de pasar a su descripción, notamos la invocación general para comprimir
137 y descomprimir un archivo.
146 el archivo ejecutable correspondiente al compresor, tendremos la siguientes
147 formas básicas de invocación:
152 ./jacu -c [-t volsize] sourcefile targetfile
158 el nombre del archivo a comprimir y
162 el nombre del archivo comprimido.
167 ./jacu -d sourcefile targetfile
173 el nombre del archivo a descomprimir y
177 el nombre del archivo descomprimido.
188 es un flag opcional que permite generar un archivo comprimido multivolumen,
193 será el tamaño en kbytes de cada volúmen, excepto el último que podrá ser
200 Ademas de los flags standards que hemos visto recién, nuestro compresor
201 cuenta con otra serie de ellos para la utilización de los features especiales
202 que veremos más adelante.
203 A fines de documentar la totalidad de los flags de ejecución, detallamos
204 los anteriores y los adicionales a continuación:
206 \labelwidthstring 00.00.0000
208 -c Indica que se desea comprimir un archivo
210 \labelwidthstring 00.00.0000
212 -d Indica que se desea descomprimir un archivo
214 \labelwidthstring 00.00.0000
216 -t Indica que se desea un archivo comprimido en multivolumenes.
217 Seguido a dicho flag se debe indicar el tamaño en kbytes que se desea para
220 \labelwidthstring 00.00.0000
222 -z Puede ser utilizado unicamente en una compresión y activa el feature
225 \labelwidthstring 00.00.0000
227 -s Puede ser utilizado unicamente en una compresión y graba el modelo de
228 orden-0 de huffman generado durante la compresión del archivo (en un archivo
233 ), para que luego pueda ser reutilizado en otra compresión.
235 \labelwidthstring 00.00.0000
237 -m Puede ser utilizado únicamente en una compresión y carga un modelo de
238 orden-0 de huffman para ser utilizado en la compresión del archivo especificado
239 , evitando el escaneado del archivo a comprimir.
240 Deberá ser sucedido por el nombre del archivo que posee el modelo.
246 Damos a continuación unos breves ejemplos de invocación utilizando los flags
250 Compresión multivolumen (de 1024 kbytes each):
252 ./jacu -c -t 1024 libro.txt libro.z
255 Compresión con ZeroGroupping:
257 ./jacu -cz libro.txt libro.z
260 Compresión grabando modelo de huffman:
262 ./jacu -cs libro.txt libro.z
265 Compresión con huffman canónico (carga de modelo):
267 ./jacu -c libro.txt libro.z -m modelfile
286 \begin_inset LatexCommand \label{sec:Features-Especiales}
293 Optimización para compresión de textos