CPSC 220
Graph Exercises

SHOW ALL WORK!!!

Consider the directed weighted graph G with vertex and edge sets below:

  V = {A,B,C,D,E,F,G}

  E = {(A,B,10),
       (A,D,20),
       (B,C,2),
       (B,D,6),
       (B,F,6),
       (B,G,8),
       (C,E,8),
       (D,F,5),
       (D,G,1)
       (G,E,1)
       (G,F,3)}

  1. Suppose we are considering adding edges to or removing edges from G.
    1. For the given size of V, what is the maximum possible size of E (assuming no self-loops)?
    2. For the given size of V, what is the minimum possible size of E?

  2. Assume that an integer takes one cell and a pointer takes two cells, and it is not necessary to store the actual label on each vertex,
    1. How much space would it take to store G using
      1. an adjacency list?
      2. an adjacency matrix?
    2. Develop a general formula in terms of |V| and |E| for the space required for each representation under these assumptions. Then evaluate the space tradeoffs when
      1. |E| = |V|
      2. |E| = |V|2

    For questions 3-7, assume that "for each adjacent vertex" in any relevant algorithm takes the vertices in alphabetical order.

  3. Show the order in which the vertices will be visited in a breadth-first search from A.

  4. Show the order in which the vertices will be visited in a depth-first search from A.

  5. Find a topological sort of the vertices using
    1. a post-visit depth-first search.
    2. the queue-based method.

  6. Viewing this as an undirected graph, find a minimum spanning tree using
    1. Prim's algorithm
    2. Kruskal's algorithm

  7. Use Dijkstra's algorithm to find the shortest route and distance from A to every other vertex.