Package pygraph :: Package algorithms :: Module minmax

Module minmax

Minimization and maximization algorithms.

Functions
list
heuristic_search(graph, start, goal, heuristic)
A* search algorithm.
dictionary
minimal_spanning_tree(graph, root=None)
Minimal spanning tree.
tuple
shortest_path(graph, source)
Return the shortest path distance between source and all other nodes using Dijkstra's algorithm.
tuple
shortest_path_bellman_ford(graph, source)
Return the shortest path distance between the source node and all other nodes in the graph using Bellman-Ford's algorithm.
tuple
maximum_flow(graph, source, sink, caps=None)
Finds a maximum flow and minimum cut of a directed graph by the Edmonds-Karp algorithm.
Variables
  __package__ = 'pygraph.algorithms'
Function Details

heuristic_search(graph, start, goal, heuristic)

 

A* search algorithm.

A set of heuristics is available under graph.algorithms.heuristics. User-created heuristics are allowed too.

Parameters:
  • graph (graph, digraph) - Graph
  • start (node) - Start node
  • goal (node) - Goal node
  • heuristic (function) - Heuristic function
Returns: list
Optimized path from start to goal node

minimal_spanning_tree(graph, root=None)

 

Minimal spanning tree.

Parameters:
  • graph (graph) - Graph.
  • root (node) - Optional root node (will explore only root's connected component)
Returns: dictionary
Generated spanning tree.

Attention: Minimal spanning tree is meaningful only for weighted graphs.

shortest_path(graph, source)

 

Return the shortest path distance between source and all other nodes using Dijkstra's algorithm.

Parameters:
  • graph (graph, digraph) - Graph.
  • source (node) - Node from which to start the search.
Returns: tuple
A tuple containing two dictionaries, each keyed by target nodes.
  1. Shortest path spanning tree
  2. Shortest distance from given source to each target node

Inaccessible target nodes do not appear in either dictionary.

Attention: All weights must be nonnegative.

See Also: shortest_path_bellman_ford

shortest_path_bellman_ford(graph, source)

 

Return the shortest path distance between the source node and all other nodes in the graph using Bellman-Ford's algorithm.

This algorithm is useful when you have a weighted (and obviously a directed) graph with negative weights.

Parameters:
  • graph (digraph) - Digraph
  • source (node) - Source node of the graph
Returns: tuple
A tuple containing two dictionaries, each keyed by target nodes. (same as shortest_path function that implements Dijkstra's algorithm)
  1. Shortest path spanning tree
  2. Shortest distance from given source to each target node
Raises:
  • NegativeWeightCycleError - raises if it finds a negative weight cycle. If this condition is met d(v) > d(u) + W(u, v) then raise the error.

Attention: The algorithm can detect negative weight cycles and will raise an exception. It's meaningful only for directed weighted graphs.

See Also: shortest_path

maximum_flow(graph, source, sink, caps=None)

 

Finds a maximum flow and minimum cut of a directed graph by the Edmonds-Karp algorithm.

Parameters:
  • graph (digraph) - Digraph
  • source (node) - Source of the flow
  • sink (node) - Sink of the flow
  • caps (dictionary) - Dictionary containing a maximum capacity for each edge. Defaults to the weights of the edges.
Returns: tuple
A tuple containing two dictionaries
  1. contains the flow through each edge for a maximal flow through the graph
  2. contains to which component of a minimum cut each node belongs