• Nenhum resultado encontrado

Arcos anti-paralelos

N/A
N/A
Protected

Academic year: 2022

Share "Arcos anti-paralelos"

Copied!
84
0
0

Texto

(1)

Digrafos

S 17.0, 17.1

(2)

Digrafos

Um digrafo (directed graph) consiste de um

conjunto de vértices (bolas) e um conjunto de arcos (echas)

Exemplo: representação de um grafo

b d

f c

a

e

(3)

Arcos

Um arco é um par ordenado de vértices Exemplo: v e w são vértices e v-w é um arco

v d

f c

a

w

(4)

Ponta inicial e nal

Para cada arco v-w, o vértice v é a ponta inicial e w é a ponta nal

Exemplo: v é ponta inicial e w é ponta nal de v-w

v w

a

v

c w

f d

(5)

Arcos anti-paralelos

Dois arcos são anti-paralelos se a ponta inicial de um é ponta nal do outro

Exemplo: v-w e w-v são anti-paralelos

w

f d

v a

c

(6)

Digrafos simétricos

Um digrafo é simétrico se cada um de seus arcos é anti-paralelo a outro

Exemplo: digrafo simétrico

e

f d

b a

c

(7)

Graus de entrada e saída

grau de entrada de v= no. arcos com ponta nal v

grau de saída de v = no. arcos com ponta inicial v Exemplo: v tem grau de entrada 1 e de saída 2

v d

f c

a

e

(8)

Número de arcos

Quantos arcos, no máximo, tem um digrafo com V vértices?

A resposta é V×(V−1) = Θ(V2)

digrafo completo = todo par ordenado de vértices distintos é arco

digrafo denso = tem muitos muitos arcos digrafo esparso = tem poucos arcos

(9)

Número de arcos

Quantos arcos, no máximo, tem um digrafo com V vértices?

A resposta é V×(V−1) = Θ(V2)

digrafo completo = todo par ordenado de vértices distintos é arco

digrafo denso = tem muitos muitos arcos digrafo esparso = tem poucos arcos

(10)

Especicação

Digrafos podem ser especicados através de sua lista de arcos

Exemplo:

b d

f c

a

e

d-fb-d a-cb-e e-fa-b

(11)

Grafos

S 17.0, 17.1

(12)

Grafos

Um grafo é um digrafo simétrico Exemplo: um grafo

e

f d

b a

c

(13)

Grafos

Um grafo é um digrafo simétrico Exemplo: representação usual

e

f d

b a

c

(14)

Arestas

Uma aresta é um par de arcos anti-paralelos.

Exemplo: b-a e a-b são a mesma aresta

e

f d

b a

c

(15)

Especicação

Grafos podem ser especicados através de sua lista de arestas

Exemplo:

e

f d

b

a

c

f-db-d c-ae-b e-fa-b

(16)

Graus de vértices

Em um grafo

grau dev = número de arestas com ponta em v Exemplo: v tem grau 3

e

f d

v a

c

(17)

Número de arestas

Quantas arestas, no máximo, tem um grafo com V vértices?

A resposta é V×(V−1)/2 = Θ(V2)

grafo completo = todo par não-ordenado de vértices distintos é aresta

(18)

Número de arestas

Quantas arestas, no máximo, tem um grafo com V vértices?

A resposta é V×(V−1)/2 = Θ(V2)

grafo completo = todo par não-ordenado de vértices distintos é aresta

(19)

Matrizes de adjacência

S 17.3

(20)

Matriz de adjacência de digrafos

Matriz de adjacência de um digrafo tem linhas e colunas indexadas por vértices:

adj[v][w] = 1 se v-w é um arco adj[v][w] = 0 em caso contrário Exemplo:

0

1

2 3

0 1 2 3 0 0 1 1 0 1 0 0 0 1 2 0 1 0 1 3 0 0 0 0

Consumo de espaço: Θ(V2) fácil de implementar

(21)

Matriz de adjacência de grafos

Matriz de adjacência de um grafo tem linhas e colunas indexadas por vértices:

