• Nenhum resultado encontrado

Matemática Discreta ADS Grafos e arvores

N/A
N/A
Protected

Academic year: 2018

Share "Matemática Discreta ADS Grafos e arvores"

Copied!
30
0
0

Texto

(1)

ESCOLA DE ENGENHARIA

C++

(2)

Instalação Elétrica

Instalação Elétrica

L

Q

u

ad

ro

Tom A

Int

Tom B

Pontos,

conduítes

(3)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

3/33

América do Sul

América do Sul

Fronteir

as entre

(4)

Herança

Herança

Relacioname

nto de

especializaçã

Marinho

Marinho

Animal

Animal

Mamífero

Mamífero

Leão

Leão

Homem

Homem

Inseto

Inseto

Mosca

Mosca

Barata

Barata

Peixe

Peixe

(5)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

5/33

x--;

if(x>0) x+= 2;

for(int k= 1; k<=x; k++){

y+= 3;

w--;

if(w<0) y--;

else y++;

}

y= sqr(x);

Linguagem C++

Linguagem C++

Indentaçã

o das

linhas do

programa.

1

1.1

1.2

1.3

1.3.1

1.3.2

1.3.3

1.4

(6)

Fluxograma ISO 5807

Fluxograma ISO 5807

u

i+1

|L(u

i+1

)= mín({L(v)| v

D})

início

M = {u

0

}

L(u

0

) = 0

L(v) =

v

D

i = 0

L(v) = mín(L(v), L(u

i

)+W(u

i

, v))

v

D

F

L(v) é a distância

mínima de u

0

até v,

v

M

V

M = M

{u

i+1

}

i = i + 1

fim

D =

1

1

Processo

s e

(7)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

7/33

Lista

Lista

Cabe

ça

Remove do

começo

Insere no

começo

Insere no

começo

Remove do

meio

Insere no fim

(8)

Pilha

Pilha

Cabe

ça

Empilh

a

Empilh

a

Desempil

ha

Desempil

ha

(9)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

9/33

Fila

Fila

Cabe

ça

Enfileira

Desenfile

ira

Desenfile

ira

Desenfile

ira

Enfileira

(10)

Grafos e Dígrafos (Graph, Digraph)

Grafos e Dígrafos (Graph, Digraph)

V

V

Ø

Ø

V

V

E = Ø

E = Ø

Ψ : E

Ψ : E

{ {

{

{

v, w}

v, w

}

| v, w

| v, w

V} (Grafo)

V} (Grafo)

Ψ : E

Ψ : E

{ (

{

(

v, w)

v, w

)

| v, w

| v, w

V} (Dígrafo)

V} (Dígrafo)

G = (V, E,

G = (V, E,

Ψ)

Ψ)

Vértice

s

Arestas

ou

Arcos

Função

de

Incidênc

ia

(11)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

11/33

Exemplo de Grafo

Exemplo de Grafo

Lula = (Bar, Bu,

Lula = (Bar, Bu,

Do)

Do)

Do(A) = {a,

b}

Do(B) = {b,

c}

Do(C) = {c, c} =

{c}

Do(D) = {c, d}

Do(E) = {b,

d}

Do(F) = {d, e}

Do(G) = {b,

e}

Do(H) = {b,

e}

A

B

C

D

F

G

H

E

c

b

e

d

a

Do

(12)

A

B

C

D

F

G

H

E

Outra Geometria do exemplo

Outra Geometria do exemplo

c

b

e

d

a

mude a posição dos

arcos

mude a posição dos

vértices

Os

arcos

podem

(13)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

13/33

Exemplo de Dígrafo

Exemplo de Dígrafo

Pico = (Lé, DeChu, Chu)

Pico = (Lé, DeChu, Chu)

Chu(A) = (a, b)

Chu(B) = (b, c)

Chu(C) = (c, c)

Chu(D) = (c, d)

Chu(E) = (b, d)

Chu(F) = (d, e)

Chu(G) = (b, e)

Chu(H) = (b, e)

G

H

E

c

b

e

d

a

Chu

Lé = {a, b, c, d, e}

DeChu = {A, B, C, D,

E, F, G, H}

A

B

C

D

(14)

Grafo Simples

Grafo Simples

Não possui laços (loops)

Não possui laços (loops)

Não possui arestas múltiplas

Não possui arestas múltiplas

X

X

X

X

(15)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

15/33

Vértices Adjacentes

Vértices Adjacentes

Grafo:

Grafo:

o vértice a é adjacente ao vértice b;

o vértice a é adjacente ao vértice b;

o vértice b é adjacente ao vértice a.

o vértice b é adjacente ao vértice a.

b

A

a

Dígrafo:

Dígrafo:

o vértice a não

o vértice a

não

é adjacente ao vértice b;

é adjacente ao vértice b;

o vértice b é adjacente ao vértice a.

o vértice b é adjacente ao vértice a.

(16)

Grafo e Matriz de Adjacência

