graphs.minimum_spanning_tree_kruskal2 ===================================== .. py:module:: graphs.minimum_spanning_tree_kruskal2 Attributes ---------- .. autoapisummary:: graphs.minimum_spanning_tree_kruskal2.T Classes ------- .. autoapisummary:: graphs.minimum_spanning_tree_kruskal2.DisjointSetTree graphs.minimum_spanning_tree_kruskal2.DisjointSetTreeNode graphs.minimum_spanning_tree_kruskal2.GraphUndirectedWeighted Module Contents --------------- .. py:class:: DisjointSetTree Bases: :py:obj:`Generic`\ [\ :py:obj:`T`\ ] .. py:method:: find_set(data: T) -> DisjointSetTreeNode[T] .. py:method:: link(node1: DisjointSetTreeNode[T], node2: DisjointSetTreeNode[T]) -> None .. py:method:: make_set(data: T) -> None .. py:method:: union(data1: T, data2: T) -> None .. py:attribute:: map :type: dict[T, DisjointSetTreeNode[T]] .. py:class:: DisjointSetTreeNode(data: T) Bases: :py:obj:`Generic`\ [\ :py:obj:`T`\ ] .. py:attribute:: data .. py:attribute:: parent .. py:attribute:: rank :value: 0 .. py:class:: GraphUndirectedWeighted Bases: :py:obj:`Generic`\ [\ :py:obj:`T`\ ] .. py:method:: add_edge(node1: T, node2: T, weight: int) -> None .. py:method:: add_node(node: T) -> None .. py:method:: kruskal() -> GraphUndirectedWeighted[T] Details: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm Example: >>> g1 = GraphUndirectedWeighted[int]() >>> g1.add_edge(1, 2, 1) >>> g1.add_edge(2, 3, 2) >>> g1.add_edge(3, 4, 1) >>> g1.add_edge(3, 5, 100) # Removed in MST >>> g1.add_edge(4, 5, 5) >>> assert 5 in g1.connections[3] >>> mst = g1.kruskal() >>> assert 5 not in mst.connections[3] >>> g2 = GraphUndirectedWeighted[str]() >>> g2.add_edge('A', 'B', 1) >>> g2.add_edge('B', 'C', 2) >>> g2.add_edge('C', 'D', 1) >>> g2.add_edge('C', 'E', 100) # Removed in MST >>> g2.add_edge('D', 'E', 5) >>> assert 'E' in g2.connections["C"] >>> mst = g2.kruskal() >>> assert 'E' not in mst.connections['C'] .. py:attribute:: connections :type: dict[T, dict[T, int]] .. py:data:: T