Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa)...

31
Grafos 1 - Definições Preliminares 2 - Formas de Representação 3 - Métodos de Passeio (Pesquisa) 4 - Aplicações

Transcript of Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa)...

Page 1: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Grafos

1 - Definições Preliminares

2 - Formas de Representação

3 - Métodos de Passeio (Pesquisa)

4 - Aplicações

Page 2: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Definições preliminares

Grafos são estruturas de dados largamente utilizadas na Ciência da Computação, sendo fundamental seu estudo e dos algoritmos para sua manipulação.

Exemplos de aplicações:

– Modelagem de circuitos digitais;

– Representação de processos em um sistema paralelo ou distribuído;

– Representação de lista encadeada;

– Árvores de decisão;

– Diagramas E-R;

– Diagrama UML;

– Máquinas de estado finito;

– Derivação de palavras em linguagens formais;

Page 3: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

RunningRunning

I/OI/O

ReadyReady

1

23

4

Os três estados que um processo pode assumir num sistema operacional

Definições preliminares

Page 4: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

nome endereço cidade estado

pessoa

possui

animal

Tipo_animal raçanome_animal

1

n

Um diagrama E-R

Definições preliminares

Page 5: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

if (a > b) v[i] = f(i);else if (b > c) v[i] = g(i);

Assuma que os valores das expressões booleanas “(a > b)” e “(b > c)” são independentes e que, na média, ”(a > b)” é executado 25% do tempo e “(b > c)” 25% do tempo. Se o trecho de programa acima é executado 10.000 vezes, quantas vezes se espera que as funções f e g sejam executadas? a > b

v [ i ] = f [ i ] b > c

v [ i ] = g [ i ]

10.000 x 0,25= 2500 vezes75.000 vezes

75.000 x 0,25 = 1875 vezes

Um exemplo de árvore de decisão:

Definições preliminares

Page 6: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Um exemplo de máquina de estado finito

S0 S1

S2

10,1

0

1

0

Definições preliminares

Page 7: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Definições preliminares

Um exemplo de rede neural artificial

Page 8: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

+Apply()

-Propability

GeneticOperator

Mutation

Selection

-TargetSolution

Population

-Code

Chromosome

+Evaluate()

FitnessScore

-Code

Gene

+Encode()

Encoder

+Decode()

Decoder

CrossOver

*

-gera

1

-possui1

*

-decodifica

1 *

-possui1

*-atua sobre 1 1..*

-gera

1 1..* *

-avalia

*

EvolutionaryModel

-possui

1 *

Definições preliminares

Um exemplo de diagrama de classes

Page 9: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Um grafo dirigido G é um par (N, A), onde N é um conjunto finito e A é uma relação binária entre os componentes de N. Assim:– G = (N, A)

– N = conjunto de nós (ou vértices) de G

– A = conjunto de arcos (ou arestas) de G

Em um grafo não-dirigido G = (N, A), o conjunto de arcos A consiste de um conjunto desordenado de pares de nós N.

Definições preliminares

Page 10: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

1 - Grafo dirigido G1(N, A):

N = {1,2,3,4,5,6}

G1 A = {(1,2),(2,2),(2,4),(2,5),(4,1),

(4,5),(5,4),(6,3)}

2 - Grafo não-dirigido G2(N,A):

G2 N = {1,2,3,4,5,6}

A = {(1,2),(1,5),(2,5),(3,6)}

1 2

6

3

54

1 2

6

3

54

Definições preliminares

Page 11: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Relação de Incidência: É definida entre nós e arcos.

1 - Grafo dirigido G1(N,A):

- Os arcos (2,2); (2,4) e (2,5) são

G1 incidentes do nó 2 (saem de 2).

- Os arcos (1,2) e (2,2) são inciden-

tes para o nó 2 (chegam em 2).

2 - Grafo não-dirigido G2(N,A):

G2 - Os arcos incidentes no nó 2

são (1,2) e (2,5).

- O arco (3,6) é incidente nos

nós 3 e 6.

1 2

6

3

54

1 2

6

3

54

Definições preliminares

Page 12: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Relação de Adjacência: Dois nós são adjacentes se existe um arco interligando-os.

1 - Grafo dirigido G1(N,A):

- O nó 2 é adjacente ao nó 1.

G1 - O nó 1 não é adjacente ao 2,

pois o arco (2,1) ao grafo G1.

- O nó 5 é adjacente ao nó 2.

2 - Grafo não-dirigido G2(N,A):

G2 - Relação de adjacência é simétrica.

- O nó 2 é adjacente ao nó 1.

- O nó 1 é adjacente ao nó 2.

1 2

6

3

54

1 2

6

3

54

Definições preliminares

Page 13: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Grau de um nó: É medido pelo número de arcos incidentes.

1 - Grafo dirigido G1(N,A):

- Grau = Grau Saída + Grau Entrada

G1 - O nó 1 possui grau 2 (1 + 1).

- O nó 2 possui grau 5 (3 + 2).

