From d71074c01a677fdfa553fe73dda58bdaee21a860 Mon Sep 17 00:00:00 2001 From: "Brady J. Garvin" <bgarvin@cse.unl.edu> Date: Wed, 28 Sep 2022 13:34:29 -0500 Subject: [PATCH] Implemented a recursive DFS. --- graph-search/src/features/search/search.js | 17 +++++++++++++++-- graph-search/src/features/search/solution.js | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/graph-search/src/features/search/search.js b/graph-search/src/features/search/search.js index 5918ee4..f931d50 100644 --- a/graph-search/src/features/search/search.js +++ b/graph-search/src/features/search/search.js @@ -129,6 +129,19 @@ export function bestFirst(graph, source, destination) { return undefined; } -export function recursiveDFS(graph, source, destination) { - return undefined; // TODO: stub +export function recursiveDFS(graph, source, destination, visited = new Set()) { + if (visited.has(source)) { + return undefined; + } + visited.add(source); + if (source === destination) { + return [destination]; + } + for (const incidence of graph.getIncidences(source)) { + const suffix = recursiveDFS(graph, incidence.destination, destination, visited); + if (suffix !== undefined) { + return [source, ...suffix]; + } + } + return undefined; } diff --git a/graph-search/src/features/search/solution.js b/graph-search/src/features/search/solution.js index da0ee23..94ab48c 100644 --- a/graph-search/src/features/search/solution.js +++ b/graph-search/src/features/search/solution.js @@ -29,7 +29,7 @@ function formatSolution(solution) { } export function Solution(props) { - const search = bestFirst; + const search = recursiveDFS; const firstSolution = search(firstExample, 'a', 'd'); const secondSolution = search(secondExample, '123', '321'); return ( -- GitLab