CS201: Data Structures and Discrete Mathematics I

Slides:



Advertisements
Similar presentations
©Brooks/Cole, 2003 Chapter 12 Abstract Data Type.
Advertisements

Graphs Chapter 20 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013.
Chapter 8, Part I Graph Algorithms.
Data Structures Using C++
CS202 - Fundamental Structures of Computer Science II
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 21: Graphs.
Lists A list is a finite, ordered sequence of data items. Two Implementations –Arrays –Linked Lists.
© 2006 Pearson Addison-Wesley. All rights reserved14 B-1 Chapter 14 (continued) Graphs.
Graphs Chapter 20 Data Structures and Problem Solving with C++: Walls and Mirrors, Frank Carrano, © 2012.
Important Problem Types and Fundamental Data Structures
Discrete Mathematics Lecture 9 Alexander Bukharovich New York University.
May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices.
Chapter 14 Graphs. © 2004 Pearson Addison-Wesley. All rights reserved Terminology G = {V, E} A graph G consists of two sets –A set V of vertices,
May 1, 2002Applied Discrete Mathematics Week 13: Graphs and Trees 1News CSEMS Scholarships for CS and Math students (US citizens only) $3,125 per year.
Binary Trees, Binary Search Trees RIZWAN REHMAN CENTRE FOR COMPUTER STUDIES DIBRUGARH UNIVERSITY.
Chapter 12 Abstract Data Type. Understand the concept of an abstract data type (ADT). Understand the concept of a linear list as well as its operations.
Graphs. Graphs Similar to the graphs you’ve known since the 5 th grade: line graphs, bar graphs, etc., but more general. Those mathematical graphs are.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 13: Graphs Data Abstraction & Problem Solving with C++
Rooted Tree a b d ef i j g h c k root parent node (self) child descendent leaf (no children) e, i, k, g, h are leaves internal node (not a leaf) sibling.
COSC 2007 Data Structures II
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-1 Chapter 14 Graphs.
Graphs Upon completion you will be able to:
Chapter 20: Graphs. Objectives In this chapter, you will: – Learn about graphs – Become familiar with the basic terminology of graph theory – Discover.
Chapter 11. Chapter Summary  Introduction to trees (11.1)  Application of trees (11.2)  Tree traversal (11.3)  Spanning trees (11.4)
Lecture #13. Topics 1.The Graph Abstract Data Type. 2.Graph Representations. 3.Elementary Graph Operations.
1 GRAPHS – Definitions A graph G = (V, E) consists of –a set of vertices, V, and –a set of edges, E, where each edge is a pair (v,w) s.t. v,w  V Vertices.
© 2006 Pearson Addison-Wesley. All rights reserved14 B-1 Chapter 14 (continued) Graphs.
Graphs Spring 2016CS202 - Fundamental Structures of Computer Science II1 Initially prepared by Dr. Ilyas Cicekli; improved by various Bilkent CS202 instructors.
BCA-II Data Structure Using C Submitted By: Veenu Saini
Data Structures & Algorithm Analysis lec(8):Graph T. Souad alonazi
Graphs A New Data Structure
Chapter 12 Abstract Data Type.
IOI/ACM ICPC Training 4 June 2005.
Graphs Chapter 20.
Non Linear Data Structure
CS202 - Fundamental Structures of Computer Science II
CSCE 210 Data Structures and Algorithms
CS212: Data Structures and Algorithms
Unit 10 Graphs (1) King Fahd University of Petroleum & Minerals
Data Structures 13th Week
Chapter 5 : Trees.
Csc 2720 Instructor: Zhuojun Duan
CS202 - Fundamental Structures of Computer Science II
12. Graphs and Trees 2 Summary
Trees Another Abstract Data Type (ADT)
CMSC 341 Introduction to Trees.
Introduction to Graphs
Binary Trees, Binary Search Trees
Depth-First Search.
Introduction to Trees IT12112 Lecture 05.
I206: Lecture 15: Graphs Marti Hearst Spring 2012.
Graphs.
CS202 - Fundamental Structures of Computer Science II
CS120 Graphs.
Graphs Chapter 13.
Trees Another Abstract Data Type (ADT)
Graphs Chapter 11 Objectives Upon completion you will be able to:
Graphs.
What is a Graph? a b c d e V= {a,b,c,d,e} E= {(a,b),(a,c),(a,d),
Trees Another Abstract Data Type (ADT)
Chapter 11 Graphs.
Spanning Trees Longin Jan Latecki Temple University based on slides by
Binary Trees, Binary Search Trees
Trees.
Chapter 14 Graphs © 2006 Pearson Addison-Wesley. All rights reserved.
Important Problem Types and Fundamental Data Structures
Chapter 14 Graphs © 2011 Pearson Addison-Wesley. All rights reserved.
Binary Trees, Binary Search Trees
GRAPH – Definitions A graph G = (V, E) consists of
INTRODUCTION A graph G=(V,E) consists of a finite non empty set of vertices V , and a finite set of edges E which connect pairs of vertices .
Presentation transcript:

CS201: Data Structures and Discrete Mathematics I Introduction to trees and graphs 2018/9/21 CS201

Trees 2018/9/21 CS201

What is a tree? Trees are structures used to represent hierarchical relationship Each tree consists of nodes and edges Each node represents an object Each edge represents the relationship between two nodes. node edge 2018/9/21 CS201

Some applications of Trees Organization Chart Expression Tree President + VP Marketing VP Personnel * 5 3 2 Director Customer Relation Director Sales 2018/9/21 CS201

Terminology I For any two nodes u and v, if there is an edge pointing from u to v, u is called the parent of v while v is called the child of u. Such edge is denoted as (u, v). In a tree, there is exactly one node without parent, which is called the root. The nodes without children are called leaves. root u u: parent of v v: child of u v leaves 2018/9/21 CS201

Terminology II In a tree, the nodes without children are called leaves. Otherwise, they are called internal nodes. internal nodes leaves 2018/9/21 CS201

Terminology III If two nodes have the same parent, they are siblings. A node u is an ancestor of v if u is parent of v or parent of parent of v or … A node v is a descendent of u if v is child of v or child of child of v or … u v w x v and w are siblings u and v are ancestors of x v and x are descendents of u 2018/9/21 CS201

Terminology IV A subtree is any node together with all its descendants. v T A subtree of T 2018/9/21 CS201

Terminology V height=4 n Level of a node n: number of nodes on the path from root to node n Height of a tree: maximum level among all of its node n Level 1 Level 2 Level 3 Level 4 height=4 2018/9/21 CS201

Binary Tree Binary Tree: Tree in which every node has at most 2 children Left child of u: the child on the left of u Right child of u: the child on the right of u u x y z w v x: left child of u y: right child of u w: right child of v z: left child of w 2018/9/21 CS201

Full binary tree If T is empty, T is a full binary tree of height 0. If T is not empty and of height h >0, T is a full binary tree if both subtrees of the root of T are full binary trees of height h-1. Full binary tree of height 3 2018/9/21 CS201

Property of binary tree (I) A full binary tree of height h has 2h-1 nodes No. of nodes = 20 + 21 + … + 2(h-1) = 2h – 1 Level 1: 20 nodes Level 2: 21 nodes Level 3: 22 nodes 2018/9/21 CS201

Property of binary tree (II) Consider a binary tree T of height h. The number of nodes of T  2h-1 Reason: you cannot have more nodes than a full binary tree of height h. 2018/9/21 CS201

Property of binary tree (III) The minimum height of a binary tree with n nodes is log(n+1) By property (II), n  2h-1 Thus, 2h  n+1 That is, h  log2 (n+1) 2018/9/21 CS201

Binary Tree ADT binary tree setElem getElem setLeft, setRight getLeft, getRight isEmpty, isFull, isComplete makeTree 2018/9/21 CS201

Representation of a Binary Tree An array-based representation A reference-based representation 2018/9/21 CS201

An array-based representation nodeNum item leftChild rightChild d 1 2 b 3 4 f 5 -1 a c e 6 ? 7 8 9 ... ..... .... –1: empty tree root d free b f 6 a c e 2018/9/21 CS201

Reference Based Representation NULL: empty tree left right element You can code this with a class of three fields: Object element; BinaryNode left; BinaryNode right; d b f a c d b f a c 2018/9/21 CS201

Tree Traversal Given a binary tree, we may like to do some operations on all nodes in a binary tree. For example, we may want to double the value in every node in a binary tree. To do this, we need a traversal algorithm which visits every node in the binary tree. 2018/9/21 CS201

Ways to traverse a tree There are three main ways to traverse a tree: Pre-order: (1) visit node, (2) recursively visit left subtree, (3) recursively visit right subtree In-order: (1) recursively visit left subtree, (2) visit node, (3) recursively right subtree Post-order: (1) recursively visit left subtree, (2) recursively visit right subtree, (3) visit node Level-order: Traverse the nodes level by level In different situations, we use different traversal algorithm. 2018/9/21 CS201

Examples for expression tree By pre-order, (prefix) + * 2 3 / 8 4 By in-order, (infix) 2 * 3 + 8 / 4 By post-order, (postfix) 2 3 * 8 4 / + By level-order, + * / 2 3 8 4 Note 1: Infix is what we read! Note 2: Postfix expression can be computed efficiently using stack + * / 2 3 8 4 2018/9/21 CS201

Pre-order Algorithm pre-order(BTree x) If (x is not empty) { print x.getItem(); // you can do other things! pre-order(x.getLeftChild()); pre-order(x.getRightChild()); } 2018/9/21 CS201

Pre-order example a b c d a b d c Pre-order(a); Print a; Pre-order(b); Pre-order(c); Print b; Pre-order(d); Pre-order(null); Print d; Pre-order(null); Print c; Pre-order(null); a b c d a b d c 2018/9/21 CS201

Time complexity of Pre-order Traversal For every node x, we will call pre-order(x) one time, which performs O(1) operations. Thus, the total time = O(n). 2018/9/21 CS201

In-order and post-order Algorithm in-order(BTree x) If (x is not empty) { in-order(x.getLeftChild()); print x.getItem(); // you can do other things! in-order(x.getRightChild()); } Algorithm post-order(BTree x) post-order(x.getLeftChild()); post-order(x.getRightChild()); 2018/9/21 CS201

In-order example a b c d d b a c In-order(a); In-order(b); Print a; In-order(c); In-order(d); Print b; In-order(null); In-order(null); Print d; In-order(null); Print c; a b c d d b a c 2018/9/21 CS201

Post-order example a b c d d b c a Post-order(a); Post-order(b); Post-order(c); Print a; Post-order(d); Post-order(null); Print b; Post-order(null); Print d; Post-order(null); Print c; a b c d d b c a 2018/9/21 CS201

Time complexity for in-order and post-order Similar to pre-order traversal, the time complexity is O(n). 2018/9/21 CS201

Level-order Level-order traversal requires a queue! Algorithm level-order(BTree t) Queue Q = new Queue(); BTree n; Q.enqueue(t); // insert pointer t into Q while (! Q.empty()){ n = Q.dequeue(); //remove next node from the front of Q if (!n.isEmpty()){ print n.getItem(); // you can do other things Q.enqueue(n.getLeft()); // enqueue left subtree on rear of Q Q.enqueue(n.getRight()); // enqueue right subtree on rear of Q }; 2018/9/21 CS201

Time complexity of Level-order traversal Each node will enqueue and dequeue one time. For each node dequeued, it only does one print operation! Thus, the time complexity is O(n). 2018/9/21 CS201

General tree implementation F D C B E struct TreeNode { Object element TreeNode *firstChild TreeNode *nextsibling } because we do not know how many children a node has in advance. Traversing a general tree is similar to traversing a binary tree 2018/9/21 CS201

Summary We have discussed the tree data-structure. Binary tree vs general tree Binary tree ADT Can be implemented using arrays or references Tree traversal Pre-order, in-order, post-order, and level-order 2018/9/21 CS201

Graphs 2018/9/21 CS201

What is a graph? Graphs represent the relationships among data items A graph G consists of a set V of nodes (vertices) a set E of edges: each edge connects two nodes Each node represents an item Each edge represents the relationship between two items node edge 2018/9/21 CS201

Examples of graphs Molecular Structure Computer Network H Server 1 Terminal 1 H C H Terminal 2 H Server 2 Other examples: electrical and communication networks, airline routes, flow chart, graphs for planning projects 2018/9/21 CS201

Formal Definition of graph The set of nodes is denoted as V For any nodes u and v, if u and v are connected by an edge, such edge is denoted as (u, v) The set of edges is denoted as E A graph G is defined as a pair (V, E) v (u, v) u 2018/9/21 CS201

Adjacent Two nodes u and v are said to be adjacent if (u, v)  E v u and v are adjacent v and w are not adjacent 2018/9/21 CS201

Path and simple path A path from v1 to vk is a sequence of nodes v1, v2, …, vk that are connected by edges (v1, v2), (v2, v3), …, (vk-1, vk) A path is called a simple path if every node appears at most once. v2 v3 v1 - v2, v3, v4, v2, v1 is a path - v2, v3, v4, v5 is a path, also it is a simple path v5 v4 2018/9/21 CS201

Cycle and simple cycle A cycle is a path that begins and ends at the same node A simple cycle is a cycle if every node appears at most once, except for the first and the last nodes v2 v3 v1 v2, v3, v4, v5 , v3, v2 is a cycle v2, v3, v4, v2 is a cycle, it is also a simple cycle v5 v4 2018/9/21 CS201

Connected graph A graph G is connected if there exists path between every pair of distinct nodes; otherwise, it is disconnected v2 v3 v1 v5 v4 This is a connected graph because there exists path between every pair of nodes 2018/9/21 CS201

Example of disconnected graph v7 v3 v8 v1 v2 v5 v4 v6 v9 This is a disconnected graph because there does not exist path between some pair of nodes, says, v1 and v7 2018/9/21 CS201

Connected component v2 v7 v8 v3 v1 v5 v4 v6 v9 If a graph is disconnect, it can be partitioned into a number of graphs such that each of them is connected. Each such graph is called a connected component. v2 v7 v8 v3 v1 v5 v4 v6 v9 2018/9/21 CS201

Complete graph A graph is complete if each pair of distinct nodes has an edge Complete graph with 3 nodes Complete graph with 4 nodes 2018/9/21 CS201

Subgraph A subgraph of a graph G =(V, E) is a graph H = (U, F) such that U  V and F  E. v2 v2 v3 v3 v1 v5 v5 v4 v4 G H 2018/9/21 CS201

Weighted graph If each edge in G is assigned a weight, it is called a weighted graph Chicago New York 1000 3500 2000 Houston 2018/9/21 CS201

Directed graph (digraph) All previous graphs are undirected graph If each edge in E has a direction, it is called a directed edge A directed graph is a graph where every edges is a directed edge Chicago New York 1000 Directed edge 2000 3500 Houston 2018/9/21 CS201

More on directed graph If (x, y) is a directed edge, we say y is adjacent to x y is successor of x x is predecessor of y In a directed graph, directed path, directed cycle can be defined similarly x y 2018/9/21 CS201

Multigraph A graph cannot have duplicate edges. Multigraph allows multiple edges and self edge (or loop). Multiple edge Self edge 2018/9/21 CS201

Property of graph A undirected graph that is connected and has no cycle is a tree. A tree with n nodes have exactly n-1 edges. A connected undirected graph with n nodes must have at least n-1 edges. Not too useful!! 2018/9/21 CS201

Implementing Graph Adjacency matrix Adjacency list Represent a graph using a two-dimensional array Adjacency list Represent a graph using n linked lists where n is the number of vertices 2018/9/21 CS201

Adjacency matrix for directed graph Matrix[i][j] = 1 if (vi, vj)E 0 if (vi, vj)E 1 2 3 4 5 v1 v2 v3 v4 v5 v1 v4 v3 v5 v2 G 2018/9/21 CS201

Adjacency matrix for weighted undirected graph Matrix[i][j] = w(vi, vj) if (vi, vj)E or (vj, vi)E ∞ otherwise 1 2 3 4 5 v1 v2 v3 v4 v5 ∞ 7 8 v2 v3 v1 2 5 4 3 7 8 v5 v4 G 2018/9/21 CS201

Adjacency list for directed graph 1 v1  v2 2 v4 3 v3 4 5 v5 v1 v4 v3 v5 v2 G 2018/9/21 CS201

Adjacency list for weighted undirected graph v1 v4 v3 v5 v2 G 5 2 3 7 8 4 1 v1  v2(5) 2 v2 v1(5) v3(2) v4(4) 3 v3 v2(2) v4(3) v5(7) 4 v4 v2(4) v3(3) v5(8) 5 v5 v3(7) v4(8) 2018/9/21 CS201

Pros and Cons Adjacency matrix Adjacency list Allows us to determine whether there is an edge from node i to node j in O(1) time Adjacency list Allows us to find all nodes adjacent to a given node j efficiently If the graph is sparse, adjacency list requires less space 2018/9/21 CS201

Problems related to Graph Graph Traversal Topological Sort Spanning Tree Minimum Spanning Tree Shortest Path 2018/9/21 CS201

Graph Traversal Algorithm To traverse a tree, we use tree traversal algorithms like pre-order, in-order, and post-order to visit all the nodes in a tree Similarly, graph traversal algorithm tries to visit all the nodes it can reach. If a graph is disconnected, a graph traversal that begins at a node v will visit only a subset of nodes, that is, the connected component containing v. 2018/9/21 CS201

Two basic traversal algorithms Two basic graph traversal algorithms: Depth-first-search (DFS) After visit node v, DFS strategy proceeds along a path from v as deeply into the graph as possible before backing up Breadth-first-search (BFS) After visit node v, BFS strategy visits every node adjacent to v before visiting any other nodes 2018/9/21 CS201

Depth-first search (DFS) DFS strategy looks similar to pre-order. From a given node v, it first visits itself. Then, recursively visit its unvisited neighbours one by one. DFS can be defined recursively as follows. Algorithm dfs(v) print v; // you can do other things! mark v as visited; for (each unvisited node u adjacent to v) dfs(u); 2018/9/21 CS201

DFS example x x x x x Start from v3 v3 v2 v2 v3 v1 v1 v4 v5 v4 G v5 1 2018/9/21 CS201

Non-recursive version of DFS algorithm Algorithm dfs(v) s.createStack(); s.push(v); mark v as visited; while (!s.isEmpty()) { let x be the node on the top of the stack s; if (no unvisited nodes are adjacent to x) s.pop(); // blacktrack else { select an unvisited node u adjacent to x; s.push(u); mark u as visited; } 2018/9/21 CS201

Non-recursive DFS example visit stack v3 v2 v3, v2 v1 v3, v2, v1 backtrack v4 v3, v2, v4 v5 v3, v2, v4 , v5 empty v2 v3 v1 x x x x x v5 v4 G 2018/9/21 CS201

Breadth-first search (BFS) BFS strategy looks similar to level-order. From a given node v, it first visits itself. Then, it visits every node adjacent to v before visiting any other nodes. 1. Visit v 2. Visit all v’s neigbours 3. Visit all v’s neighbours’ neighbours … Similar to level-order, BFS is based on a queue. 2018/9/21 CS201

Algorithm for BFS Algorithm bfs(v) q.createQueue(); q.enqueue(v); mark v as visited; while(!q.isEmpty()) { w = q.dequeue(); for (each unvisited node u adjacent to w) { q.enqueue(u); mark u as visited; } 2018/9/21 CS201

BFS example x x x x x v5 v2 v3 v1 v3 v4 v4 v2 v5 G v1 Start from v5 Visit Queue (front to back) v5 empty v3 v4 v3, v4 v2 v4, v2 v1 1 v5 v1 v4 v3 v5 v2 G v3 2 v4 3 x x x v2 4 x x v1 5 2018/9/21 CS201

Topological order b d a c e Consider the prerequisite structure for courses: Each node x represents a course x (x, y) represents that course x is a prerequisite to course y Note that this graph should be a directed graph without cycles (called a directed acyclic graph). A linear order to take all 5 courses while satisfying all prerequisites is called a topological order. E.g. a, c, b, e, d c, a, b, e, d b d e c a 2018/9/21 CS201

Topological sort Arranging all nodes in the graph in a topological order Algorithm topSort n = |V|; for i = 1 to n { select a node v that has no successor; aList.add(1, v); delete node v and its edges from the graph; } return aList; 2018/9/21 CS201

Example b d e c a b e c a b c a b a a d has no successor! Choose d! Both b and e have no successor! Choose e! b e c a Both b and c have no successor! Choose c! b c a Only b has no successor! Choose b! b a a Choose a! The topological order is a,b,c,e,d 2018/9/21 CS201

Topological sort algorithm 2 This algorithm is based on DFS Algorithm topSort2 s.createStack(); for (all nodes v in the graph) { if (v has no predecessors) { s.push(v); mark v as visited; } while (!s.isEmpty()) { let x be the node on the top of the stack s; if (no unvisited nodes are adjacent to x) { // i.e. x has no unvisited successor aList.add(1, x); s.pop(); // blacktrack } else { select an unvisited node u adjacent to x; s.push(u); mark u as visited; return aList; 2018/9/21 CS201

Spanning Tree Given a connected undirected graph G, a spanning tree of G is a subgraph of G that contains all of G’s nodes and enough of its edges to form a tree. v2 v3 v1 Tell the students some application of spanning tree. v5 v4 Spanning tree Spanning tree is not unique! 2018/9/21 CS201

DFS spanning tree Generate the spanning tree edge during the DFS traversal. Algorithm dfsSpanningTree(v) mark v as visited; for (each unvisited node u adjacent to v) { mark the edge from u to v; dfsSpanningTree(u); } Similar to DFS, the spanning tree edges can be generated based on BFS traversal. 2018/9/21 CS201

Example of generating spanning tree based on DFS stack v3 v2 v3, v2 v1 v3, v2, v1 backtrack v4 v3, v2, v4 v5 v3, v2, v4 , v5 empty v2 v3 v1 x x x x x v5 v4 G 2018/9/21 CS201

Minimum Spanning Tree Consider a connected undirected graph where Each node x represents a country x Each edge (x, y) has a number which measures the cost of placing telephone line between country x and country y Problem: connecting all countries while minimizing the total cost Solution: find a spanning tree with minimum total weight, that is, minimum spanning tree 2018/9/21 CS201

Formal definition of minimum spanning tree Given a connected undirected graph G. Let T be a spanning tree of G. cost(T) = eTweight(e) The minimum spanning tree is a spanning tree T which minimizes cost(T) v1 v4 v3 v5 v2 5 2 3 7 8 4 Minimum spanning tree 2018/9/21 CS201

Prim’s algorithm (I) v2 v1 v4 v3 v5 5 2 3 7 8 4 v2 v1 v4 v3 v5 5 2 3 7 Start from v5, find the minimum edge attach to v5 v2 v1 v4 v3 v5 5 2 3 7 8 4 Find the minimum edge attach to v3 and v5 v2 v1 v4 v3 v5 5 2 3 7 8 4 Find the minimum edge attach to v2, v3 and v5 v2 v1 v4 v3 v5 5 2 3 7 8 4 v2 v1 v4 v3 v5 5 2 3 7 8 4 v2 v1 v4 v3 v5 5 2 3 7 8 4 Find the minimum edge attach to v2, v3 , v4 and v5 2018/9/21 CS201

Prim’s algorithm (II) Algorithm PrimAlgorithm(v) Mark node v as visited and include it in the minimum spanning tree; while (there are unvisited nodes) { find the minimum edge (v, u) between a visited node v and an unvisited node u; mark u as visited; add both v and (v, u) to the minimum spanning tree; } 2018/9/21 CS201

Shortest path Consider a weighted directed graph Each node x represents a city x Each edge (x, y) has a number which represent the cost of traveling from city x to city y Problem: find the minimum cost to travel from city x to city y Solution: find the shortest path from x to y 2018/9/21 CS201

Formal definition of shortest path Given a weighted directed graph G. Let P be a path of G from x to y. cost(P) = ePweight(e) The shortest path is a path P which minimizes cost(P) v2 v1 v4 v3 v5 5 2 3 4 8 Shortest Path 2018/9/21 CS201

Dijkstra’s algorithm Consider a graph G, each edge (u, v) has a weight w(u, v) > 0. Suppose we want to find the shortest path starting from v1 to any node vi Let VS be a subset of nodes in G Let cost[vi] be the weight of the shortest path from v1 to vi that passes through nodes in VS only. 2018/9/21 CS201

Example for Dijkstra’s algorithm v2 v3 v1 2 5 4 3 4 8 v5 v4 v VS cost[v1] cost[v2] cost[v3] cost[v4] cost[v5] 1 [v1] 5 ∞ 2018/9/21 CS201

Example for Dijkstra’s algorithm v2 v3 v1 2 5 4 3 4 8 v5 v4 v VS cost[v1] cost[v2] cost[v3] cost[v4] cost[v5] 1 [v1] 5 ∞ 2 v2 [v1, v2] 9 2018/9/21 CS201

Example for Dijkstra’s algorithm v2 v3 v1 2 5 4 3 4 8 v5 v4 v VS cost[v1] cost[v2] cost[v3] cost[v4] cost[v5] 1 [v1] 5 ∞ 2 v2 [v1, v2] 9 3 v4 [v1, v2, v4] 12 17 2018/9/21 CS201

Example for Dijkstra’s algorithm v2 v3 v1 2 5 4 3 4 8 v5 v4 v VS cost[v1] cost[v2] cost[v3] cost[v4] cost[v5] 1 [v1] 5 ∞ 2 v2 [v1, v2] 9 3 v4 [v1, v2, v4] 12 17 4 v3 [v1, v2, v4, v3] 16 v5 [v1, v2, v4, v3, v5] 2018/9/21 CS201

Dijkstra’s algorithm Algorithm shortestPath() n = number of nodes in the graph; for i = 1 to n cost[vi] = w(v1, vi); VS = { v1 }; for step = 2 to n { find the smallest cost[vi] s.t. vi is not in VS; include vi to VS; for (all nodes vj not in VS) { if (cost[vj] > cost[vi] + w(vi, vj)) cost[vj] = cost[vi] + w(vi, vj); } 2018/9/21 CS201

Summary Graphs can be used to represent many real-life problems. There are numerous important graph algorithms. We have studied some basic concepts and algorithms. Graph Traversal Topological Sort Spanning Tree Minimum Spanning Tree Shortest Path 2018/9/21 CS201