Added some discussion on A*.
[ailab2.git] / src / SearchInterface.java
blob4cd518ae0cccbbf530a7744a3a44583ed71b1c0f
1 import java.io.BufferedReader;
2 import java.io.File;
3 import java.io.IOException;
4 import java.io.InputStreamReader;
6 /**
7 * Startklass för sökalgoritmen.
8 *
9 * SearchInterface kan anropas med tre eller fem parametrar.
10 * De två första parametrarna anger namnet på er sökklass respektive kartan som ska sökas.
11 * Parameter tre anger sökmetod, B, D, Ad, At eller G vilket motsvarar bredden
12 * först, djupet först, A* med kortaste avstånd, A* med kortaste tid,
13 * respektive Greedy Search.
15 * Parameter fyra och fem anger start och mål för sökningen. Om dessa utelämnas kommer programmet
16 * att fråga efter dem.
18 * Exempel: java SearchInterface MySearcher umea_map.xml B Teg Begbilar
20 * @author billing
22 public class SearchInterface {
24 public static void main(String[] args) {
25 BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
27 try {
28 if (args.length < 3) {
29 System.err.println("Sökklass, karta och sökmetod måste anges.");
30 } else {
31 Class c = Class.forName(args[0]); // Importerar sökklassen
32 MapSearcher searcher = (MapSearcher)c.newInstance(); // Instansierar
33 searcher.setMap(new File(args[1])); // Anger kartan
35 String from;
36 String to;
37 if (args.length > 3) {
38 from=args[3];
39 } else {
40 System.out.print("Ange startnod: ");
41 from = stdin.readLine();
43 if (args.length > 4) {
44 to=args[4];
45 } else {
46 System.out.print("Ange målnod: ");
47 to = stdin.readLine();
50 System.out.print(args[0]+" ");
51 if (args[2].equals("B")) {
52 System.out.print("söker med bredden först... ");
53 System.out.println("klar.\n"+searcher.breadthFirst(from,to));
54 } else if (args[2].equals("D")) {
55 System.out.print("söker med djupet först... ");
56 System.out.println("klar.\n"+searcher.depthFirst(from,to));
57 } else if (args[2].equals("Ad")) {
58 System.out.print("söker med A* (kortaste vägen)... ");
59 System.out.println("klar.\n"+searcher.aStar(from,to,false));
60 } else if (args[2].equals("At")) {
61 System.out.print("söker med A* (snabbaste vägen)... ");
62 System.out.println("klar.\n"+searcher.aStar(from,to,true));
63 } else if (args[2].equals("G")) {
64 System.out.print("söker med Greedy Search... ");
65 System.out.println("klar.\n"+searcher.greedySearch(from,to));
70 } catch (ClassNotFoundException e) {
71 e.printStackTrace();
72 } catch (InstantiationException e) {
73 e.printStackTrace();
74 } catch (IllegalAccessException e) {
75 e.printStackTrace();
76 } catch (IOException e) {
77 e.printStackTrace();