ep2exemplo.c
, para a rotina de geração de grafos, etc. Veja aqui como compilar (use o Makefile dado neste diretorio; ele é próprio
para a rede GNU/Linux do IME).
gb_flip
de Knuth. O
gb_flip
é um módulo do Stanford
GraphBase de Knuth (usado na disciplina MAC328 - Teoria
dos Grafos).
ghostview
ou
gv
para visualizar este arquivo no X; alternativamente, voce pode
imprimir este arquivo em qualquer impressora que entenda arquivos PostScript).
Os vértices deste grafo são os pares (i,j)
, onde 0 <= i <
7
e 0<= j < 5
. O vértice no canto inferior esquerdo é o
vértice (0,0)
e o vértice no canto superior direito é o vértice
(6,4)
.
Estamos interessados no vértice central (3,2)
. Estamos, na
verdade, interessados no componente conexo deste vértice, isto é, o
grafo definido pelos vértices que são alcançáveis a partir de
(3,2)
pelas arestas. Você pode imaginar que os 7 * 5 =
35
vértices deste grafo representam cruzamentos entre ruas e que as 29
arestas representam ruas trafegáveis. A nossa tarefa então seria descobrir o
conjunto de ruas e cruzamentos alvancáveis se estamos no cruzamento de
coordenadas (3,2)
. A resposta é dada por este grafo: g2.ps.
Em geral, dado um grafo como acima (com M
colunas e
N
linhas de vértices), o seu EP deve determinar o componente
conexo do vértice (M/2,N/2)
(a divisão aqui é a divisão inteira).
Note que no exemplo acima, M = 7
e N = 5
.
grafo_aleat
. Este módulo tem a interface grafo_aleat.h
. Estude esta
interface! Voce pode encontrar a implementação deste módulo neste diretório. Entretanto, você não precisa entender
como as funções de grafo_aleat.h
são
implementadas. Estude o programa-exemplo ep2exemplo.c para ver como podemos utilizar
este módulo de geração de grafos. Note que, para gerar um grafo usando o
módulo grafo_aleat
, precisamos dos parâmetros M
,
N
, p
(a probabilidade de uma potencial arestas
estar efetivamente presente no grafo a ser gerado), e seed
, um
inteiro que determina o comportamento do gerador de números aleatórios usado
na implementação desta módulo. Note que este módulo deve, dado o mesmo
conjunto de parâmetros, gerar o mesmo grafo quando compilado e executado em
plataformas diversas.
g2.ps
acima, isto é, como arquivos PostScript. Para
tanto, use a versão standard
das bibliotecas de Roberts. Você
pode usar a versão xwindows
para obter resultados na tela (bom
para depuração). Sugiro também que o seu programa possa gerar uma saída
gráfica representando o grafo todo (não apenas o componente conexo
procurado); você pode verificar a correção de seu programa em exemplos
pequenos examinando as saídas.
/*********************************************************************** * * Nome do Aluno ... Numero USP ... * * Curso ... Data ... * * Nome do Professor ... * * Exercicio Programa Numero ... * * Compilador usado ... * **********************************************************************/
Last modified: Thu Jun 3 00:18:38 EST 1999