Graph construction & core

Creating graphs, vertices and edges; cloning, validation, and topology.

Functions

Name Description
ptd_directed_graph_add_edge
ptd_directed_graph_destroy
ptd_directed_vertex_add
ptd_directed_vertex_destroy
ptd_graph_create
ptd_graph_destroy
ptd_vertex_create
ptd_vertex_create_state
ptd_find_or_create_vertex
ptd_vertex_rate
ptd_vertex_destroy
ptd_graph_add_edge
ptd_edge_update_weight
ptd_edge_update_to
ptd_notify_change
ptd_graph_is_acyclic
ptd_graph_topological_sort
ptd_validate_graph
ptd_clone_graph
ptd_vertex_to_s

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)