Programming Abstractions

Slides:



Advertisements
Similar presentations
Problem solving with graph search
Advertisements

CS 206 Introduction to Computer Science II 04 / 01 / 2009 Instructor: Michael Eckmann.
Weighted graphs Example Consider the following graph, where nodes represent cities, and edges show if there is a direct flight between each pair of cities.
CSE 390B: Graph Algorithms Based on CSE 373 slides by Jessica Miller, Ruth Anderson 1.
Chapter 8, Part I Graph Algorithms.
1 Graphs: Traversal Searching/Traversing a graph = visiting the vertices of a graph by following the edges in a systematic way Example: Given a highway.
CS 206 Introduction to Computer Science II 11 / 07 / 2008 Instructor: Michael Eckmann.
Midwestern State University Department of Computer Science Dr. Ranette Halverson CMPS 2433 CHAPTER 4 - PART 2 GRAPHS 1.
CSCI 3160 Design and Analysis of Algorithms Tutorial 2 Chengyu Lin.
CS 206 Introduction to Computer Science II 11 / 05 / 2008 Instructor: Michael Eckmann.
Breadth First Search (BFS) Part 2 COMP171. Graph / Slide 2 Shortest Path Recording * BFS we saw only tells us whether a path exists from source s, to.
CS 206 Introduction to Computer Science II 03 / 30 / 2009 Instructor: Michael Eckmann.
Dijkstra’s Algorithm Slide Courtesy: Uwash, UT 1.
ECE 250 Algorithms and Data Structures Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,
1 Shortest Path Calculations in Graphs Prof. S. M. Lee Department of Computer Science.
1 GRAPHS - ADVANCED APPLICATIONS Minimim Spanning Trees Shortest Path Transitive Closure.
CS 146: Data Structures and Algorithms July 21 Class Meeting
Chapter 9 – Graphs A graph G=(V,E) – vertices and edges
Dijkstras Algorithm Named after its discoverer, Dutch computer scientist Edsger Dijkstra, is an algorithm that solves the single-source shortest path problem.
CS106X – Programming Abstractions in C++ Cynthia Bailey Lee BFS animation slides by Keith Schwarz CS2 in C++ Peer Instruction Materials by Cynthia Bailey.
COSC 2007 Data Structures II Chapter 14 Graphs III.
Representing and Using Graphs
Minimum Spanning Trees CSE 2320 – Algorithms and Data Structures Vassilis Athitsos University of Texas at Arlington 1.
Common final examinations When: Wednesday, 12/11, 3:30-5:30 PM Where: Ritter Hall - Walk Auditorium 131 CIS 1166 final When: Wednesday, 12/11, 5:45-7:45.
Dijkstra’s Algorithm: single source shortest paths David Kauchak cs62 Spring 2010.
10 Copyright © William C. Cheng Data Structures - CSCI 102 Graph Terminology A graph consists of a set of Vertices and a set of Edges C A B D a c b d e.
CS106X – Programming Abstractions in C++ Cynthia Bailey Lee Dijkstra’s animation slides by Keith Schwarz CS2 in C++ Peer Instruction Materials by Cynthia.
Programming Abstractions Cynthia Lee CS106X. Upcoming Topics Graphs! 1.Basics  What are they? How do we represent them? 2.Theorems  What are some things.
Chapter 20: Graphs. Objectives In this chapter, you will: – Learn about graphs – Become familiar with the basic terminology of graph theory – Discover.
Programming Abstractions Cynthia Lee CS106B. Upcoming Topics Graphs! 1.Basics  What are they? How do we represent them? 2.Theorems  What are some things.
CSE 373: Data Structures and Algorithms Lecture 21: Graphs V 1.
Graphs A New Data Structure
Review: Tree search Initialize the frontier using the starting state
Graphs Representation, BFS, DFS
CSE 373 Topological Sort Graph Traversals
Programming Abstractions
Programming Abstractions
Minimum Spanning Trees
Programming Abstractions
CSC317 Graph algorithms Why bother?
Cse 373 May 8th – Dijkstras.
Lesson Objectives Aims Understand the following “standard algorithms”:
CS 106B Homework 7: Trailblazer
COMP 6/4030 ALGORITHMS Prim’s Theorem 10/26/2000.
Common final examinations
I206: Lecture 15: Graphs Marti Hearst Spring 2012.
Short paths and spanning trees
Programming Abstractions
CSE 421: Introduction to Algorithms
Graphs Representation, BFS, DFS
Graphs Chapter 13.
Spanning Trees.
CSE 373: Data Structures and Algorithms
Graphs.
Outline This topic covers Prim’s algorithm:
Chapter 11 Graphs.
CSE 421: Introduction to Algorithms
Minimum Spanning Trees
Slide Courtesy: Uwash, UT
CSE 373: Data Structures and Algorithms
Algorithms Searching in a Graph.
CSE332: Data Abstractions Lecture 17: Shortest Paths
CSE 373 Data Structures and Algorithms
Slide Courtesy: Uwash, UT
CSE 373: Data Structures and Algorithms
Richard Anderson Spring 2016
Algorithm Course Dr. Aref Rashad
Chapter 9: Graphs Shortest Paths
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:

