Why do Java programmers wear glasses?

Slides:



Advertisements
Similar presentations
Single Source Shortest Paths
Advertisements

CS 206 Introduction to Computer Science II 04 / 01 / 2009 Instructor: Michael Eckmann.
CSE 390B: Graph Algorithms Based on CSE 373 slides by Jessica Miller, Ruth Anderson 1.
CSE 101- Winter ‘15 Discussion Section January 26th 2015.
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.
Slides adapted from Alex Mariakakis, with material from Krysta Yousoufian, Mike Ernst, Kellen Donohue Section 5: HW6 and Interfaces.
CSE332: Data Abstractions Lecture 17: Shortest Paths Dan Grossman Spring 2010.
CS 206 Introduction to Computer Science II 11 / 10 / 2008 Instructor: Michael Eckmann.
CS 206 Introduction to Computer Science II 11 / 05 / 2008 Instructor: Michael Eckmann.
Shortest Path Algorithm By Weston Vu CS 146. What is Shortest Paths? Shortest Paths is a part of the graph algorithm. It is used to calculate the shortest.
More Graph Algorithms Weiss ch Exercise: MST idea from yesterday Alternative minimum spanning tree algorithm idea Idea: Look at smallest edge not.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 223 – Advanced Data Structures Graph Algorithms: Minimum.
CS 146: Data Structures and Algorithms July 21 Class Meeting
Dijkstras Algorithm Named after its discoverer, Dutch computer scientist Edsger Dijkstra, is an algorithm that solves the single-source shortest path problem.
COSC 2007 Data Structures II Chapter 14 Graphs III.
Dijkstra’s Algorithm. Announcements Assignment #2 Due Tonight Exams Graded Assignment #3 Posted.
Algorithm Course Dr. Aref Rashad February Algorithms Course..... Dr. Aref Rashad Part: 6 Shortest Path Algorithms.
CSE332: Data Abstractions Lecture 17: Shortest Paths Dan Grossman Spring 2012.
CSE373: Data Structures & Algorithms Lecture 17: Dijkstra’s Algorithm Lauren Milne Summer 2015.
SLIDES ADAPTED FROM ALEX MARIAKAKIS, WITH MATERIAL FROM KRYSTA YOUSOUFIAN, MIKE ERNST, KELLEN DONOHUE Section 5: HW6 and Interfaces Justin Bare and Deric.
CSE 373: Data Structures and Algorithms Lecture 21: Graphs V 1.
Graphs – Part III CS 367 – Introduction to Data Structures.
Section 7: Dijkstra’s Justin Bare and deric Pang
Shortest Paths.
Minimum Spanning Trees
Instructor: Lilian de Greef Quarter: Summer 2017
May 12th – Minimum Spanning Trees
CSE 373: Data Structures & Algorithms Graph Traversals: Dijkstra’s
Cse 373 May 8th – Dijkstras.
Instructor: Lilian de Greef Quarter: Summer 2017
Section 5: HW6 and Interfaces
Unweighted Shortest Path Neil Tang 3/11/2010
CSE373: Data Structures & Algorithms Lecture 17: Shortest Paths
Short paths and spanning trees
Section 5: HW6 and Interfaces
Discussion section #2 HW1 questions?
What do you call 8 Hobbits?
Minimum Spanning Trees
CSE373: Data Structures & Algorithms Lecture 12: Minimum Spanning Trees Catie Baker Spring 2015.
Shortest Paths.
CSE373: Data Structures & Algorithms Lecture 20: Minimum Spanning Trees Linda Shapiro Spring 2016.
CSE 373 Data Structures and Algorithms
CSE373: Data Structures & Algorithms Lecture 18: Dijkstra’s Algorithm
Spanning Trees.
CSE 373: Data Structures and Algorithms
Section 7: Dijkstra’s & Midterm Postmortem
Based on slides of Dan Suciu
CSE332: Data Abstractions Lecture 18: Minimum Spanning Trees
Minimum Spanning Trees
Slide Courtesy: Uwash, UT
Section 5: HW6 and Interfaces
Fundamental Data Structures and Algorithms
CSE 373: Data Structures and Algorithms
Fundamental Structures of Computer Science II
Weighted Graphs & Shortest Paths
Section 5: HW6 and Interfaces
CSE332: Data Abstractions Lecture 17: Shortest Paths
CSE 373 Data Structures and Algorithms
Slide Courtesy: Uwash, UT
Shortest Paths.
CSE 417: Algorithms and Computational Complexity
CSE 373: Data Structures and Algorithms
CSE 373: Data Structures and Algorithms
Topological Sorting Minimum Spanning Trees Shortest Path
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:

