Graph server in Erlang
Example:
1> {ok, A} = grs:node().
{ok,<0.1018.0>}
2> {ok, B} = grs:node().
{ok,<0.1020.0>}
3> {ok, E} = grs:edge(A, B).
{ok,<0.1022.0>}
4> grs_node:edges(A).
{ok,[<0.1022.0>]}
5> grs_node:edges(B).
{ok,[<0.1022.0>]}
6> grs_edge:nodes(E).
{ok,[{undefined,<0.1018.0>},{undefined,<0.1020.0>}]}
7> grs_node:properties(A).
{ok,[]}
8> grs_node:properties(B).
{ok,[]}
9> grs_edge:properties(E).
{ok,[]}
TODO:
- Update edges' node lists when node sets its name
- Update nodes' edge listss when edge sets its name
- Implement walk() functionality (see doc/spec.t)
- Unit tests
TO DESIGN THEN DO:
- Output (Graphvis, text, others?)
- Persistance
- More advanced pathfinding than walk() (A*, simulated annealing)
- Example applications