Trabalho de Implementação 2

CI1065 - Algoritmos e Teoria dos Grafos

Importante

Este trabalho é opcional. A nota de "trabalhos de implementação" será a maior nota dentre as dos trabalhos entregues.


A decomposição de um grafo em blocos é um pré-processamento importante quando um problema computacional sobre um grafo pode ser reduzido ao mesmo problema aplicado a cada um de seus blocos, dentro do conhecido esquema de divisão e conquista.

São exemplos disso os problemas de decidir a planaridade de um grafo, colorir seus vértices ou colorir suas arestas.

A divisão e conquista, nestes casos, consiste em decompor o grafo em blocos e aplicar separadamente (em paralelo, se for o caso) um algoritmo para o problema a cada um dos blocos.

Um caso de particular interesse acontece na situação em que se tem um algoritmo (exponencial) que toma tempo O(2n) para o problema computacional em questão. Se o grafo de entrada tem n vértices e seu maior bloco tem k vértices, então a estratégia descrita acima resolve o problema em tempo O(nc) onde c = k ⁄ logn. Noutras palavras, o algoritmo exponencial computa instâncias que podem ser decompostas assim em tempo polinomial.

Este trabalho consiste na implementação de uma função que recebe um grafo e devolve uma análise dos tamanhos de seus blocos, fornecendo assim uma ideia do quão promissora é esta estratégia de divisão e conquista.


A especificação do trabalho está em trabalho-2.tar.gz, onde você vai encontrar os seguintes arquivos.

trabalho-2/blocos.h:
 a especificação do que deve ser implementado;
trabalho-2/{teste.c,makefile}:
 como no primeiro trabalho

Entrega

O trabalho deve ser entregue sob a forma de um arquivo de nome fulano-sicrano.tar.gz, como no primeiro trabalho

O arquivo fulano-sicrano.tar.gz, uma vez expandido, deve conter (somente) os seguintes arquivos.

fulano-sicrano/blocos.c:
 a implementação do especificado em trabalho-2/blocos.h.
fulano-sicrano/readme.txt:
 como no primeiro trabalho

O arquivo fulano-sicrano.tar.gz deve ser entregue como anexo de mensagem enviada para m.v.g.dasilva@gmail.com (Turma BCC1) ou renato.carmo.rc@gmail.com (Turma BCC2). O "Subject:" desta mensagem deve ser "Entrega do trabalho 2".

O prazo para a entrega é às 23h59min do dia 4 de agosto.


Avaliação

Serão avaliados a correção e a aderência à especificação como no primeiro trabalho. Não haverá, entretanto, avaliação por tempo de execução com formação de "ranking".


Perguntas Frequentes

Veja as Perguntas Frequentes do primeiro trabalho

  1. Tenho outra pergunta/dúvida a respeito do trabalho que não está respondida nas `Perguntas Frequentes do primeiro trabalho <trabalho-1.html#faq>`.

    Envie mensagem para a lista da disciplina.