From d2fa91b18e4f87976a67f99a57929d12fe48cfd9 Mon Sep 17 00:00:00 2001 From: wuyudi Date: Thu, 25 Jun 2020 23:54:41 +0800 Subject: [PATCH] Add url and typing hint for BFS (#2156) * Add typing for bfs * Add url for BFS * rename the function Co-authored-by: Christian Clauss * Update graphs/bfs.py Co-authored-by: Christian Clauss * Change the return value type of bfs * change the function name. change all instances of bfs() to breadth_first_search(). * change the function name in annotate * Add one more blank line. * Delete one blank line. * Delete one blank line. I've read the https://www.flake8rules.com/rules/W391.html, and still don't know how to do it. I've tried using 0 ,1,2 blank lines... * Update graphs/bfs.py Co-authored-by: Christian Clauss * Update graphs/bfs.py Co-authored-by: Christian Clauss * Rename bfs.py to breadth_first_search_2.py Co-authored-by: Christian Clauss --- graphs/{bfs.py => breadth_first_search_2.py} | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) rename graphs/{bfs.py => breadth_first_search_2.py} (69%) diff --git a/graphs/bfs.py b/graphs/breadth_first_search_2.py similarity index 69% rename from graphs/bfs.py rename to graphs/breadth_first_search_2.py index 9d9b1ac03..0c87b5d8b 100644 --- a/graphs/bfs.py +++ b/graphs/breadth_first_search_2.py @@ -1,9 +1,7 @@ """ -BFS. - +https://en.wikipedia.org/wiki/Breadth-first_search pseudo-code: - -BFS(graph G, start vertex s): +breadth_first_search(graph G, start vertex s): // all nodes initially unexplored mark s as explored let Q = queue data structure, initialized with s @@ -13,9 +11,10 @@ while Q is non-empty: if w unexplored: mark w as explored add w to Q (at the end) - """ +from typing import Set, Dict + G = { "A": ["B", "C"], "B": ["A", "D", "E"], @@ -26,13 +25,13 @@ G = { } -def bfs(graph, start): +def breadth_first_search(graph: Dict, start: str) -> Set[str]: """ - >>> ''.join(sorted(bfs(G, 'A'))) + >>> ''.join(sorted(breadth_first_search(G, 'A'))) 'ABCDEF' """ - explored, queue = set(), [start] # collections.deque([start]) - explored.add(start) + explored = {start} + queue = [start] while queue: v = queue.pop(0) # queue.popleft() for w in graph[v]: @@ -43,4 +42,4 @@ def bfs(graph, start): if __name__ == "__main__": - print(bfs(G, "A")) + print(breadth_first_search(G, "A"))