Programming Abstractions CS106X Cynthia Lee

Graphs Topics Graphs! Basics What are they? How do we represent them? Theorems What are some things we can prove about graphs? Breadth-first search on a graph Spoiler: just a very, very small change to tree version Dijkstra’s shortest paths algorithm Spoiler: just a very, very small change to BFS A* shortest paths algorithm Spoiler: just a very, very small change to Dijkstra’s Minimum Spanning Tree Kruskal’s algorithm

Breadth-First Search Graph algorithms

BFS is useful for finding the shortest path between two nodes. Map Example: What is the shortest way to go from Yoesmite (F) to Palo Alto (J)?

Breadth-First Search Yoesmite TO START: Color all nodes GREY Queue is empty Yoesmite E E F F G G H H Palo Alto I I J J K K L L

Breadth-First Search TO START (2): Enqueue the desired start node Note that anytime we enqueue a node, we mark it YELLOW E E F F G G H H I I J J K K L L F

Mark current node GREEN Breadth-First Search A A B B C C D D LOOP PROCEDURE: Dequeue a node Mark current node GREEN Set current node’s GREY neighbors’ parent pointers to current node, then enqueue them (remember: set them YELLOW) F E E F F G G H H I I J J K K L L

Breadth-First Search You predict the next slide! K’s neighbors F,G,H are yellow and in the queue and their parents are pointing to K K’s neighbors G,H are yellow and in the queue and their parents are pointing to K K’s neighbors G,H are yellow and in the queue Other/none/more A A B B C C D D E E F F G G H H K I I J J K K L L C H I

Breadth-First Search A A B B C C D D E E F F G G H H K I I J J K K L L

Breadth-First Search A A B B C C D D E E F F G G H H K I I J J K K L L

Breadth-First Search C A A B B C C D D E E F F G G H H I I J J K K L L

Breadth-First Search C A A B B C C D D E E F F G G H H I I J J K K L L

Breadth-First Search A A B B C C D D H E E F F G G H H I I J J K K L L

Breadth-First Search A A B B C C D D H E E F F G G H H I I J J K K L L

Breadth-First Search A A B B C C D D E E F F G G H H I I J J K K L L I

Breadth-First Search A A B B C C D D E E F F G G H H I I I J J K K L L

Breadth-First Search A A B B C C D D E E F F G G H H I I I J J K K L L

Breadth-First Search A A B B C C D D E E F F G G H H I I I J J K K L L

Breadth-First Search A A B B C C D D G E E F F G G H H I I J J K K L L

Breadth-First Search A A B B C C D D G E E F F G G H H I I J J K K L L

Breadth-First Search A A B B C C D D E E F F G G H H I I J J K K L L L

Breadth-First Search A A B B C C D D E E F F G G H H I I J J K K L L L

