• Nenhum resultado encontrado

Tema 08_Slides

N/A
N/A
Protected

Academic year: 2021

Share "Tema 08_Slides"

Copied!
16
0
0

Texto

(1)

Estrutura de Dados

Tema 8: Grafos e suas Aplicações

Área de segurança para intérprete de Libras.

É uma estrutura formada por um conjunto de não vazio de vértices (ou nós) e por um conjunto de arestas (ou arcos), ligando estes vértices.

O que é um Grafo?

A

B C

D

Área de segurança para intérprete de Libras.

No grafo a seguir temos o seguintes conjuntos:

O que é um Grafo?

V = {A, B, C, D, E}

A = {(A,A), (A,B), (A, B), (A,C), (B,D), (B,E), (C,E)}

A

B C

D E

(2)

Área de segurança para intérprete de Libras.

Seja G um grafo onde V é o conjunto dos vértices e A é o conjunto das arestas.

Afirmar que A contém a aresta v-w, é o mesmo que afirmar que A contém a aresta w-v (com v e w  V).

O que é um Grafo?

Área de segurança para intérprete de Libras.

• Um grafo é simples (ou regular) se não possuir laços e nem mais de uma aresta ligando dois vértices.

Definições importantes

A B C D E Grafo simples A B C D E Multigrafo

Área de segurança para intérprete de Libras.

• A vizinhança de um nó é definida assim: N(v) = {w  V | v-w  A}.

Nestes casos podemos dizer que o vértice w é adjacente a v e que a aresta v-w incide no vértice v.

Definições importantes

A B C D E N(A) = {B, C, E}

(3)

Área de segurança para intérprete de Libras.

• O grau de um vértice é a quantidade de arestas que incidem nele.

• Um vértice é dito isolado se possuir grau zero.

Definições importantes

G(A) = 3 G(B) = 2 G(C) = 1 G(D) = 3 G(E) = 2 G(F) = 0 A B C D E F

Área de segurança para intérprete de Libras.

• Um grafo completo com n vértices é um grafo simples onde existe uma aresta ligando todo par não ordenado vértices distintos.

• O número máximo de arestas em um grafo com n vértices é n * (n-1) /2.

Definições importantes

A B C D E

Área de segurança para intérprete de Libras.

• Um grafo não precisa ser uma árvore, mas toda árvore é um grafo.

Definições importantes

A B C D E A B C D E árvore Não árvore

(4)

Área de segurança para intérprete de Libras.

• Um grafo pode ser representado por uma matriz N x N, onde N é a quantidade de vértices de um grafo.

Representação de um grafo

A B C D A 0 1 1 0 B 1 0 1 1 C 1 1 0 0 D 0 1 0 1 A B C D

Área de segurança para intérprete de Libras.

• Há grafos que possuem pesos associados às arestas. Assim, o peso é armazenado no matriz.

Representação de um grafo

A B C D A  5 3  B 5  2 8 C 3 2   D  8  9 A B C D 3 2 5 8 9

Continuando

(5)

Área de segurança para intérprete de Libras.

Quando as arestas possuem sentido, dizemos que o grafo é orientado (ou dígrafo). Nestes casos, cada aresta é representada por um par ordenado <nó_origem, nó_destino>.

Desta forma, a aresta v-w não é igual a aresta w-v.

Grafo orientado (ou dígrafo)

A C

Exemplo:

aresta A-C possui A como cabeça da seta e C como terminação da seta.

Área de segurança para intérprete de Libras.

Dígrafo (digraph = directed graph)

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

A = {<A,B>, <B,A>, <B,C>, <B,E>, <C,A>, <C,D>, <E,F>, <F,E>, <F,A>}

A B F E D C

Área de segurança para intérprete de Libras.

Grau dos vértices em um dígrafo

Em um dígrafo um vértice n (com n  V) possui:  grau de entrada: número de arestas que têm

n como cabeça da seta (origem da seta)  grau de saída: número

de arestas que têm n como terminação da seta (destino da seta)

(6)

Área de segurança para intérprete de Libras.

Grau dos vértices em um dígrafo

 grau do vértice: número de arestas que

incidem em n (soma do grau de entrada com o grau de saída).

 Um dígrafo com n vértices é considerado completo se possuir a quantidade máxima de arestas, ou seja, é n * (n-1).

Área de segurança para intérprete de Libras.

Dígrafo (digraph = directed graph)

A B F E D C Vértice A: grau de entrada: 3 grau de saída: 1 grau: 4 Vértice B: grau de entrada: 1 grau de saída: 3 grau: 4 Vértice D: grau de entrada: 1 grau de saída: 0 grau: 1

Área de segurança para intérprete de Libras.