2 - Grafo não-dirigido G2(N,A):

G2 - O nó 2 possui grau 4.

- O nó 6 possui grau 1.

- O nó 4 possui grau 0.

1 2

6

3

54

1 2

6

3

54

Definições preliminares

Page 14: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Um caminho c de um nó u para um nó u’ em um grafo G = (N, A) é a seqüência de nós <n0, n1, n2, ... nk >, onde u = n0 e u’ = nk, e (ni-1, ni) A para i = 1, 2, ..., k.

O tamanho de c é o número de arcos existentes em c.

Um caminho c é composto pelos nós n0,n1,n2,... nk e pelos arcos (n0, n1), (n1, n2), ..., (nk-1, nk).

- Quais os caminhos de 1 para 4 ?

c1 = <1, 2, 5, 4> e c2 = <1, 2, 4>

G1 - Quais os tamanhos de c1 e c2 ?

c1 = 3 e c2 = 2

- Quais são os arcos de c1 ?

<(1,2), (2,5), (5,4)>

1 2

6

3

54

Definições preliminares

Page 15: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Um grafo G = (N, A) possui um ciclo se existir um caminho c = <n0, n1, ... nk >, onde n0 = nk. Se não existir, o grafo é dito acíclico.

O caminho é simples se <n0, n1, ... nk > são diferentes.

1 - Grafo dirigido G1(N,A):

- Ciclos de G1:

G1 <1,2,4,1>; <2,4,1,2>; <4,1,2,4>;

<1,2,4,5,4,1> (não simples) e

<2,2> (laço).

2 - Grafo não-dirigido G2(N,A):

G2 - Ciclos de G2:

<1,2,5,1>; <2,5,1,2>; <5,1,2,5>

1 2

6

3

54

1 2

6

3

54

Definições preliminares

Page 16: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Grafos conectados: Um grafo não-dirigido G = (N, A) é conectado se cada par de nós é conectado por um caminho.

1 - Grafo não-dirigido G2(N,A)

G2 - Possui três componentes conectados:

{1, 2, 5}, {3, 6} e {4}

1 2

6

3

54

Um grafo não-dirigido é conectado se possuir exatamente um componente conectado, ou seja, se cada nó é alcançável a partir de cada um dos outros nós. Logo, o grafo G2 não é conectado.

Definições preliminares

Page 17: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Grafos fortemente conectados: um grafo dirigido G = (N, A) é fortemente conectado se cada dois nós são alcançáveis (um a partir do outro).

1 - Grafo dirigido G1(N,A)

G1 - Possui três componentes fortemente

conectados:

{1, 2, 4, 5}, {3} e {6}• Todos os pares em {1, 2, 4, 5} são mutuamente alcançáveis. Os nós {3, 6}

não formam um componente fortemente conectado, pois não é possível chegar em 6 a partir de 3.

• Um grafo dirigido é fortemente conectado se possuir exatamente um componente fortemente conectado. Logo, o grafo G1 não é fortemente conectado.

1 2

6

3

54

Definições preliminares

Page 18: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Um grafo é planar quando este pode ser desenhado (em uma folha de papel, isto é, em um plano) de forma que suas arestas se interceptem apenas em vértices.

No século dezoito Leonhard Euler-Matemático suíço (pronuncia-se “óiler”) observou que um grafo simples, conexo e planar (sem interseção de arestas) divide o plano em um número de regiões totalmente fechadas e uma região infinita exterior. Daí observou uma relação entre o número de n de vértices, o número a de arestas e o número r de regiões.

É a fórmula de Euler: n - a + r = 2

4 - 6 + 4 = 2

Definições preliminares

Page 19: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Grafos com valores: Quando os nós e/ou os arcos possuem valores.

Ex.: Distâncias entre localidades.

Rio Vit

Spa

Sal

Rec

Nat

13011325

1210

890

580

1710

2680

450

Definições preliminares

Page 20: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Existem basicamente duas formas para representar um grafo G = (N, A):

– Por intermédio de uma Lista de Adjacências

É a mais utilizada, pois fornece uma representação mais compacta de grafos esparsos ( |A| << |N|2 ).

– Por intermédio de uma Matriz de Adjacências

Utilizada quando o grafo é denso ( |A| |N|2 ), ou quando é necessário descobrir rapidamente se existe um arco conectando dois nós pré-definidos.

Formas de representação

Page 21: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Lista de adjacências para um grafo G = (N, A)

– Consiste em um vetor de |N| listas encadeadas, uma para cada elemento de N.

– Para cada u V , a lista de adjacências Adj[u] contém todos os nós v para os quais existe um arco (u, v) A.

Primeiro caso: Grafo Não-Direcionado

1 2

5

3

4

1

2

5

3

4

5

5

1

4

5

2

1

4

2

2

3

2

3

4 /

/

/

/

/

Formas de representação

Page 22: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Segundo caso: Grafo Direcionado

1

2

5

3

4

4