Breadth-First Search A A B B C C D D E E F F G G H H I I J J K K L L L

Breadth-First Search A A B B C C D D E E F F G G H H J I I J J K K L L

Breadth-First Search A A B B C C D D E E F F G G H H J I I J J K K L L

Breadth-First Search Done! Now we know that to go from Yoesmite (F) to Palo Alto (J), we should go: F->E->I->L->J (4 edges) (note we follow the parent pointers backwards) A A B B C C D D E E F F G G H H J I I J J K K L L

What’s left is a tree-like structure of ‘parent pointers’ Breadth-First Search A A B B C C D D THINGS TO NOTICE: We used a queue What’s left is a tree-like structure of ‘parent pointers’ If you follow the parent pointers from the desired end point, you will get back to the start point, and it will be the shortest way to do that E E F F G G H H I I J J K K L L

Quick question about efficiency… Let’s say that you have an extended family with somebody in every city in the western U.S.

Quick question about efficiency… You’re all going to fly to Yosemite for a family reunion, and then everyone will rent a car and drive home, and you’ve been tasked with making custom Yosemite-to-home driving directions for everyone.

Quick question about efficiency… You calculated the shortest path for yourself to return home from the reunion (Yosemite to Palo Alto) and let’s just say that it took time X = O((|E| + |V|)log|V|) With respect to the number of cities |V|, and the number of edges or road segments |E| How long will it take you, in total, to calculate the shortest path for you and all of your relatives? O(|V|*X) O(|E|*|V|* X) X Other/none/more

Breadth-First Search THINGS TO NOTICE: (4) We now have the answer to the question “What is the shortest path to you from F?” for every single node in the graph!! E E F F G G H H I I J J K K L L

Dijkstra’s Shortest Paths (Like Breadth-first Search, but takes into account weight/distance between nodes)

Edsger Dijkstra THE multiprogramming system (operating system) 1930-2002 THE multiprogramming system (operating system) Layers of abstraction!! Complier for a language that can do recursion Dining Philosopher’s Problem (resource contention and deadlock) Dijkstra’s algorithm “Goto considered harmful” (title given to his letter) This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license. http://en.wikipedia.org/wiki/File:Edsger_Wybe_Dijkstra.jpg

The Shortest Path Problem Suppose that you have a graph representing different locations Each edge has an associated cost (or weight, length, etc) We'll assume costs are nonnegative* Goal: Find the least-cost (or lowest-weight, lowest-length, etc) path from some node u to a node v * else use the Bellman–Ford algorithm

A A 6 B B 3 C C 3 1 1 D D 1 E E 7 F F 9 4 7 G G 2 H H 5 I I

Mark all nodes as gray. Mark the initial node s as yellow and at candidate distance 0. Enqueue s into the priority queue with priority 0. While not all nodes have been visited: Dequeue the lowest-cost node u from the priority queue. Color u green. The candidate distance d that is currently stored for node u is the length of the shortest path from s to u. If u is the destination node t, you have found the shortest path from s to t and are done. For each node v connected to u by an edge of length L: If v is gray: Color v yellow. Mark v's distance as d + L. Set v's parent to be u. Enqueue v into the priority queue with priority d + L. If v is yellow and the candidate distance to v is greater than d + L: Update v's candidate distance to be d + L. Update v's parent to be u. Update v's priority in the priority queue to d + L. Dijkstra's Algorithm

A A 0? 6 B B 3 C C 3 1 2 1 D D 1 E E 7 F F 9 4 7 4 G G 2 H H 5 I I

A A 0? 6 B B 3 C C A 0? 3 1 2 1 D D 1 E E 7 F F 9 4 4 7 G G 2 H H 5 I I

A A 0? 6 B B 3 C C A 0? 3 1 2 1 D D 1 E E 7 F F 9 4 4 7 G G 2 H H 5 I I

A A 0? 6 B B 3 C C 3 1 2 1 D D 1 E E 7 F F 9 4 7 4 G G 2 H H 5 I I

