dsa.graph module
Module containing graph classes.
- class dsa.graph.AdjacencyListGraph(directed=False, vertices=None)
Bases:
objectA unweighted adjacency list vertex implementation (allows either directed or undirected representation) vertex labels are string types
- add_directed_edge(start_label, end_label)
Add a directed edge to the graph.
- Parameters:
start_label (str) – The label of the starting vertex.
end_label (str) – The label of the ending vertex.
- add_edge(start_label, end_label, directed=None)
Add an edge to the graph.
- Parameters:
start_label (str) – The label of the starting vertex.
end_label (str) – The label of the ending vertex.
directed (bool) – Whether the edge is directed.
- add_vertex(label)
Add a vertex to the graph.
- Parameters:
label (str) – The vertex label to add.
- Raises:
ValueError – If the vertex label already exists.
- adjacents(vertex)
Return a list of adjacents of a given vertex
- Parameters:
vertex (str) – The label of the vertex.
- Return type:
list
- delete_edge(start_label, end_label, directed=None)
Delete an edge in the graph.
- Parameters:
start_label (str) – Starting vertex label.
end_label (str) – Ending vertex label.
directed (bool) – Whether the edge is directed.
- Raises:
KeyError – If the edge does exist.
- delete_vertex(label)
Delete a vertex from the graph.
- Parameters:
label (str) – The vertex label to delete.
- edges()
Return a list of edges in the graph. Each edge is represented by a tuple (start, end)
- Return type:
list
- classmethod from_dict(data, directed=False)
Create a graph from a dictionary representation.
- Parameters:
data (dict) – The dictionary representation of the graph.
directed (bool) – Whether the graph is directed.
- Returns:
An instance of the graph class.
- has_edge(start_label, end_label)
Return boolean if an edge exists :type start_label:
str:param start_label: The starting vertex label. :type start_label: str :type end_label:str:param end_label: The ending vertex label. :type end_label: str- Return type:
bool- Returns:
A boolean of whether there is an edge from start to end
- Raises:
KeyError – If either vertex does not exist.
- has_vertex(label)
Return boolean if a vertex exists :type label:
str:param label: The vertex label. :type label: str- Return type:
bool- Returns:
A boolean of whether the vertex exists in the graph.
- order()
Return the number of nodes in the graph. :returns: The number of nodes in the graph. :rtype: int
- size()
Return the number of edges in the graph. :returns: The number of edges in the graph. :rtype: int
- to_dict()
Return the adjacency list as a dictionary.
For unweighted graphs, returns a dictionary of lists. For weighted graphs, returns a dictionary of dictionaries.
- Return type:
dict- Returns:
A dictionary representing the adjacency list of the graph. - Unweighted: {vertex: [neighbor1, neighbor2, …]} - Weighted: {vertex: {neighbor1: weight1, neighbor2: weight2, …}}
- undirected_edges()
Return a list of undirected edges in the graph. Each edge is represented by a tuple (start, end)
- Return type:
list
- vertices()
Return a list of vertex labels of the graph
- Return type:
list
- class dsa.graph.AdjacencyListWeightedGraph(directed=False, vertices=None)
Bases:
AdjacencyListGraphA weighted adjacency list vertex implementation in Python (allows either directed or undirected representation)
- add_edge(start_label, end_label, weight, directed=None)
Add an edge to the graph.
- Parameters:
start_label (
str) – The starting vertex label.end_label (
str) – The ending vertex label.weight – The edge weight.
directed – Whether the edge is directed.
- adjacent_items(vertex)
Return a list of adjacents and weights of a given vertex (adjacent label, weight) pair.
- Parameters:
vertex (
str) – starting vertex label- Return type:
list
- adjacents(vertex)
Return a list of adjacents of a given vertex
- Parameters:
vertex (
str) – starting vertex label- Return type:
list
- delete_edge(start_label, end_label, directed=None)
Delete an edge in the graph.
- Parameters:
start_label (str) – Starting vertex label.
end_label (str) – Ending vertex label.
directed (bool) – Whether the edge is directed.
- Raises:
KeyError – If the edge does exist.
- edges()
Return a list of edges in the graph. Each edge is represented by a tuple (start, end, weight)
- Return type:
list
- classmethod from_dict(data, directed=False)
Create a weighted graph from a dictionary representation.
- Parameters:
data (dict) – The dictionary representation of the graph.
directed (bool) – Whether the graph is directed.
- Returns:
An instance of the weighted graph class.
- get_weight(start_label, end_label)
Get the weight of an edge.
- Parameters:
start_label (
str) – The starting vertex label.end_label (
str) – The ending vertex label.
- Returns:
The weight of the edge from start to end.
- undirected_edges()
Return a list of undirected edges in the graph. Each edge is represented by a tuple (start, end, weight)
- Return type:
list
- class dsa.graph.AdjacencyMatrixGraph(directed=False, weighted=False, vertices=None)
Bases:
objectAn unweighted adjacency matrix graph implementation.
This class allows either directed or undirected representation of a graph. Vertex labels are string types.
- add_edge(start_label, end_label, directed=None)
Add an edge in the graph.
- Parameters:
start_label (str) – Starting vertex label.
end_label (str) – Ending vertex label.
directed (bool) – Whether the edge is directed.
- add_vertex(label)
Add a vertex to the graph.
- Parameters:
label (str) – The vertex label to add.
- Raises:
ValueError – If the vertex label already exists.
- adjacents(vertex)
Return a list of adjacents of a given vertex
- Parameters:
vertex (str) – The label of the vertex.
- Return type:
list
- delete_edge(start_label, end_label, directed=None)
Delete an edge in the graph.
- Parameters:
start_label (str) – Starting vertex label.
end_label (str) – Ending vertex label.
directed (bool) – Whether the edge is directed.
- delete_vertex(label)
Delete a vertex from the graph.
- Parameters:
label (str) – The vertex label to delete.
- edges()
Return a list of edges in the graph. Each edge is represented by a tuple (start, end)
- Return type:
list
- classmethod from_dict(data, directed=False)
Create a graph from a dictionary representation.
- Parameters:
data (dict) – The dictionary representation of the graph.
directed (bool) – Whether the graph is directed.
- Returns:
An instance of the graph class.
- has_edge(start_label, end_label)
Return boolean if an edge exists.
- Parameters:
start_label (str) – starting vertex label
end_label (str) – starting vertex label
- Return type:
bool- Returns:
A boolean of whether there is an edge from start to end.
- has_vertex(label)
Return boolean if a vertex exists
- Parameters:
label (str) – The vertex label.
- Return type:
bool- Returns:
A boolean of whether the vertex exists in the graph.
- order()
Return the number of nodes in the graph. :returns: The number of nodes in the graph. :rtype: int
- print_graph()
Print the contents of the graph.
- size()
Return the number of edges in the graph. :returns: The number of edges in the graph. :rtype: int
- to_dict()
Return the adjacency matrix as a dictionary.
For unweighted graphs, returns a dictionary of lists. For weighted graphs, returns a dictionary of dictionaries.
- Return type:
dict- Returns:
A dictionary representing the adjacency matrix of the graph. - Unweighted: {vertex: [neighbor1, neighbor2, …]} - Weighted: {vertex: {neighbor1: weight1, neighbor2: weight2, …}}
- undirected_edges()
Return a list of undirected edges in the graph. Each edge is represented by a tuple (start, end)
- Return type:
list
- vertices()
Return a list of vertex labels of the graph
- Return type:
list
- class dsa.graph.AdjacencyMatrixWeightedGraph(directed=False, vertices=None)
Bases:
AdjacencyMatrixGraphA weighted adjacency matrix graph implementation (allows either directed or undirected representation) vertex labels are string types
- add_edge(start_label, end_label, weight, directed=None)
Add an edge to the graph.
- Parameters:
start_label (str) – The starting vertex label.
end_label (str) – The ending vertex label.
weight – The weight of the vertex.
directed – Whether the edge is directed.
- adjacent_items(vertex)
Return a list of adjacents and weights of a given vertex (adjacent label, weight) pair.
- Parameters:
vertex (
str) – starting vertex label- Return type:
list
- edges()
Return a list of edges in the graph. Each edge is represented by a tuple (start, end, weight).
- Return type:
list
- classmethod from_dict(data, directed=False)
Create a weighted graph from a dictionary representation.
- Parameters:
data (dict) – The dictionary representation of the graph.
directed (bool) – Whether the graph is directed.
- Returns:
An instance of the weighted graph class.
- get_weight(start_label, end_label)
Get the weight of an edge.
- Parameters:
start_label (
str) – The starting vertex label.end_label (
str) – The ending vertex label.
- Returns:
The weight of the edge from start to end.
- print_graph()
Print the contents of the graph.
- undirected_edges()
Return a list of undirected edges in the graph. Each edge is represented by a tuple (start, end, weight).
- Return type:
list
- class dsa.graph.Graph
Bases:
objectGraph Factory
- static create(graph_type, directed=False, weighted=False, vertices=None)
Return a graph object based on the specified parameters.
- Parameters:
graph_type (
str) – The type of graph (‘adjacency_matrix’ or ‘adjacency_list’).directed (bool) – Whether the graph is directed.
weighted (bool) – Whether the graph is weighted.
labels (list[str], optional) – List of vertex labels for adjacency matrix graphs. Defaults to [].
- Return type:
object
- static create_adjacency_list(directed=False, weighted=False, vertices=None)
Return an adjacency list graph object.
- Parameters:
directed (bool) – Whether the graph is directed.
weighted (bool) – Whether the graph is weighted.
labels (list[str], optional) – List of vertex labels for adjacency matrix graphs. Defaults to [].
- Return type:
object
- static create_adjacency_matrix(directed=False, weighted=False, vertices=None)
Return an adjacency matrix graph object.
- Parameters:
directed (bool) – Whether the graph is directed.
weighted (bool) – Whether the graph is weighted.
labels (list[str], optional) – List of vertex labels for adjacency matrix graphs. Defaults to [].
- Return type:
object
- static from_dict(data, graph_type, directed=False, weighted=False)
Create a graph from a dictionary representation using the factory.
- Parameters:
data (dict) – The dictionary representation of the graph.
graph_type (str) – The type of graph (‘adjacency_matrix’ or ‘adjacency_list’).
directed (bool) – Whether the graph is directed.
weighted (bool) – Whether the graph is weighted.
- Return type:
object- Returns:
An instance of the specified graph class.