I. SOFTWARE DESENVOLVIDO DENTRO DO CONTRATO # Módulos para uso do cliente ## Módulo principal * cpk_main.h > cpk_main.h r2.h vec.h cpk_weight.h * cpk_main.c > cpk_main.c cpk_main.h cpk_build.h cpk_greedy.h cpk_grasp.h > cpk_graph.h cpk_io.h cpk_debug.h cpk_valid.h interval.h i2.h r2.h > cpk_basic.h ## Pesos e prioridades dos objetivos da otimização * cpk_weight.h > cpk_weight.h * cpk_weight.c > cpk_weight.c cpk_weight.h # Procedimentos internos de otimização ## Otimização gulosa * cpk_greedy.h > cpk_greedy.h cpk_graph.h cpk_mis.h pqueue.h i2.h vec.h * cpk_greedy.c > cpk_greedy.c cpk_greedy.h cpk_graph.h cpk_mis.h cpk_lopt.h > cpk_io.h cpk_debug.h i2.h pqueue.h ## Otimização por busca local * cpk_lopt.h > cpk_lopt.h cpk_graph.h cpk_mis.h cpk_basic.h * cpk_lopt_simple.h > cpk_lopt_simple.h cpk_mis.h cpk_basic.h * cpk_lopt_multi.h > cpk_lopt_multi.h cpk_graph.h cpk_mis.h cpk_basic.h * cpk_lopt.c > cpk_lopt.c cpk_lopt.h cpk_lopt_simple.h cpk_lopt_multi.h > cpk_graph.h cpk_mis.h cpk_valid.h cpk_debug.h cpk_io.h vec.h > cpk_basic.h * cpk_lopt_simple.c > cpk_lopt_simple.c cpk_lopt_simple.h cpk_lopt.h cpk_greedy.h > cpk_graph.h cpk_mis.h cpk_weight.h cpk_valid.h cpk_debug.h > cpk_io.h vec.h cpk_basic.h * cpk_lopt_multi.c > cpk_lopt_multi.c cpk_lopt_multi.h cpk_lopt.h cpk_greedy.h > cpk_graph.h cpk_mis.h cpk_weight.h cpk_valid.h cpk_debug.h > cpk_io.h vec.h cpk_basic.h ## Meta-heurística GRASP * cpk_grasp.h > cpk_grasp.h cpk_graph.h r2.h vec.h cpk_basic.h * cpk_grasp.c > cpk_grasp.c cpk_grasp.h cpk_mis.h cpk_graph.h cpk_greedy.h > cpk_lopt.h cpk_valid.h cpk_debug.h cpk_io.h vec.h cpk_basic.h # Representação interna da solução * cpk_mis.h > cpk_mis.h cpk_graph.h pqueue.h i2.h vec.h * cpk_mis.c > cpk_mis.c cpk_mis.h cpk_build.h cpk_graph.h cpk_io.h cpk_debug.h > i2.h pqueue.h # Construção do grafo que representa o problema * cpk_build.h > cpk_build.h cpk_main.h hxg_canvas.h i2.h r2.h vec.h * cpk_build.c > cpk_build.c cpk_build.h cpk_weight.h cpk_graph.h cpk_io.h > cpk_debug.h hxg_canvas.h hxg_paint.h interval.h i2.h r2.h r2x2.h # Estruturas de dados de uso geral ## Grafos * cpk_graph.h > cpk_graph.h i2.h * cpk_graph.c > cpk_graph.c cpk_graph.h i2.h ## Filas de prioridade * pqueue_rep.h > pqueue_rep.h * pqueue.h > pqueue.h pqueue_rep.h cpk_basic.h * pqueue.c > pqueue.c pqueue.h pqueue_rep.h cpk_basic.h # Conversão de coordenadas LL/EUTM * cpk_coords.h > cpk_coords.h * cpk_coords.c > cpk_coords.c cpk_coords.h # Conversão de dados geométricos para grade de pontos ## Representação da grade e conversão para grafo * hxg_canvas.h > hxg_canvas.h i2.h r2.h interval.h * hxg_canvas.c > hxg_canvas.c hxg_canvas.h cpk_graph.h cpk_basic.h i2.h r2.h > interval.h ## Discretização ("rasterização") de figuras geométricas * hxg_paint.h > hxg_paint.h i2.h r2.h interval.h hxg_canvas.h * hxg_paint.c > hxg_paint.c cpk_basic.h i2.h r2.h interval.h hxg_canvas.h > hxg_paint.h ## Desenho da grade e de figuras geométricas em Postscript * hxg_ps.h > hxg_ps.h i2.h r2.h interval.h hxg_canvas.h pswr.h * hxg_ps.c > hxg_ps.c cpk_basic.h i2.h r2.h interval.h hxg_canvas.h hxg_paint.h > hxg_ps.h pswr.h # Depuração e validação ## Rotinas de impressão para depuração: * cpk_debug.h > cpk_debug.h i2.h r2.h pqueue.h cpk_basic.h * cpk_debug.c > cpk_debug.c cpk_debug.h cpk_io.h cpk_graph.h i2.h r2.h pqueue.h > cpk_basic.h ## Testes de consistência e validade * cpk_valid.h > cpk_valid.h cpk_main.h cpk_graph.h i2.h r2.h cpk_basic.h * cpk_valid.c > cpk_valid.c cpk_valid.h cpk_main.h cpk_io.h cpk_debug.h > cpk_basic.h i2.h r2.h # Impressão e plotagem do problema e soluções * cpk_io.h > cpk_io.h cpk_basic.h cpk_main.h hxg_ps.h interval.h i2.h r2.h * cpk_io.c > cpk_io.c cpk_io.h cpk_main.h cpk_coords.h hxg_ps.h cpk_basic.h > interval.h i2.h r2.h pswr.h fget.h II. SOFTWARE DE USO LIVRE ADAPTADO PARA O PROJETO # Operações geométricas ## Pares de números reais (p. ex. pontos do plano) * r2.h > r2.h vec.h interval.h * r2.c > r2.c r2.h interval.h cpk_basic.h ## Matrizes 2x2 * r2x2.h > r2x2.h r2.h * r2x2.c > r2x2.c r2x2.h r2.h ## Intervalos e retângulos * interval.h > interval.h * interval.c > interval.c interval.h # Biblioteca geral para criar arquivos Postscript * pswr.h > pswr.h cpk_basic.h pswr_def.h * pswr.c > pswr.c pswr.h pswr_def.h pswr_aux.h pswr_vis.h cpk_basic.h * pswr_def.h > pswr_def.h * pswr_aux.h > pswr_aux.h pswr.h * pswr_aux.c > pswr_aux.c pswr.h pswr_def.h pswr_aux.h pswr_vis.h cpk_basic.h * pswr_vis.h > pswr_vis.h pswr.h * pswr_vis.c > pswr_vis.c pswr.h cpk_basic.h pswr_vis.h # Outros tipos e procedimentos de uso geral ## Tipo "bool" e rotinas miúdas de conveniência * cpk_basic.h > cpk_basic.h * cpk_basic.c > cpk_basic.c cpk_basic.h ## Pares de inteiros (p. ex. arestas de um grafo) * i2.h > i2.h vec.h * i2.c > i2.c i2.h cpk_basic.h ## Vetores extensíveis com comprimento embutido * vec.h > vec.h cpk_basic.h * vec.c > vec.c vec.h cpk_basic.h ## Rotinas de conveniência para leitura de arquivos * fget.h > fget.h cpk_basic.h * fget.c > fget.c fget.h cpk_basic.h