aula de redes 5

72
1 Aula 05 – Algoritmos de caminhos mínimos BC0506 - Comunicação e Redes David Correa Martins Jr [email protected]

Upload: mexico108

Post on 06-Sep-2015

216 views

Category:

Documents


0 download

DESCRIPTION

conteúdo das aulas de comunicação e redes da ufabc

TRANSCRIPT

  • 1Aula 05 Algoritmos de caminhos mnimos

    BC0506 - Comunicao e Redes

    David Correa Martins [email protected]

  • 2Aulas passadas

    Algoritmos de busca em grafosBusca em larguraBusca em profundidade

  • 3Busca em largura (Breadth First Search)

    BFS(G,s): Para cada vrtice v em G.V-{s} faa v.cor = BRANCO v.dis = INFINITO v.pre = VAZIO s.cor = CINZA s.dis = 0 Q = VAZIO Insere(Q,s)

    Enquanto Q VAZIO faa u = Remove(Q) Para cada vrtice v em G.Adj[u] faa se v.cor == BRANCO v.cor = CINZA v.dis = u.dis+1 v.pre = u Insere(Q,v) u.cor = PRETO

    Inicializao

    Percorre o grafo

    Explora os vizinhos de u

  • 4Percorre o grafo

    Inicializao

    Busca em profundidade (Depth First Search)DFS(G,s): Para cada vrtice v em G.V-{s} faa v.cor = BRANCO v.t1 = INFINITO v.t2 = INFINITO s.cor = CINZA s.t1 = 0 P = VAZIO Insere(P,s) Enquanto P VAZIO faa u = Consulta(P) Se u tem vrtices adjacentes na cor BRANCO v = escolhe um vrtice adjacente v.cor=BRANCO v.cor = CINZA tempo = tempo+1 v.t1 = tempo Insere(P,v) Caso-contrrio u.cor = PRETO tempo = tempo+1 v.t2 = tempo Remove(P)

  • 5Percorre o grafo

    Inicializao

    Busca em profundidade (verso recursiva 1)

    DFS(G,s): Para cada vrtice v em G.V-{s} faa v.cor = BRANCO v.t1 = INFINITO v.t2 = INFINITO tempo = 0 VisitaDFS(G,s)

    VisitaDFS(G,s): tempo = tempo+1 s.t1 = tempo s.cor = CINZA Para cada v em G.Adj[s] faa Se v.cor == BRANCO VisitaDFS(G,v) s.cor = PRETO tempo = tempo+1 s.t2 = tempo

  • 6Busca em profundidade

    Verso recursiva 1

  • 7Percorre o grafo

    Inicializao

    Busca em profundidade (verso recursiva 2)

    DFS(G): Para cada vrtice v em G.V faa v.cor = BRANCO v.t1 = INFINITO v.t2 = INFINITO tempo = 0 Para cada vrtice u em G.V faa se u.cor==BRANCO VisitaDFS(G,u)

    VisitaDFS(G,s): tempo = tempo+1 s.t1 = tempo s.cor = CINZA Para cada v em G.Adj[s] faa Se v.cor == BRANCO VisitaDFS(G,v) s.cor = PRETO tempo = tempo+1 s.t2 = tempo

  • 8Busca em profundidade

    Verso recursiva 2

  • 9I. Uso de algoritmos de busca

  • 10

    Uso de algoritmos de busca

    Ordenao linear dos vrtices de um grafo.

    Determinar o caminho mnimo entre um par de vrtices.

    Existncia de ciclos no grafo (sim ou no).

    Determinar se o grafo conexo (sim ou no)

  • 11

    Uso do algoritmo de busca em profundidade

    BCC

    PI

    CR

    BMat

    NI

    BExp

    TQui

    Obrig

    Optat

    1/4

    2/3

    5/12

    6/11

    7/10

    8/9

    13/1415/18

    16/17

  • 12

    Uso do algoritmo de busca em profundidade

    BCC

    PI

    CR

    BMat

    NI

    BExp

    TQui

    Obrig

    Optat

    1/4

    2/3

    5/12

    6/11

    7/10

    8/9

    13/1415/18

    16/17

    BExp TQui Optat

    13/1415/18 16/17

    BCC

    5/12

    PI CR

    6/11 7/10

    Obrig

    8/9

    BMat NI

    1/4 2/3

  • 13

    Uso de algoritmos de busca

    Ordenao linear dos vrtices de um grafo.

    Determinar o caminho mnimo entre um par de vrtices.

    Existncia de ciclos no grafo (sim ou no).

    Determinar se o grafo conexo (sim ou no)

  • 14

    Uso do algoritmo de busca em profundidade

    2

    1 3

    4

    5

    6

    7

    (0)

    (1) (1)

    (2) (2)

    (2)

    (3)

    origem

  • 15

    II. Algoritmos de caminhos mnimos

  • 16

    Caminhos mnimos - Motivao

    Ideia: Minimizar (ou maximizar) um certo valor.

    Por exemplo:- Minimizar o custo ou o tempo gasto.- Maximizar o lucro ou o ganho.

  • 17

    Caminhos mnimos - Motivao

    Exemplo 1Considere uma empresa de entregas, com um centro de distribuio e um caminho.

    Problema:Dada uma lista de endereos de entrega encontrar uma sequncia que minimize a kilometragem total do caminho para realizar todas as entregas

    Modelar o problema atravs de grafos.

  • 18

    Caminhos mnimos - Motivao

    Modelar o problema atravs de grafos.

    Vrtices:Endereos de engrega.

    Arestas: Uma rota conectando 2 endereos de entrega.

    Peso/custo:Distncias entre as extremidades.

  • 19

    Caminhos mnimos - Motivao

    Sobre o exerccio 1 (atividade para casa) da aula 04

    O grafo dos estados do Brasil definido assim: cada vrtice um dosestados da Repblica Federativa do Brasil; dois estados so adjacentes setm uma fronteira comum. Faa um desenho do grafo.

    Quantos vrtices tem o grafo?Quantas arestas?Qual o grau mdio?Existe um caminho Euleriano?

  • 20

    Caminhos mnimos - Motivao

    Sobre o exerccio 1 (atividade para casa) da aula 04

    O grafo dos estados do Brasil definido assim: cada vrtice um dosestados da Repblica Federativa do Brasil; dois estados so adjacentes setm uma fronteira comum. Faa um desenho do grafo.

    Quantos vrtices tem o grafo?Quantas arestas?Qual o grau mdio?Existe um caminho Euleriano?

  • 21

    Caminhos mnimos - Motivao

    Sobre o exerccio 1 (atividade para casa) da aula 04

    O grafo dos estados do Brasil definido assim: cada vrtice um dosestados da Repblica Federativa do Brasil; dois estados so adjacentes setm uma fronteira comum. Faa um desenho do grafo.

    Quantos vrtices tem o grafo?Quantas arestas?Qual o grau mdio?Existe um caminho Euleriano?

  • 22

    Caminhos mnimos - Motivao

    Exemplo 2Considere um programa de GPS para o clculo da melhor rota entre dois pontos.

    Problema:Dado um endereo de origem e destino, encontrar um caminho mnimo entre a origem e o destino, i.e., encontrar a rota com a menor distncia.

    Modelar o problema atravs de grafos.

  • 23

    Caminhos mnimos - Motivao

    Modelar o problema atravs de grafos.

    Vrtices:Cruzamentos entre ruas.

    Arestas: Cada trecho de rua.

    Peso/custo:Comprimento do trecho (em kilometros)

  • 24

    Distncia

    Um caminho C, em um grafo, mnimo se no existe outro caminho com mesma origem e mesmo termino que C mas comprimento menor que o de C.

    A distncia entre s e t o comprimento do caminho mnimo entre s e t.

    Se no existe caminho algum entre s e t, ento a distncia entre ambos vrtices infinita.

  • 25

    Distncia

    Grafos no-ponderados

    b

    a d

    e

    c

    f

    h

    k

    Distncia entre: h,e = 3 h,k = Infinito

  • 26

    Distncia

    Grafos ponderados

    b

    a d

    e

    c

    f

    h

    k

    Muitas aplicaes associam um nmero a cada aresta.

    Esse nmero o custo/peso da aresta, que pode ser remetido a uma caracterstica fsica da conexo.

    1

    5

    1

    7

    73

    1

    2 10

  • 27

    Distncia

    Grafos ponderados

    b

    a d

    e

    c

    f

    h

    k

    Distncia entre: h,k = Infinito h,e = ?

    1

    5

    1

    7

    73

    1

    2 10

  • 28

    Distncia

    Grafos ponderados

    b

    a d

    e

    c

    f

    h

    k

    Distncia entre: h,k = Infinito h,e = 8

    1

    5

    1

    7

    73

    1

    2 10

  • 29

    Distncia

    Grafos ponderados

    b

    a d

    e

    c

    f

    h

    k

    Distncia entre: h,k = Infinito h,e = 8

    O comprimento de um caminho a soma dos pesos/custos das arestas do caminho.

    1

    5

    1

    7

    73

    1

    2 10

  • 30

    Busca de caminhos mnimos em grafos

    Para a busca de caminhos mnimos em grafos ponderados, h algoritmos especficos que executam a tarefa.

    Algoritmos especficos:(1) Caminhos mnimos a partir de um dado vrtice.(2) Caminos mnimos entre todos os pares de vrtices.

  • 31

    Caminho mnimos com origem fixa

    Dado um vrtice s de um grafo ponderado, encontrar para cada vrtice t (que pode ser alcanado a partir de s) um caminho mnimo de s a t.

    Todos os algoritmos para esses problemas exploram a seguinte propriedade triangular:

    d(x,z) d(x,y)+d(y,z)

    sendo d(i,j) a distncia do vrtice i ao vrtice j.

  • 32

    Algoritmo de Dijkstra

    Algoritmo eficiente para a obteno do caminho mnimo em grafos com pesos no-negativos.

    Criado por um cientista da computao chamado Edsger Dijkstra.

    Entrada:Grafo, G.Vrtices, s.Pesos, w (no-negativos).

    Sada:Caminhos mnimos a partir de s.

  • 33

    Algoritmo de Dijkstra

    b

    1

    e

    a

    c d

    10

    6

    2

    5 1

    3

  • 34

    Algoritmo de Dijkstra

    b

    1

    e

    a

    c d

    10

    6

    2

    5 1

    3

    iterao Vrtices visitados

    a.dis b.dis c.dis d.dis e.dis

    0 {}

  • 35

    Algoritmo de Dijkstra

    b

    1

    e

    a

    c d

    10

    6

    2

    5 1

    3

    iterao Vrtices visitados

    a.dis b.dis c.dis d.dis e.dis

    0 {} 1 {a} 0 1 3 10

    0

    1 10

    3

  • 36

    Algoritmo de Dijkstra

    b

    1

    e

    a

    c d

    10

    6

    2

    5 1

    3

    iterao Vrtices visitados

    a.dis b.dis c.dis d.dis e.dis

    0 {} 1 {a} 0 1 3 102 {a,b} 0 1 6 3 10

    0

    1 10

    36

  • 37

    Algoritmo de Dijkstra

    b

    1

    e

    a

    c d

    10

    6

    2

    5 1

    3

    iterao Vrtices visitados

    a.dis b.dis c.dis d.dis e.dis

    0 {} 1 {a} 0 1 3 102 {a,b} 0 1 6 3 103 {a,b,d} 0 1 5 3 9

    0

    1 9

    35

  • 38

    Algoritmo de Dijkstra

    b

    1

    e

    a

    c d

    10

    6

    2

    5 1

    3

    iterao Vrtices visitados

    a.dis b.dis c.dis d.dis e.dis

    0 {} 1 {a} 0 1 3 102 {a,b} 0 1 6 3 103 {a,b,d} 0 1 5 3 94 {a,b,d,c} 0 1 5 3 6

    0

    1 6

    35

  • 39

    Algoritmo de Dijkstra

    b

    1

    e

    a

    c d

    10

    6

    2

    5 1

    3

    iterao Vrtices visitados

    a.dis b.dis c.dis d.dis e.dis

    0 {} 1 {a} 0 1 3 102 {a,b} 0 1 6 3 103 {a,b,d} 0 1 5 3 94 {a,b,d,c} 0 1 5 3 65 {a,b,d,c,e} 0 1 5 3 6

    0

    1 6

    35

  • 40

    Algoritmo de Dijkstra

    Inicializao:Atribui uma distncia infinita para todos os vrtices.O vrtice de origem recebe distncia zero (0).Todos os vrtices so marcados como no visitados.

    Enquanto houverem vrtices no visitados:Eleja o vrtice no visitado com a menor distncia (a partir da origem) como o vrtice atual.Calcule a distncia para todos os vrtices adjacntes no visitados:

    - Se a distncia menor, substitua a distncia.- Marque-o como visitado (sua distncia mnima).

    Observao: por sempre escolher como prximo vrtice a ser analisado aquele que parece a melhor opo, o algoritmo chamado de guloso (Greedy)

  • 41

    Algoritmo de Dijkstra

    b

    2

    7e

    a

    c d

    4

    3

    2

    3

    63

  • 42

    Algoritmo de Dijkstra

    b

    2

    7e

    a

    c d

    4

    3

    2

    3

    63

    iterao Vrtices visitados

    a.dis b.dis c.dis d.dis e.dis

    0 {}

  • 43

    Algoritmo de Dijkstra

    b

    2

    7e

    a

    c d

    4

    3

    2

    3

    63

    iterao Vrtices visitados

    a.dis b.dis c.dis d.dis e.dis

    0 {} 1 {b} 2 0 3 6

    0

    3 6

    2

  • 44

    Algoritmo de Dijkstra

    b

    2

    7e

    a

    c d

    4

    3

    2

    3

    63

    iterao Vrtices visitados

    a.dis b.dis c.dis d.dis e.dis

    0 {} 1 {b} 2 0 3 6 2 {b,a} 2 0 3 6 60

    3 6

    2

    6

  • 45

    Algoritmo de Dijkstra

    b

    2

    7e

    a

    c d

    4

    3

    2

    3

    63

    iterao Vrtices visitados

    a.dis b.dis c.dis d.dis e.dis

    0 {} 1 {b} 2 0 3 6 2 {b,a} 2 0 3 6 63 {b,a,c} 2 0 3 5 6

    0

    3 5

    2

    6

  • 46

    Algoritmo de Dijkstra

    b

    2

    7e

    a

    c d

    4

    3

    2

    3

    63

    iterao Vrtices visitados

    a.dis b.dis c.dis d.dis e.dis

    0 {} 1 {b} 2 0 3 6 2 {b,a} 2 0 3 6 63 {b,a,c} 2 0 3 5 64 {b,a,c,d} 2 0 3 5 6

    0

    3 5

    2

    6

  • 47

    Algoritmo de Dijkstra

    b

    2

    7e

    a

    c d

    4

    3

    2

    3

    63

    iterao Vrtices visitados

    a.dis b.dis c.dis d.dis e.dis

    0 {} 1 {b} 2 0 3 6 2 {b,a} 2 0 3 6 63 {b,a,c} 2 0 3 5 64 {b,a,c,d} 2 0 3 5 65 {b,a,c,d,e} 2 0 3 5 6

    0

    3 5

    2

    6

  • 48

    Percorre o grafo

    Inicializao

    Algoritmo de Dijkstra

    Dijkstra(G,s,w) Para cada vrtice v em G

    v.dis = INFINITOv.pre = -1

    s.dis = 0 T = todos os vrtices de G

    Enquanto T VAZIO faa u = vrtice em T com menor distncia

    se u.dist==INFINITOSai do lao

    remove u de TPara cada vizinho v de u

    d = u.dist + w(u,v)Se d

  • 49

    Algoritmo de Dijkstra

    s

    10

    xt

    y z

    1

    5

    2

    4 6

    2 3

    7

    9

  • 50

    Algoritmo de Dijkstra

    s

    10

    xt

    y z

    1

    5

    2

    4 6

    2 3

    7

    9

    iterao Vrtices visitados

    s.dis t.dis x.dis y.dis z.dis

    0 {}

    Inicializao Para cada vrtice v em Gv.dis = INFINITOv.pre = -1

    s.dis = 0 T = todos os vrtices de G

  • 51

    Algoritmo de Dijkstra

    s

    10

    xt

    y z

    1

    5

    2

    4 6

    2 3

    7

    9

    iterao Vrtices visitados

    s.dis t.dis x.dis y.dis z.dis

    0 {} 1 {s} 0 10 5

    5

    10

    0

    Enquanto T VAZIO faa u = vrtice em T com menor distncia

    Se u.dist==INFINITOSai do lao

    remove u de TPara cada vizinho v de u

    d = u.dist + w(u,v)Se d

  • 52

    Algoritmo de Dijkstra

    s

    10

    xt

    y z

    1

    5

    2

    4 6

    2 3

    7

    9

    iterao Vrtices visitados

    s.dis t.dis x.dis y.dis z.dis

    0 {} 1 {s} 0 10 5 2 {s,y} 0 8 14 5 7

    75

    148

    0

    Enquanto T VAZIO faa u = vrtice em T com menor distncia

    Se u.dist==INFINITOSai do lao

    remove u de TPara cada vizinho v de u

    d = u.dist + w(u,v)Se d

  • 53

    Algoritmo de Dijkstra

    s

    10

    xt

    y z

    1

    5

    2

    4 6

    2 3

    7

    9

    iterao Vrtices visitados

    s.dis t.dis x.dis y.dis z.dis

    0 {} 1 {s} 0 10 5 2 {s,y} 0 8 14 5 73 {s,y,z} 0 8 13 5 7

    75

    138

    0

    Enquanto T VAZIO faa u = vrtice em T com menor distncia

    Se u.dist==INFINITOSai do lao

    remove u de TPara cada vizinho v de u

    d = u.dist + w(u,v)Se d

  • 54

    Algoritmo de Dijkstra

    s

    10

    xt

    y z

    1

    5

    2

    4 6

    2 3

    7

    9

    iterao Vrtices visitados

    s.dis t.dis x.dis y.dis z.dis

    0 {} 1 {s} 0 10 5 2 {s,y} 0 8 14 5 73 {s,y,z} 0 8 13 5 74 {s,y,z,t} 0 8 9 5 7

    75

    98

    0

    Enquanto T VAZIO faa u = vrtice em T com menor distncia

    Se u.dist==INFINITOSai do lao

    remove u de TPara cada vizinho v de u

    d = u.dist + w(u,v)Se d

  • 55

    Algoritmo de Dijkstra

    s

    10

    xt

    y z

    1

    5

    2

    4 6

    2 3

    7

    9

    iterao Vrtices visitados

    s.dis t.dis x.dis y.dis z.dis

    0 {} 1 {s} 0 10 5 2 {s,y} 0 8 14 5 73 {s,y,z} 0 8 13 5 74 {s,y,z,t} 0 8 9 5 75 {s,y,z,t,x} 0 8 9 5 7

    75

    98

    0

    Enquanto T VAZIO faa u = vrtice em T com menor distncia

    Se u.dist==INFINITOSai do lao

    remove u de TPara cada vizinho v de u

    d = u.dist + w(u,v)Se d

  • 56

    Caminhos entre todos os pares de vrtices

    O algoritmo de Floyd-Warshall encontra todos os caminhos mnimos entre todos os pares de vrtices em um grafo.

    Os pesos devem ser no-negativos.

    Este algoritmo til em aplicaes onde necessria a criao de uma matriz de caminhos mnimos ao invs de um vetor.

    O algoritmo, primeiramente modifica a matriz de adjacncia:Atribui infinito a todos os pares de vrtices sem conexo, exceto a diagonal principal.

  • 57

    Algoritmo de Floyd-Warshall

    FloydWarshall(MAdj): D = Madj para cada linha i em MAdj para cada coluna j em MAdj se (Madj[i,j]==0 e i!=j) // sem conexo?

    dist[i,j] = INFINITO

    N = numero de linhas de MAdj para k igual a 1 at N para i igual a 1 at N para j igual a 1 at N se D[i,j] > D[i,k]+D[k,j] D[i,j] = D[i,k]+D[k,j]

  • 58

    Algoritmo de Floyd-Warshall

    Matriz de adjacncia

    1 2 3 4 5

    12345

    0 5 0 2 0

    5 0 1 0 0

    0 1 0 1 0

    2 0 1 0 10

    0 0 0 10 0

    2

    1 4

    3

    5

    5

    1

    1

    2 10

    Matriz simtrica com zeros na diagonal

  • 59

    Algoritmo de Floyd-Warshall

    Matriz de distncias (D)

    1 2 3 4 5

    12345

    0 5 2 5 0 1 1 0 1 2 1 0 10

    10 0

    2

    1 4

    3

    5

    5

    1

    1

    2 10

  • 60

    Algoritmo de Floyd-Warshall

    1 2 3 4 5

    12345

    0 5 2 5 0 1 1 0 1 2 1 0 10

    10 0

    K=1

    D[1,1] > D[1,1]+D[1,1] ? NoD[1,2] > D[1,1]+D[1,2] ? NoD[1,3] > D[1,1]+D[1,3] ? NoD[1,4] > D[1,1]+D[1,4] ? NoD[1,5] > D[1,1]+D[1,5] ? No

    D[2,1] > D[2,1]+D[1,1] ? NoD[2,2] > D[2,1]+D[1,2] ? NoD[2,3] > D[2,1]+D[1,3] ? NoD[2,4] > D[2,1]+D[1,4] ? SIM D[2,4]= 5+2=7D[2,5] > D[2,1]+D[1,5] ? No

    D[4,2] > D[4,1]+D[1,2] ? SIM D[4,2]= 2+5=7

    ...

    1 2 3 4 5

    12345

    0 5 2 5 0 1 7 1 0 1 2 7 1 0 10

    10 0

  • 61

    Algoritmo de Floyd-Warshall

    1 2 3 4 5

    12345

    0 5 2 5 0 1 7 1 0 1 2 7 1 0 10

    10 0

    K=2

    D[1,1] > D[1,2]+D[2,1] ? NoD[1,2] > D[1,2]+D[2,2] ? NoD[1,3] > D[1,2]+D[2,3] ? SIM D[1,3]= 5+1=6D[1,4] > D[1,2]+D[2,4] ? NoD[1,5] > D[1,2]+D[2,5] ? No

    D[3,1] > D[3,2]+D[2,1] ? SIM D[3,1]= 1+5=6

    ...1 2 3 4 5

    12345

    0 5 6 2 5 0 1 7 6 1 0 1 2 7 1 0 10

    10 0

  • 62

    Algoritmo de Floyd-Warshall

    1 2 3 4 5

    12345

    0 5 6 2 5 0 1 7 6 1 0 1 2 7 1 0 10

    10 0

    K=3

    D[1,1] > D[1,3]+D[3,1] ? NoD[1,2] > D[1,3]+D[3,2] ? NoD[1,3] > D[1,3]+D[3,3] ? NoD[1,4] > D[1,3]+D[3,4] ? NoD[1,5] > D[1,3]+D[3,5] ? No

    D[2,1] > D[2,3]+D[3,1] ? NoD[2,2] > D[2,3]+D[3,2] ? NoD[2,3] > D[2,3]+D[3,3] ? NoD[2,4] > D[2,3]+D[3,4] ? SIM D[2,4]=1+1=2D[2,5] > D[2,3]+D[3,5] ? No

    D[4,2] > D[4,3]+D[3,4] ? SIM D[4,2]=1+1=2

    ...

    1 2 3 4 5

    12345

    0 5 6 2 5 0 1 2 6 1 0 1 2 2 1 0 10

    10 0

  • 63

    Algoritmo de Floyd-Warshall

    1 2 3 4 5

    12345

    0 5 6 2 5 0 1 2 6 1 0 1 2 2 1 0 10

    10 0

    K=4

    D[1,2] > D[1,4]+D[4,2] ? SIM D[1,2]=2+2=4D[1,3] > D[1,4]+D[4,3] ? SIM D[1,3]=2+1=3D[1,5] > D[1,4]+D[4,5] ? SIM D[1,5]=2+10=12...D[2,1] > D[2,4]+D[4,1] ? SIM D[2,1]=2+2=4D[2,5] > D[2,4]+D[4,5] ? SIM D[2,5]=2+10=12D[3,1] > D[3,4]+D[4,1] ? SIM D[3,1]=1+2=3D[3,5] > D[3,4]+D[4,5] ? SIM D[3,5]=1+10=11

    D[5,1] > D[5,4]+D[4,1] ? SIM D[5,1]=10+2=12D[5,2] > D[5,4]+D[4,2] ? SIM D[5,2]=10+2=12D[5,3] > D[5,4]+D[4,3] ? SIM D[5,3]=10+1=11

    1 2 3 4 5

    12345

    0 4 3 2 124 0 1 2 123 1 0 1 112 2 1 0 10

    12 12 11 10 0

  • 64

    Algoritmo de Floyd-Warshall

    1 2 3 4 5

    12345

    0 4 3 2 124 0 1 2 123 1 0 1 112 2 1 0 10

    12 12 11 10 0

    K=5

    No houveram modificaes

    1 2 3 4 5

    12345

    0 4 3 2 124 0 1 2 123 1 0 1 112 2 1 0 10

    12 12 11 10 0

  • 65

    Algoritmo de Floyd-Warshall

    1 2 3 4 5

    12345

    0 4 3 2 124 0 1 2 123 1 0 1 112 2 1 0 10

    12 12 11 10 0

    2

    1 4

    3

    5

    5

    1

    1

    2 10

  • 66

    Pginas interessantes

    All Minimum Routs Finder (Floyd Algorithm)http://students.ceid.upatras.gr/~papagel/english/java_docs/allmin.htm

    Floyd-Warshall All-Pairs Shortest Pairs Algorithmhttp://www.pms.ifi.lmu.de/lehre/compgeometry/Gosper/shortest_path/shortest_path.html

  • 67

    Lista 2

    Enunciado no Tidia->Repositrio->Listas->Lista 2->CR-lista02.pdf

    PARTE 1: Isomorfismo de grafos

    PARTE 2:- Busca em profundidade- Caminhos mnimos (algoritmo de Dijkstra)- rvore geradora mnima atravs do algoritmo de Prim (lembra Dijkstra)

  • 68

    Lista 2

    Submisso:Envie as respostas atravs do seguinte formulrio:https://docs.google.com/forms/d/1sq-qnZnb3DrUxGxurLRMP7sND3VOTW7lfniDtRCYPFQ/viewform

    Observaes:

    Pode submeter inmeras vezes, apenas a ltima submisso ser avaliada.Data limite: 23 de junho s 23:55

  • 69

    III. Atividade Prtica

  • 70

    Atividade Prtica

    Questo nica:Para cada grafo, simule o algoritmo de Dijkstra e determine as distncias a todos os vrtices, considerando como origem o vrtice 1.

    3 11

    5

    1

    22

    13

    1

    5

    1

    21

  • 71

    Atividade Prtica

    3 11

    5

    1

    22

    13

    1

    5

    1

    21

  • 72

    Atividade para casa

    Considere um grafo orientado e ponderado que seja representado pela matriz de adjacncia abaixo.Simule o algoritmo de Dijkstra e determine as distncias a todos os vrtices, considerando como origem o vrtice 1.Faa grficos para mostrar a evoluo do algoritmo.

    First Slide ExampleSlide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31Slide 32Slide 33Slide 34Slide 35Slide 36Slide 37Slide 38Slide 39Slide 40Slide 41Slide 42Slide 43Slide 44Slide 45Slide 46Slide 47Slide 48Slide 49Slide 50Slide 51Slide 52Slide 53Slide 54Slide 55Slide 56Slide 57Slide 58Slide 59Slide 60Slide 61Slide 62Slide 63Slide 64Slide 65Slide 66Slide 67Slide 68Slide 69Slide 70Slide 71Slide 72