Graph construction & core
Creating graphs, vertices and edges; cloning, validation, and topology.
Functions
ptd_directed_graph_add_edge
int ptd_directed_graph_add_edge(struct ptd_directed_vertex *vertex, struct ptd_directed_edge *edge)ptd_directed_graph_destroy
void ptd_directed_graph_destroy(struct ptd_directed_graph *graph)ptd_directed_vertex_add
int ptd_directed_vertex_add(struct ptd_directed_graph *graph, struct ptd_directed_vertex *vertex)ptd_directed_vertex_destroy
void ptd_directed_vertex_destroy(struct ptd_directed_vertex *vertex)ptd_graph_create
struct ptd_graph * ptd_graph_create(size_t state_length)ptd_graph_destroy
void ptd_graph_destroy(struct ptd_graph *graph)ptd_vertex_create
struct ptd_vertex * ptd_vertex_create(struct ptd_graph *graph)ptd_vertex_create_state
struct ptd_vertex * ptd_vertex_create_state(struct ptd_graph *graph, int *state)ptd_find_or_create_vertex
struct ptd_vertex * ptd_find_or_create_vertex(struct ptd_graph *graph, struct ptd_avl_tree *avl_tree, const int *child_state)ptd_vertex_rate
double ptd_vertex_rate(struct ptd_vertex *vertex)ptd_vertex_destroy
void ptd_vertex_destroy(struct ptd_vertex *vertex)ptd_graph_add_edge
struct ptd_edge * ptd_graph_add_edge(struct ptd_vertex *from, struct ptd_vertex *to, double *coefficients, size_t coefficients_length)ptd_edge_update_weight
void ptd_edge_update_weight(struct ptd_edge *edge, double weight)ptd_edge_update_to
void ptd_edge_update_to(struct ptd_edge *edge, struct ptd_vertex *vertex)ptd_notify_change
void ptd_notify_change(struct ptd_graph *graph)ptd_graph_is_acyclic
bool ptd_graph_is_acyclic(struct ptd_graph *graph)ptd_graph_topological_sort
struct ptd_vertex ** ptd_graph_topological_sort(struct ptd_graph *graph)ptd_validate_graph
int ptd_validate_graph(const struct ptd_graph *graph)ptd_clone_graph
struct ptd_clone_res ptd_clone_graph(struct ptd_graph *graph, struct ptd_avl_tree *avl_tree)ptd_vertex_to_s
int ptd_vertex_to_s(struct ptd_vertex *vertex, char *buffer, size_t buffer_length)