graph
index
/vol/home-vol2/lif/grohe/Programme/Python/tree_dec/graph.py

# Classes for directed graphs and graphs together with
# functions generating 'standard' graphs and a few algorithms.
#
# Written by Martin Grohe, 06-06-2006

 
Modules
       
pickle
random

 
Classes
       
__builtin__.dict(__builtin__.object)
Digraph
Graph

 
class Digraph(__builtin__.dict)
    Directed graph implementation based on dictionaries.  Dictionary has an
entry for each vertex that refers to the set of all adjacent
vertices. Attributes 'order' and 'size' store the number of vertices and
edges, respectively.
 
 
Method resolution order:
Digraph
__builtin__.dict
__builtin__.object

Methods defined here:
__init__(self, V=[])
Initialize Graph with vertex set V. V may also be a nonnegative
integer, in which case the vertex set is range(n)={0,...,n-1}
__str__(self)
add_edge(self, v, w)
add_edges(self, es)
add_vertex(self, v)
add_vertices(self, X)
delete_edge(self, v, w)
delete_edges(self, Y)
delete_vertex(self, v)
delete_vertices(self, X)
dump(self, filename)
Write graph into file 'filename'.
edges(self)
Return list of all edges.
has_edge(self, v, w)

Data and other attributes defined here:
__dict__ = <dictproxy object>
dictionary for instance variables (if defined)
__weakref__ = <attribute '__weakref__' of 'Digraph' objects>
list of weak references to the object (if defined)

Methods inherited from __builtin__.dict:
__cmp__(...)
x.__cmp__(y) <==> cmp(x,y)
__contains__(...)
D.__contains__(k) -> True if D has a key k, else False
__delitem__(...)
x.__delitem__(y) <==> del x[y]
__eq__(...)
x.__eq__(y) <==> x==y
__ge__(...)
x.__ge__(y) <==> x>=y
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__gt__(...)
x.__gt__(y) <==> x>y
__hash__(...)
x.__hash__() <==> hash(x)
__iter__(...)
x.__iter__() <==> iter(x)
__le__(...)
x.__le__(y) <==> x<=y
__len__(...)
x.__len__() <==> len(x)
__lt__(...)
x.__lt__(y) <==> x<y
__ne__(...)
x.__ne__(y) <==> x!=y
__repr__(...)
x.__repr__() <==> repr(x)
__setitem__(...)
x.__setitem__(i, y) <==> x[i]=y
adj_vert = get(...)
D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.
clear(...)
D.clear() -> None.  Remove all items from D.
copy(...)
D.copy() -> a shallow copy of D
get(...)
D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.
has_key(...)
D.has_key(k) -> True if D has a key k, else False
has_vertex = has_key(...)
D.has_key(k) -> True if D has a key k, else False
items(...)
D.items() -> list of D's (key, value) pairs, as 2-tuples
iteritems(...)
D.iteritems() -> an iterator over the (key, value) items of D
iterkeys(...)
D.iterkeys() -> an iterator over the keys of D
itervalues(...)
D.itervalues() -> an iterator over the values of D
keys(...)
D.keys() -> list of D's keys
pop(...)
D.pop(k[,d]) -> v, remove specified key and return the corresponding value
If key is not found, d is returned if given, otherwise KeyError is raised
popitem(...)
D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty
setdefault(...)
D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
update(...)
D.update(E, **F) -> None.  Update D from E and F: for k in E: D[k] = E[k]
(if E has keys else: for (k, v) in E: D[k] = v) then: for k in F: D[k] = F[k]
values(...)
D.values() -> list of D's values
vertices = keys(...)
D.keys() -> list of D's keys

Data and other attributes inherited from __builtin__.dict:
__new__ = <built-in method __new__ of type object>
T.__new__(S, ...) -> a new object with type S, a subtype of T
fromkeys = <built-in method fromkeys of type object>
dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.
v defaults to None.

 
class Graph(Digraph)
    Undirected graphs.
 
 
