Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSC 213 – Large Scale Programming. Today’s Goals  Review first two implementation for Graph ADT  What fields & data used in edge-list based approach.

Similar presentations


Presentation on theme: "CSC 213 – Large Scale Programming. Today’s Goals  Review first two implementation for Graph ADT  What fields & data used in edge-list based approach."— Presentation transcript:

1 CSC 213 – Large Scale Programming

2 Today’s Goals  Review first two implementation for Graph ADT  What fields & data used in edge-list based approach  Operations adjacency-list improves & how it does this  Consider when Graph used in real-life problems  For these cases, what operations are important?  How can we speed them up to make work go faster?  Could new implementation use arrays O(1) time?  Consider changes needed to enable using matrices

3 edges vertices Edge-List Implementation  Base for all Graph implementations  Sequence s of vertices & edges  Each instance of Edge refers to end vertices uw u v w ab u v w a b

4 edges ab Adjacency-List Implementation  Vertex maintains Sequence of Edge s  Only change needed  Methods which use incident edges faster  Costs some space  Improves few methods to O(1) vertices uv w uwu v w a b

5 Graph ADT  Accessor methods  vertices() : iterable for vertices  edges() : iterable for edges  endVertices(e) : array with endpoints of edge e  opposite(v,e) : e ’s endpoint that is not v  areAdjacent(v,w) : check if v and w are adjacent  replace(v,x) : make x new element at vertex v  replace(e,x) : make x new element at edge e  Update methods  insertVertex(x) : create vertex storing element x  insertEdge(v,w,x) : add edge (v,w) with element x  removeVertex(v) : remove v (& incident edges)  removeEdge(e) : remove e  Retrieval methods  incidentEdges(v) : get edges incident to v

6 Graph ADT  Accessor methods  vertices() : iterable for vertices  edges() : iterable for edges  endVertices(e) : array with endpoints of edge e  opposite(v,e) : e ’s endpoint that is not v  areAdjacent(v,w) : check if v and w are adjacent  replace(v,x) : make x new element at vertex v  replace(e,x) : make x new element at edge e  Update methods  insertVertex(x) : create vertex storing element x  insertEdge(v,w,x) : add edge (v,w) with element x  removeVertex(v) : remove v (& incident edges)  removeEdge(e) : remove e  Retrieval methods  incidentEdges(v) : get edges incident to v

7 Can This Be Made Faster?  Testing for adjacency is very common  Often check how or if vertices are connected  Checking in O(1) time speeds up Graph algorithms

8 Can This Be Made Faster?  Testing for adjacency is very common  Often check how or if vertices are connected  Checking in O(1) time speeds up Graph algorithms  Can trade off lots of space to make faster  Unique integer ID assigned to each Vertex  Matrix is created as doubly-subscripted array of Edge  matrix [ sourceID ][ targetID ] refers to Edge or null

9 edges vertices 012 0  1  2  Adjacency Matrix Structure  Edge-List structure still used as base u v w 012 u v w a b ba

10 edges vertices 012 0  1  2  Adjacency Matrix Structure  Edge-List structure still used as base  Vertex stores int  Index found in matrix u v w 012 u v w a b ba

11 edges vertices 012 0  1  2  Adjacency Matrix Structure  Edge-List structure still used as base  Vertex stores int  Index found in matrix  Adjacency matrix in Graph class u v w 012 u v w a b ba

12 edges vertices 012 0 1 2 Adjacency Matrix Structure u v w 012 u v w a b ba

13 edges vertices 012 0 1 2 Adjacency Matrix Structure u v w 012 u v w a b ba

14 edges vertices 012 0  1  2  Adjacency Matrix Structure  Undirected edges stored in both array locations u v w 012 u v w a b ba

15 edges vertices 012 0  1  2  Adjacency Matrix Structure  Undirected edges stored in both array locations  Directed edges only in array from source to target u v w 012 u v w a b ba

16 012 0  1  2  edges vertices Adjacency Matrix Structure  Undirected edges stored in both array locations  Directed edges only in array from source to target u v w 012 u v w a b ba

17 Vertex in the Matrix  Another Vertex implementation  Only change is a field for this Vertex  Make subclass of existing Vertex class  Have 2 classes, which should we use? Does it matter? class AMVertex extends Vertex { -or- class AMVertex extends ALVertex { private int rank; // Also need to define getRank, but not setRank }

18 Inserting/Removing Vertex  Reallocates & copy adjacency matrix  Insertion grows array creating locations for vertex  But we have choices when Vertex removed  Resize adjacency-matrix to prevent “bubbles”  Only good when vertices are constant

19 Inserting/Removing Vertex  Reallocates & copy adjacency matrix  Insertion grows array creating locations for vertex  But we have choices when Vertex removed  Resize adjacency-matrix to prevent “bubbles”  Only good when vertices are constant  What else could we do & when is it useful?

20 n vertices & m edges no self-loops Edge- List Adjacency- List Adjacency- Matrix Space n  m n2n2 incidentEdges (v) mdeg(v)n + deg(v) areAdjacent (v,w) mmin(deg(v), deg(w))1 insertVertex (o) 11n2n2 insertEdge (v,w,o) 111 removeVertex (v) mdeg(v)n2n2 removeEdge (e) 111 Asymptotic Performance

21 For Next Lecture  Finish up your coding of program #2; due today  Can use virtual extension, if you still have it  Midterm #2 in class week from today  Test will include all material through today  Lab on graphs & implementations, so get chance to use


Download ppt "CSC 213 – Large Scale Programming. Today’s Goals  Review first two implementation for Graph ADT  What fields & data used in edge-list based approach."

Similar presentations


Ads by Google