Prolog Depth-first based on the graph search template is not memory efficient because it keeps all active branches while searching for a goal. A more efficient search for graphs looks at one path only and exploits the Prolog built-in backtracking mechanism. Create a file searches.pl and incrementally add to it the following.
Prolog Depth-first based on the graph search template is not memory efficient because it keeps all active branches while searching for a goal. A more efficient search for graphs looks at one path only and exploits the Prolog built-in backtracking
arc(a, b).
arc(a, f).
arc(b, c).
arc(b, d).
arc(b, e).
arc(f, g).
arc(f, i).
arc(i, j).
arc(i, k).
arc(j, e).
arc(j, m).
goal(d).
goal(i).
goal(m).
(a) Implement dfs/2 (depth-first search) – this strategy takes a single path 1 as input and then expands that path with a new node until the goal is found, in which case the solution is returned in the second argument. Query your program with: ?- dfs([a], X). for each file in Tests and check you find the right solution.
Step by step
Solved in 2 steps