CMPUT 651: Front to Front Perimeter Search & Pattern Databases Johnny Huynh
Outline Introduction to FFPS Problems Improving FFPS itself Perimeters and PDB’s Results Conclusion
Front-to-Front Perimeter Search (FFPS) Build a perimeter around goal Find shortest path a perimeter state Use a heuristic to find a perimeter state Heuristic can be a pattern database (PDB) G S P
Problems with FFPS Taking the MIN of estimates Checking for |P| Perimeter States Each node expansion requires |P| estimates Perimeter states and PDBs requires memory G S P
Problems with FFPS Taking the MIN of estimates Checking for |P| Perimeter States Each node expansion requires |P| estimates Perimeter states and PDBs requires memory G S P
Improving FFPS Reducing Perimeter Checks given a perimeter state, p, if h(p) = 0 then state, s, needs to be checked only when h(s) = 0. In the 9-puzzle (2x5), reduced number of goal comparisons by 92.5%
Problems with FFPS Taking the MIN of estimates Checking for |P| Perimeter States Each node expansion requires |P| estimates Perimeter states and PDBs requires memory G S P
Improving FFPS Reducing Heuristic Evaluations Fraction of Node expansion time required to evaluate heuristic determines speedup. [Dillenburg ’93] fractionOptimal RadiusSpeedup
Improving FFPS Reducing Heuristic Evaluations If heuristic is monotonically non- decreasing. Estimate distance to all perimeter states Decrease estimate by edge cost Re-compute only the minimum estimates
Improving FFPS Reducing Heuristic Evaluations RadiusTotal PDB LookupsReduced PDB Lookups% 19, ,43246, ,556,360129, ,615,490256, ,644,070405, ,529,750168,
Problems with FFPS Taking the MIN of estimates Checking for |P| Perimeter States Each node expansion requires |P| estimates Perimeter states and PDBs requires memory G S P
Memory for Perimeter or PDB? Distance to each P estimated by a PDB Fixing number of states in memory, How many Perimeter states? How many PDB entries? |P| + |P| * |PDB| = c Must remember that |PDB| determined by level of abstraction
Initial (Poor) Results
Mixing Levels of Abstraction c = |P| + |P| * |PDB| What if |P| > |PDB|? Each Perimeter’s PDB doesn’t have to be the same c = |P| + ∑(|P i | * |PDB i |), P i є P, PDB i є PDB Abstraction|PDB i | P0P k P1P k P2P k P2P k
Mixing Levels of Abstraction AveragesSame Level of Abstraction (|PDB| = 90k) Different Levels of Abstraction (avg |PDB| = 90k) Abstraction0 Look-ups17021 Abstraction1 Look-ups Abstraction2 Look-ups Abstraction3 Look-ups Nodes Expanded [8-puzzle with 8 perimeter nodes and ~360K states in memory]
Combining Perimeter PDBs If each PDB uses same abstraction, then will look up the same key in each PDB. h(s) = min {PDB 1 [Φ(s)] … PDB N [Φ(s)] } Create one PDB with the same keys, and save only the MIN from each perimeter PDB. h(s) = PDB c [Φ(s)] Reduce memory from: |P| + |P| * |PDB|to |P| + |PDB|
Combining Perimeter PDBs
10-pancake results RadiusNodes ExpandedElapsed Time (s)
Conclusion FFPS performance affected by: Number of goal comparisons Number of heuristic evaluations (PDB lookups) FFPS Perimeter vs PDB: Without combining PDB’s, radius should be kept small. Combining PDB’s, memory should be allocated for radius… (up to a certain point?)
Questions?