/graph_algorithms

Common graph algorithms for python, works with arbitrary data structures.

Primary LanguagePython

Common Graph Algorithms Library

Library of graph algorithms which operate directly on python data structures.

This library uses a novel API for representing graphs.  Graph vertexes can be 
any hashable python value and the connectivity between vertexes is
represented with a callback function.  This callback is named the 'adjacent' 
function.  The adjacent function has the following form:

def adjacent(vertex):
    '''
    This function returns all vertexes which the given vertex is connected to.
    '''
    return iterable-of-neighboring-vertexes



Contents:

depth_first_traversal()
    A lazy depth first traversal

depth_first_search()
    A depth first search

iterative_deepening_depth_first_search()
    Searching infinite graphs

a_star()
    Fast optimal pathfinding

topological_sort()
    Dependency resolution.

strongly_connected_components()
    Determines which areas of the graph can reach which other areas.

In the future I would like to implement more algorithms:
- Minimum Spanning Tree
- Min-cut/Max-flow
- Substructure Search


Installation note:
This package optionally uses numpy.
Numpy is used by some unit tests.
Numpy is used to calculate A-stars effective branching factor (EBF).
If numpy is not available then EBF is not reported.


Comments and feedback are welcome
Send to David McDougall  email: dam1784[at]rit.edu