A A 6 B B 3 C C 3 1 2 1 D D 1 E E 7 F F 9 4 7 4 G G 2 H H 5 I I

A A 6 B B 6? 3 C C 3 1 2 1 D D 3? 1 E E 7 F F 9 4 7 4 G G 2 H H 5 I I

A A B B 6? C C D 3? B 6? D D 3? E E F F G G H H I I 6 B B 6? 3 C C D 3? 3 1 1 2 B 6? D D 3? 1 E E 7 F F 9 4 7 4 G G 2 H H 5 I I

A A B B 6? C C D 3? B 6? D D 3? E E F F G G H H I I 6 B B 6? 3 C C D 3? 3 1 1 2 B 6? D D 3? 1 E E 7 F F 9 4 7 4 G G 2 H H 5 I I

A A B B 6? C C D 3? B 6? D D 3? E E F F G G H H I I 6 B B 6? 3 C C D 3? 3 1 1 2 B 6? D D 3? 1 E E 7 F F 9 4 7 4 G G 2 H H 5 I I

A A 6 B B 6? 3 C C B 6? 3 1 1 2 D D 3? 1 E E 7 F F 9 4 4 7 G G 2 H H 5 I I

A A 6 B B 6? 3 C C B 6? 3 1 1 2 D D 3 1 E E 7 F F 9 4 4 7 G G 2 H H 5 I I

A A 6 B 6? B 3 C C B 6? 3 1 1 2 D D 3 1 E 4? E 7 F F 9 4 7 4 G G 12? 2 H H 5 I I

A A 6 B 6? B 3 C C 3 1 1 2 B 6? D D 3 1 E 4? E 7 F F 9 4 7 4 G G 12? 2 H H 5 I I

A A B B 6? C C E 4? B 6? D D 3 E 4? E F F G 12? G G 12? H H I I 6 B B 6? 3 C C E 4? 3 1 1 2 B 6? D D 3 1 E 4? E 7 F F G 12? 9 4 4 7 G G 12? 2 H H 5 I I

A A B B 6? C C E 4? B 6? D D 3 E 4? E F F G 12? G G 12? H H I I 6 B B 6? 3 C C E 4? 3 1 1 2 B 6? D D 3 1 E 4? E 7 F F G 12? 9 4 4 7 G G 12? 2 H H 5 I I

A A B B 6? C C E 4? B 6? D D 3 E 4? E F F G 12? G G 12? H H I I 6 B B 6? 3 C C E 4? 3 1 1 2 B 6? D D 3 1 E 4? E 7 F F G 12? 9 4 4 7 G G 12? 2 H H 5 I I

A A B B 6? C C B 6? G 12? D D 3 E 4? E F F G G 12? H H I I 6 B B 6? 3 C C B 6? 3 1 1 2 G 12? D D 3 1 E 4? E 7 F F 9 4 7 4 G G 12? 2 H H 5 I I

A A B B 6? C C B 6? G 12? D D 3 E 4 E F F G G 12? H H I I 6 B B 6? 3 C C B 6? 3 1 1 2 G 12? D D 3 1 E 4 E 7 F F 9 4 7 4 G G 12? 2 H H 5 I I

A A B 6? B C C B 6? G 12? D D 3 E E 4 F F 11? G G 12? H 8? H I I 6 B 6? B 3 C C B 6? 3 1 1 2 G 12? D D 3 1 E E 4 7 F F 11? 9 4 7 4 G G 12? 2 H 8? H 5 I I

A A B 6? B C C B 6? D D 3 E E 4 F F 11? G 12? G G 12? H H 8? I I 6 B 6? B 3 C C B 6? 3 1 1 2 D D 3 1 E E 4 7 F F 11? G 12? 9 4 7 4 G G 12? 2 H H 8? 5 I I

A A B 6? B C C B 6? H 8? D D 3 E E 4 F F 11? F 11? G 12? G G 12? H H 6 B 6? B 3 C C B 6? 3 1 1 2 H 8? D D 3 1 E E 4 7 F F 11? F 11? G 12? 9 4 7 4 G G 12? 2 H H 8? 5 I I

