39 lines
1.1 KiB
C
39 lines
1.1 KiB
C
#ifndef DIJKSTRASEARCH_H
|
|
#define DIJKSTRASEARCH_H
|
|
|
|
#include "dijkstragraph.h"
|
|
|
|
#define DIJKSTRA_SEARCH_MAX_ITERATIONS 5000
|
|
|
|
struct dijkstra_state {
|
|
struct dijkstra_path *cheapest_path;
|
|
dijkstra_cost cost;
|
|
int visited;
|
|
};
|
|
|
|
struct dijkstra_search {
|
|
struct dijkstra_solver *solver;
|
|
struct dijkstra_state **states;
|
|
unsigned int node_count;
|
|
struct dijkstra_node *start;
|
|
GList *active_nodes;
|
|
};
|
|
|
|
struct dijkstra_search *dijkstra_search_new(struct dijkstra_solver *solver);
|
|
void dijkstra_search_free(struct dijkstra_search *search);
|
|
void dijkstra_search_set_start(struct dijkstra_search *search,
|
|
struct dijkstra_node *start);
|
|
int dijkstra_search_find_path(struct dijkstra_search *search,
|
|
struct dijkstra_node *destination);
|
|
GList *dijkstra_search_get_route(struct dijkstra_search *search,
|
|
struct dijkstra_node *destination);
|
|
|
|
/* Debugging functions */
|
|
void dijkstra_print_path(struct dijkstra_search *search,
|
|
struct dijkstra_node *destination);
|
|
void dijkstra_print_nodes(struct dijkstra_search *search);
|
|
int dijkstra_search_route_to_geojson(struct dijkstra_search *search,
|
|
GList *route,
|
|
char **buf);
|
|
#endif // DIJKSTRASEARCH_H
|