Sie sind auf Seite 1von 38

Grafos

Baseado nos slides de Katia Silva Guimares e Adolfo Almeida Duran

Grafos - Definio
Grafo um modelo matemtico que representa relaes entre objetos. Exemplos 1. 2. 3. Descobrir a melhor rota para um restaurante em uma cidade. Escalonamento de classes em uma universidade. Partio de um programa em estados.

Introduo
Porque estudar Grafos Importante ferramenta matemtica com aplicao em diversas reas do conhecimento
Gentica, qumica, pesquisa operacional, telecomunicaes, engenharia eltrica, redes de computadores, conexo de vos areos, restries de precedncia, fluxo de programas, dentre outros

Utilizados na definio e/ou resoluo de problemas


3

Porque estudar Grafos Em computao: estudar grafos mais uma forma de solucionar problemas computveis Os estudos tericos em grafos, buscam o desenvolvimento de algoritmos mais eficientes.

O que so Grafos

Diagrama - Corresponde a soma de pontos e linhas, onde os pontos apresentam alguma informao e as linhas indicam o relacionamento entre dois pontos quaisquer Ferramenta de modelagem Abstrao matemtica que representa situaes reais atravs de um diagrama.
5

Um grafo G(V,E) um conjunto finito no-vazio V (vrtices) e um conjunto E (arestas) de pares no-ordenados de elementos distintos de V. Cada aresta e E ser denotada pelo par de vrtices e = (v,w) que a forma. Os vrtices v,w so os extremos (ou extremidades) da aresta e, sendo denominados adjacentes Um grafo G(V,E) trivial quando |V| = 1.

G = (V,E)

Grafos - Definio
Um grafo pode representar, por exemplo, um conjunto de cidades e as ligaes areas entre elas.
Man Rec

Sal BSB Rio SAO

Grafos - Variaes
Arestas direcionadas, ou mltiplas. Alguns vrtices podem ser isolados.
Man Rec

Sal BSB Rio SAO

Grafos - Variaes
Arestas (ou vrtices) com pesos.
Man 450 480 BSB 380 470 395 240 Rio 430 Rec

255 SAO

10

Grafos - Representao Interna


1. Matriz de adjacncias custo O(n2)
2 1 0 1 1 1 0 1 2 1 0 0 0 0 0 3 1 0 0 1 1 1 4 1 0 1 0 1 1 5 0 0 1 1 0 0 6 1 0 1 1 0 0 3

1 2 3 4 5 6

5 1 4 6

11

Grafos - Representao Interna


2. Listas de Adjacncias - custo O(n + m)
Man BSB SAO Man BSB Rec Sal Rio SAO Sal Rec SAO Rio
Rec Man

Rec

Rio

Rio BSB SAO Sal BSB Rec Rio BSB Rec

Sal BSB Rio SAO

12

Grafos - Representao Interna


Listas de Adjacncias
Man BSB Man Rec Rio SAO
SAO, 380 BSB, 480 Rio, 430 Rec, 470 BSB, 395 Man, 450

Rec 450

480 BSB 380

470 395 240 Rio

430

SAO, 240 Rio, 255

255 SAO

13

Grafos - Representao Interna


Matriz de incidncia
Se G um grafo com vrtices {1,2,3,...,n} e arestas {1,2,3,...,m}, sua matriz de incidncia a matriz n X m cujo elemento ij o nmero de vezes em que o vrtice i incidente aresta j.

14

Grafos - Mais Definies


Caminho: 3, 1, 2, 1, 3
2

(Rec, BSB, Man, BSB, Rec)


3

Caminho simples : 2, 1, 4, 6 Caminho fechado (simples) ou Ciclo: 3, 6, 1, 3 Em grafos no direcionados, um ciclo tem pelo menos 3 arestas.

4 6

15

Um caminho de k vrtices formado por (k 1) arestas (v1,v2),(v2,v3),...,(vk-1,vk). O valor (k 1) o comprimento do caminho . A distncia d(v,w) entre dois vrtices v,w o comprimento do menor caminho entre v e w. Em um grafo G(V,E), define-se grau de um vrtice v V, denotado por grau(v), como o nmero de vrtices adjacentes a v.

16

Grau de um vrtice
Grau de um vrtice v (grau(v)) o nmero de arestas que incidem em v. O grau de um vrtice v tambm pode ser definido como o nmero de arestas adjacentes a v.
Obs.: Um lao conta duas vezes para o grau de um vrtice Grau(b) = 3 Grau(d) = 2 Grau(a) = 2
17

Subgrafo
Um grafo Gs(Vs, As) dito ser subgrafo de um grafo G(V,A) quando Vs V e As A. O grafo G2, por exemplo, subgrafo de G1

G1

G2

18