A A B 6? B C C B 6? H 8? D D 3 E E 4 F F 11? F 11? G 12? G G 12? H H 6 B 6? B 3 C C B 6? 3 1 1 2 H 8? D D 3 1 E E 4 7 F F 11? F 11? G 12? 9 4 7 4 G G 12? 2 H H 8? 5 I I

A A B 5? B C C B 6? H 8? D D 3 E E 4 F F 11? F 11? G 12? G G 12? H H 6 B 5? B 3 C C B 6? 3 1 1 2 H 8? D D 3 1 E E 4 7 F F 11? F 11? G 12? 9 4 7 4 G G 12? 2 H H 8? 5 I I

A A B 5? B C C B 5? H 8? D D 3 E E 4 F F 11? F 11? G 12? G G 12? H H 6 B 5? B 3 C C B 5? 3 1 1 2 H 8? D D 3 1 E E 4 7 F F 11? F 11? G 12? 9 4 7 4 G G 12? 2 H H 8? 5 I I

A A B 5? B C C B 5? H 8? D D 3 E E 4 F F 11? F 11? G 12? G G 12? H H 6 B 5? B 3 C C B 5? 3 1 1 2 H 8? D D 3 1 E E 4 7 F F 11? F 11? G 12? 9 4 7 4 G G 12? 2 H H 8? 5 I I

A A B 5? B C C B 5? H 8? D D 3 E E 4 F F 11? F 11? G 12? G G 12? H H 6 B 5? B 3 C C B 5? 3 1 1 2 H 8? D D 3 1 E E 4 7 F F 11? F 11? G 12? 9 4 7 4 G G 12? 2 H H 8? 5 I I

A A B 5? B C C B 5? H 8? D D 3 E E 4 F F 11? F 11? G 12? G G 12? H H 6 B 5? B 3 C C B 5? 3 1 1 2 H 8? D D 3 1 E E 4 7 F F 11? F 11? G 12? 9 4 7 4 G G 12? 2 H H 8? 5 I I

A A B 5? B C C H 8? F 11? D D 3 E 4 E F F 11? G 12? G G 12? H H 8? I I 6 B 5? B 3 C C H 8? 3 1 1 2 F 11? D D 3 1 E 4 E 7 F F 11? G 12? 9 4 4 7 G G 12? 2 H H 8? 5 I I

A A B 5 B C C H 8? F 11? D D 3 E 4 E F F 11? G 12? G G 12? H H 8? I I 6 B 5 B 3 C C H 8? 3 1 1 2 F 11? D D 3 1 E 4 E 7 F F 11? G 12? 9 4 4 7 G G 12? 2 H H 8? 5 I I

A A B 5 B C 8? C H 8? F 11? D D 3 E E 4 F F 11? G 12? G G 12? H H 8? I 6 B 5 B 3 C 8? C H 8? 3 1 2 1 F 11? D D 3 1 E E 4 7 F F 11? G 12? 9 4 4 7 G G 12? 2 H H 8? 5 I I

A A B 5 B C 8? C H 8? D D 3 E E 4 F 11? F F 11? G 12? G G 12? H H 8? I 6 B 5 B 3 C 8? C H 8? 3 1 2 1 D D 3 1 E E 4 7 F 11? F F 11? G 12? 9 4 7 4 G G 12? 2 H H 8? 5 I I

A A 6 B 5 B 3 C 8? C H 8? 3 1 2 1 C 8? D D 3 1 E E 4 7 F F 11? F 11? G 12? 9 4 7 4 G G 12? 2 H 8? H 5 I I

A A 6 B 5 B 3 C 8? C H 8? 3 1 2 1 C 8? D D 3 1 E E 4 7 F F 11? F 11? G 12? 9 4 7 4 G G 12? 2 H 8? H 5 I I