Relações representadas através de grafos

Uma relação R num conjunto A é uma sequencia de pares ordenados de elementos de A.

R = { (a;b) | a  A  b  B  P(a,b) é verdadeira}

(7)

Área de segurança para intérprete de Libras.

Relações representadas através de grafos

Exemplo: Seja V = {3, 4, 5,6} e R: V  V, {(x,y), com x e y  V | x < y } R = {<3, 4><3, 5><3,6><4,5><4,6><5,6>} 3 4 6 5

Área de segurança para intérprete de Libras.

Relações representadas através de grafos

É possível associar um valor a cada aresta pertencente à relação. Assim, tem-se um grafo orientado e valorado. 3 4 6 5 2 1 7 11 8 5

Área de segurança para intérprete de Libras.

Relações representadas através de grafos

Exemplo: Sejam V o conjuntos dos vértices de um grafo G, R a relação definida e A o conjunto de arestas (<x,y>, peso) obtidos com a relação R. R: V  V, {(x,y), com x e y  V | x > y} V = {1, 4, 7, 8} peso = x - y R = {(<4, 1>, 3) (<7, 1>,6) (<7,4>,3) (<8,1>,7) (<8,4>,4) (<8,7>,1)}

(8)

Área de segurança para intérprete de Libras.

Relações representadas através de grafos

V = {1, 4, 7, 8} e R = {(<4, 1>, 3) (<7, 1>,6) (<7,4>,3) (<8,1>,7) (<8,4>,4) (<8,7>,1)} 1 4 8 7 3 6 3 7 4 1

Área de segurança para intérprete de Libras.

• Um dígrafo pode ser representado por uma matriz N x N, onde N é a quantidade de vértices.

Representação de um dígrafo

A B C D A 0 0 1 0 B 1 0 1 0 C 0 0 0 0 D 0 1 0 1 A B C D

Área de segurança para intérprete de Libras. • Há dígrafos que possuem pesos associados às arestas. Assim, o peso é armazenado no matriz.

Representação de um dígrafo

1 4 7 8 1     4 3    7 6 3   8 7 4 1  1 4 8 3 6 7 4 1

(9)

Agora é sua Vez

Tema 8:Grafos e suas Aplicações

Área de segurança para intérprete de Libras. Considerando o grafo ao

lado, responda: Qual o grau de cada Vértice?

Exercitando...

1 2 3 4 6 5 7

Área de segurança para intérprete de Libras. É um grafo simples? É um grafo completo?

Exercitando...

1 2 3 4 6 5 7

(10)

Área de segurança para intérprete de Libras. Quantos caminhos existem

entre os vértices 3 e 5?

O grafo possui algum ciclo?

O grafo possui alguma aresta cuja remoção o tornaria um grafo acíclico?

Exercitando...

1 2 3 4 6 5 7

Área de segurança para intérprete de Libras. Represente graficamente os seguintes grafos: Um grafo simples com 3 vértices (todos com grau 2).

Exercitando...

Área de segurança para intérprete de Libras. b) Um grafo de 5 vértices, com ciclos de tamanho 1, 3 e 4.

c) Um grafo completo com 6 vértices.

(11)

Área de segurança para intérprete de Libras.

Exercitando...

Observe o dígrafo ao lado e responda:

Qual o grau de cada vértice? 1 2 3 4 5 7

Área de segurança para intérprete de Libras.

Exercitando...

Qual deveria ser o grau dos vértices para que o dígrafo pudesse ser considerado completo? 1 2 3 4 5 7

Área de segurança para intérprete de Libras.

Exercitando...

Desenhe um dígrafo correspondente à relação abaixo, considerando:

V = {1,2,3}

R: {<x,y>, com x e Y  V | x*y seja múltiplo de 3}

(12)

Área de segurança para intérprete de Libras. V={1, 2, 3} x y x*y 1 1 1 1 2 2 1 3 3 V 2 1 2 2 2 4 2 3 6 V 3 1 3 V 3 2 6 V 3 3 9 V 1 2 3

Área de segurança para intérprete de Libras. Matriz de adjacência 1 2 3 1 0 0 1 2 0 0 1 3 0 1 1 1 2 3

Finalizando

(13)

Área de segurança para intérprete de Libras.

 Um caminho de comprimento k do vértice a até o vértice b é definido como uma sequência de k+1 vérticesn1,n2, ..., nk+1, tal que n1= a e nk+1= b.  Um caminho de um nó até ele mesmo é chamado

ciclo.

 Se o grafo possuir um ciclo ele é chamado cíclico. Caso contrário, ele é chamado acíclico, ou dag (directed acyclic graph)

Caminho entre vértices

Área de segurança para intérprete de Libras.

