Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.83 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public abstract class Pathfinding {
  4.     public static List<Node> BigFreakingSearch(Node start, Node goal){
  5.         Queue<Node> queue = new LinkedList<>();
  6.         HashSet<Node> discovered = new HashSet<>();
  7.         HashMap<Node, Node> parents = new HashMap<>();
  8.  
  9.         queue.add(start);
  10.         discovered.add(start);
  11.  
  12.         while(!queue.isEmpty()){
  13.             Node v = queue.poll();
  14.             if(v.equals(goal)){
  15.                 return returnPath(v, parents);
  16.             }
  17.             for(Node w : v.getNeighbors()){
  18.                 if(!discovered.contains(w)){
  19.                     discovered.add(w);
  20.                     parents.put(w, v);
  21.                     queue.add(w);
  22.                 }
  23.             }
  24.         }
  25.  
  26.         return null;
  27.     }
  28.  
  29.     public static List<Node> DigFreakingSearch(Node start, Node goal){
  30.         Stack<Node> stack = new Stack<>();
  31.         HashSet<Node> discovered = new HashSet<>();
  32.         HashMap<Node, Node> parents = new HashMap<>();
  33.  
  34.         stack.add(start);
  35.         discovered.add(start);
  36.  
  37.         while(!stack.isEmpty()){
  38.             Node v = stack.pop();
  39.             discovered.add(v);
  40.             if(v.equals(goal)){
  41.                 return returnPath(v, parents);
  42.             }
  43.             for(Node w : v.getNeighbors()){
  44.                 if(!discovered.contains(w)){
  45.                     parents.put(w, v);
  46.                     stack.add(w);
  47.                 }
  48.             }
  49.         }
  50.  
  51.         return null;
  52.     }
  53.  
  54.     private static List<Node> returnPath(Node n, HashMap<Node, Node> parents){
  55.         Stack<Node> stack = new Stack<>();
  56.         Node curr = n;
  57.         while(curr!=null){
  58.             stack.push(curr);
  59.             curr = parents.get(curr);
  60.         }
  61.         return Arrays.asList(stack.toArray(new Node[stack.size()]));
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement