Introduction To Graphs In this section of notes

  • Slides: 32
Download presentation
Introduction To Graphs • In this section of notes you will learn about a

Introduction To Graphs • In this section of notes you will learn about a new ADT: graphs. James Tam

Graphs Are Related To Trees • Like a tree a graph consists of nodes

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 Start? Fort Mc. Murray Start? Edmonton Start? Banff Calgary Start? Lethbridge James Tam

Graph Terminology • Adjacent nodes • Cycle • Acyclic graph • Sub-graph • Connected/disconnected

Graph Terminology • Adjacent nodes • Cycle • Acyclic graph • Sub-graph • Connected/disconnected graphs • Complete graphs • Directed/undirected graphs • Weighted graphs James Tam

Adjacent Nodes • Nodes are adjacent if they are connected by an edge A

Adjacent Nodes • Nodes are adjacent if they are connected by an edge A Adjacent pairs (a, b) (a, d) (b, c) E B (c, d) (d, e) D C James Tam

Cycle • A path that begins and ends with the same node A E

Cycle • A path that begins and ends with the same node A E B D C James Tam

Acyclic Graph • Has no cycles A E B D C James Tam

Acyclic Graph • Has no cycles A E B D C James Tam

Sub-Graph • A portion of a graph that is also a graph A E

Sub-Graph • A portion of a graph that is also a graph A E A B D C E D James Tam

Connected Graphs • You can go from any node to any other node by

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 James Tam

Disconnected Graphs • Some nodes are unreachable because there is no edge that connects

Disconnected Graphs • Some nodes are unreachable because there is no edge that connects them with the rest of the graph James Tam

Complete Graphs • Every pair of nodes has an edge between them (every node

Complete Graphs • Every pair of nodes has an edge between them (every node is directly connected to every other node) James Tam

Directed Graphs • Traversal between nodes is not guaranteed to be symmetric - E.

Directed Graphs • Traversal between nodes is not guaranteed to be symmetric - E. g. , map information that represents one way streets James Tam

Undirected Graphs • Each connection is symmetric (a connection in one direction guarantees a

Undirected Graphs • Each connection is symmetric (a connection in one direction guarantees a connection in other direction) James Tam

Weighted Graph • Shows the cost of traversing an edge • Costs of traveling

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. Edmonton 300 Banff 100 Calgary 150 Lethbridge James Tam

Comparing Trees And Graphs Again • A Tree is A More Specific Form Of

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 James Tam

Graph Implementations Graph Adjacency matrix (Array) ADT (general concept) Adjacency list (Linked list) Data

Graph Implementations Graph Adjacency matrix (Array) ADT (general concept) Adjacency list (Linked list) Data structure (specific) James Tam

Adjacency Matrix: Array Implementation A A D G B C D E F G

Adjacency Matrix: Array Implementation A A D G B C D E F G H I A B B E H C D E C F I F G ADT: Graph H I Data structure: A 2 D square array • No rows = no columns = no. of nodes in the graph James Tam

Possible Array Implementations A A C D E T T T A T B

Possible Array Implementations A A C D E T T T A T B B C F C T T G B C D 1 1 E F T E T F T G H T T A 2 D array of boolean values G H 1 1 1 1 H I I 1 D T E I I T D F G H A B 1 1 A 2 D array of integer values James Tam

A Linked List Implementation Of A Graph A D G B E H C

A Linked List Implementation Of A Graph A D G B E H C F I James Tam

The List Of Edges Must Be Dynamic 1 A BDE B E C B

The List Of Edges Must Be Dynamic 1 A BDE B E C B D G E FH F CH G H H I I F 1 Some sort of resizable list is needed e. g. , a linked list or an array that can change in size James Tam

An Outline For A Node class Node { private data. Type data; private boolean

An Outline For A Node class Node { private data. Type data; private boolean visited; Dynamic list of connections; : : : } James Tam

Graph Traversals • Breadth first • Depth first James Tam

Graph Traversals • Breadth first • Depth first James Tam

Breadth-First Traversals • Visit a node (N) • Visit all of the nodes that

Breadth-First Traversals • Visit a node (N) • Visit all of the nodes that node N refers to before following the second level of references 1 st 2 nd 4 th L 2 (a) L 1(a) N L 1 (b) 3 rd First level of references Second level of references : James Tam

Algorithm For Breadth-First Traversals • In a fashion that is similar to breadth first

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. breadth. First (node) { Queue node. List = new Queue () Node temp Mark node as visited and display node. List. enqueue(node) James Tam

Algorithm For Breadth-First Traversals (2) while (queue. is. Empty() == false) { temp =

Algorithm For Breadth-First Traversals (2) while (queue. is. Empty() == false) { temp = node. List. dequeue () for (each unvisisted node u. Node that is adjacent to temp) { Mark u. Node as visited display u. Node node. List. enqueue(u. Node) } } } James Tam

First Example Of A Breadth First Traversal First level Second level u Fourth level

First Example Of A Breadth First Traversal First level Second level u Fourth level r Starting point w x t q Third level v s James Tam

Second Example Of A Breadth-First Traversal Starting point A D G B E H

Second Example Of A Breadth-First Traversal Starting point A D G B E H C F I Q: What order do you get for a breadth-first traversal if the starting point is node E? James Tam

Depth-First Traversals • Visit a node • Completely follow the series of references for

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 1 st 2 nd 3 rd L 1(a) N L 1 (b) L 2 (a) : James Tam

Algorithm For Depth-First Traversals • Typically recursion is used (requires backtracking and the use

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. depth. First (node) { Display node Mark node as visited for (each unvisited node (u. Node) that is adjacent to node) depth. First (node) } James Tam

First Example Of A Depth First Traversal v w u x t q r

First Example Of A Depth First Traversal v w u x t q r Starting point s James Tam

Second Example Of A Depth-First Traversal Starting point A D G B E H

Second Example Of A Depth-First Traversal Starting point A D G B E H C F I Q: What order do you get for a depth-first traversal if the starting point is node E? James Tam

You Should Now Know • What is a graph • Common graph definitions •

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 James Tam

Sources Of Lecture Material • “Data Structures and Abstractions with Java” by Frank M.

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/ James Tam