import java.util.*; /****************************************************************** This class and its main method simply test the classes required for Assignment 5, CS 146, Sections 5 & 7, Spring 2004. ******************************************************************/ public class A5 { /** Tests the topological sort method on a given graph @param g the graph */ private static void testGraph(Graph g) { try { List list = g.topsort(); System.out.println(list); System.out.println(); System.out.println(); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); System.out.println(); } } /** @param args is ignored */ public static void main(String args[]) { // second row, Figure 9.3 LinkedList vertexList = new LinkedList(); vertexList.add("MAC3311"); vertexList.add("MAD3104"); vertexList.add("MAD3512"); vertexList.add("COP5621"); Graph g = new Graph(vertexList); g.addEdge("MAC3311", "MAD3104"); g.addEdge("MAD3104", "MAD3512"); g.addEdge("MAD3512", "COP5621"); testGraph(g); // 2nd & 3rd rows, Figure 9.3 vertexList.add("COP3210"); vertexList.add("COP3400"); vertexList.add("COP3530"); vertexList.add("CIS4610"); Graph g2 = new Graph(vertexList); g2.addEdge("MAC3311", "MAD3104"); g2.addEdge("MAD3104", "MAD3512"); g2.addEdge("MAD3512", "COP5621"); g2.addEdge("MAD3104", "COP3530"); g2.addEdge("COP3210", "COP3400"); g2.addEdge("COP3210", "MAD3104"); g2.addEdge("COP3530", "CIS4610"); g2.addEdge("CIS4610", "COP5621"); testGraph(g2); // graph shouldn't be modified testGraph(g2); // bad edge g2.addEdge("CS46A","MAC3311"); testGraph(g2); // create a cycle g2.addEdge("MAD3104", "MAC3311"); testGraph(g2); // create a different cycle Graph g3 = new Graph(vertexList); g3.addEdge("MAC3311", "MAD3104"); g3.addEdge("MAD3104", "MAD3512"); g3.addEdge("MAD3512", "COP5621"); g3.addEdge("MAD3104", "COP3530"); g3.addEdge("COP3210", "COP3400"); g3.addEdge("COP3210", "MAD3104"); g3.addEdge("COP3530", "CIS4610"); g3.addEdge("CIS4610", "COP5621"); g3.addEdge("CIS4610", "MAD3104"); testGraph(g3); // SJSU example, with duplicate vertex vertexList = new LinkedList(); vertexList.add("CS46B"); vertexList.add("CS146"); vertexList.add("CS116A"); vertexList.add("CS140"); vertexList.add("CS46B"); vertexList.add("CS147"); vertexList.add("CS149"); vertexList.add("CS151"); vertexList.add("CS160"); vertexList.add("CS46A"); Graph g4 = new Graph(vertexList); g4.addEdge("CS46B", "CS146"); g4.addEdge("CS146", "CS116A"); g4.addEdge("CS46B", "CS140"); g4.addEdge("CS140", "CS147"); g4.addEdge("CS147", "CS149"); g4.addEdge("CS46B", "CS151"); g4.addEdge("CS146", "CS160"); g4.addEdge("CS151", "CS160"); g4.addEdge("CS46A", "CS46B"); testGraph(g4); // create a cycle g4.addEdge("CS116A", "CS146"); testGraph(g4); System.out.println(); System.out.println(); LinkedList taskList = new LinkedList(); for (int i=1; i<=10; i++) taskList.add( new Task(i, 1+(i*i)%10, 10*i)); ArrayList sked = Scheduler.buildSchedule(taskList); System.out.println(sked); System.out.println("profit: " + Scheduler.getProfit(sked)); System.out.println(); Random r = new Random(5); taskList = new LinkedList(); for (int i=1; i<=7; i++) taskList.add( new Task(i, 1 + r.nextInt(7), 10*i)); sked = Scheduler.buildSchedule(taskList); System.out.println(sked); System.out.println("profit: " + Scheduler.getProfit(sked)); System.out.println(); taskList = new LinkedList(); for (int i=1; i<=20; i++) taskList.add( new Task(i, 1 + r.nextInt(9), 1 + r.nextInt(100))); sked = Scheduler.buildSchedule(taskList); System.out.println(sked); System.out.println("profit: " + Scheduler.getProfit(sked)); System.out.println(); } };