X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fagar%2Ftest%2Fsimple-graphr.h;h=21cae6a3497c9900ba010dd445f4acdd6203f649;hb=0ea6a2126c713207cb139d3329b15f0c9d735fbe;hp=2abe72dcb6903989fafa71d46b5c5f3715b95ab2;hpb=a2eaae42b58a44d6f88f5e20e4a7d7cdbde9edae;p=ccan diff --git a/ccan/agar/test/simple-graphr.h b/ccan/agar/test/simple-graphr.h index 2abe72dc..21cae6a3 100644 --- a/ccan/agar/test/simple-graphr.h +++ b/ccan/agar/test/simple-graphr.h @@ -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 */