Grafo e Matriz de Adjacência

a

a

b

b

c

c

d

d

e

e

a

a

0

0

1

1

0

0

0

0

0

0

b

b

1

1

0

0

1

1

1

1

2

2

c

c

0

0

1

1

1

1

1

1

0

0

d

d

0

0

1

1

1

1

0

0

1

1

e

e

0

0

2

2

0

0

1

1

0

0

c

b

e

d

A

a

B

C

D

F

G

H

E

simétrica

i

j

cada elemento da matriz é a quantidade de

cada elemento da matriz é a quantidade de

arestas que vão do vértice

arestas que vão do vértice i

i

ao vértice j

ao vértice

j

e vice-

e

vice-versa (são adjacentes).

versa (são adjacentes).

(17)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

17/33

a

a

b

b

c

c

d

d

e

e

a

a

0

0

1

1

0

0

0

0

0

0

b

b

0

0

0

0

1

1

1

1

2

2

c

c

0

0

0

0

1

1

1

1

0

0

d

d

0

0

0

0

0

0

0

0

1

1

e

e

0

0

0

0

0

0

0

0

0

0

Dígrafo e Matriz de Adjacência

Dígrafo e Matriz de Adjacência

c

b

e

d

A

a

B

C

D

F

G

H

E

cada elemento da matriz é a quantidade de

cada elemento da matriz é a quantidade de

arestas que vão do vértice

arestas que vão do vértice i

i

ao vértice j

ao vértice

j

(o j é

(o j é

adjacente ao i).

adjacente ao i).

do

i

(18)

Rede ou Grafo Ponderado

Rede ou Grafo Ponderado

R = (V, E,

R = (V, E,

Ψ, ω)

Ψ, ω)

Vértic

es

Arestas

ou

Arcos

Função

de

Incidên

cia

Função

de

Pesos

ω : E

(19)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

19/33

Lu = (Isa, He,

Lu = (Isa, He,

Le, Na)

Le, Na)

Exemplo de Rede

Exemplo de Rede

6

5

8

7

7

4

3

6

Isa = {a, b, c, d, e}

Isa = {a, b, c, d, e}

He = {A, B, C, D, E,

He = {A, B, C, D, E,

F, G, H}

F, G, H}

Le, Na

Le, Na

Le(B)={b, c}, Na(B)=5

Le(B)={b, c}, Na(B)=5

Le(A)={a, b}, Na(A)=6

Le(A)={a, b}, Na(A)=6

Le(C)={c}, Na(C)=8

Le(C)={c}, Na(C)=8

Le(D)={c, d}, Na(D)=7

Le(D)={c, d}, Na(D)=7

Le(E) = {b, d}, Na(E)=6

Le(E) = {b, d}, Na(E)=6

Le(F) = {d, e}, Na(F)=7

Le(F) = {d, e}, Na(F)=7

Le(G) = {b, e}, Na(G)=4

Le(G) = {b, e}, Na(G)=4

Le(H) = {b, e}, Na(H)=3

Le(H) = {b, e}, Na(H)=3

c

b

e

(20)

1

2

3

4

8

12

7

11

9

10

5

6

13

15

14

a

b

g

h

e

d

c

f

i

j

k

n

q

s

t

r

p

o

m

l

u

v

cucaracha

Passeio (Walk)

Passeio (Walk)

Seqüência não nula, finita e

alternada de vértices adjacentes

e arestas incidentes.

W = v

0

e

1

v

1

e

2

v

2

e

3

... e

k

v

k

onde:

1

k

n (n

N*

)

(e

k

) = {v

k-1

, v

k

}

Cabeça = 3c4e6f5d3 (fechado)

Exemplos:

Antenas = 1a3c4b2

W

1

=

14t17r14n12n14m10

W

2

= 5f6v10h8h10m14

W

3

= 5i15o13l9u5 (fechado)

(21)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

21/33

1

2

3

4

8

12

7

11

9

10

5

6

13

15

14

17

16

a

b

g

h

e

d

c

f

i

j

k

n

q

s

t

r

p

o

m

l

u

v

cucaracha

Passeio onde as arestas não se repetem.

Exemplos:

Antenas = 1a3c4b2

Trajeto (Trail)

Trajeto (Trail)

Cabeça = 3c4e6f5d3

(fechado)

Patinha Direita Central

= 12n14

T

1

= 2b4e6j15p14t17

T

2

= 2b4e6j15p14r17

(22)

1

2

3

4

8

12

7

11

9

10

5

6

13

15

14

17

a

b

g

h

e

d

c

f

i

j

k

n

q

s

t

r

p

o

m

l

u

v

cucaracha

Passeio onde os vértices não se repetem.

Exemplos:

Antenas = 1a3c4b2

Caminho (Path)

Caminho (Path)

Patinha Direita Central

= 12n14

P

1

=

11k13o15j6v10m14t17

P

2

= 2b4e6j15p14t17

P

3

= 2b4e6j15p14r17

