1 2 package gov.nasa.ltl.graph; 21 22 25 public class Generate { 26 public static Graph generate (int nsets) { 27 int nnodes = nsets + 1; 30 31 Node[] nodes = new Node[nnodes]; 32 Graph g = new Graph(); 33 34 g.setIntAttribute("nsets", nsets); 35 g.setStringAttribute("type", "ba"); 36 g.setStringAttribute("ac", "nodes"); 37 38 for (int i = 0; i < nnodes; i++) { 39 nodes[i] = new Node(g); 40 41 StringBuffer label = new StringBuffer (); 42 43 for (int k = 0; k < i; k++) { 44 label.append("acc" + k + "+"); 45 } 46 47 nodes[i].setStringAttribute("label", label.toString()); 48 } 49 50 Node n; 51 52 for (int i = 0; i < nsets; i++) { 55 n = nodes[i]; 56 57 for (int j = nsets; j > i; j--) { 58 Edge e = new Edge(nodes[i], nodes[j], "-", "-", null); 59 60 for (int k = i; k < j; k++) { 61 e.setBooleanAttribute("acc" + k, true); 62 } 63 } 64 65 Edge e = new Edge(nodes[i], nodes[i], "-", "-", null); 66 e.setBooleanAttribute("else", true); 67 } 68 69 70 n = nodes[nnodes - 1]; 72 n.setBooleanAttribute("accepting", true); 73 74 Edge e = new Edge(n, n, "-", "-", null); 75 76 for (int k = 0; k < nsets; k++) { 77 e.setBooleanAttribute("acc" + k, true); 78 } 79 80 for (int i = nsets - 1; i >= 0; i--) { 81 e = new Edge(n, nodes[i], "-", "-", null); 82 83 if (i == 0) { 84 e.setBooleanAttribute("else", true); 85 } else { 86 for (int k = 0; k < i; k++) { 87 e.setBooleanAttribute("acc" + k, true); 88 } 89 } 90 } 91 92 g.setInit(n); 93 94 return g; 96 } 97 98 public static void main (String [] args) { 99 Graph g = generate(5); 100 101 g.save(Graph.FSP_FORMAT); 102 } 103 104 111 } | Popular Tags |