Method resolution order:
Graph
Digraph
__builtin__.dict
__builtin__.object

Methods defined here:
add_edge(self, v, w)
delete_edge(self, v, w)
edges(self)

Methods inherited from Digraph:
__init__(self, V=[])
Initialize Graph with vertex set V. V may also be a nonnegative
integer, in which case the vertex set is range(n)={0,...,n-1}
__str__(self)
add_edges(self, es)
add_vertex(self, v)
add_vertices(self, X)
delete_edges(self, Y)
delete_vertex(self, v)
delete_vertices(self, X)
dump(self, filename)
Write graph into file 'filename'.
has_edge(self, v, w)

Data and other attributes inherited from Digraph:
__dict__ = <dictproxy object>
dictionary for instance variables (if defined)
__weakref__ = <attribute '__weakref__' of 'Digraph' objects>
list of weak references to the object (if defined)

Methods inherited from __builtin__.dict:
__cmp__(...)
x.__cmp__(y) <==> cmp(x,y)
__contains__(...)
D.__contains__(k) -> True if D has a key k, else False
__delitem__(...)
x.__delitem__(y) <==> del x[y]
__eq__(...)
x.__eq__(y) <==> x==y
__ge__(...)
x.__ge__(y) <==> x>=y
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__gt__(...)
x.__gt__(y) <==> x>y
__hash__(...)
x.__hash__() <==> hash(x)
__iter__(...)
x.__iter__() <==> iter(x)
__le__(...)
x.__le__(y) <==> x<=y
__len__(...)
x.__len__() <==> len(x)
__lt__(...)
x.__lt__(y) <==> x<y
__ne__(...)
x.__ne__(y) <==> x!=y
__repr__(...)
x.__repr__() <==> repr(x)
__setitem__(...)
x.__setitem__(i, y) <==> x[i]=y
adj_vert = get(...)
D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.
clear(...)
D.clear() -> None.  Remove all items from D.
copy(...)
D.copy() -> a shallow copy of D
get(...)
D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.
has_key(...)
D.has_key(k) -> True if D has a key k, else False
has_vertex = has_key(...)
D.has_key(k) -> True if D has a key k, else False
items(...)
D.items() -> list of D's (key, value) pairs, as 2-tuples
iteritems(...)
D.iteritems() -> an iterator over the (key, value) items of D
iterkeys(...)
D.iterkeys() -> an iterator over the keys of D
itervalues(...)
D.itervalues() -> an iterator over the values of D
keys(...)
D.keys() -> list of D's keys
pop(...)
D.pop(k[,d]) -> v, remove specified key and return the corresponding value
If key is not found, d is returned if given, otherwise KeyError is raised
popitem(...)
D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty
setdefault(...)
D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
update(...)
D.update(E, **F) -> None.  Update D from E and F: for k in E: D[k] = E[k]
(if E has keys else: for (k, v) in E: D[k] = v) then: for k in F: D[k] = F[k]
values(...)
D.values() -> list of D's values
vertices = keys(...)
D.keys() -> list of D's keys

Data and other attributes inherited from __builtin__.dict:
__new__ = <built-in method __new__ of type object>
T.__new__(S, ...) -> a new object with type S, a subtype of T
fromkeys = <built-in method fromkeys of type object>
dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.
v defaults to None.

 
Functions
       
bfs(G)
bfs_from(G, v, visited=None, bfs_order=[])
complete_bipartite_graph(V, W)
complete_graph(V)
connected_components(G)
cycle(V)
dfs(G)
dfs_from(G, v)
grid(X, Y)
induced_subgraph(G, X)
Graph or Digraph, X Set.
Computes indiced subgraph of G with vertex set S.
Returns Digraph if G Digraph and Graph if G graph.
intersection(G, H)
load_graph(filename)
minus_vertex(G, x)
minus_vertices(G, X)
path(V)
random_graph(V, p)
union(G, H)