No grafo ao lado existem:

 um caminho de tamanho 1 de C até F;  um caminho de tamanho 3 de C até A

(C-D-B-A);

 um caminho de tamanho 5 de C até A (C-F-E-D-B-A);  um ciclo de A para A, de E

para E, ...;

 não existe um caminho de F para C;

 ...

Caminho entre vértices

B

D E

C

F A

Área de segurança para intérprete de Libras.

Matriz de adjacência:

Caminho entre vértices

B D E C F A A B C D E F A 0 0 0 1 0 0 B 1 0 0 0 1 0 C 0 0 0 1 0 1 D 0 1 0 0 1 1 E 0 0 0 1 0 0 F 0 0 0 0 1 0

(14)

Área de segurança para intérprete de Libras. #include <stdio.h> #include <stdlib.h> #include <ctype.h> #define TAM 6

void iniciarGrafo(int mat[][TAM]) { int i, j;

for (i=0; i<TAM; i++) for (j=0; j<TAM; j++)

mat[i][j] = 0; }

Área de segurança para intérprete de Libras.

void join(int mat[][TAM], int cidade1, int cidade2) { mat[cidade1][cidade2]=1;

}

int adjacente(int mat[][TAM], int cidade1, int cidade2) {

if (mat[cidade1][cidade2]) return 1;

else return 0; }

Área de segurança para intérprete de Libras.

int procuraCaminho(int mat[][TAM], int cidade1, int cidade2, int k) { if (k ==1) {

if (adjacente(mat, cidade1, cidade2)) return 1;

else return 0; }

(15)

Área de segurança para intérprete de Libras.

for (int c=0; c<TAM; ++c) if (adjacente(mat, cidade1, c) &&

procuraCaminho(mat, c, cidade2, k-1)) return 1;

return 0; }

Área de segurança para intérprete de Libras.

int main() {

int matriz[TAM][TAM];

int cidade1, cidade2, k, temCaminho; char resp='S', caminho[30]="\0"; iniciarGrafo(matriz); while (toupper(resp) == 'S') { do { printf("Digite origem: "); scanf("%i", &cidade1); } while (cidade1 <1 || cidade1 >TAM);

Área de segurança para intérprete de Libras.

do {

printf("Digite destino: "); scanf("%i", &cidade2);

} while (cidade2 <1 || cidade2 >TAM); printf("Realizar outro join? "); join(matriz, cidade1-1, cidade2-1); fflush(stdin);

scanf("%c", &resp); }//fim while

(16)

Área de segurança para intérprete de Libras. printf("Digite cidade A: "); scanf("%i", &cidade1); printf("Digite cidade B: "); scanf("%i", &cidade2);

printf("Digite tamanho do caminho: "); scanf("%i", &k); temCaminho = procuraCaminho(matriz, cidade1-1, cidade2-1, k);

Área de segurança para intérprete de Libras.

if (temCaminho ==1)

printf("Existe caminho de comprimento %i entre as cidades %i e% i", k, cidade1, cidade2); else

printf("Nao existe caminho de comprimento %i entre as cidades %i e% i", k, cidade1, cidade2); system("pause");

eturn 0; }

Referências

Documentos relacionados

Endereço: PRAÇA GAGO COUTINHO, S/N, SÃO CRISTÓVÃO Local: AEROPORTO INTERNACIONAL LUÍS EDUARDO MAGALHÃES Mesa: 201 Urnas: 1 Tipo de mesa: Convencional. Observação:

Os candidatos reclassificados deverão cumprir os mesmos procedimentos estabelecidos nos subitens 5.1.1, 5.1.1.1, e 5.1.2 deste Edital, no período de 15 e 16 de junho de 2021,

Validação do ensaio imunoquimioluminescente DPC Immulite de prolactina sérica com o teste de precipitação com polietilenoglicol na triagem de macroprolactinemia.. Artigo Original

No Programa de Fellow na área de Neurocirurgia, o participante deverá indicar, na carta de interesse e no ato da inscrição, em qual área pretende realizar o aprimoramento -

No panorama internauta são vários os softwares à disposição do utilizador que servem para converter ficheiros PDF em flipbooks, que nada mais são que livros ou publicações

Trabalho de Orientação aos Alunos e Professores do Curso de Trabalho de Orientação aos Alunos e Professores do Curso de Engenharia Elétrica/Eletrônica da

Junto com a eliminação de glicose, envolve diretamente a perda de eletrólitos e água ocorrendo poliuria, polidipsia, desidratação e hemoconcentração..

Este problema consiste em, dado um grafo ( V, E ) e um conjunto de vértices T ⊆ V , definir um conjunto de arestas J de custo mínimo tal que todo vértice do conjunto T possui grau