public static void runExperimental() throws IOException {
    int threads = Runtime.getRuntime().availableProcessors();
    Graph component = Graph.readGraph(
        ExperimentalRunner.class.getResource("/CompleteComponent.txt"));
    Graph full = Graph.readGraph(
        ExperimentalRunner.class.getResource("/ReducedGraph.txt"));
    
    List<Integer> initStates = new ArrayList<Integer>();
    for (int x = 0; x < component.size(); x++) {
      if (component.getInEdges(x).size() > 0 && component.getOutEdges(x).size() > 0) {
        initStates.add(x);
      }
    }
    
    AtomicInteger maxLength = new AtomicInteger(INITIAL_CUTOFF);
    Lock fileLock = new ReentrantLock();

    System.out.println("Starting Experimental Run");
    for (int x = 0; x < 1; x++) {
      Walker walker = new ExperimentalWalker(component, full, initStates, 
          "results/ExperimentalResults.txt", maxLength, fileLock);
      Thread search = new Thread(walker);
      search.start();
    }
  }