5

2

5

4

6

2

/

/

/

/

/

6 6 /

1 2

4 5

3

6

Formas de representação

Page 23: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Variável externa G

0 1

3 2

V0

V1

V2

V3

A(0,1) A(0,3)

A(1,2) A(1,3)

A(3,1) A(3,2)

Formas de representação

Page 24: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Matriz de adjacências para um grafo G = (N, A)

– Assume-se que os nós são numerados da seguinte forma: 1, 2, 3, ..., |N|;

– A matriz de adjacências Adj para um grafo G = (N, A) possui dimensões |N| x |N| e elementos ai,j , de forma que:

1 se (i, j) A

ai,j =

0 caso contrário

{

Formas de representação

Page 25: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Primeiro caso: Grafo Não-Direcionado

Para os grafos não-direcionados, os elementos da matriz são simétricos: Adj [ i ] [ j ] = Adj [ j ] [ i ]. Assim, com fins de economia de memória, pode-se armazenar apenas a matriz triangular superior ou inferior.

1 2

5

3

4

1

2

5

3

4

1 2 53 4

0 1 10 0

1 0 11 1

0 1 00 1

0 1 11 0

1 1 00 1

Tipos:

Adj = vetor[5] [5] de inteiros

Formas de representação

Page 26: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Segundo caso: Grafo Direcionado

Na matriz de adjacências para grafos direcionados, as linhas representam os nós origem e as colunas, os nós destino.

1

2

5

3

4

1 2 53 4

0 1 0 1

0 0 0 0

0 0 0 0

0 1 0 0

0 0 0 1

Tipos

Adj = vetor[6] [6] de inteiros

1 2

4 5

3

6

6

6 0 0

0

1

1

0

0

00 0

0

0

1

0

0

1

Formas de representação

Page 27: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

• A matriz de adjacência é freqüentemente inadequada porque requer o conhecimento prévio do número de nós

• Mesmo que a matriz de adjacência seja esparsa, deve-se reservar espaço para todo possível arco entre dois nós. Se existir n nós, precisará de n2 alocações

• Lista ligada é interessante porque só aloca o espaço necessário, porém, a implementação é mais complexa porque não se pode prever o número de nós adjacentes a determinado nó, ou seja, o número de ponteiros é bastante variável

• Na representação de matriz está implícito a possibilidade de percorrer uma linha ou coluna

• Percorrer em linha é identificar todos os arcos emanando de determinado nó. Neste caso, a implementação ligada é mais eficiente

• Em coluna é identificar todos os arcos que terminam em determinado nó: vantagem para a matriz, já que não existe um método simples correspondente na implementação ligada

Formas de representação

Page 28: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

O objetivo dos métodos de passeio é explorar um grafo, de forma sistemática, obtendo informações sobre sua estrutura.

Uma questão interessante diz respeito ao ponto de início do passeio, pois não existe um referencial a ser considerado, como por exemplo, a raiz nas árvores.

Outra questão é relacionada às repetições nas visitas. Como garantir que um nó já foi visitado? Solução: colocar marcas nos nós já visitados.

A seqüência de nós visitados depende da escolha dos nós adjacentes. Para um determinado grafo podem existir diversas seqüências de passeio.

Métodos de passeio

Page 29: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Existem dois algoritmos principais para passeio em um grafo G = (N, A):

– Largura (Breadth-first search)

Todos os nós localizados a uma distância k de um nó s, escolhido arbitrariamente, são percorridos antes dos nós localizados a uma distância k+1 de s.

– Profundidade (Depth-first search)

Para um nó s, escolhido arbitrariamente, um de seus nós adjacentes é visitado, e para cada nó visitado, um dos nós adjacente a ele é visitado, até que se encontre um nó sem adjacentes. Nesse instante ocorre um “retorno” com o objetivo de visitar os nós restantes adjacentes à s.

Métodos de passeio

Page 30: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Largura (Breadth-first search)

1. Um nó, escolhido arbitrariamente, é visitado, marcado e colocado em uma fila Q;

2. Enquanto a fila Q não estiver vazia:

2.1. Retira-se um nó N da fila Q;

2.2. Para cada nó M (não marcado) adjacente à N:

2.2.1. Visita-se o nó M;

2.2.2. Coloca-se o nó M na fila Q;

2.2.3. Marca-se o nó M.

Métodos de passeio

Page 31: Grafos 1- Definições Preliminares 2- Formas de Representação 3- Métodos de Passeio (Pesquisa) 4- Aplicações.

Profundidade (Depth-first search)

1. Um nó, escolhido arbitrariamente, é visitado, marcado e colocado em uma pilha S;

2. Enquanto a pilha S não estiver vazia:

2.1. Retira-se um nó N da pilha S;

2.2. Para cada nó M (não marcado) adjacente à N:

2.2.1. Visita-se o nó M;

2.2.2. Coloca-se o nó M na pilha S;

2.2.3. Marca-se o nó M.

Métodos de passeio