X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fagar%2Fagar.h;h=f65b4e371f456d7b6bca8208dd5e7f53260874c2;hb=c3a934d277c3a8ef528152b10e658a8f22b4df49;hp=122cb97177ed1f594b66b7fc84fc073bc7db91bf;hpb=1e742b68d026a258ccf99338f05daf8b694978a3;p=ccan diff --git a/ccan/agar/agar.h b/ccan/agar/agar.h index 122cb971..f65b4e37 100644 --- a/ccan/agar/agar.h +++ b/ccan/agar/agar.h @@ -31,6 +31,9 @@ struct agar_graph { agar_next_edge_fn next_edge; }; +#define AGAR_INIT_GRAPH(fe, ne, ei) \ + { (ei), (fe), (ne), } + void agar_init_graph(struct agar_graph *gr, agar_first_edge_fn first_edge, agar_next_edge_fn next_edge, @@ -81,6 +84,18 @@ bool agar_dijkstra_step(struct agar_state *sr, const void **nextr); bool agar_dijkstra_path(struct agar_state *sr, const void *destr, aga_icost_t *total_cost, const void **prevr, const void **prevedge); -void agar_dijkstra_all_paths(struct agar_state *sr); +void agar_dijkstra_complete(struct agar_state *sr); + +/* + * Bellman-Ford algorithm + */ + +struct agar_state *agar_bellman_ford_new(void *ctx, struct agar_graph *gr, + const void *nr); + +bool agar_bellman_ford_path(struct agar_state *sr, const void *destr, + aga_icost_t *total_cost, + const void **prevr, const void **prevedge); +void agar_bellman_ford_complete(struct agar_state *sr); #endif /* CCAN_AGAR_H */