Single-Agent Search Framework
Search enhancements realize either of the following:
  • lower bound improvements,
  • forward pruning (safe and unsafe),
  • depth reduction (macros), and
  • move ordering.
  IDA*() {
 /** Compute the best possible lower bound **/
 lb = ComputeLowerBound();
 lb += UsePatterns();
 lb += UseDeadlockTable();
 lb += UseOverestimate( CntrlOverestimate() );
 lb += ReadTransTable();
 if( cutoff ) return;

 /** Preprocess **/
 PatternSearch( CntrlPatternSearch() );
 lb += UsePatterns();
 if( cutoff ) return;

 /** Generate searchable moves **/
 movelist = GenerateMoves();
 RemoveDeadMoves( movelist );
 IdentifyMacros( movelist );
 OrderMoves( movelist );

 for( each move ) {
   if( Irrelevant( move, CntrlIrrelevant() )) next;
   solution = IDA*();
   if( solution) return;
   if( GoalCut() ) break;

   /** Use New Knowledge **/
   UpdateLowerBound();
   if( cutoff ) return;
 }
 /** Post-process **/
 SaveTransTable( CntrlTransTable() );
 return;
}

GPW'99, October 16, 1999. Pushing the Limits: New Developments in Single-Agent Search previous up next