]> git.ozlabs.org Git - ccan/blobdiff - ccan/agar/test/simple-graphr.h
Makefile: fix fastcheck.
[ccan] / ccan / agar / test / simple-graphr.h
index 2abe72dcb6903989fafa71d46b5c5f3715b95ab2..21cae6a3497c9900ba010dd445f4acdd6203f649 100644 (file)
@@ -19,7 +19,7 @@ struct adjacency_listr {
 struct trivial_graphr {
        struct agar_graph gr;
 };
-void trivial_graphr_init(struct trivial_graphr *tgr);
+extern struct trivial_graphr trivial_graphr;
 static const struct adjacency_listr trivial_adjacencyr[] = {
        {1, {}},
        {},
@@ -156,7 +156,7 @@ static const struct adjacency_listr grid_adjacencyr_3x3_all[] = {
 struct error_graphr {
        struct agar_graph gr;
 };
-void error_graphr_init(struct error_graphr *eg);
+extern struct error_graphr error_graphr;
 static const struct adjacency_listr error_adjacencyr[] = {
        {1, {2}},
        {2, {}},
@@ -185,7 +185,7 @@ static const struct adjacency_listr error_adjacencyr[] = {
 struct traversal1_graphr {
        struct agar_graph gr;
 };
-void traversal1_graphr_init(struct traversal1_graphr *t1gr);
+extern struct traversal1_graphr traversal1_graphr;
 static const struct adjacency_listr traversal1_adjacency[] = {
        {1, {2, 3}},
        {2, {4, 5}},
@@ -199,4 +199,64 @@ static const struct adjacency_listr traversal1_adjacency[] = {
        {},
 };
 
+/* Shortcut-1 graph
+ *
+ *   A ---- (3) -----> C
+ *    \             /
+ *     (1)-> B  --(1)
+ *
+ * This provides an example of a graph where the lowest cost path from
+ * (A) to (C) is not the path with the smallest number od edges.
+ */
+struct shortcut1_graphr {
+       struct agar_graph gr;
+};
+extern struct shortcut1_graphr shortcut1_graphr;
+static const struct adjacency_listr shortcut1_adjacencyr[] = {
+       {1, {3, 2}},
+       {2, {3}},
+       {3, {}},
+       {},
+};
+
+/* Shortcut-2 graph
+ *
+ *   A ---- (2) -----> C
+ *    \             /
+ *     (2)-> B  --(-1)
+ *
+ * This provides an example of a graph with a negative edge cost, but
+ * no negative cost cycles (and so still with well defined shortest
+ * paths).
+ */
+struct shortcut2_graphr {
+       struct agar_graph gr;
+};
+extern struct shortcut2_graphr shortcut2_graphr;
+static const struct adjacency_listr shortcut2_adjacencyr[] = {
+       {1, {3, 2}},
+       {2, {3}},
+       {3, {}},
+       {},
+};
+
+/* Negacycle graph
+ *
+ *  A <---- (-3) ----- C
+ *   \                 ^
+ *    (1)->  B -- (1)-/
+ *
+ * Graph with a negative length cycle, and so lacking well-defined shortest paths.
+ */
+struct negacycle_graphr {
+       struct agar_graph gr;
+};
+extern struct negacycle_graphr negacycle_graphr;
+static const struct adjacency_listr negacycle_adjacencyr[] = {
+       {1, {2}},
+       {2, {3}},
+       {3, {1}},
+       {},
+};
+
 #endif /* _SIMPLE_GRAPHR_H */