adj[v][w] = 1 se v-w é um aresta adj[v][w] = 0 em caso contrário Exemplo:

0

1

2 3

0 1 2 3 0 0 1 1 0 1 1 0 1 1 2 1 1 0 1 3 0 1 1 0

Consumo de espaço: Θ(V2) fácil de implementar

(22)

Digrafo

Digraph G

0

2

4

3 5

1

(23)

Estruturas de dados

1 1

0 0 1 0

0 0 0 0

0 1 0 0 1 0

5

5

0 0

1 1

1 1

1

0 0 0 0 0 0

0 0 0 0 0

0 0

6 10

1 2 3 4 0

0 1 2 3 4

G V

A adj

(24)

Vetor de listas de adjacência

S 17.4

(25)

Vetor de listas de adjacência de digrafos

Na representação de um digrafo através de listas de adjacência tem-se, para cada vértice v, uma lista dos vértices que são vizinhos v.

Exemplo:

0

1

2 3

0: 1, 2 1: 3 2: 1, 3 3:

Consumo de espaço: Θ(V+A) (linear) Manipulação eciente

(26)

Vetor de lista de adjacência de grafos

Na representação de um grafo através de listas de adjacência tem-se, para cada vértice v, uma lista dos vértices que são pontas de arestas incidentes a v Exemplo:

0

1

2 3

0: 1, 2 1: 3, 0, 2 2: 1, 3, 0 3: 1, 2

Consumo de espaço: Θ(V+A) (linear) Manipulação eciente

(27)

Digrafo

Digraph G

0

2

4

3 5

1

(28)

Estruturas de dados

5 5

5

6 10

0 1 2 3

G V

A adj

2 3 4

1 4

4

1

4 1

(29)

Caminhos em digrafos

S 17.1

(30)

Caminhos

Um caminho num digrafo é qualquer seqüência da forma v0v1v2...vk−1vp, onde vk−1-vk é um arco para k = 1, . . . ,p.

Exemplo: 2-4-1-3-5-4-5 é um caminho com origem 2 é término 5

0

1 3

5 4

2

(31)

Caminhos simples

Um caminho é simples se não tem vértices repetidos Exemplo: 2-4-1-3-5 é um caminho simples de 2 a 5

0

3

5 4

1

2

(32)

Procurando um caminho

Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t

Exemplo: para s = 0 e t = 1 a resposta é SIM

0

2

3 5

1

4

(33)

Procurando um caminho

Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t

Exemplo: para s = 0 e t = 1 a resposta é SIM

0

2 1

3 5

4

(34)

Procurando um caminho

Problema: dados um digrafo G e dois vértices s e t decidir se existe um caminho de s a t

Exemplo: para s = 5 e t = 4 a resposta é NÃO

0

2

3 5

1

4

(35)

DFSpaths

Recebe um digrafo G e vértices s e t e devolve 1 se existe um caminho de s a t ou devolve 0 em caso contrário

Supõe que o digrafo tem no máximo maxV vértices.

public class DFSpaths

public boolean hasPathTo(int v)

public Iterable<Integer> pathTo(int v)

(36)

DFSpaths(G,0,1)

0

2 1

3 5

4

(37)

DFSpaths(G,0,1)

0

2 1

3 5

4

(38)

dfs(G,0)

0

2 1

3 5

4

(39)

dfs(G,0)

0

2 1

3 5

4

(40)

dfs(G,2)

0

2 1

3 5

4

(41)

dfs(G,2)

0

2 1

3 5

4

(42)

dfs(G,1)

0

2 1

3 5

4

(43)

dfs(G,2)

0

2 1

3 5

4

(44)

dfs(G,2)

0

2 1

3 5

4

(45)

dfs(G,4)

0

2 1

3 5

4

(46)

dfs(G,4)

0

2 1

3 5

4

(47)

dfs(G,4)

0

2 1

3 5

4

(48)

dfs(G,5)

0

2 1

3 5

4

(49)

dfs(G,5)

0

2 1

3 5

4

(50)

dfs(G,5)

0

2 1

3 5

4

(51)

dfs(G,4)

0

2 1

3 5

4

(52)

