Download presentation
Presentation is loading. Please wait.
1
James Tam Introduction To Graphs In this section of notes you will learn about a new ADT: graphs.
2
James Tam Graphs Are Related To Trees Like a tree a graph consists of nodes (vertex) and arcs (edges) that connect the nodes Unlike a tree there is no “up/down” direction (no parent-child relation), there is no root node Calgary Edmonton Fort McMurray Banff Lethbridge Start?
3
James Tam Graph Terminology Adjacent nodes Cycle Acyclic graph Sub-graph Connected/disconnected graphs Complete graphs Directed/undirected graphs Weighted graphs
4
James Tam Adjacent Nodes Nodes are adjacent if they are connected by an edge A B C D E Adjacent pairs (a, b) (a, d) (b, c) (c, d) (d, e)
5
James Tam Cycle A path that begins and ends with the same node A B C D E
6
James Tam Acyclic Graph Has no cycles A B C D E
7
James Tam Sub-Graph A portion of a graph that is also a graph A D E A B C D E
8
James Tam Connected Graphs You can go from any node to any other node by following the edges Note: It is not a requirement for connected graphs to have edges from every pair of nodes
9
James Tam Disconnected Graphs Some nodes are unreachable because there is no edge that connects them with the rest of the graph
10
James Tam Complete Graphs Every pair of nodes has an edge between them (every node is directly connected to every other node)
11
James Tam Directed Graphs Traversal between nodes is not guaranteed to be symmetric -E.g., map information that represents one way streets
12
James Tam Undirected Graphs Each connection is symmetric (a connection in one direction guarantees a connection in other direction)
13
James Tam Weighted Graph Shows the cost of traversing an edge Costs of traveling between cities -Distance in kilometers -Travel time in hours -Dollar cost of a taxi -Etc. Calgar y Edmonton Banff Lethbridge 300 100 150
14
James Tam Comparing Trees And Graphs Again A Tree is A More Specific Form Of Graph A typical 1 tree is a graph that has the following characteristics 1.It is connected 2.It has no cycles 1 3.There is an up/down direction (there is a parent-child relation between nodes) 4.One node is treated as the top (the root node has no parent node) Root 1 The type of tree that you were required to implement was somewhat rare
15
James Tam Graph Implementations Graph Adjacency matrix (Array) Adjacency list (Linked list) ADT (general concept) Data structure (specific)
16
James Tam Adjacency Matrix: Array Implementation A D G B E H C F I ADT: Graph Data structure: A 2D square array No rows = no columns = no. of nodes in the graph A B C D E F G H I A B C D E F G H I
17
James Tam Possible Array Implementations TTT T T T TT TT T T T A 2D array of boolean values A B C D E F G H I A B C D E F G H I 111 1 1 1 11 11 1 1 1 A B C D E F G H I A B C D E F G H I A 2D array of integer values
18
James Tam A Linked List Implementation Of A Graph GDA HEB IFC
19
James Tam The List Of Edges Must Be Dynamic 1 A D G B E H C F I BDE E B G FH CH H I F 1 Some sort of resizable list is needed e.g., a linked list or an array that can change in size
20
James Tam An Outline For A Node class Node { private dataType data; private boolean visited; Dynamic list of connections; : : : }
21
James Tam Graph Traversals Breadth first Depth first
22
James Tam Breadth-First Traversals Visit a node (N) Visit all of the nodes that node N refers to before following the second level of references N 1st : L1(a) L1 (b) 2nd 3rd First level of references L2 (a) 4th Second level of references
23
James Tam Algorithm For Breadth-First Traversals In a fashion that is similar to breadth first traversals for trees, a queue is employed to store all the nodes that are adjacent to the node that is currently being visited. breadthFirst (node) { Queue nodeList = new Queue () Node temp Mark node as visited and display node nodeList.enqueue(node)
24
James Tam Algorithm For Breadth-First Traversals (2) while (queue.isEmpty() == false) { temp = nodeList.dequeue () for (each unvisisted node uNode that is adjacent to temp) { Mark uNode as visited display uNode nodeList.enqueue(uNode) }
25
James Tam First Example Of A Breadth First Traversal v u q r s t wx Starting point First level Second level Third level Fourth level
26
James Tam Second Example Of A Breadth-First Traversal A B C D E F G H I Q: What order do you get for a breadth-first traversal if the starting point is node E? Starting point
27
James Tam Depth-First Traversals Visit a node Completely follow the series of references for a chain of nodes before visiting the second reference for that node L1 (b) : N 1st L1(a) 2nd L2 (a) 3rd
28
James Tam Algorithm For Depth-First Traversals Typically recursion is used (requires backtracking and the use of the system stack). If a loop is used then the programmer must create and manage his or her own stack. depthFirst (node) { Display node Mark node as visited for (each unvisited node (uNode) that is adjacent to node) depthFirst (node) }
29
James Tam First Example Of A Depth First Traversal v u q r s t w x Starting point
30
James Tam Second Example Of A Depth-First Traversal A B C D E F G H I Q: What order do you get for a depth-first traversal if the starting point is node E? Starting point
31
James Tam You Should Now Know What is a graph Common graph definitions What are the different ways in which graphs can be implemented How do breadth-first and depth-first traversals work
32
James Tam Sources Of Lecture Material “Data Structures and Abstractions with Java” by Frank M. Carrano and Walter Savitch “Data Abstraction and Problem Solving with Java: Walls and Mirrors” by Frank M. Carrano and Janet J. Prichard CPSC 331 course notes by Marina L. Gavrilova http://pages.cpsc.ucalgary.ca/~marina/331/ http://pages.cpsc.ucalgary.ca/~marina/331/
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.