18
Trabalho Individual Manipulação de grafos Computadores Digitais IIDETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Trabalho Individual

Manipulação de grafos

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

Page 2: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Visão Geral Sobre Grafos

• Grafos são estruturas caracterizadas pela presença de um conjunto de vértices e outro de arestas– Arestas representam ligações entre vértices

C

D

E

A

F

Grafo do Exemplo:

Vértices: A, C, D, E, F

Arestas: AE, AF, AC, AD, CD

Atenção: Esse grafo, como

todos que consideraremos

aqui, é não direcionado. Ou

seja, a direção da aresta

não é considerada. (Ex: AE

é o mesmo que aresta EA)

Page 3: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Exemplo: Redes Sociais

• Vértices são pessoas

• Arestas são relações de amizade– Ex: Ana é amiga de João, de Bob, de Caio e de José

– Ex: José é amigo de Ana e João

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

Bob

Ana

Caio

José

João

Maria

Page 4: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Exemplo: Redes de Computadores

• Vértices podem ser roteadores ou terminais

• Arestas são os cabos entre os vértices

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

A

B

C

D

R1

R2

R3

Page 5: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Exemplo: Redes de Computadores

• Vértices podem ser roteadores (veremos mais na próxima parte do curso) ou terminais

• Arestas são os cabos entre os vértices

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

A

B

R1

R2

R3

C

D

Em redes, muitas vezes

chamamos os vértices de

“nós” e as arestas de

“enlace”

Page 6: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Exemplo: Redes de Computadores

• Grafo de roteadores da Internet

• Mais informações– http://www.opte.org/

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

Page 7: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Modelagem Formal

• Grafo G(V,E)– V é o conjunto de vértices

• V = {A,F,E,D,C}

– E é o conjunto de arestas• E ={AF,AE,AD,AC,CD}

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

C

D

E

A

F

Page 8: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Matriz de Adjacência

• Representa a existência de arestas entre dois vértices– M[i][j] = 1, se existe aresta entre i e j. 0 senão.

– Em grafos não direcionados, M[i][j] = M[j][i]

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

Bob

Ana

Caio

José

João

Maria

0 1 1 1 1 0

1 0 0 0 0 0

1 0 0 0 0 0

1 0 0 0 1 1

1 0 0 1 0 0

0 0 0 1 0 0

Ana Bob Caio João José Maria

Ana

Bob

Caio

João

José

Maria

Page 9: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Ideia geral do trabalho

• Faça um programa que manipule uma rede social– Leia de um arquivo informações de um grafo e construa

uma estrutura de grafo

– Permita ao usuário adicionar e remover arestas

– Lista todas as pessoas que são mais velhas que uma certa idade

– Salve grafo resultante em um arquivo

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

Page 10: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Formato do arquivo a ser lido/escrito

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

• Cada usuário da rede social tem uma idade

• Para o seguinte grafo, o arquivo está representado ao lado

6

Ana 30

Bob 17

Caio 45

Joao 32

Jose 90

Maria 18

0 1 1 1 1 0

1 0 0 0 0 0

1 0 0 0 0 0

1 0 0 0 1 1

1 0 0 1 0 0

0 0 0 1 0 0

Bob

Ana

Caio

José

João

Maria

30

17

45

32

90

18

Page 11: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Formato do arquivo a ser lido/escrito

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

• Cada usuário da rede social tem uma idade

• Para o seguinte grafo, o arquivo está representado ao lado

6

Ana 30

Bob 17

Caio 45

Joao 32

Jose 90

Maria 18

0 1 1 1 1 0

1 0 0 0 0 0

1 0 0 0 0 0

1 0 0 0 1 1

1 0 0 1 0 0

0 0 0 1 0 0

Bob

Ana

Caio

José

João

Maria

30

17

45

32

90

18

Número de Vértices

Page 12: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Formato do arquivo a ser lido/escrito

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

• Cada usuário da rede social tem uma idade

• Para o seguinte grafo, o arquivo está representado ao lado

6

Ana 30

Bob 17

Caio 45

Joao 32

Jose 90

Maria 18

0 1 1 1 1 0

1 0 0 0 0 0

1 0 0 0 0 0

1 0 0 0 1 1

1 0 0 1 0 0

0 0 0 1 0 0

Bob

Ana

Caio

José

João

Maria

30

17

45

32

90

18

Pessoa Idade

Page 13: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Formato do arquivo a ser lido/escrito

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

• Cada usuário da rede social tem uma idade

• Para o seguinte grafo, o arquivo está representado ao lado

6

Ana 30

Bob 17

Caio 45

Joao 32

Jose 90

Maria 18

0 1 1 1 1 0

1 0 0 0 0 0

1 0 0 0 0 0

1 0 0 0 1 1

1 0 0 1 0 0

0 0 0 1 0 0

Bob

Ana

Caio

José

João

Maria

30

17

45

32

90

18Matriz de

Adjacência

Page 14: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Implementação do grafoexigida: lista de adjacências

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

• Um vetor de listas encadeadas– Vetor no qual cada elemento representa um vértice

• Cada elemento possui uma lista encadeada com todos osvizinhos do nó

A

B

R1

R2

R3

C

D

A

R1

R2

R3

B

R1

C

D

R3R2

R3R1

R2R1 D

R3

R2

R2

NULL

NULL

NULL

NULL

NULL

NULL

NULL

Page 15: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Implementação do grafoexigida: lista de adjacências

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto

• Um vetor de listas encadeadas– Vetor no qual cada elemento representa um vértice

• Cada elemento possui uma lista encadeada com todos osvizinhos do nó

A

B

R1

R2

R3

C

D

A

R1

R2

R3

B

R1

C

D

R3R2

R3R1

R2R1 D

R3

R2

R2

NULL

NULL

NULL

NULL

NULL

NULL

NULL

Para o trabalho, valor da lista

encadeada pode ser um

índice associado ao nó

Page 16: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Interface do programa

• Ao iniciar, deve perguntar o nome do arquivo a ser lido

• Após ler o arquivo, deverá apresentar um menu (em loop infinito) com os seguintes itens– Adicionar Aresta

– Remover Aresta

– Buscar pessoas mais velhas que uma idade• Após o usuário escolher essa opção, idade deve ser

perguntada

– Calcular número médio de relações de amizade

– Escrever arquivo do grafo• Após o usuário escolher essa opção, nome do arquivo deve

ser perguntado

– Sair do programa

Page 17: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Trabalho IndividualOperações Sobre Grafos

• Outras informações importantes– Lembrem-se de escolher nomes adequados para as

variáveis e identar (valerá ponto)

– Muito importante: O código deve ser comentado para me permitir entender o raciocínio utilizado por vocês para escrever o programa (valerá ponto)

– Trabalhos copiados receberão zero

Page 18: Trabalho Individual Manipulação de grafosrodrigo/docs/compDig2/trabalho3.pdf · 2018. 7. 4. · todos que consideraremos aqui, é não direcionado. Ou seja, a direção da aresta

Trabalho Individual• Entrega

– Código .c enviado por e-mail [email protected]• Deve ser entregue em condições de ser compilados e

executado

– Prazo - 06:00 de 23/07/2018

– Valor• 4,0 pontos na média dos trabalhos

Computadores Digitais II– DETEL-FEN/UERJ Prof. Rodrigo de Souza Couto