Why do Java programmers wear glasses?

Why do Java programmers wear glasses? Because they don’t C#

Section 7: Dijkstra’s Algorithm SLIDES ADAPTED FROM ALEX MARIAKAKIS WITH MATERIAL KELLEN DONOHUE, DAVID MAILHOT, AND DAN GROSSMAN

Agenda Reminders Dijkstra’s Algorithm HW 7 HW 6 due last night (5/9) HW 7 due next Wednesday (5/16) Dijkstra’s Algorithm HW 7

Review: Shortest Paths with BFS 1 From Node B A Destination Path Cost A <B,A> 1 B <B> C <B,A,C> 2 D <B,D> E <B,D,E> 1 1 1 C 1 D 1 1 E

Review: Shortest Paths with BFS 1 From Node B A Destination Path Cost A <B,A> 1 B <B> C <B,A,C> 2 D <B,D> E <B,D,E> 1 1 1 C 1 D 1 1 E

Shortest Paths with Weights B 2 A 100 100 3 C 2 D 2 6 E

Shortest Paths with Weights B 2 From Node B A Destination Path Cost A <B,A> 2 B <B> C <B,A,C> 5 D <B,A,C,D> 7 E <B,A,C,E> 100 100 3 C 2 D 2 6 E Paths are not the same!

BFS vs. Dijkstra’s 1 500 100 1 5 -10 BFS doesn’t work because path with minimal cost ≠ path with fewest edges Also, Dijkstra’s works if the weights are non-negative What happens if there is a negative edge? Minimize cost by repeating the cycle forever (this is bad) How could we fix this? Add constant weight to all edges until positive

Dijkstra’s Algorithm Named after its inventor Edsger Dijkstra (1930-2002) Truly one of the “founders” of computer science; This is just one of his many contributions The idea: reminiscent of BFS, but adapted to handle weights Grow the set of nodes whose shortest distance has been computed Nodes not in the set will have a “best distance so far” A PRIORITY QUEUE will turn out to be useful for efficiency – We’ll cover this later in the slide deck

Dijkstra’s Algorithm For each node v, set v.cost = ∞ and v.known = false Set source.cost = 0 While there are unknown nodes in the graph Select the unknown node v with lowest cost Mark v as known For each edge (v,u) with weight w, c1 = v.cost + w // cost of best path through v to u c2 = u.cost // cost of best path to u previously known if(c1 < c2) // if the new path through v is better,update u.cost = c1 u.path = v

Example #1 Goal: Fully explore the graph    2 2 3 B A F H 1 2 1 5   2 2 3 B A F H Goal: Fully explore the graph 1 2 1 5 10 4 9 3 G   C 2 11 D 1  E vertex known? cost path A Y B ∞ C D E F G H 7  Order Added to Known Set:

Example #1 2   2 2 3 B A F H 1 2 1 5 10 4 9 3 G  1 C 2 11 D 1 4 E vertex known? cost path A Y B ≤ 2 C ≤ 1 D ≤ 4 E ∞ F G H 7  Order Added to Known Set: A

Example #1 2   2 2 3 B A F H 1 2 1 5 10 4 9 3 G  1 C 2 11 D 1 4 E vertex known? cost path A Y B ≤ 2 C 1 D ≤ 4 E ∞ F G H 7  Order Added to Known Set: A, C

