Information Technology Reference
In-Depth Information
COUNTING - REACHABILITY ( u )
{
R ( k , u ) = number of vertices at distance
k from u in G =( V , E )
}
prev num dist := 1;
{
num dist = R ( 0, u )
}
for dist := 1 to n
1
num dist := #- VERTICES - AT -
- DIST - FROM - u ( dist , u , prev num dist )
prev num dist := num dist
{
num dist = R ( dist , u )
}
return ( num dist )
- DISTANCE - FROM - u ( dist , u , prev num dist )
#- VERTICES - AT -
{
Returns R ( dist , u ) given prev num dist = R ( dist
1, u ) or fails
}
num nodes := 0
for last node := 1 to n
if IS - NODE - AT -
- DIST - FROM - u ( dist , u , last node , prev num dist ) then
num nodes := num nodes + 1
return ( num nodes )
- DIST - FROM - u ( dist , u , last node , prev num dist )
IS - NODE - AT -
{
num node = number of vertices at distance
dist from u found so far
}
num node := 0;
reply := false
for next to last node := 1 to n
if EXISTS - PATH - FROM - u - TO - v -
- LENGTH ( u , next to last node , dist
1 ) then
num node := num node + 1
{
count number of next-to-last nodes or fail
}
if ADJACENT - OR - IDENTICAL ( next to last node , last node ) then
reply := true
if num node < prev num dist then
fail
else return ( reply )
EXISTS - PATH - FROM - u - TO - v -
- LENGTH ( u , v , dist )
{
nondeterministically choose at most dist vertices, fail if they don't form a path
}
node 1:= u
for count := 1 to dist
node 2:= NONDETERMINISTIC - GUESS ([ 1, .. , n ])
if not ADJACENT - OR - IDENTICAL ( node 1, node 2 ) then
fail
else node 1:= node 2
if node 2= v then
return ( true )
else
return ( false )
Figure 8.9 A nondeterministic program counting vertices reachable from u . Comments are
enclosed in braces
{
}
,
.
 
Search WWH ::




Custom Search