Graph walking: smallest set of "blocking" nodes I'm not sure I've got the terminology right in my question, but here's conceptually what I'm looking for.
In a directed acyclic graph with a single root node and multiple end nodes, how can I can determine the smallest set of nodes such as when I remove these nodes (and associated edges) from the graph none of the end nodes are reachable from the root node?
To put my needs in a bit more context, I'm working with a Rete network as obtained by a production rules engine and I'm trying to figure out what is the smallest conditions that would prevent any rule from firing.
 A: Let $r$ be the root node, and $N$ the set of end nodes. I'll assume: (1) removing the root node and any end nodes are not allowed; and (2) that there is no arc from a root node to an end node (otherwise, by assumption (1), there is no solution). Perhaps you do want to allow the removal of end nodes, but I think what I write below is easily modified in this case.
First, add to $G$ a single vertex $s$, and, for every end node $n\in N$, add an arc $(n,s)$ to $G$. Call this new graph $G=(V,A)$ as well.
Note that any directed path from $r$ to an end node $n$ can be uniquely extended to a directed path from $r$ to $s$, and conversely any directed path from $r$ to $s$ can be shortened to a directed path from $r$ to some end node. 
Call those vertices in $V\setminus (\{r\}\cup N)$ deletable. We want to find a minimum sized set of deletable vertices whose deletion leaves no directed paths from $r$ to $s$. I'll follow you by calling this a "blocking set". By assumption (2), a blocking set at least exists (namely, take $C$ to be all deletable vertices), so we need to find one of minimum size.
For the following, I will have to assume you know a little about the max-flow min-cut theorem. In particular, I will use notation from that wikipedia article, although it is pretty much the standard notation found in most textbooks. The basic algorithm one can use to find a maximum flow is the Ford-Fulkerson Algorithm, which is fast.
Anyway, we're going to apply max-flow min-cut to a new graph $G^\prime=(V^\prime,A^\prime)$ (with edge capacities) obtained from $G$ as follows. 
The vertices of $G^\prime$ consist of $r,s,N$, and, for each deletable vertex $v$, two vertices $\{v_1,v_2\}$. For each deletable vertex $v$ in $G$, put into $A^\prime$: the arc $(v_1,v_2)$ (call these, and only these,"unit arcs"); for each arc $(w,v)\in A$, the arc $(w,v_1)$; and for each arc $(v,w)\in A$, the arc $(v_2,w)$. Finally, if $(x,y)$ is an arc in $A$ where neither $x$ or $y$ is deletable, put $(x,y)$ into $A^\prime$.
Finally, give all unit arcs a capacity of $1$, and give all other arcs infinite capacity.  
Note that any directed path from $r$ to $s$ in $G$ naturally corresponds to a directed path from $r$ to $s$ in $G^\prime$ and conversely. Moreover, by our starting assumptions, any directed path from $r$ to $s$ in $G$ uses a deletable vertex, and hence the corresponding path in $G^\prime$ uses a unit arc. From this, we may observe that a blocking set $C$ in $G$ corresponds to an $(r,s)$-cut in $G^\prime$ with corresponding cut-set $\{(v_1,v_2) \mid v\in C\}$, where $(v_1,v_2)$ is the unit arc corresponding to $v$. Conversely, any $(r,s)$-cut in $G^\prime$ with finite capacity $c$ corresponds to a blocking set of size $c$ in $G$ (the finite-capacity implies that the cut-set consists only of unit arcs).
The previous paragraph implies that the minimum size of a blocking set equals the minimum capacity of a cut-set in $G^\prime$. Now apply the Ford-Fulkerson algorithm to $G^\prime$ using source $r$ and sink $s$ to get a maximum $(r,s)$-flow. The arcs that are filled to capacity (which are necessarily unit arcs) then correspond to the minimum (capacity) cut-set in $G^\prime$ and hence a minimum blocking set in $G$. The previous sentence is a consequence of the max-flow min-cut theorem.
