-
Couldn't load subscription status.
- Fork 196
Open
Description
Take Breadth-First Search/tree.js (shown below) as an example.
The input to the BFS algorithm is a graph (or tree) and a starting node, while the BFS function only takes the starting node s as parameter, leaving the graph G as a global variable. In my humble opinion, it would be better to avoid such mismatch, which can potentially confuse learners.
Note: This mismatch also appears in some other algorithm code.
algorithms/Brute Force/Breadth-First Search/tree.js
Lines 1 to 50 in fe3adcf
| // import visualization libraries { | |
| const { Tracer, GraphTracer, LogTracer, Layout, VerticalLayout } = require('algorithm-visualizer'); | |
| // } | |
| const G = [ // G[i][j] indicates whether the path from the i-th node to the j-th node exists or not | |
| [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0], | |
| [0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0], | |
| [0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0], | |
| [0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0], | |
| [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], | |
| [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | |
| ]; | |
| // define tracer variables { | |
| const tracer = new GraphTracer(); | |
| const logger = new LogTracer(); | |
| tracer.log(logger); | |
| Layout.setRoot(new VerticalLayout([tracer, logger])); | |
| tracer.set(G); | |
| tracer.layoutTree(0); | |
| Tracer.delay(); | |
| // } | |
| function BFS(s) { // s = start node | |
| const Q = []; | |
| Q.push(s); // add start node to queue | |
| // visualize { | |
| tracer.visit(s); | |
| Tracer.delay(); | |
| // } | |
| while (Q.length > 0) { | |
| const node = Q.shift(); // dequeue | |
| for (let i = 0; i < G[node].length; i++) { | |
| if (G[node][i]) { // if current node has the i-th node as a child | |
| Q.push(i); // add child node to queue | |
| // visualize { | |
| tracer.visit(i, node); | |
| Tracer.delay(); | |
| // } | |
| } | |
| } | |
| } | |
| } | |
| BFS(0); |
Metadata
Metadata
Assignees
Labels
No labels