PUC-Rio
Departamento de Informática
Prof. Marcus Vinicius S. Poggi de Aragão
Horário: 2as-feiras e 4as-feiras de 9 às 11 horas - Sala 422L
28 de setembro de 2006
Data da Entrega: 25 de outubro de 2006
Período: 2006.2
ANÁLISE DE ALGORITMOS (INF 1721)

1o Trabalho de Implementação

Descrição

Este trabalho prático consiste em desenvolver códigos para diferentes algoritmos e estruturas de dados para resolver os problemas descritos abaixo e, principalmente, analisar o desempenho das implementações destes algoritmos com respeito ao tempo de CPU. O desenvolvimento destes códigos e a análise devem seguir os seguintes roteiros: A corretude código será testada sobre os conjuntos de instâncias distribuidos. O trabalho entregue deve conter:
0. Estruturas de Dados

O grupo deve implementar (ou usar códigos prontos) códigos para efetuar as seguintes operações nas estruturas de dados abaixo:
  1. d-Heap
  2. Heap que permita a união de heaps (Leftist Heap do Knuth), com e sem operações preguiçosas (LAZY). (A documentação para isto estará disponível na página no curso).
1. Problema da Árvore Geradora Mínima (veja os links ``Instâncias para AGM'' para grafos de teste)

  1. Implementar o Algoritmo de Kruskal utilizando uma ordenação de complexidade O(n log n) (Merge Sort ou Heap Sort, por exemplo) e com implementações de Union & Find:
    1. sem a compactação dos ponteiros.
    2. com a compactação dos ponteiros.

  2. Implementar o Algoritmo de Prim utilizando as estruturas de dados, listadas a seguir, para selecionar o vértice mais próximo da árvore corrente. Nestas estruturas, cada vértice tem como valor-chave o peso da menor aresta que o conecta à árvore corrente.

    Lista de estruturas de dados a utilizar:
    1. d-Heap, para diferentes valores de d.
    2. Leftist Heap sem lazy.
    3. Leftist Heap com lazy.
  3. Implementar o Algoritmo de Round-Robin (Tarjan) (equivalente ao algoritmo de Solin ou Borüvka) nesse algoritmo inicia-se com uma árvore associada a cada vértice (n árvores) armazenado-se numa min heap as arestas que liga