]> git.llucax.com Git - z.facultad/75.06/jacu.git/blob - doc/InformeTP3.lyx
a486f6d7805050e6ab8875de0a59f715ffbb2f7b
[z.facultad/75.06/jacu.git] / doc / InformeTP3.lyx
1 #LyX 1.3 created this file. For more info see http://www.lyx.org/
2 \lyxformat 221
3 \textclass book
4 \language spanish
5 \inputencoding auto
6 \fontscheme palatino
7 \graphics default
8 \paperfontsize default
9 \spacing single 
10 \papersize a4paper
11 \paperpackage widemarginsa4
12 \use_geometry 0
13 \use_amsmath 0
14 \use_natbib 0
15 \use_numerical_citations 0
16 \paperorientation portrait
17 \secnumdepth 3
18 \tocdepth 3
19 \paragraph_separation indent
20 \defskip medskip
21 \quotes_language english
22 \quotes_times 2
23 \papercolumns 1
24 \papersides 1
25 \paperpagestyle default
26
27 \layout Title
28
29 Organización de Datos (75.06)
30 \newline 
31 Trabajo Práctico
32 \newline 
33 JACU
34 \layout Author
35
36
37 \series bold 
38 Grupo 11
39 \series default 
40
41 \newline 
42 Nicolás Dimov (77624)
43 \newline 
44 Alan Kennedy (78907)
45 \newline 
46 Leandro Lucarella (77891)
47 \newline 
48 Ricardo Markiewicz (78226)
49 \layout Date
50
51 Primera Entrega, 28 de Junio del 2004
52 \layout Standard
53
54
55 \begin_inset LatexCommand \tableofcontents{}
56
57 \end_inset 
58
59
60 \layout Chapter
61
62 Introducción al compresor
63 \layout Section
64
65 Método de compresión utilizado
66 \layout Standard
67
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: 
71 \series bold 
72 Block Sorting + Move to front + Huffman Estático.
73  
74 \layout Standard
75
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.
83 \layout Standard
84
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 
88 \series bold 
89 sección 
90 \begin_inset LatexCommand \ref{sec:Features-Especiales}
91
92 \end_inset 
93
94
95 \series default 
96 , los cuales a saberse son:
97 \layout Itemize
98
99 Persistencia del Modelo Orden-0 de Huffman (AKA: Huffman Canónico)
100 \layout Itemize
101
102 ZeroGroupping (Abreviación de ceros a la salida del MTF)
103 \layout Itemize
104
105 Word-Scaping (Optimización para textos detallada posteriormente)
106 \layout Section
107
108 Documentación
109 \layout Standard
110
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
113  del compresor.
114  Esta documentación se encuentra en el directorio 
115 \family typewriter 
116 doc/api/html
117 \family default 
118 .
119 \layout Section
120
121 Modo de uso
122 \layout Standard
123
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.
127 \layout Subsection
128
129 Invocación standard
130 \layout Paragraph
131
132
133 \series medium 
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.
138 \layout Paragraph
139
140
141 \series medium 
142 Sea 
143 \series default 
144 jacu
145 \series medium 
146  el archivo ejecutable correspondiente al compresor, tendremos la siguientes
147  formas básicas de invocación:
148 \layout Paragraph
149
150 Compresión: 
151 \series medium 
152 ./jacu -c [-t volsize] sourcefile targetfile
153 \newline 
154 Siendo 
155 \noun on 
156 sourcefile
157 \noun default 
158  el nombre del archivo a comprimir y 
159 \noun on 
160 targetfile
161 \noun default 
162  el nombre del archivo comprimido.
163 \layout Paragraph
164
165 Descompresión: 
166 \series medium 
167 ./jacu -d sourcefile targetfile
168 \newline 
169 Siendo 
170 \noun on 
171 sourcefile
172 \noun default 
173  el nombre del archivo a descomprimir y 
174 \noun on 
175 targetfile
176 \noun default 
177  el nombre del archivo descomprimido.
178 \layout Quote
179
180
181 \series bold 
182 Nota:
183 \series default 
184  El flag 
185 \series bold 
186 -t
187 \series default 
188  es un flag opcional que permite generar un archivo comprimido multivolumen,
189  donde 
190 \series bold 
191 volsize
192 \series default 
193  será el tamaño en kbytes de cada volúmen, excepto el último que podrá ser
194  menor.
195 \layout Subsection
196
197 Execution Flags
198 \layout Standard
199
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:
205 \layout List
206 \labelwidthstring 00.00.0000
207
208 -c Indica que se desea comprimir un archivo
209 \layout List
210 \labelwidthstring 00.00.0000
211
212 -d Indica que se desea descomprimir un archivo
213 \layout List
214 \labelwidthstring 00.00.0000
215
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
218  los volúmenes.
219 \layout List
220 \labelwidthstring 00.00.0000
221
222 -z Puede ser utilizado unicamente en una compresión y activa el feature
223  de ZeroGroupping
224 \layout List
225 \labelwidthstring 00.00.0000
226
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
229  de extensión .
230 \series bold 
231 ftb
232 \series default 
233 ), para que luego pueda ser reutilizado en otra compresión.
234 \layout List
235 \labelwidthstring 00.00.0000
236
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.
241 \layout Subsection
242
243 Ejemplos
244 \layout Standard
245
246 Damos a continuación unos breves ejemplos de invocación utilizando los flags
247  opcionales:
248 \layout Itemize
249
250 Compresión multivolumen (de 1024 kbytes each): 
251 \series bold 
252 ./jacu -c -t 1024 libro.txt libro.z
253 \layout Itemize
254
255 Compresión con ZeroGroupping: 
256 \series bold 
257 ./jacu -cz libro.txt libro.z
258 \layout Itemize
259
260 Compresión grabando modelo de huffman: 
261 \series bold 
262 ./jacu -cs libro.txt libro.z
263 \layout Itemize
264
265 Compresión con huffman canónico (carga de modelo): 
266 \series bold 
267 ./jacu -c libro.txt libro.z -m modelfile
268 \layout Chapter
269
270 Implementación
271 \layout Section
272
273 Especificaciones
274 \layout Subsection
275
276 Block Sorting
277 \layout Subsection
278
279 Move to Front
280 \layout Subsection
281
282 Huffman Estático
283 \layout Section
284
285 Features Especiales
286 \begin_inset LatexCommand \label{sec:Features-Especiales}
287
288 \end_inset 
289
290
291 \layout Section
292
293 Optimización para compresión de textos
294 \layout Chapter
295
296 Benchmarks
297 \layout Section
298
299 Prueba Calgary
300 \layout Section
301
302 Archivos de Texto
303 \layout Section
304
305 Archivos Binarios
306 \the_end