Objetivos e metodologia

Neste projeto de iniciação científica, nós estudamos algumas das ferramentas mais fundamentais em otimização combinatória através do estudo, implementação e análise experimental de algoritmos para problemas clássicos envolvendo fluxos em redes. Um dos objetivos foi a nossa preparação para uma pós-graduação na área.

A principal fonte dos algoritmos incluídos no estudo, e também a principal base teórica, foi o livro Network Flows de Ahuja, Magnanti e Orlin [1]. Também utilizamos bastante a teoria do livro Combinatorial Optimization de Cook, Cunningham, Pulleyblank e Schrijver [5].

Como corolário de nosso estudo, produzimos um texto científico contendo a descrição de toda a teoria envolvida nos problemas e em cada um dos algoritmos estudados. A linguagem algoritmica utilizada segue os padrões das notas de aula de Paulo Feofiloff [10], que nos permitiram destacar de maneira simples a razão pela qual os algoritmos funcionam. Cabe ressaltar que o texto produzido não é uma mera reprodução ou resumo do conteúdo das nossas referências, mas um texto independente e auto-contido que freqüentemente diverge delas em termos de notação, rigidez e até mesmo em aspectos como demonstrações de teoremas.

Outro produto da nossa iniciação foi uma biblioteca de implementações dos algoritmos estudados, que nos permitiu realizar um estudo comparativo de desempenho experimental. Um documento contendo todos os detalhes desse estudo comparativo também foi produzido. Uma de nossas intenções com o projeto era disponibilizar todas as implementações em um sítio da Internet nos moldes da Network Optimization Library de Andrew Goldberg [20]. Por isso, para que as implementações pudessem ser facilmente compreendidas e utilizadas por outras pessoas, elas foram feitas na linguagem CWEB [21] de programação literária [22] e utilizaram a plataforma combinatória SGB [23], desenvolvida por Knuth.