A A 6 B 5 B 3 C 8? C H 8? 3 1 2 1 C 8? D D 3 1 E E 4 7 F F 11? F 11? G 12? 9 4 7 4 G G 12? 2 H 8? H 5 I I

You predict the next queue state: H,C,F,G,I C,F,G,I C,G,F,I Other/none/ more A A 6 B 5 B 3 C C 8? H 8? 3 1 1 2 C 8? D D 3 1 E E 4 7 F 11? F F 11? G 12? 9 4 7 4 G G 12? 2 H 8? H 5 I I

A A B 5 B C 8? C C 8? F 11? D D 3 E E 4 F F 11? G 12? G G 12? H 8? H I 6 B 5 B 3 C 8? C C 8? 3 1 2 1 F 11? D D 3 1 E E 4 7 F F 11? G 12? 9 4 4 7 G G 12? 2 H 8? H 5 I I

A A B 5 B C 8? C C 8? F 11? D D 3 E E 4 F F 11? G 12? G G 12? H 8 H I 6 B 5 B 3 C 8? C C 8? 3 1 2 1 F 11? D D 3 1 E E 4 7 F F 11? G 12? 9 4 4 7 G G 12? 2 H 8 H 5 I I

A A B B 5 C 8? C C 8? F 11? D D 3 E E 4 F 11? F G 12? G G 12? H H 8? H 6 B B 5 3 C 8? C C 8? 3 1 2 1 F 11? D D 3 1 E E 4 7 F 11? F G 12? 9 4 4 7 G G 12? 2 H H 8? H 8 5 I 13? I

A A 6 B 5 B 3 C C 8? C 8? 3 1 2 1 F 11? D D 3 1 E E 4 7 F 11? F G 12? I 13? 9 4 4 7 G G 12? 2 H H 8? H 8 5 I I 13?

A A 6 B 5 B 3 C C 8? C 8? 3 1 2 1 F 11? D D 3 1 E E 4 7 F 11? F G 12? I 13? 9 4 4 7 G G 12? 2 H H 8? H 8 5 I I 13?

A A 6 B 5 B 3 C C 8? C 8? 3 1 2 1 F 11? D D 3 1 E E 4 7 F 11? F G 12? I 13? 9 4 4 7 G G 10? 2 H H 8? H 8 5 I I 13?

A A 6 B 5 B 3 C C 8? C 8? 3 1 2 1 F 11? D D 3 1 E E 4 7 F 11? F G 10? I 13? 9 4 4 7 G G 10? 2 H H 8? H 8 5 I I 13?

A A 6 B 5 B 3 C C 8? C 8? 3 1 2 1 F 11? D D 3 1 E E 4 7 F 11? F G 10? I 13? 9 4 4 7 G G 10? 2 H H 8? H 8 5 I I 13?

A A 6 B B 5 3 C 8? C C 8? 3 1 2 1 G 10? D D 3 1 E E 4 7 F 11? F F 11? I 13? I 13? 9 4 7 4 G G 10? 2 H 8 H 8? H 5 I I 13?

A A 6 B 5 B 3 C C 8? C 8? 3 1 2 1 G 10? D D 3 1 E E 4 7 F 11? F F 11? I 13? 9 4 4 7 G G 10? 2 H H 8? H 8 5 I I 13?

A A 6 B 5 B 3 C C 8? C 8? 3 1 2 1 G 10? D D 3 1 E E 4 7 F 11? F F 11? I 13? 9 4 4 7 G G 10? 2 H H 8? H 8 5 I I 13?

A A 6 B B 5 3 C 8? C C 8? 3 1 2 1 G 10? D D 3 1 E E 4 7 F 11? F F 11? I 13? 9 4 7 4 G G 10? 2 H H 8 5 I 13? I

A A 6 B B 5 3 C C 8? C 8? 3 1 1 G 10? D D 3 1 E E 4 7 F 11? F F 11? I 13? 9 4 4 7 G G 10? 2 H H 8 5 I 13? I

