impp

Upload: jyotirmoy-deka

Post on 02-Apr-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/27/2019 impp

    1/27 1Graphs

    GRAPHS

    Definitions

    The Graph ADT

    Data structures for graphs

    LAX

    PVD

    LAX

    DFW

    FTL

    STL

    HNL

  • 7/27/2019 impp

    2/272Graphs

    What is a Graph?

    A graph G = (V,E) is composed of:

    V: set ofverticesE: set ofedges connecting the vertices in V

    An edge e = (u,v) is a pair ofvertices

    Example:

    a b

    c

    d e

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

    E=

    {(a,b),(a,c),(a,d),

    (b,e),(c,d),(c,e),(d,e)}

  • 7/27/2019 impp

    3/273Graphs

    Applications

    electronic circuits

    find the path of least resistance to CS16

    networks (roads, flights, communications)

    CS16

    start

    LAX

    PVD

    LAX

    DFW

    FTL

    STL

    HNL

  • 7/27/2019 impp

    4/274Graphs

    mo better examplesA Spike Lee Joint Production

    scheduling (project planning)

    wake up

    eat

    work

    cs16 meditation

    more cs16

    play

    make cookiesfor cs16 HTA

    sleep

    dream of cs16

    cs16 program

    A typical student day

    cxhextris

  • 7/27/2019 impp

    5/275Graphs

    Graph Terminology

    adjacent vertices: connected by an edge

    degree (of a vertex): # of adjacent vertices

    path: sequence of vertices v1,v2,. . .vk such thatconsecutive vertices vi and vi+1 are adjacent.

    a b

    c

    d e

    a b

    c

    d e

    a b e d c b e d c

    3

    3 3

    3

    2 deg(v) = 2(# edges)vV

    Since adjacent verticeseach count the

    adjoining edge, it willbe counted twice

  • 7/27/2019 impp

    6/27

  • 7/27/2019 impp

    7/277Graphs

    Even More Terminology

    connected graph: any two vertices are connected bysome path

    subgraph: subset of vertices and edges forming agraph

    connected component: maximal connectedsubgraph. E.g., the graph below has 3 connectedcomponents.

    connected not connected

  • 7/27/2019 impp

    8/278Graphs

    Caramba! AnotherTerminology Slide!

    (free) tree - connected graph without cycles forest - collection of trees

    tree

    forest

    tree

    tree

    tree

  • 7/27/2019 impp

    9/279Graphs

    Connectivity

    Let n = #verticesm = #edges

    - complete graph - all pairs of vertices are adjacent

    m= (1/2)deg(v) = (1/2)(n - 1) = n(n-1)/2vV vV

    Each of the n vertices is incident to n - 1 edges,however, we would have counted each edge twice!!!Therefore, intuitively, m = n(n-1)/2.

    Therefore, if a graph isnot complete,m < n(n-1)/2

    n = 5m = (5 4)/2 = 10

  • 7/27/2019 impp

    10/2710Graphs

    More Connectivity

    n = #verticesm = #edges

    For a tree m = n - 1

    Ifm < n - 1, G is not connected

    n = 5m = 4

    n = 5m = 3

  • 7/27/2019 impp

    11/2711Graphs

    Spanning Tree

    A spanning tree ofG is a subgraph which

    - is a tree

    - contains all vertices ofG

    Failure on any edge disconnects system (least faulttolerant)

    G spanning tree ofG

  • 7/27/2019 impp

    12/2712Graphs

    AT&T vs. RT&T(Roberto Tamassia & Telephone)

    Roberto wants to call the TAs to suggest an

    extension for the next program...

    One fault will disconnect part of graph!!

    A cycle would be more fault tolerant and only

    requires n edges

    TA

    TA

    TA

    TA

    TA

    But Plant-Opsaccidentally cutsa phone cable!!!

  • 7/27/2019 impp

    13/2713Graphs

    Euler and the Bridges ofKoenigsberg

    Consider if you were a UPS driver, and you didntwant to retrace your steps.

    In 1736, Euler proved that this is not possible

    A

    B

    C

    DPregal River

    Can one walk across each bridgeexactly once and return at thestarting point?

    Gilligans Isle?

  • 7/27/2019 impp

    14/2714Graphs

    Graph Model(with paralleledges)

    Eulerian Tour: path that traverses every edge

    exactly once and returns to the first vertex Eulers Theorem: A graph has a Eulerian Tour if and

    only if all vertices have even degree

    Do you find such ideas interesting?

    Would you enjoy spending a whole semester doingsuch proofs?

    Well, look into CS22!if you dare...

    C

    A

    B

    D

  • 7/27/2019 impp

    15/2715Graphs

    The Graph ADT

    The G ra p h A D T is a positional container whosepositions are the vertices and the edges ofthe graph.

    - size() Return the number of vertices plus thenumber of edges ofG.

    - isEmpty()

    - elements()

    - positions()- swap()

    - replaceElement()

    Notation: Graph G; Vertices v, w; Edge e; Object o

    - numVertices()

    Return the number of vertices ofG.- numEdges()

    Return the number of edges ofG.

    - vertices() Return an enumeration of the verticesofG.

    - edges() Return an enumeration of the edges ofG.

  • 7/27/2019 impp

    16/2716Graphs

    The Graph ADT (contd.)- directedEdges()

    Return an enumeration of all directededges in G.

    - undirectedEdges()Return an enumeration of allundirected edges in G.

    - incidentEdges(v)Return an enumeration of all edges

    incident on v.- inIncidentEdges(v)

    Return an enumeration of all theincoming edges to v.

    - outIncidentEdges(v)Return an enumeration of all theoutgoing edges from v.

    - opposite(v, e)Return an endpoint ofe distinct from v

    - degree(v)Return the degree ofv.

    - inDegree(v)Return the in-degree ofv.

    - outDegree(v)Return the out-degree ofv.

  • 7/27/2019 impp

    17/2717Graphs

    More Methods ...- adjacentVertices(v)

    Return an enumeration of the vertices

    adjacent to v.- inAdjacentVertices(v)

    Return an enumeration of the verticesadjacent to v along incoming edges.

    - outAdjacentVertices(v)Return an enumeration of the vertices

    adjacent to v along outgoing edges.- areAdjacent(v,w)

    Return whether vertices v and w areadjacent.

    - endVertices(e)

    Return an array of size 2 storing theend vertices ofe.

    - origin(e)Return the end vertex from which eleaves.

    - destination(e)

    Return the end vertex at which earrives.

    - isDirected(e)Return true iffe is directed.

  • 7/27/2019 impp

    18/2718Graphs

    Update Methods- makeUndirected(e)

    Set e to be an undirected edge.

    - reverseDirection(e)Switch the origin and destinationvertices ofe.

    - setDirectionFrom(e, v)Sets the direction ofe away from v, oneof its end vertices.

    - setDirectionTo(e, v)Sets the direction ofe toward v, one ofits end vertices.

    - insertEdge(v, w, o)Insert and return an undirected edgebetween v and w, storing o at thisposition.

    - insertDirectedEdge(v, w, o)Insert and return a directed edgebetween v and w, storing o at thisposition.

    - insertVertex(o)Insert and return a new (isolated)vertex storing o at this position.

    - removeEdge(e)Remove edge e.

  • 7/27/2019 impp

    19/2719Graphs

    Data Structures for Graphs

    A Graph! How can we represent it?

    To start with, we store the vertices and the edges intotwo containers, and we store with each edge objectreferences to its endvertices

    Additional structures can be used to performefficiently the methods of the Graph ADT

    J FK

    B OS

    MIA

    ORD

    LAXD FW

    S FO

    TW 45

    AA411

    AA13

    87

    A

    A9

    03

    DL

    247

    AA523

    NW35

    UA

    877

    DL

    335

    AA49

    UA120

    J FK

    B OS

    MIA

    ORD

    LAXD FW

    S FO

  • 7/27/2019 impp

    20/2720Graphs

    Edge List

    The e d g e list structure simply stores the vertices andthe edges into unsorted sequences.

    Easy to implement.

    Finding the edges incident on a given vertex isinefficient since it requires examining the entireedge sequence

    DFWB OS ORDMIA SFOJ FKLAX

    D L 247 D L 335 U A 877NW 35 AA 523 AA 411 TW 45UA 120AA 49 AA 903AA 1387

    E

    V

  • 7/27/2019 impp

    21/2721Graphs

    Performance of the Edge ListStructure

    Operation Timesize, isEmpty, replaceElement, swap O(1)

    numVertices, numEdges O(1)

    vertices O(n)

    edges, directedEdges, undirectedEdges O(m)

    elements, positions O(n+m)

    endVertices, opposite, origin, destination,

    isDirected, degree, inDegree, outDegree

    O(1)

    incidentEdges, inIncidentEdges, outInci-

    dentEdges, adjacentVertices, inAdja-

    centVertices, outAdjacentVertices,

    areAdjacent

    O(m)

    insertVertex, insertEdge, insertDirected-

    Edge, removeEdge, makeUndirected,

    reverseDirection, setDirectionFrom, setDi-

    rectionTo

    O(1)

    removeVertex O(m)

  • 7/27/2019 impp

    22/2722Graphs

    Adjacency List(traditional)

    adjacency list of a vertex v:sequence of vertices adjacent to v

    represent the graph by the adjacency lists of all thevertices

    Space = (N + deg(v)) = (N + M)

    a b

    c

    d e

    b

    b

    c

    c

    c

    d

    a e

    a d e

    a e

    d

    a

    b

    c

    d

    e

  • 7/27/2019 impp

    23/2723Graphs

    Adjacency List(modern)

    The a d ja c e nc y list structure extends the edge liststructure by adding incidence containers to eachvertex.

    The space requirement is O(n + m).

    D L 247 D L 335 U A 877NW 35 AA 523 AA 411 TW 45UA 120AA 49 AA 903AA 1387

    E

    in out in out in out in out in out in out in out

    NW 35

    DL 247

    AA 49

    AA 411

    UA 120 AA1387

    AA 523

    UA 877

    DL335

    AA 49

    NW 35 AA1387

    AA 903

    TW 45

    DL 247

    AA 903

    AA523

    AA 411

    UA 120

    DL 335

    UA 877 TW 45

    DFWB OS ORDMIA SFOJ FKLAXV

  • 7/27/2019 impp

    24/2724Graphs

    Performance of the AdjacencyList Structure

    Operation Time

    size, isEmpty, replaceElement, swap O(1)

    numVertices, numEdges O(1)

    vertices O(n)

    edges, directedEdges, undirectedEdges O(m)

    elements, positions O(n+m)endVertices, opposite, origin, destina-

    tion, isDirected, degree, inDegree, out-

    Degree

    O(1)

    incidentEdges(v), inIncidentEdges(v),

    outIncidentEdges(v), adjacentVerti-ces(v), inAdjacentVertices(v), outAdja-

    centVertices(v)

    O(deg(v))

    areAdjacent(u, v) O(min(deg(u),

    deg(v)))

    insertVertex, insertEdge, insertDirected-Edge, removeEdge, makeUndirected,

    reverseDirection,

    O(1)

    removeVertex(v) O(deg(v))

  • 7/27/2019 impp

    25/2725Graphs

    Adjacency Matrix(traditional)

    matrix M with entries for all pairs of vertices

    M[i,j] = true means that there is an edge (i,j) in thegraph.

    M[i,j] = false means that there is no edge (i,j) in thegraph.

    There is an entry for every possible edge, therefore:Space = (N2)

    F T T T FT F F F TT F F T TT F T F TF T T T F

    a b

    c

    d e

    a b c d e

    abcd

    e

  • 7/27/2019 impp

    26/2726Graphs

    Adjacency Matrix(modern)

    The adjacency matrix structures augments the edgelist structure with a matrix where each row andcolumn corresponds to a vertex.

    BOS DFW JFK LAX MIA ORD SFO0 1 2 3 4 5 6

    The space requirement is O(n2 + m)

    0 1 2 3 4 5 6

    0 NW

    35

    DL

    247

    1 AA49

    DL

    335

    2 AA1387

    AA

    903

    TW

    45

    3 UA

    120

    4 AA523

    AA

    411

    5 UA877

    6

  • 7/27/2019 impp

    27/27

    Performance of the AdjacencyMatrix Structure

    Operation Timesize, isEmpty, replaceElement, swap O(1)

    numVertices, numEdges O(1)

    vertices O(n)

    edges, directedEdges, undirectedEdges O(m)

    elements, positions O(n+m)

    endVertices, opposite, origin, destination,

    isDirected, degree, inDegree, outDegree

    O(1)

    incidentEdges, inIncidentEdges, outInci-

    dentEdges, adjacentVertices, inAdja-

    centVertices, outAdjacentVertices,

    O(n)

    areAdjacent O(1)

    insertEdge, insertDirectedEdge, remov-

    eEdge, makeUndirected, reverseDirection,

    setDirectionFrom, setDirectionTo

    O(1)

    insertVertex, removeVertex O(n2)