comparison defical-sharp/libsemtd/graph.cs @ 0:ebed2bd0d300

Initial import from svn. History be damned.
author Edho P. Arief <me@myconan.net>
date Fri, 02 Apr 2010 23:11:57 +0700
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:ebed2bd0d300
1 namespace libsemtd
2 {
3 public partial class Semtd
4 {
5 private void draw(string graphType, int start, int end, params int[] ver_others)
6 {
7 if (end < start)
8 {
9 int temp = start;
10 start = end;
11 end = temp;
12 }
13 switch (graphType)
14 {
15 case "path":
16 {
17 for (int i = start; i < end; i++)
18 connectVertices(i, i + 1);
19 break;
20 }
21 case "cycle":
22 {
23 draw("path", start, end);
24 connectVertices(start, end);
25 break;
26 }
27 case "completebipartite":
28 {
29 for (int i = start; i <= end; i++)
30 foreach (int other in ver_others)
31 connectVertices(i, other);
32 break;
33 }
34 case "wheel":
35 {
36 draw("cycle", start + 1, end);
37 draw("completebipartite", start + 1, end, start);
38 break;
39 }
40 case "fan":
41 {
42 draw("path", start + 1, end);
43 draw("completebipartite", start + 1, end, start);
44 break;
45 }
46 case "doublefan":
47 {
48 draw("path", start + 2, end);
49 draw("completebipartite", start + 2, end, start, start + 1);
50 break;
51 }
52 }
53 }
54 private void connectVertices(int a, int b)
55 {
56 if (!this.graphConn[a, b])
57 {
58 this.graphConn[a, b] = this.graphConn[b, a] = true;
59 this.numEdges++;
60 }
61 }
62 }
63 }