A A B B 5 C C 8? G 10? F 11? D D 3 E E 4 F 11? F I 13? G G 10? H H 8 I 6 B B 5 3 C C 8? G 10? 3 1 1 F 11? D D 3 1 E E 4 7 F 11? F I 13? 9 4 4 7 G G 10? 2 H H 8 5 I 13? I

A A B B 5 C C 8 G 10? F 11? D D 3 E E 4 F 11? F I 13? G G 10? H H 8 I 6 B B 5 3 C C 8 G 10? 3 1 1 F 11? D D 3 1 E E 4 7 F 11? F I 13? 9 4 4 7 G G 10? 2 H H 8 5 I 13? I

A A B B 5 C C 8 G 10? F 11? D D 3 E E 4 F 11? F I 13? G G 10? H H 8 I 6 B B 5 3 C C 8 G 10? 3 1 1 F 11? D D 3 1 E E 4 7 F 11? F I 13? 9 4 4 7 G G 10? 2 H H 8 5 I 13? I

A A B B 5 C C 8 G 10? F 9? D D 3 E E 4 F 9? F I 13? G G 10? H H 8 I 6 B B 5 3 C C 8 G 10? 3 1 1 F 9? D D 3 1 E E 4 7 F 9? F I 13? 9 4 4 7 G G 10? 2 H H 8 5 I 13? I

A A B B 5 C C 8 G 10? F 9? D D 3 E E 4 F 9? F I 13? G G 10? H H 8 I 6 B B 5 3 C C 8 G 10? 3 1 1 F 9? D D 3 1 E E 4 7 F 9? F I 13? 9 4 4 7 G G 10? 2 H H 8 5 I 13? I

A A B B 5 C C 8 F 9? G 10? D D 3 E E 4 F 9? F I 13? G G 10? H H 8 I 6 B B 5 3 C C 8 F 9? 3 1 1 G 10? D D 3 1 E E 4 7 F 9? F I 13? 9 4 4 7 G G 10? 2 H H 8 5 I 13? I

A A B B 5 C C 8 F 9? G 10? D D 3 E E 4 F 9? F I 13? G G 10? H H 8 I 6 B B 5 3 C C 8 F 9? 3 1 1 G 10? D D 3 1 E E 4 7 F 9? F I 13? 9 4 4 7 G G 10? 2 H H 8 5 I 13? I

A A B B 5 C C 8 F 9? G 10? D D 3 E E 4 F 9? F I 13? G G 10? H H 8 I 6 B B 5 3 C C 8 F 9? 3 1 1 G 10? D D 3 1 E E 4 7 F 9? F I 13? 9 4 4 7 G G 10? 2 H H 8 5 I 13? I

A A B B 5 C 8 C F 9? G 10? D D 3 E E 4 F 9? F I 13? G G 10? H H 8 I 6 B B 5 3 C 8 C F 9? 3 1 2 1 G 10? D D 3 1 E E 4 7 F 9? F I 13? 9 4 7 4 G G 10? 2 H H 8 5 I 13? I

A A B B 5 C 8 C F 9? G 10? D D 3 E E 4 F 9? F I 13? G G 10? H H 8 I 6 B B 5 3 C 8 C F 9? 3 1 2 1 G 10? D D 3 1 E E 4 7 F 9? F I 13? 9 4 7 4 G G 10? 2 H H 8 5 I 13? I

A A B B 5 C 8 C G 10? I 13? D D 3 E 4 E F 9? F G G 10? H H 8 I I 13? 6 B B 5 3 C 8 C G 10? 3 1 1 2 I 13? D D 3 1 E 4 E 7 F 9? F 9 4 7 4 G G 10? 2 H H 8 5 I I 13?

A A B B 5 C 8 C G 10? I 13? D D 3 E 4 E F 9 F G G 10? H H 8 I I 13? 6 B B 5 3 C 8 C G 10? 3 1 1 2 I 13? D D 3 1 E 4 E 7 F 9 F 9 4 7 4 G G 10? 2 H H 8 5 I I 13?