P

4

= 8h10m14

(23)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

23/33

1

2

3

4

8

12

7

11

9

10

5

6

13

15

14

17

16

a

b

g

h

e

d

c

f

i

j

k

n

q

s

t

r

p

o

m

l

u

v

cucaracha

Ciclo (Cycle)

Ciclo (Cycle)

Trajeto fechado (v

0

=v

k

).

Exemplos:

Cabeça = 3c4e6f5d3 (fechado)

Asa Esquerda = 5i15o13l9u5

(fechado)

Patona Direita =

14t17r14 (fechado)

C

1

=

6v10m14t17r14p15j6

(fechado)

(fechado)

C

2

= 5f6v10m14p15o13l9u5

(24)

DAG (Directed Acyclic Graph)

DAG (Directed Acyclic Graph)

Redes PERT (Program Evaluation and Review Technique):

DAG ponderado onde os arcos representam atividades, os

vértices representam o início e o fim das atividade e os

5

3

6

9

4

8

5

3

5

0

2

3

1

7

8

8

7

2

(25)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

25/33

Árvore (Tree)

Árvore (Tree)

(26)

Grafos e Listas de Adjacência

Grafos e Listas de Adjacência

A

B

C

E

A

B

C

D

0

E

0

0

1

1

3

1

1

3

0

2

0

1

A lista de adjacência

está em ordem

crescente de vértices

(do A até o E) de forma

(27)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

27/33

Dígrafos e Listas de Adjacência

Dígrafos e Listas de Adjacência

A

B

C

D

E

A

B

C

D

0

E

0

0

0

0

0

1

2

3

1

1

1

3

1

Lista dos Vértices

Lista de Adjacência

do vértice A

Lista de

Adjacência

do vértice B

Lista de

Adjacência

do vértice C

Lista de

Adjacência

do vértice D

(28)

Árvore

Árvore

nível 0

nível 1

nível 2

nível 3

A

B

C

D

E

F

G

H

I

J

K

L

M

(29)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

29/33

Árvore: Nó de uma Árvore

Árvore: Nó de uma Árvore

in

fo

rm

a

çã

o

p

a

i

p

ri

m

o

g

ê

n

it

o

p

x

im

o

i

rm

ã

o

class

TArvore

{

private

:

TAlgumTipo inf; // informação

TArvore *pai; // pai

TArvore *prim; // primogênito

TArvore *prox // próximo irmão

// ...

public

:

// ...

// operações em uma árvore.

// ...

};

Não é imprescindível, mas pode ajudar

na implementação dos métodos.

(30)

Árvore: ligações

Árvore: ligações

F

K

L

M

R

S

L

F

0

K

M

0 0

R

0

S

0 0

vem de E

vai para A

vem de Q

vem de Q

(31)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

31/33

Árvore: busca em largura e busca

Árvore: busca em largura e busca

em profundidade

em profundidade

nível 0

nível 1

nível 2

nível 3

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

Largura

P

ro

fu

n

d

id

a

d

(32)

Árvore: Busca em Largura

Árvore: Busca em Largura

Fila

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

M

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

ALGORITMO

:

enfileire o nó raiz da árvore;

enquanto existirem nós enfileirados:

desenfileire e marque o nó;

A

B

C

D

E

F

G

H

(33)

C++ - Grafos e Árvores

C++ - Grafos e Árvores Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni

33/33

Busca em Profundidade

Busca em Profundidade

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

ALGORITMO

:

empilhe o nó raiz da árvore;

enquanto existirem nós empilhados:

desempilhe e marque o nó;

para todos os nós filhos deste nó marcado:

empilhe o nó filho;

Pilha

A

F

E

D

C

B

G

I

Referências

Documentos relacionados

Dessa forma um SGE eficiente viabiliza o conhecimento das oportunidades de melhorias do desempenho energético (ISO 50001 ). Ela tem como propósitos permitir o

No algoritmo de Boruvka-Kruskal, a partir de um v´ ertice inicial arbitr´ ario, escolhe-se em cada passo uma aresta de peso o menor poss´ıvel que n˜ ao forme um ciclo com outras

A Avaliação do Ciclo de Vida - ACV é o processo utilizado para comparar a sustentabilidade de produtos similares, avaliando o desempenho ambiental de ambos em cada elo da

(Lei Complementar nº 130/2009) Integrar as ações pedagógicas, didáticas e tecnológicas desenvolvidas nas unidades escolares municipais, com vistas à melhoria da qualidade do

• Desse modo, a determinação da energia assegurada independe da geração real e está associada às condições no longo prazo que cada usina pode fornecer ao sistema, assumindo

O perfil conceitual de substância apresenta cinco zonas, a saber: zona generalista, em que o termo “substância” é usado de forma intuitiva e qualquer objeto

Enquanto o princípio do interesse público e da sua indisponibilidade é da essência de qualquer Estado, de qualquer sociedade juridicamente organizada, o

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: