Algoritmos Grafos

download Algoritmos Grafos

of 29

Transcript of Algoritmos Grafos

  • 8/3/2019 Algoritmos Grafos

    1/29

    AlgoritmosAlgoritmos emem GrafosGrafos

    Celso C. RibeiroCaroline T. Rocha

  • 8/3/2019 Algoritmos Grafos

    2/29

    22Algoritmos em GrafosAlgoritmos em Grafos

    PARTE 1: CONCEITOS BSICOS

  • 8/3/2019 Algoritmos Grafos

    3/29

    33Algoritmos em GrafosAlgoritmos em Grafos

    e3

    e2e4

    e5

    e9e6

    e8 e10

    e11

    e1 e12e7

    v1

    v2

    v3 v4

    v5

    v6

    v7

    v8

    v9

    V = {v1, v2, v3, v4, v5, v6, v7, v8, v9} n = 9E = {e1, e2, e3, e4,..., e9, e10, e11, e12} m = 12

    V = {v1, v2, ..., vn} |V| = nE = {e1, e2, ..., em} |E| = m

    G = (V, E)

    vrtices arestas

    Conceitos BsicosConceitos Bsicos

    Grafo: Geometricamente, um grafo um conjunto depontos (vrtices ou ns) conectados por linhas (arestas).

  • 8/3/2019 Algoritmos Grafos

    4/29

    44Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Cada aresta definida por um par no-ordenado dens, que so suas extremidades:

    e = (vi , vj)

    e = (u, v) u e v so adjacentes

    e incidente a ve incidente a u

    e5, e7 , e8 incidentes a v5v

    5adjacente a v

    4, v

    6, v

    7

    d(v) : grau do n v = nmero de arestas incidentes a v(ns adjacentes)

    d(v1) = d(v2) = d(v8) = d(v9) = 2d(v3) = d(v4) = d(v5) = d(v6) = 3d(v7) = 4

    d(v) = 0 vrtice isolado

  • 8/3/2019 Algoritmos Grafos

    5/29

    55Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Teorema: o nmero de ns de grau mpar em um grafo finito par.

    Demonstrao: ||.2)( EvdVi

    i !

    e5

    e4

    e2 e3

    e1

    e = (u, v) um lao se u = varestas paralelas possuem asmesmas extremidades

    Multi-grafo: sem laos, mas eventualmente com arestas paralelasGrafo simples (grafo) : sem laos nem arestas paralelos

  • 8/3/2019 Algoritmos Grafos

    6/29

    66Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Kn: grafo completo com n nsnmero de arestas: n(n-1)/2

    Grafo k-regular: todos os ns tm grau k.

    K3 K4 K5

    Kn (n-1)-regular

  • 8/3/2019 Algoritmos Grafos

    7/29

    77Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Grafo bipartido: o conjunto de ns pode ser particionadoem dois subconjuntos V1 e V2 tais que qualquer arestapossui uma extremidade em V1 e a outra em V2.

    Km,n: grafo bipartido completoonde |V1| = m e |V2| = n

    bipartido?

    bipartido?

    SIM

    NO

    V1

    V2

  • 8/3/2019 Algoritmos Grafos

    8/29

    88Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    um subgrafo de :

    Grafo induzido em por :

    onde E(X) o subconjunto de E formado por todas asarestas com as duas extremidades em X.

    G(X)

    G X = {2, 3, 4, 5}

    1 2

    34

    5

    6

    ),( EVG !

    ),( EVG !EEVV ','

    VX

    )','(' EVG !

    ))(,()( XEXXG !

  • 8/3/2019 Algoritmos Grafos

    9/29

    99Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Clique: subconjunto de ns que induz um subgrafo completo.

    ),( EVG !

    C1 = {1, 2, 3}1

    3

    2

    4

    5

    6C2 = {2, 4, 5}

    C3 = {4, 6}C4 = {3}

    e so complementares:),( EVG !

    EjiEji ),(),(EjiEji ),(),(

    G

    1

    3

    2

    4

    1

    3

    2

    4G

  • 8/3/2019 Algoritmos Grafos

    10/29

    010Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Caminho de a :Seqncia P de vrtices e arestas alternados, tais que cadaaresta incidente ao n anterior e ao n posterior.

    P um ciclo ou circuito.

    iv jv

    ! ji vv

    Caminho simples: cada vrtice aparece exatamente uma vez

    Comprimento de um caminho: nmero de arestas

    Caminhos disjuntos em vrtices/arestas: no tmvrtices/arestas em comum

  • 8/3/2019 Algoritmos Grafos

    11/29

    1111Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Vrtices vi e vj so conectados se existe um caminho de vi a vj.

    Dois vrtices vi e vj esto na mesma componente conexa seexiste um caminho entre eles.

    Um grafo conexo se possui uma nica componente conexa,

    ou seja, se existe um caminho entre qualquer par de ns

    conexo?

    Problema importante: determinar se um grafo conexo ou no.

  • 8/3/2019 Algoritmos Grafos

    12/29

    1212Algoritmos em GrafosAlgoritmos em Grafos

    Um grafo gerador de um grafo conexo G=(V,E) um subgrafoconexo G com o mesmo conjunto de ns V.

    Conceitos BsicosConceitos Bsicos

    v

    e

    Grafo G Grafo gerador de G

    v um ponto de articulao do grafo conexoG se sua remoo desconecta G.

    Se uma componente conexa de um grafo no contem ponto dearticulao, ento ela uma componente 2-conexa.

    Uma aresta e cuja remoo desconecta umgrafo conexo chamada de ponte.

  • 8/3/2019 Algoritmos Grafos

    13/29

    1313Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Digrafo ou grafo orientado: grafo no qual so associadasdirees aos seus arcos.

    ),( AVG !},...,{ 1 nvvV !

    },...,{ 1 maaA !VVjia v! ),( par ordenado

    Incio ou origem Fim ou destino

    1

    2

    3

    4

    56

    )(id

    )(id

    = grau de entrada de i= nmero de predecessores de i

    = grau de sada de i= nmero de sucessores de i

    i j

    j sucessor de i

    i predecessor de j

    ! )1(d

    ! )4(d

    ! )4(d

    ! )6(d

    1

    3

    0

    1

  • 8/3/2019 Algoritmos Grafos

    14/29

    1414Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Uma cadeia a1, a2, ..., aq de arcos uma seqncia tal quecada arco ai tem uma extremidade comum com o arco ai-1 eoutra com o arco ai+1, 2 i q-1.

    32

    41

    5

    a1 a2

    a3

    a5

    a6

    a4

    a7a2, a5, a6, a4 p cadeia entre os ns 2 e 3

    Ciclo: cadeia cujas extremidades coincidem.

    Caminho a1, a2,..., aq: extremidade final do arco ai coincidecom a extremidade inicial do arco ai+1.

    Circuito: caminho cujas extremidades coincidem.

  • 8/3/2019 Algoritmos Grafos

    15/29

    1515Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Dois vrtices vi e vj esto na mesma componente fortementeconexa de um grafo orientado se existe um caminho de vi avj e um caminho de vj a vi.

    {1, 2, 3, 4, 5, 6, 8, 9, 10}{7}

    {1, 2, 3, 4}

    {5, 6, 7}

    3

    2

    4

    15

    6 7

    910

    8

    32

    41

    56

    7

  • 8/3/2019 Algoritmos Grafos

    16/29

    1616Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Grafos planares:Um grafo planar se ele pode ser representado no plano demodo tal que no haja interseo entre suas arestas.

    K3 ?

    K5 ?

    K4 ?

    K3,3 ?

    PLANAR

    NO

    PLANAR

    NO

  • 8/3/2019 Algoritmos Grafos

    17/29

    1717Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    rvore: grafo conexo sem circuitos

    Floresta: grafo cujas componentes conexas so rvores

    Um caminho uma rvore? Sim!

  • 8/3/2019 Algoritmos Grafos

    18/29

    1818Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Teorema: Se T uma rvore com n vrtices, ento:

    1. Existe um nico caminho entre dois ns quaisquer de T.

    2. Sejam i, j dois ns de T tais que a aresta (i, j) no existe.Ento, a insero da aresta (i, j) em T provoca a formao

    de exatamente um ciclo.3. T possui n-1 arestas.

  • 8/3/2019 Algoritmos Grafos

    19/29

    1919Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Matriz de incidncia n-arco:Uma linha para cada nUma coluna para cada aresta

    Formas de representao e matrizes associadas a um grafo

    ),( AVG !nV !||

    mA !||

    Ajia ! ),(

    -

    01010

    j

    i

    a

    1 2

    34

    a1

    a2

    a3

    a4

    a5

    -

    !v

    110001011001101 00011

    nmA

  • 8/3/2019 Algoritmos Grafos

    20/29

    2020Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Uma matriz quadrada unimodular se seu determinante s1.

    Uma matriz retangular A totalmente unimodular se e

    somente qualquer matriz quadrada regular extrada de A unimodular.

    Formas de representao e matrizes associadas a um grafo

  • 8/3/2019 Algoritmos Grafos

    21/29

    2121Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Teorema: A matriz de incidncia de um grafo totalmenteunimodular.Uma matriz de incidncia contm exatamente dois elementos no-nulos por coluna (+1, -1).

    Demonstrao por induo:1. Todas as matrizes quadradas regulares de dimenso 1 so

    unimodulares (det = s1).2. Suponha a hiptese verdadeira at matrizes de ordem n-1 e

    considere uma matriz quadrada A de ordem n extrada de A.Se toda coluna de A tem dois elementos no-nulos, entodet(A) = 0 (soma das linhas nulas).Se uma coluna de A no tem elementos no-nulos, entodet(A) = 0.

    Formas de representao e matrizes associadas a um grafo

  • 8/3/2019 Algoritmos Grafos

    22/29

    2222Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Se existe uma coluna com um nico coeficiente no-nulo, entodet(A) = s det(A), onde A a matriz quadrada de ordem n-1extrada de A pela eliminao da linha i e da coluna j. Como ahiptese verdadeira para n-1, det(A) = s1 ou 0. Logo,

    det(A) = s1 ou 0.

    -

    s1

    '

    i

    A

    j

    Formas de representao e matrizes associadas a um grafo

  • 8/3/2019 Algoritmos Grafos

    23/29

    2323Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Matriz de adjacncia:

    Uma linha para cada nUma coluna para cada n

    a23

    1 2

    34

    a12

    a13

    a24

    a34

    -

    !v

    0000100011000110

    nnA

    Grafos sem arcos paralelos:1 2

    34

    1 2

    34

    n2 posies

    Formas de representao e matrizes associadas a um grafo

    aij = 1 p (i , j ) Aaij = 0 p (i , j ) A

  • 8/3/2019 Algoritmos Grafos

    24/29

    2424Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Lista de ns:

    Cada n aponta para a lista de seus sucessores (ou nsadjacentes)

    Formas de representao por listas de adjacncias

    1 2

    34

    n nsm arestas

    n +m posies

    1

    2

    3

    4

    2 3

    3 4

    4

    ns sucessores ns predecessores1

    2

    3

    4

    1

    1 2

    2 3

  • 8/3/2019 Algoritmos Grafos

    25/29

    2525Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Formas de representao por listas de adjacncias

    1 3 5 71

    23 m

    n

    1 2 3 4

    1 3 1 3 2 1

    1 2 3 4 5 6 7

    Lista de arcos1 2

    34

    S(.)

    2 3 4 3 2 3

    1 1 1 2 4 4

    T(.)

    simples passar de uma forma de representao para outra.

  • 8/3/2019 Algoritmos Grafos

    26/29

    2626Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Desenhar o grafo representado pela matriz de adjacnciaabaixo:

    -

    !

    010101001010000100

    001000100100100010

    A

    Quais so as componentes fortemente conexas deste grafo?

    Representar sua matriz de incidncia.

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

    1 2

    3

    4

    5

    6

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    -

    00000111110

    00110100000

    11100000000

    11001001000

    00011010001

    000000001111

    2

    3

    4

    5

    6

    1 2 3 4 5 6 7 8 9 10 11

  • 8/3/2019 Algoritmos Grafos

    27/29

    2727Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Representar o mesmo grafo por sua lista de adjacncias.

    Representar o grafo por sua lista de arcos.

    1

    2

    3

    4

    5

    6

    2 6

    3 6

    4

    2 4

    1 3

    3

    5

    1 1 6 6 2 6 2 5 5 3 4

    2 6 1 3 6 5 3 2 4 4 3

    1 2 3 4 5 6 7 8 9 10 11

    1 2

    3

    4

    5

    6

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

  • 8/3/2019 Algoritmos Grafos

    28/29

    2828Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos BsicosAlgoritmo para converter uma representao de um grafo orientadosob forma de matriz de adjacncia em matriz de incidncia.

    Ler nmero de ns n, matriz Alinha n 1, coluna n 1, arco n 0Enquanto linha n faa

    Enquanto coluna n faa

    SeA(linha,coluna)=1entoarco n arco+1, k n 1

    Enquanto k n faaB(k,arco) n 0k n k+1

    fim_enquantoB(linha,arco)n +1

    B(coluna,arco)n -1fim_secoluna n coluna +1

    fim_enquantocoluna n 1

    linha n linha +1

    fim_enquanto

  • 8/3/2019 Algoritmos Grafos

    29/29

    2929Algoritmos em GrafosAlgoritmos em Grafos

    Conceitos BsicosConceitos Bsicos

    Exerccio: Escrever um algoritmo para converter a representaode um grafo orientado sob forma de matriz de incidnciaem uma representao por listas de adjacncia.