import java.util.*;

class SearchAlgorithms {

  public static void main(String[] args){
    //Add code to select method of search
    //For now, just A* graph search
    A*GraphSearch();
  }
  
  public static List<Object> A*GraphSearch(Object startState){
    HashSet<Object> closed = new HashSet<Object>();
    ArrayList<Object> fringe = new ArrayList<Object>();
    fringe.add(startState);
    
    while(true){
    
      if(fringe.size() == 0){
        return null;//Valid?
      }
      
      //Remove the next node based on the heuristic
      //if goal test is satisfied, return solution
      //if current state not in closed set then
        //add the node to closed
        //foreach child node of the current state
          //insert the node into the fringe
      
    }
  }


}

@@ -14,16 +14,269 @@
 til.*;%0A%0A
+class Node()%7B%0A  %0A  List%3CObject%3E path = new ArrayList%3CObject%3E();%0A  Object state;%0A  int cost;%0A  %0A  public Node(List%3CObject%3E pathTo, Object currentState, int costTo)%7B%0A    this.path = pathTo;%0A    this.state = currentState;%0A    this.cost = costTo;%0A  %7D%0A  %0A%7D%0A%0A
 class Se
@@ -416,16 +416,74 @@
 arch%0A   
+ Object startState;//TODO%0A    ArrayList%3CObject%3E solution =
  A*Graph
@@ -489,16 +489,26 @@
 hSearch(
+startState
 );%0A  %7D%0A 
@@ -525,16 +525,21 @@
  static 
+Array
 List%3CObj
@@ -789,21 +789,42 @@
 urn 
-null;//Valid?
+fringe;//essentially an empty list
 %0A   
@@ -887,16 +887,44 @@
 uristic%0A
+      //TODO PriorityQueue?%0A
       //

Update SearchAlgorithms.java