Example #1 2   2 2 3 B A F H 1 2 1 5 10 4 9 3 G  1 C 2 11 D 1 4 E vertex known? cost path A Y B ≤ 2 C 1 D ≤ 4 E ≤ 12 F ∞ G H 7 12 Order Added to Known Set: A, C

Example #1 2   2 2 3 B A F H 1 2 1 5 10 4 9 3 G  1 C 2 11 D 1 4 E vertex known? cost path A Y B 2 C 1 D ≤ 4 E ≤ 12 F ∞ G H 7 12 Order Added to Known Set: A, C, B

Example #1 2 4  2 2 3 B A F H 1 2 1 5 10 4 9 3 G  1 C 2 11 D 1 4 E vertex known? cost path A Y B 2 C 1 D ≤ 4 E ≤ 12 F G ∞ H 7 12 Order Added to Known Set: A, C, B

Example #1 2 4  2 2 3 B A F H 1 2 1 5 10 4 9 3 G  1 C 2 11 D 1 4 E vertex known? cost path A Y B 2 C 1 D 4 E ≤ 12 F ≤ 4 G ∞ H 7 12 Order Added to Known Set: A, C, B, D

Example #1 2 4  2 2 3 B A F H 1 2 1 5 10 4 9 3 G  1 C 2 11 D 1 4 E vertex known? cost path A Y B 2 C 1 D 4 E ≤ 12 F G ∞ H 7 12 Order Added to Known Set: A, C, B, D, F

Example #1 2 4 7 2 2 3 B A F H 1 2 1 5 10 4 9 3 G  1 C 2 11 D 1 4 E vertex known? cost path A Y B 2 C 1 D 4 E ≤ 12 F G ∞ H ≤ 7 7 12 Order Added to Known Set: A, C, B, D, F

Example #1 2 4 7 2 2 3 B A F H 1 2 1 5 10 4 9 3 G  1 C 2 11 D 1 4 E vertex known? cost path A Y B 2 C 1 D 4 E ≤ 12 F G ∞ H 7 7 12 Order Added to Known Set: A, C, B, D, F, H

Example #1 2 4 7 2 2 3 B A F H 1 2 1 5 10 4 9 3 G 8 1 C 2 11 D 1 4 E vertex known? cost path A Y B 2 C 1 D 4 E ≤ 12 F G ≤ 8 H 7 7 12 Order Added to Known Set: A, C, B, D, F, H

Example #1 2 4 7 2 2 3 B A F H 1 2 1 5 10 4 9 3 G 8 1 C 2 11 D 1 4 7 E vertex known? cost path A Y B 2 C 1 D 4 E ≤ 12 F G 8 H 7 12 Order Added to Known Set: A, C, B, D, F, H, G

Example #1 2 4 7 2 2 3 B A F H 1 2 1 5 10 4 9 3 G 8 1 C 2 11 D 1 4 7 E vertex known? cost path A Y B 2 C 1 D 4 E ≤ 11 G F 8 H 7 11 Order Added to Known Set: A, C, B, D, F, H, G

Example #1 2 4 7 2 2 3 B A F H 1 2 1 5 10 4 9 3 G 8 1 C 2 11 D 1 4 E vertex known? cost path A Y B 2 C 1 D 4 E 11 G F 8 H 7 7 11 Order Added to Known Set: A, C, B, D, F, H, G, E

Interpreting the Results A B D C F H E G 2 4 7 1 11 8 3 10 9 5 vertex known? cost path A Y B 2 C 1 D 4 E 11 G F 8 H 7

Interpreting the Results A B D C F H E G 2 4 7 1 11 8 3 10 9 5 vertex known? cost path A Y B 2 C 1 D 4 E 11 G F 8 H 7 A

Interpreting the Results A B D C F H E G 2 4 7 1 11 8 3 10 9 5 vertex known? cost path A Y B 2 C 1 D 4 E 11 G F 8 H 7 2 B A 1 4 C D