Subgrafo Prprio
Um subgrafo G2 dito prprio, quando G2 subgrafo distinto de G1

Subgrafos podem ser obtidos atravs da remoo de arestas e vrtices.

19

Subgrafo Induzido
Se G2 um subgrafo de G1 e possui toda a aresta (v, w) de G1 tal que ambos, v e w, estejam em V2, ento G2 o subgrafo induzido pelo subconjunto de 3 vrtices 2 3 V2. 2 G1
4
1

G2
5 4

V1= {1,2,3,4,5}

V2= {1,2,3,4}
20

V2 induz G2

Grafos Conexos
Grafos Conexos so grafos onde existe um caminho de um vrtice para qualquer outro. Seja S um conjunto e S S. Diz-se que S maximal em relao a uma certa propriedade P, quando S satisfaz P e no existe subconjunto S S, que tambm satisfaz P. Componentes conexos so subgrafos conexos maximais.

21

Conectividade
Grafo Conexo
G1 G2

22

Grafo desconexo
Um grafo G(V,A) dito ser desconexo quando ele no conexo

23

Componente conexa
Um grafo G(V,A) desconexo formado por pelo menos dois subgrafos conexos, disjuntos em relao aos vrtices Cada um destes subgrafos conexos dito ser uma componente conexa de G.

24

rvores
rvores so grafos conexos e acclicos, isto , sem ciclos. rvores so grafos (simples) conexos com n-1 arestas. rvores so grafos conexos minimais.

25

Busca em Grafos
OBJETIVO: Visitar todos os vrtices de forma sistemtica. Se o grafo uma rvore, a tarefa simples:
Busca em pr-ordem Busca em ps-ordem Busca em em ordem (rvores binrias) Busca por nvel

26

Busca em Grafos com Ciclos


Se o grafo contm ciclos, preciso cuidar para evitar que arestas sejam visitadas mais de uma vez.
6 1 3 4 2 7 5

27

Busca em Grafos com Ciclos


Exemplo: A partir do grafo abaixo obtemos
6 1 3 4 2 2 7 6 4 5 1

28

Busca em Grafos com Ciclos


Se o grafo no uma rvore, ns definimos um subgrafo dele que uma rvore, para servir de espinha dorsal. Algoritmo bsico:
Tome um vrtice qualquer s. Marque s. Enquanto houver arestas no visitadas, tome uma aresta (v, w) incidente a algum vrtice j marcado. Marque (v, w) (explorada) e v, w (visitados).

29

Busca em Grafos com Ciclos


H duas tcnicas principais para busca:
Busca em Profundidade Tomar a aresta no marcada incidente ao vrtice visitado mais recentemente. Busca em Largura Tomar a aresta no marcada incidente ao vrtice visitado menos recentemente.

30

Busca em Profundidade
Por exemplo, temos a rvore rotulada onde os rtulos correspondem ordem em que os vrtices foram visitados pela busca em profundidade
1

2 3 7 5 6 9

11

12

10 31

Busca em Profundidade
Funo principal
Inicialize pilha Q como vazia; Desmarque todos os vrtices e arestas; Tome um vrtice v qualquer; Inclua v em Q; Profundidade(v); Remova v de Q.
32

Controle para

Algoritmo para Busca em Profundidade


Procedimento Profundidade(v) Marque v como visitado; Para toda aresta (v, w) incidente a v faa: Se w no marcado ento /* aresta de rvore */ { Inclua w em Q; Profundidade(w) Remova w de Q } seno se w pai(v) ento /* aresta de retorno */ seno /* aresta de rvore */
33

Busca em Profundidade
A busca em profundidade biparticiona o conjunto de arestas em:
1 6 1 3 4 2 7 5 6 4

- Arestas de rvore

- Arestas de Retorno

34

Busca em Largura
Cria um centro no vrtice inicial e forma nveis ou camadas a partir deste n.
1 6 1 3 4 2 2 7 3 7 5 6 4 5

35

Busca em Largura
Utilizando o exemplo anteriormente visto, temos a rvore rotulada onde os rtulos correspondem ordem em que os vrtices foram visitados pela busca em largura
1

2 4 5 10 11 36 6 7

12

Algoritmo para Busca em Largura


Tome um vrtice qualquer v. Coloque v na fila F. Enquanto F no for vazia faa v Primeiro elemento da fila F Para toda aresta (v, w) incidente a v faa Se w no marcado ento Inclua w em F seno se v = pai (w) ento /* aresta de rvore */

/* aresta de rvore */

seno /* aresta de cruzamento */ 37

Busca em Largura
A busca em largura biparticiona as arestas do grafo em arestas de rvore e arestas de cruzamento.
1 6 1 3 4 2 7 5 6 4 5

38

Das könnte Ihnen auch gefallen