dfs(G,2)

0

2 1

3 5

4

(53)

dfs(G,0)

0

2 1

3 5

4

(54)

dfs(G,0)

0

2 1

3 5

4

(55)

dfs(G,3)

0

2 1

3 5

4

(56)

dfs(G,3)

0

2 1

3 5

4

(57)

dfs(G,3)

0

2 1

3 5

4

(58)

dfs(G,3)

0

2 1

3 5

4

(59)

dfs(G,0)

0

2 1

3 5

4

(60)

dfs(G,0)

0

2 1

3 5

4

(61)

dfs(G,0)

0

2 1

3 5

4

(62)

DFSpaths(G,0,1)

0

2 1

3 5

4

(63)

DFSpaths(G,2,3)

0

2 1

3 5

4

(64)

DFSpaths(G,2,3)

0

2 1

3 5

4

(65)

dfs(G,2)

0

2 1

3 5

4

(66)

dfs(G,2)

0

2 1

3 5

4

(67)

dfs(G,1)

0

2 1

3 5

4

(68)

dfs(G,2)

0

2 1

3 5

4

(69)

dfs(G,2)

0

2 1

3 5

4

(70)

dfs(G,4)

0

2 1

3 5

4

(71)

dfs(G,4)

0

2 1

3 5

4

(72)

dfs(G,4)

0

2 1

3 5

4

(73)

dfs(G,5)

0

2 1

3 5

4

(74)

dfs(G,5)

0

2 1

3 5

4

(75)

dfs(G,5)

0

2 1

3 5

4

(76)

dfs(G,4)

0

2 1

3 5

4

(77)

dfs(G,2)

0

2 1

3 5

4

(78)

DFSpaths(G,2,3)

0

2 1

3 5

4

(79)

DFSpath(G,0,1)

0

2

4

3 5

1

0-2 dfs(G,2) 2-1 dfs(G,1) 2-4 dfs(G,4)

4-14-5 dfs(G,5) 0-3 dfs(G,3)5-1

3-43-5

0-4existe caminho

(80)

DFSpath(G,2,3)

0

2

4

3 5

1

2-1 dfs(G,1) 2-4 dfs(G,4)

4-14-5 dfs(G,5) nao existe caminho5-1

(81)

Consumo de tempo

Qual é o consumo de tempo da função DFSpaths?

Qual é o consumo de tempo da função dfs()?

(82)

Consumo de tempo

Qual é o consumo de tempo da função DFSpaths?

Qual é o consumo de tempo da função dfs()?

(83)

Conclusão

O consumo de tempo da função DIGRAPHpath é Θ(V) mais o consumo de tempo da função dfsR.

(84)

Conclusão

O consumo de tempo da função dfs() para vetor de listas de adjacência é ∼ V+E.

O consumo de tempo de DFSPaths para vetor de listas de adjacência é ∼ V+E.

Referências

Documentos relacionados

[r]

Este procedimento deve inserir uma tupla no banco de horas para todos os empregados referente período em questão.. Crie uma stored procedure que receba como parâmetro de entrada

Esse obtém uma rede translúcida, com nível de probabilidade de bloqueio da rede opaca, com um CapEx aproximadamente 30% menor do que a solução encontrada pelo MOWRP-3o-R, o

Diante do exposto, o objetivo deste trabalho foi comparar a taxa de blastocistos produzidos com sêmen sexado e convencional de três touros da raça 5/8 Girolando a partir da

Como parte integrante do “Todos por Pernambuco”, mais especificamente da Perspectiva de “Qualidade de vida” do modelo, encontra-se o Pacto pela Educação, o qual se

Com o intuito de aperfeic¸oar a realizac¸˜ao da pesquisa O/D, o objetivo do presente trabalho ´e criar um aplicativo para que os usu´arios do transporte p´ublico informem sua origem

Resultados: Os parâmetros LMS permitiram que se fizesse uma análise bastante detalhada a respeito da distribuição da gordura subcutânea e permitiu a construção de

Faça  um  programa  que  contenha  uma  sub‐rotina  que  receba  um  vetor  A  de  5