MOAL.data_structures.graphs package¶
Submodules¶
MOAL.data_structures.graphs.adjacency_list module¶
-
class
MOAL.data_structures.graphs.adjacency_list.AbstractGraphList[source]¶ Bases:
object-
__init__()¶
-
-
class
MOAL.data_structures.graphs.adjacency_list.AdjacencyList[source]¶ Bases:
MOAL.data_structures.graphs.adjacency_list.AbstractGraphList[Wikipedia] “In graph theory and computer science, an adjacency list representation of a graph is a collection of unordered lists, one for each vertex in the graph. Each list describes the set of neighbors of its vertex. See “Storing a sparse matrix” for an alternative approach.”
MOAL.data_structures.graphs.adjacency_matrix module¶
-
class
MOAL.data_structures.graphs.adjacency_matrix.AdjacencyMatrix[source]¶ Bases:
MOAL.data_structures.graphs.adjacency_matrix.GraphMatrix[Wikipedia] “In mathematics and computer science, an adjacency matrix is a means of representing which vertices of a graph are adjacent to which other vertices.”
...In other words, it’s another way to represent a graph, very compactly (and thus efficiently), by using a matrix that represents the connections – by mapping the row and column to a specific node (similar technique as a Cayley or multiplication table).
A B C DA 0 1 1 0 might correspond to: B 1 0 1 1 (row A, col A) = 0, C 1 1 0 0 (row B, col A) = 1, etc... D 1 0 0 0 generally, self referencing nodes are not
represented, but if they are, their value is 2.
-
class
MOAL.data_structures.graphs.adjacency_matrix.GraphMatrix[source]¶ Bases:
object-
__delitem__(vertex)¶ Deletes a vertex and flips all adjacent connections to off.
-
__init__()¶ The matrix structure is just a list of lists, where each sublist represents a row. A separate nodes dictionary is used for fast lookups to reference which row/column to look at when doing operations.
e.g. >>> nodes = {‘A’: 0, ‘B’: 1, ... }, >>> matrix = [[0, 1], [1, 0], ...]
-
__setitem__(new_vertex, connections)¶ Adds a new vertex, and adds any connections that may not exist.
-
__str__()¶ Visualize the matrix as a table
-
_add(new_vertex)¶
-
_add_edge(start, end)¶ Adds an edge
-
_fill_previous_rows(count)¶ Fill previous rows to ensure the row length is always equal.
-
_new_row(count)¶
-
_remove_edge(start, end)¶ Removes an edge
-
_reorder_dict_indices(vals)¶ Generic reordering function for resetting indices of a given dictionary.
-
_reorder_edges()¶
-
_reorder_vertices()¶ Using a dictionary for the label lookup makes setting/getting items very fast, but the downside is that the indices must be re-ordered if any items are deleted. The flip-side then, would be to use a list – but lookups would suffer the same problem – so, the problem is reversed. It could however, be tuned to work either way, depending on access patterns, but that is well beyond the scope here.
-
_zeros(count)¶
-
degree(vertex)¶ Another interesting feature of Adjacency matrices is the fact that any row or column summed is automatically the degree of that vertex – magical!
-
get_column_vals(label)¶ Returns a list of values representing the given labels column values.
-
get_row_vals(label)¶ Returns the range slice of a given label, representing the row.
-
has_edge(start, end)¶
-
MOAL.data_structures.graphs.binary_decision_diagram module¶
MOAL.data_structures.graphs.graph_structured_stack module¶
MOAL.data_structures.graphs.graphs module¶
MOAL.data_structures.graphs.hypergraph module¶
MOAL.data_structures.graphs.incidence_matrix module¶
-
class
MOAL.data_structures.graphs.incidence_matrix.IncidenceMatrix[source]¶ Bases:
MOAL.data_structures.graphs.adjacency_matrix.GraphMatrixUnlike the Adjacency matrix, where rows and columns both represent vertices of a graph, and using row, then column to indicate direction, in the incidence matrix, rows represent vertices, and columns represent edges. The incidence matrix is therefore a matrix representation of the number of edge incidences, not necessarily the connections between vertices (hence the names).
0 1 2 3A 1 0 1 0 B 0 0 1 0 C 0 1 1 0 D 0 0 1 1
-
__init__()[source]¶ Here, we keep track of edges/edge count just like vertices/vertex in the adjacency matrix.
-
-
class
MOAL.data_structures.graphs.incidence_matrix.OrientedIncidenceMatrix[source]¶ Bases:
MOAL.data_structures.graphs.incidence_matrix.IncidenceMatrix