Learning Dijkstra's Algorithm and Midterm Review Slides

section 7 dijkstra s midterm postmortem n.w
1 / 32
Embed
Share

Explore Dijkstra's algorithm, edge weighting, and BFS comparisons through these informative slides adapted from Alex Mariakakis. Understand how to modify graphs, implement the algorithm, and review shortest paths with weights. Dive into the core concepts presented in the postmortem session for a deeper understanding of graph theory and algorithms.

  • Dijkstras Algorithm
  • Graph Theory
  • Midterm Review
  • Edge Weighting
  • BFS Comparison

Uploaded on | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. Section 7: Dijkstra s & Midterm Postmortem Slides adapted from Alex Mariakakis, with material Kellen Donohue, David Mailhot, and Dan Grossman

  2. Agenda How to weight your edges Dijkstra s algorithm Midterm Q&A

  3. Homework 7 Modify your graph to use generics Will have to update HW #5 and HW #6 tests Implement Dijkstra s algorithm Search algorithm that accounts for edge weights Note: This should not change your implementation of Graph. Dijkstra s is performed on a Graph, not within a Graph. 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 Carol Danvers and Luke Cage appeared in 5 comic books together, the weight of their edge would be 1/5 No duplicate edges

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

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

  6. BFS vs. Dijkstras 1 100 100 1 100 100 5 -10 500 BFS doesn t work because path with minimal cost path with fewest edges Dijkstra s works if the weights are non-negative What happens if there is a negative edge? Minimize cost by repeating the cycle forever

  7. DijkstrasAlgorithm Named after its inventor Edsger Dijkstra (1930-2002) Turing Award winner and all-around amazing computer scientist Other work includes Banker s algorithm, semaphores 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

  8. DijkstrasAlgorithm 1. For each node v, set v.cost = and v.known = false 2. Set source.cost = 0 3. While there are unknown nodes in the graph a) Select the unknown node v with lowest cost b) Mark v as known c) For each edge (v,u) with weight w, c1 = v.cost + w c2 = u.cost if(c1 < c2) u.cost = c1 u.path = v // cost of best path through v to u // cost of best path to u previously known // if the new path through v is better, update

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  26. PseudocodeAttempt #1 dijkstra(Graph G, Node start) { for each node: x.cost=infinity, x.known=false start.cost = 0 while(not all nodes are known) { b = dequeue b.known = true for each edge (b,a) in G { if(!a.known) { if(b.cost + weight((b,a)) < a.cost){ a.cost = b.cost + weight((b,a)) a.path = b } } brackets O(|V|) O(|V|2) O(|E|) O(|V|2)

  27. Can We Do Better? 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

  28. 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: 1. Comparable a) class Node implements Comparable<Node> b) public int compareTo(other) 2. Comparator a) class NodeComparator extends Comparator<Node> b) new PriorityQueue(new NodeComparator())

  29. PseudocodeAttempt #2 dijkstra(Graph G, Node start) { for each node: x.cost=infinity, x.known=false start.cost = 0 build-heap with all nodes while(heap is not empty) { b = deleteMin() if (b.known) continue; b.known = true for each edge (b,a) in G { if(!a.known) { add(b.cost + weight((b,a)) ) } brackets O(|V|) O(|V|log|V|) O(|E|log|V|) O(|E|log|V|)

  30. Proof of Correctness All the known vertices have the correct shortest path through induction Initially, shortest path to start node has cost 0 If it stays true every time we mark a node known , then by induction this holds and eventually everything is known with shortes path Key fact: When we mark a vertex known we won t discover a shorter path later Remember, we pick the node with the min cost each round Once a node is marked as known , going through another path will only add weight Only true when node weights are positive

  31. MIDTERM QUESTIONS!

  32. Midterm Question 6 A. @returns some number between x 10 and x + 10 strongest B. @returns some number between x 5 and x + 5 B B C. @requires x > 0 @returns some number between x 5 and x + 5 D A C D. @requires x > 0 or x < 5 @returns some number between x 5 and x + 5 E E. @requires x > 0 @throws IllegalArgument if x > 100 @returns some number between x 10 and x + 10 weakest

Related


More Related Content