Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II...

12
Grafos – Introdu¸c˜ ao Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 24 Grafos – Introdu¸c˜ ao I Estrutura de dados fundamental em Inform´ atica, tal como listas e ´ arvores. I a muitos algoritmos interessantes sobre grafos. I Um grafo ´ e um conceito abstracto (matem´ atico) com muitas aplica¸ oes pr´ aticas. I a devem ter aprendido umas coisas sobre grafos em Matem´ atica Discreta. 2 / 24

Transcript of Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II...

Page 1: Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II 1/24 Grafos { Introdu˘c~ao I Estrutura de dados fundamental em Inform atica, tal

Grafos – Introducao

Fernando Lobo

Algoritmos e Estrutura de Dados II

1 / 24

Grafos – Introducao

I Estrutura de dados fundamental em Informatica, tal comolistas e arvores.

I Ha muitos algoritmos interessantes sobre grafos.

I Um grafo e um conceito abstracto (matematico) com muitasaplicacoes praticas.

I Ja devem ter aprendido umas coisas sobre grafos emMatematica Discreta.

2 / 24

Page 2: Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II 1/24 Grafos { Introdu˘c~ao I Estrutura de dados fundamental em Inform atica, tal

Um grafo e uma rede

I Rede de computadores.

I Rede de estradas.

I Rede electrica.

I Rede social.

I Rede de paginas.

I A Web.

I Rede de qualquer coisa.

3 / 24

Facebook

4 / 24

Page 3: Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II 1/24 Grafos { Introdu˘c~ao I Estrutura de dados fundamental em Inform atica, tal

Grafos

I Um grafo pode ser orientado ou nao orientado (em ingles,directed ou undirected).

I Notacao: G = (V , E ), em que V e o conjunto de vertices ounos (nodes) e E e o conjunto de arcos (edges).

5 / 24

Exemplo de um grafo nao orientado

I O sentido dos arcos nao interessa: (u, v) = (v , u).

I V = {1, 2, 3, 4, 5}

I E = {(1, 2), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (4, 5)}

6 / 24

Page 4: Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II 1/24 Grafos { Introdu˘c~ao I Estrutura de dados fundamental em Inform atica, tal

Exemplo de um grafo orientado

I O sentido dos arcos interessa: (u, v) 6= (v , u).

I V = {1, 2, 3, 4}

I E = {(1, 2), (2, 4), (3, 1), (3, 2), (4, 3), (4, 4)}

7 / 24

Representacao

Ha duas representacoes principais:

1. Matriz de adjacencia.

2. Array de listas de adjacencias.

8 / 24

Page 5: Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II 1/24 Grafos { Introdu˘c~ao I Estrutura de dados fundamental em Inform atica, tal

Matriz de adjacencia

I Constroi-se uma matriz A de |V | · |V | em que:

Aij =

{1 , se (i , j) ∈ E0 , caso contrario

9 / 24

Grafo nao orientado

1 2 3 4 51 0 1 0 0 12 1 0 1 1 13 0 1 0 1 04 0 1 1 0 15 1 1 0 1 0

Matriz e simetrica: A[i , j ] = A[j , i ].

10 / 24

Page 6: Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II 1/24 Grafos { Introdu˘c~ao I Estrutura de dados fundamental em Inform atica, tal

Grafo orientado

1 2 3 41 0 1 0 02 0 0 0 13 1 1 0 04 0 0 1 1

Matriz nao e simetrica.

11 / 24

Array de listas de adjacencia

I O grafo e representado por um array de listas, uma lista paracada vertice.

I A lista do vertice v contem os vertices adjacentes a v .

12 / 24

Page 7: Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II 1/24 Grafos { Introdu˘c~ao I Estrutura de dados fundamental em Inform atica, tal

Grafo nao orientado

13 / 24

Grafo orientado

14 / 24

Page 8: Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II 1/24 Grafos { Introdu˘c~ao I Estrutura de dados fundamental em Inform atica, tal

Grafos com pesos

I Por vezes, os arcos tem pesos associados. Podem representarcustos, distancias, etc . . .

15 / 24

Representacao com matriz de adjacencia

I Na matriz de adjacencia guardamos o peso em vez do bit.Usa-se um numero diferente de qualquer peso possıvel paradenotar a ausencia do arco.

1 2 3 4 51 -1 8 -1 -1 72 8 -1 4 6 123 -1 4 -1 5 -14 -1 6 5 -1 65 7 12 -1 6 -1

16 / 24

Page 9: Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II 1/24 Grafos { Introdu˘c~ao I Estrutura de dados fundamental em Inform atica, tal

Representacao com array de listas de adjacencia

I Nas listas de adjacencia guardamos em cada elemento da listao no e o peso correspondente.

17 / 24

Matriz de adjacencia versus Array de listas

I Qual a melhor representacao?

I Resposta: Depende.

I Matriz e melhor se o grafo for denso. Isto e, se o numero dearcos = Θ(|V |2).

I Array de listas e melhor se o grafo nao for denso (i.e., foresparso) → porque a maioria das entradas da matriz estaovazias.

18 / 24

Page 10: Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II 1/24 Grafos { Introdu˘c~ao I Estrutura de dados fundamental em Inform atica, tal

Complexidade

I Temos visto a complexidade de algoritmos em termos de umso parametro N.

I Nos grafos, a complexidade e dada em termos de doisparametros: |V | e |E |.

I Na notacao assimptotica e costume usar V e E em vez de |V |e |E |. Trata-se de um abuso de notacao, mas torna asexpressoes mais simples.

19 / 24

Complexidade espacial

I Matriz: Θ(V 2)

I Array de listas: Θ(V + E )

20 / 24

Page 11: Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II 1/24 Grafos { Introdu˘c~ao I Estrutura de dados fundamental em Inform atica, tal

Complexidade temporal

I Depende das operacoes

I Vejamos duas operacoes essenciais:

op1: determinar se (u, v) ∈ E .

op2: listar todos os nos adjacentes de umdeterminado no u.

21 / 24

Complexidade temporal

op1 op2Matriz Θ(1) Θ(V )

Array de listas Θ(grau(u)) Θ(grau(u))

I grau(u) e o numero de nos adjacentes a u. Em ingles,degree(u).

I Matriz e melhor para op1. Array de listas e melhor para op2.

22 / 24

Page 12: Grafos { Introdu˘c~ao · Grafos { Introdu˘c~ao Fernando Lobo Algoritmos e Estrutura de Dados II 1/24 Grafos { Introdu˘c~ao I Estrutura de dados fundamental em Inform atica, tal

Na pratica

I Grafos densos → Matriz de adjacencia.

I Grafos esparsos → Array de listas.

I Na maioria das aplicacoes, os grafos sao esparsos.

I Usaremos a representacao de array de listas na maioria dosalgoritmos que vamos ver.

23 / 24

Uma nota

I Nos exemplos coloquei numeros inteiros para identificar nos.

I Na pratica os nos podem ter nomes.

I E necessario uma tabela que mapeia nomes de nos para osnumeros.

24 / 24