Interpreting the Results A B D C F H E G 2 4 7 1 11 8 3 10 9 5 vertex known? cost path A Y B 2 C 1 D 4 E 11 G F 8 H 7 2 2 B A F 1 4 C D

Interpreting the Results A B D C F H E G 2 4 7 1 11 8 3 10 9 5 vertex known? cost path A Y B 2 C 1 D 4 E 11 G F 8 H 7 2 2 3 B A F H 1 4 C D

Interpreting the Results A B D C F H E G 2 4 7 1 11 8 3 10 9 5 vertex known? cost path A Y B 2 C 1 D 4 E 11 G F 8 H 7 2 2 3 B A F H 1 1 4 G C D

Interpreting the Results A B D C F H E G 2 4 7 1 11 8 3 10 9 5 vertex known? cost path A Y B 2 C 1 D 4 E 11 G F 8 H 7 2 2 3 B A F H 1 1 4 3 G C D E

Example #2  2 B A 1  1 5 2 E  1 D 1 3 5 C   6 2 G  10 F 2 B A 1  1 5 2 E  1 D 1 3 5 C   6 2 G vertex known? cost path A Y B ∞ C D E F G  10 F Order Added to Known Set:

Example #2 3 2 B A 1 2 1 5 2 E 1 1 D 1 3 5 C 2 6 6 2 G vertex known? cost path A Y B 3 E C 2 D 1 F 4 G 6 4 10 F Order Added to Known Set: A, D, C, E, B, F, G

Pseudocode // pre-condition: start is the node to start at // initialize things active = new empty priority queue of paths from start to a given node // A path's “priority” in the queue is the total // cost of that path. finished = new empty set of nodes // Holds nodes for which we know the // minimum-cost path from start. // We know path start->start has cost 0 Add a path from start to itself to active O(V^2) = O(V + V-1 + V-2 + …) = O (V*(V+1)/2)

Pseudocode (cont.) while active is non-empty: minPath = active.removeMin() minDest = destination node in minPath if minDest is in finished: continue for each edge e = ⟨minDest, child⟩: if child is not in finished: newPath = minPath + e add newPath to active add minDest to finished O(V^2) = O(V + V-1 + V-2 + …) = O (V*(V+1)/2)

Priority Queue Increase efficiency by considering lowest cost unknown vertex with sorting instead of looking at all vertices PriorityQueue is like a queue, but returns elements by lowest value instead of FIFO

Priority Queue Increase efficiency by considering lowest cost unknown vertex with sorting instead of looking at all vertices PriorityQueue is like a queue, but returns elements by lowest value instead of FIFO Two ways to implement: Comparable class Node implements Comparable<Node> public int compareTo(other) Comparator class NodeComparator extends Comparator<Node> new PriorityQueue(new NodeComparator())

Homework 7 Modify your graph to use generics Will have to update graph and old tests! (all of your old tests should still pass) Implement Dijkstra’s algorithm Note: This should not change your implementation of Graph. Dijkstra’s is performed on a Graph, not within a Graph.

Homework 7 The more well-connected two characters are, the lower the weight and the more likely that a path is taken through them The weight of an edge is equal to the inverse of how many comic books the two characters share Ex: If Amazing Amoeba and Zany Zebra appeared in 5 comic books together, the weight of their edge would be 1/5

Hw7 Important Notes!!! DO NOT access data from hw6/src/data Copy over data files from hw6/src/data into hw7/src/data, and access data in hw7 from there instead Remember to do this! Or tests will fail when grading. DO NOT modify ScriptFileTests.java

Hw7 Test script Command Notes HW7 LoadGraph command is slightly different from HW6 After graph is loaded, there should be at most one directed edge from one node to another, with the edge label being the multiplicative inverse of the number of books shared Example: If 8 books are shared between two nodes, the edge label will be 1/8 Since the edge relationship is symmetric, there would be another edge going the other direction with the same edge label