lab04-mst

43
ICMC – USP SCC-216 – Modelagem Computacional em Grafos LAB 03 - Algoritmos de ordenação topológica Prof. Dr. Alneu de Andrade Lopes - 1o sem. 2015 Alan Valejo [email protected]

Upload: romeu-bertho

Post on 17-Dec-2015

213 views

Category:

Documents


0 download

DESCRIPTION

Graph theory, kruskal

TRANSCRIPT

  • ICMC USPSCC-216 Modelagem Computacional em Grafos

    LAB 03 - Algoritmos de ordenao topolgicaProf. Dr. Alneu de Andrade Lopes - 1o sem. 2015

    Alan Valejo [email protected]

  • Introduo

    Projetar redes de telecomunicao, telefonia, televiso.

    Projetar rodovias, ferrovias, etc. Projetar redes de transmisso de energia.

    Projeto de redes de escoamento

    Quero acessar todos os pontos com menor custo possvel (tempo, distancia, material)

  • rvore Geradora Uma arvore geradora de um grafo no-direcionado G de um grafo G um sub-grafo de G que contm todos os seus vrtices e, ainda, uma rvore.

    Uma rvore um grafo: Conexo (existe caminho entre quaisquer dois de seus vrtices)

    Acclico (no possui ciclos)

  • rvore Geradora

  • rvore Geradora Mnima (MST) Assumir que G conexo e no contm ciclos

    Entrada: Um grafo conexo G com pesos w(u,v) para cada aresta (u,v)

    Sada: Um subgrafo gerador conexo (rvore geradora) T de G cujo peso total

    seja o menor possvel

  • rvore Geradora Mnima (MST)

  • rvore Geradora Mnima (MST)

    Veremos duas estratgias gulosas para resolver o problema Algoritmo Prim Algoritmo Kruskal

  • rvore Geradora Mnima (MST) Um algoritmo genrico dado da seguinte forma:

    A 0

    Enquanto A no uma MST faaEncontre uma aresta (v,u) segura

    A A U {(v,u)}

    Retorne A

    Aresta segura se mantm a condio: antes de cada iterao, A um sub-conjunto de alguma MST

  • Algoritmo de Prim A uma rvore com raiz r Inicialmente A vazio O algoritmo considera um corte(C), no qual C um conjunto de vrtices extremos em A

    Encontrar uma aresta leve (v,u) no corte e acrescentar ao conjunto A

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Prim A uma rvore com raiz r Inicialmente A vazio O algoritmo considera um corte(C), no qual C um conjunto de vrtices extremos em A

    Encontrar uma aresta leve (v,u) no corte e acrescentar ao conjunto A

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Prim A uma rvore com raiz r Inicialmente A vazio O algoritmo considera um corte(C), no qual C um conjunto de vrtices extremos em A

    Encontrar uma aresta leve (v,u) no corte e acrescentar ao conjunto A

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Prim

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de PrimAlgoritmo de Prim

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de PrimAlgoritmo de PrimAlgoritmo de Prim

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de Prim

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de Prim

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de Prim

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de Prim

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de Prim

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de Prim

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de Prim

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de Prim

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de PrimAlgoritmo de Prim

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Prim

    Para Cada v in V Faa

    custo[v] infinito

    p[v] NULL

    custo[r] 0

    Q {(custo,V)}

    A 0

    Enquanto Q no vazio Faa

    v EXTRAIR_MIN(Q)*

    A A U {v}

    Para Cada u adjacente v Faa

    Se u not in A e w(v,u) < custo[u] Ento

    custo[u] w(v,u)p[u] v

    Retorne A = {(v,p[v])}

    *Seleciona v in V-A, tal que custo de v mnimo

    Problema: Estrutura de dados eficiente para ordenas os vrtices e seus custos.

  • Algoritmo de Kruskal

    Utiliza o conceito de floresta Uma coleo de rvores Um grafo acclico mas no conexo, ele

    dito uma floresta

  • Algoritmo de Kruskal Escolha a aresta de menor peso entre todas as arestas que no conectam quaisquer dois vrtices em A

    Escolhe uma aresta de menor peso que liga vrtices de rvores distintas

    A nova aresta no pode ligar vrtices na mesma arvore (ciclo)

    Uma floresta pode existir antes da MST ter sido encontrada

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    a

    b c d

    ei

    h g f

    4

    8 7

    9

    10

    21

    8

    11

    7 6

    2 4

    14

  • Algoritmo de Kruskal

    A

  • Algoritmo de Kruskal

    A