Is there a way to conditionally take control/modify the flow during a depth-first scan or the breadth-first scan ?

Say, for example, if a particular node if found, consider it as a leaf-node and continue with the rest of the processing as usual (meaning do not traverse its child-nodes).

  • 1
    $\begingroup$ A particular example of what you want to do might be helpful to potential answerers. $\endgroup$ – J. M. is in limbo Sep 28 '12 at 16:29
  • $\begingroup$ I am trying to find a path in 2D regular grid (GridGraph[{m, n}]), which satisfies some conditions. I need to explore pathways starting from a node. I think DFS would be one (quick+suitable for my purpose) way to explore all possible pathways. But as soon as I see that the current path is NOT a solution, I need the algorithm to stop there and not process the child nodes further. (I am thinking of using DFS since I find the events very handy) Can this be done? $\endgroup$ – my account_ram Sep 29 '12 at 16:13
  • $\begingroup$ There are ways indicated here for doing a depth first traversal. You could modify one to terminate any given path on encountering a given condition. $\endgroup$ – Daniel Lichtblau Oct 3 '12 at 14:49

The answer by Mr. Wizard that Daniel linked to is easily hacked to include a stop condition, you simply take the recursive function, but filter the next level depending on your stopping criterion.

stopCondition[element_] := Length[element] > 1;
(Print@#; #0~Scan~Select[#, stopCondition]) &@{{1, {2, 3}, 0}, {4, 5, 2}, 2}
  • $\begingroup$ Thanks Vincent. Like I mentioned, I am relying on events associated with the DFS. $\endgroup$ – my account_ram Oct 4 '12 at 13:50
  • $\begingroup$ @myaccount_ram I'm assuming you mean to say that you are using the build-in DepthFirstScan function for scanning graphs? If so you should really update your question to reflect this, and include an example highlight what events you are reliant on. $\endgroup$ – jVincent Oct 4 '12 at 19:50
  • $\begingroup$ Thank you all - I am implementing a modified version of a DFS myself! $\endgroup$ – my account_ram Oct 17 '12 at 17:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.