ANALYSIS of ALGORITHMS, Bulletin Board
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
BFS set of a graph G=(V, E). (II)
Greetings.
The BSF routine that I posted (message "BFS set of a graph G=(V, E).")
computes a hash table at every iteration of a loop although the hash
table never changes. I fixed this in the version that is included with
this message.
Regards,
Marko Riedel
sub bfs {
my ($g, $marked, $stack, $perm, $perms) = @_;
my ($n) = (scalar @$g);
if(not defined $marked){
$perms = {}; $marked = [0 x $n];
for(my $i=0; $i<$n; $i++){
$marked->[$i] = 1;
bfs($g, $marked, 0, [$i], $perms);
$marked->[$i] = 0;
}
return $perms;
}
my (%next);
for(my $j=$stack; $j<scalar @$perm; $j++){
foreach my $v (@{ $g->[$perm->[$j]]}){
$next{$v} = 1 if not $marked->[$v];
}
}
foreach my $v (keys %next){
$marked->[$v] = 1;
}
my ($stackperms) = permute([@$perm[$stack..$#$perm]]);
foreach my $stackperm (@$stackperms){
@$perm[$stack..$#$perm] = @$stackperm;
if(scalar @$perm==$n){
$perms->{"@$perm"} = $perm;
next;
}
bfs($g, $marked, scalar @$perm, [@$perm, keys %next], $perms);
}
foreach my $v (keys %next){
$marked->[$v] = 0;
}
return;
}
Date Prev |
Date Next |
Date Index |
Thread Index