From 75eeefaf06e8e12f637aecae14f11e2dece30b23 Mon Sep 17 00:00:00 2001 From: Praful Katare <47990928+Kpraful@users.noreply.github.com> Date: Sun, 8 Oct 2023 14:58:34 +0530 Subject: [PATCH 1/4] Adds Doc test in depth_first_search_2.py --- graphs/depth_first_search_2.py | 68 ++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/graphs/depth_first_search_2.py b/graphs/depth_first_search_2.py index 3072d527c1c7..499bf04ba34d 100644 --- a/graphs/depth_first_search_2.py +++ b/graphs/depth_first_search_2.py @@ -9,12 +9,44 @@ def __init__(self): # for printing the Graph vertices def print_graph(self) -> None: + """ + Print the graph vertices. + + Example: + >>> g = Graph() + >>> g.add_edge(0, 1) + >>> g.add_edge(0, 2) + >>> g.add_edge(1, 2) + >>> g.add_edge(2, 0) + >>> g.add_edge(2, 3) + >>> g.add_edge(3, 3) + >>> g.print_graph() + {0: [1, 2], 1: [2], 2: [0, 3], 3: [3]} + 0 -> 1 -> 2 + 1 -> 2 + 2 -> 0 -> 3 + 3 -> 3 + """ print(self.vertex) for i in self.vertex: print(i, " -> ", " -> ".join([str(j) for j in self.vertex[i]])) # for adding the edge between two vertices def add_edge(self, from_vertex: int, to_vertex: int) -> None: + """ + Add an edge between two vertices. + + :param from_vertex: The source vertex. + :param to_vertex: The destination vertex. + + Example: + >>> g = Graph() + >>> g.add_edge(0, 1) + >>> g.add_edge(0, 2) + >>> g.print_graph() + {0: [1, 2]} + 0 -> 1 -> 2 + """ # check if vertex is already present, if from_vertex in self.vertex: self.vertex[from_vertex].append(to_vertex) @@ -23,6 +55,20 @@ def add_edge(self, from_vertex: int, to_vertex: int) -> None: self.vertex[from_vertex] = [to_vertex] def dfs(self) -> None: + """ + Perform depth-first search (DFS) traversal on the graph and print the visited vertices. + + Example: + >>> g = Graph() + >>> g.add_edge(0, 1) + >>> g.add_edge(0, 2) + >>> g.add_edge(1, 2) + >>> g.add_edge(2, 0) + >>> g.add_edge(2, 3) + >>> g.add_edge(3, 3) + >>> g.dfs() + 0 1 2 3 + """ # visited array for storing already visited nodes visited = [False] * len(self.vertex) @@ -32,6 +78,24 @@ def dfs(self) -> None: self.dfs_recursive(i, visited) def dfs_recursive(self, start_vertex: int, visited: list) -> None: + """ + Perform a recursive depth-first search (DFS) traversal on the graph. + + :param start_vertex: The starting vertex for the traversal. + :param visited: A list to track visited vertices. + + Example: + >>> g = Graph() + >>> g.add_edge(0, 1) + >>> g.add_edge(0, 2) + >>> g.add_edge(1, 2) + >>> g.add_edge(2, 0) + >>> g.add_edge(2, 3) + >>> g.add_edge(3, 3) + >>> visited = [False] * len(g.vertex) + >>> g.dfs_recursive(0, visited) + 0 1 2 3 + """ # mark start vertex as visited visited[start_vertex] = True @@ -56,6 +120,10 @@ def dfs_recursive(self, start_vertex: int, visited: list) -> None: print("DFS:") g.dfs() + import doctest + # Run doctests + doctest.testmod() + # OUTPUT: # 0 -> 1 -> 2 # 1 -> 2 From 5e7e00b2ac4a45baf080a1c280c54aad65af7791 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 8 Oct 2023 09:30:41 +0000 Subject: [PATCH 2/4] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- graphs/depth_first_search_2.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/graphs/depth_first_search_2.py b/graphs/depth_first_search_2.py index 499bf04ba34d..bd14332d2974 100644 --- a/graphs/depth_first_search_2.py +++ b/graphs/depth_first_search_2.py @@ -67,7 +67,7 @@ def dfs(self) -> None: >>> g.add_edge(2, 3) >>> g.add_edge(3, 3) >>> g.dfs() - 0 1 2 3 + 0 1 2 3 """ # visited array for storing already visited nodes visited = [False] * len(self.vertex) @@ -94,7 +94,7 @@ def dfs_recursive(self, start_vertex: int, visited: list) -> None: >>> g.add_edge(3, 3) >>> visited = [False] * len(g.vertex) >>> g.dfs_recursive(0, visited) - 0 1 2 3 + 0 1 2 3 """ # mark start vertex as visited visited[start_vertex] = True @@ -121,6 +121,7 @@ def dfs_recursive(self, start_vertex: int, visited: list) -> None: g.dfs() import doctest + # Run doctests doctest.testmod() From fda3aed222aafb367e462d1ec4aec3ae240ddbfe Mon Sep 17 00:00:00 2001 From: Praful Katare <47990928+Kpraful@users.noreply.github.com> Date: Sun, 8 Oct 2023 15:19:47 +0530 Subject: [PATCH 3/4] Fixes depth_first_search_2.py formatting --- graphs/depth_first_search_2.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/graphs/depth_first_search_2.py b/graphs/depth_first_search_2.py index bd14332d2974..906b4df608b0 100644 --- a/graphs/depth_first_search_2.py +++ b/graphs/depth_first_search_2.py @@ -56,7 +56,8 @@ def add_edge(self, from_vertex: int, to_vertex: int) -> None: def dfs(self) -> None: """ - Perform depth-first search (DFS) traversal on the graph and print the visited vertices. + Perform depth-first search (DFS) traversal on the graph + and print the visited vertices. Example: >>> g = Graph() @@ -99,11 +100,12 @@ def dfs_recursive(self, start_vertex: int, visited: list) -> None: # mark start vertex as visited visited[start_vertex] = True - print(start_vertex, end=" ") + print(start_vertex, end="") # Recur for all the vertices that are adjacent to this node for i in self.vertex: if not visited[i]: + print(" ", end="") self.dfs_recursive(i, visited) From dfcac8057d38bed51b070f86d6bebea4353bb0a3 Mon Sep 17 00:00:00 2001 From: Tianyi Zheng Date: Mon, 16 Oct 2023 04:07:29 -0400 Subject: [PATCH 4/4] Cleanup --- graphs/depth_first_search_2.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/graphs/depth_first_search_2.py b/graphs/depth_first_search_2.py index 906b4df608b0..5ff13af33168 100644 --- a/graphs/depth_first_search_2.py +++ b/graphs/depth_first_search_2.py @@ -110,6 +110,10 @@ def dfs_recursive(self, start_vertex: int, visited: list) -> None: if __name__ == "__main__": + import doctest + + doctest.testmod() + g = Graph() g.add_edge(0, 1) g.add_edge(0, 2) @@ -121,16 +125,3 @@ def dfs_recursive(self, start_vertex: int, visited: list) -> None: g.print_graph() print("DFS:") g.dfs() - - import doctest - - # Run doctests - doctest.testmod() - - # OUTPUT: - # 0 -> 1 -> 2 - # 1 -> 2 - # 2 -> 0 -> 3 - # 3 -> 3 - # DFS: - # 0 1 2 3