graph.Graph¶
Module graph¶
A module containing Graph class. We assume that every graph is simple, i.e., there is no loops or multi edges.
- 
class graph.Graph(graph_dict={})[source]¶
- 
add_edge(edge)[source]¶
- Add an edge to graph. Assumes that edge is of type set, tuple or list. No loops or multiple edges. - Returns: - Returns true if edge is not present, otherwise false. 
 - 
add_edges(edges)[source]¶
- Adds a list of edges to graph. - Parameters: - edges – a list of edges to be added - Returns: - void 
 - 
add_vertex(vertex)[source]¶
- If vertex is not in self.__graph_dict, a key “vertex” with an empty list
- as a value is added to the dictionary. Otherwise nothing has to be done.
 - Returns: - True if the vertex is not present in the graph, otherwise false. 
 - 
connected_component()[source]¶
- Computes the number of connected components and the size of each componenent - Returns: - a pair: thi first entry is the number of components, the second is a list constaining sizes of components 
 - 
connected_components()[source]¶
- Computes connected components. - Returns: - a list of lists, each containing vertices from the same conn component. 
 - 
degree_sequence()[source]¶
- Degree sequence is a list of all degrees in non-increasing order. - Returns: - a degree sequence of the graph 
 - 
density()[source]¶
- Density is ratio of number of edges and number of edges that complete graph has with the same number of vertices. - Returns: - returns the density of the graph 
 - 
diameter()[source]¶
- Computes the diameter of the graph. - Returns: - The maximum of distances between any pair of nodes or infinity if the graph is not connected 
 - 
erdos_gallai(degree_seq=None)[source]¶
- Erdos Gallai theorem states that a non-increasing sequence of n numbers d_i is a degree sequence of a simple graph if and only if the sum of sequence is even and the condition $sum_{i=1}^{k}{d_i} leq k(k-1) + sum_{i=k+1}^n min(d_i, k) ext{ for all } k$ This can be implemented in time $O(n)$. However, the current implementation requires O(n^2) time. - Parameters: - degree_seq – If it is None, then the degree sequence of the graph is used. - Returns: - True if the degree sequence satisfies both conditions and False otherwise 
 - 
global_clustering_coefficient()[source]¶
- Global clustering coefficient is the ratio of number of triangles and number of connected triplets of vertices - Returns: - float, clustering coefficient of the graph 
 - 
in_neighbourhood(u, v)[source]¶
- Parameters: - u – a vertex of the graph
- v – a vertex of the graph
 - Returns: - Returns True if v is in the neighborhood of u. It raises KeyError if u is not present in the graph. 
 - 
is_vertex_present(vertex)[source]¶
- Checks if the vertex is already created. Returns True if it is otherwise False - Parameters: - vertex – name of the vertex - Returns: - true if vertex is in the graph, false otherwise 
 - 
read_from_file(filename=None)[source]¶
- Reads graph from a file. - Parameters: - filename – path to the file - Returns: - True if the graph is read successfully. If filename is not specified or it does not exist, ValueError and IOError are raised (respectively). 
 - 
shortest_path(u=None, v=None)[source]¶
- Computes the shortest path between u and v. If both of them are None, then computes the shorthest path between all pair of vertices. If u is not None and v is None, then it computes the shortest path between u and all other vertices. Finally, if both of them are not None, it computes the shorthest path between u and v. - Parameters: - u – the source vertex
- v – the end vertex
 - Returns: - the shortest path 
 - 
spanning_tree()[source]¶
- Computes the spanning tree of the graph using Kruskal algorithm and union - find. Complexity: $O(mlog*(n))$ - Returns: - a list of tuples representing edges of the tree 
 - 
update_neighbors(u, new_neighbors)[source]¶
- Updates the list of vertices of a vertex. :param u: Vertex whose neighborhood is updated :param new_neighbors: (list) New neighbors of u :return: None 
 
-