A A B B 5 C 8 C G 10? I 13? D D 3 E 4 E F 9 F G G 10? H H 8 I I 13? 6 B B 5 3 C 8 C G 10? 3 1 1 2 I 13? D D 3 1 E 4 E 7 F 9 F 9 4 7 4 G G 10? 2 H H 8 5 I I 13?

A A B B 5 C 8 C G 10? I 13? D D 3 E 4 E F 9 F G G 10? H H 8 I I 13? 6 B B 5 3 C 8 C G 10? 3 1 1 2 I 13? D D 3 1 E 4 E 7 F 9 F 9 4 7 4 G G 10? 2 H H 8 5 I I 13?

A A B B 5 C 8 C G 10? I 13? D D 3 E 4 E F 9 F G G 10? H H 8 I I 13? 6 B B 5 3 C 8 C G 10? 3 1 1 2 I 13? D D 3 1 E 4 E 7 F 9 F 9 4 7 4 G G 10? 2 H H 8 5 I I 13?

A A B B 5 C 8 C G 10? I 13? D D 3 E 4 E F 9 F G G 10? H H 8 I I 13? 6 B B 5 3 C 8 C G 10? 3 1 1 2 I 13? D D 3 1 E 4 E 7 F 9 F 9 4 7 4 G G 10? 2 H H 8 5 I I 13?

A A B B 5 C 8 C G 10? I 13? D D 3 E 4 E F 9 F G G 10? H H 8 I I 13? 6 B B 5 3 C 8 C G 10? 3 1 1 2 I 13? D D 3 1 E 4 E 7 F 9 F 9 4 7 4 G G 10? 2 H H 8 5 I I 13?

A A 6 B B 5 3 C C 8 I 13? 3 1 1 2 D D 3 1 E E 4 7 F 9 F 9 4 7 4 G G 10? 2 H H 8 5 I 13? I

A A 6 B B 5 3 C C 8 I 13? 3 1 1 2 D D 3 1 E E 4 7 F 9 F 9 4 7 4 G G 10 2 H H 8 5 I 13? I

A A 6 B B 5 3 C C 8 I 13? 3 1 1 2 D D 3 1 E E 4 7 F 9 F 9 4 7 4 G G 10 2 H H 8 5 I 13? I

A A 6 B B 5 3 C C 8 I 13? 3 1 1 2 D D 3 1 E E 4 7 F 9 F 9 4 7 4 G G 10 2 H H 8 5 I 13? I

A A 6 B 5 B 3 C 8 C 3 1 2 1 D D 3 1 E E 4 7 F 9 F 9 4 4 7 G G 10 2 H 8 H 5 I 13? I

A A 6 B 5 B 3 C 8 C 3 1 2 1 D D 3 1 E E 4 7 F 9 F 9 4 4 7 G G 10 2 H 8 H 5 I 13 I

A A 6 B 5 B 3 C 8 C 3 1 2 1 D D 3 1 E E 4 7 F 9 F 9 4 4 7 G G 10 2 H 8 H 5 I 13 I

Dijkstra's Algorithm Split nodes apart into three groups: Green nodes, where we already have the shortest path; Gray nodes, which we have never seen; and Yellow nodes that we still need to process. Dijkstra's algorithm works as follows: Mark all nodes gray except the start node, which is yellow and has cost 0. Until no yellow nodes remain: Choose the yellow node with the lowest total cost. Mark that node green. Mark all its gray neighbors yellow and with the appropriate cost. Update the costs of all adjacent yellow nodes by considering the path through the current node.

An Important Note The version of Dijkstra's algorithm I have just described is not the same as the version described in the course reader. This version is more complex than the book's version, but is much faster. THIS IS THE VERSION YOU MUST USE ON YOUR TRAILBLAZER ASSIGNMENT!

How Dijkstra's Works Dijkstra's algorithm works by incrementally computing the shortest path to intermediary nodes in the graph in case they prove to be useful. Most of these nodes are completely in the wrong direction. No “big-picture” conception of how to get to the destination – the algorithm explores outward in all directions. Could we give the algorithm a hint?