A couple things to chime in here:
Depending on the structure of your DAG, you could potentially reduce computation time by traversing the opposite direction, child -> parent. In the extreme case of a Tree this would be obvious as there is only one o...