180 likes | 309 Vues
In this lecture, we explore the concept of graphs in programming, focusing on what the term "graph" truly means mathematically. We will clarify the importance of vertices and edges, discuss directed vs. undirected graphs, and delve into terminology such as cycles and paths. Applications of graph data structures in various fields like transportation, databases, and scheduling will also be highlighted. By the end, you will have a solid understanding of Graph Abstract Data Types (ADT) and their implementations, along with the upcoming assignments.
E N D
CSC 213 – Large Scale Programming Lecture 27:Graph ADT
Today’s Goals • Discuss what is NOT meant by term “Graph” • Why no bar charts, scatter plots, & pie charts mentioned • How term is used for mathematical graph • Review terminology of mathematical graphs • Why do we care about edges & vertices • Directed vs. undirected more than types of plays • Which 1 of these made up: incident, adjacent, feeder • Cycles & paths not related to Queen songs • Examine Graph ADT’s method & what they do
Graphs • Mathematically, graph is pair (V, E) where • Vis collection of nodes, called vertices • Two nodes can be connected by an edge in E • Positionimplemented by Vertex & Edge classes PVD 849 ORD 1843 142 SFO 802 LGA 1743 337 1387 HNL 2555 1099 LAX 1233 DFW 1120 MIA
Edge Types • Edge connects two vertices in the graph • Image we have edge connecting u & v • (u,v) is name given to this edge
Edge Types • Edge connects two vertices in the graph • Image we have edge connecting u & v • (u,v) is name given to this edge • Edges can be directed • One-way street is directed edge • uis originor source • vis destination Life Death
Edge Types • Edge connects two vertices in the graph • Image we have edge connecting u & v • (u,v) is name given to this edge • Edges can be directed • One-way street is directed edge • uis originor source • vis destination • Undirected edge is alternative • Vertices listed in any order • Subway lines normally undirected Life Death Best Canisius
Graph Types • Graph is directed if all edges directed • All edges in graph must be directed • Examples include trees & Java object hierarchy • Any edge allowed in undirected graphs • Can have only undirected or mix of both edges • Roadways & CSC major are examples of this
Applications • Electronic circuits • Transportation networks • Databases • Packing suitcases • Finding terrorists • Scheduling college’s exams • Assigning classes to rooms • Garbage collection • Coloring countries on a map • Playing minesweeper
Terminology • Edge incident on its endpoints • U & Vendpointsofa • Vertices adjacent when joined by edge • Uadjacent to V • Vadjacent to U • Directedness unimportantdetermining adjacency V b a h j U X Z d i c e W g f Y
Terminology • Degree of vertex is number incident edges • X has degree of 5 • Does not matter if edges directed or not • What the edges’ other endvertices unimportant • (Self-edges only count once) V b a h j U X Z d i c e W g f Y
Path Terminology • Pathis set of vertices in Graph where • All of the consecutive vertices adjacent • May or may not have edge from last to first vertices (U,W,X,Y,W,V) is path V a b U X Z h c e W g f Y
Path Terminology • Simple pathis a path which: • Is named by alternating vertices & edges • 0 or 1 appearance for each vertex & edge (V,b,X,h,Z) is simple path V a b d U X Z h c e W g f Y
Cycle Terminology • Cycle is path with several additional properties • Each cycle must begin & end at same vertex • No edge required from this vertex to itself • Simple cycle is special cycle • But is also simple path (V,X,Y,W,U,V) is simple cycle V a b d U X Z h c e W g f Y
Graph ADT • Accessor methods • vertices(): iterable for vertices • edges(): iterable for edges • endVertices(e): array with end points of edge e • opposite(v,e): e’send point 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 elementx • insertEdge(v,w,x): add edge (v,w) with elementx • removeVertex(v): remove v(& incident edges) • removeEdge(e): remove e • Retrieval methods • incidentEdges(v): get edges incident to v
For Next Lecture • New weekly assignment available now • Usual time for when it is due: 5PM on Tuesday • Consider design & develop tests for program #2 • 2nd deadline is Friday, so get cracking • Spend time working on this: design saves coding • Reading on implementing Graph for Friday • What are simplest implementations of Graph? • When would each be good to use is program?