Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- std::vector<void*>* PDB_4_4_4_4(MNPuzzleState<4, 4> g, Heuristic<MNPuzzleState<4, 4>> &h)
- {
- bool to_load = true;
- bool to_save = true;
- const char *hprefix = "./PDB/";
- std::cout <<"starting PDB_4_4_4_4" << std::endl;
- std::vector<void*>* toClean = new std::vector<void*>();
- // patterns
- std::vector<int> p1 = {0,1,4,5};
- std::vector<int> p2 = {0,2,3,6,7};
- std::vector<int> p3 = {0,8,9,12,13};
- std::vector<int> p4 = {0,10,11,14,15};
- // PDB1
- MNPuzzle<4,4>* mnp1 = new MNPuzzle<4,4>();
- toClean->push_back(mnp1);
- mnp1->SetPattern(p1);
- mnp1->StoreGoal(g);
- LexPermutationPDB<MNPuzzleState<4, 4>, slideDir, MNPuzzle<4, 4>>* pdb1 = new LexPermutationPDB<MNPuzzleState<4, 4>, slideDir, MNPuzzle<4, 4>>(mnp1, g, p1) ;
- toClean->push_back(pdb1);
- if (!to_load || !pdb1->Load(hprefix))
- {
- pdb1->BuildAdditivePDB(g, 1);
- if (to_save){
- pdb1->Save(hprefix);
- }
- }
- // PDB2
- MNPuzzle<4, 4>* mnp2 = new MNPuzzle<4, 4>();
- toClean->push_back(mnp2);
- mnp2->SetPattern(p2);
- mnp2->StoreGoal(g);
- LexPermutationPDB<MNPuzzleState<4, 4>, slideDir, MNPuzzle<4, 4>>* pdb2 = new LexPermutationPDB<MNPuzzleState<4, 4>, slideDir, MNPuzzle<4, 4>>(mnp2, g, p2);
- toClean->push_back(pdb2);
- if (!to_load || !pdb2->Load(hprefix))
- {
- pdb2->BuildAdditivePDB(g, 1);
- if (to_save){
- pdb2->Save(hprefix);
- }
- }
- // PDB3
- MNPuzzle<4, 4>* mnp3 = new MNPuzzle<4, 4>();
- toClean->push_back(mnp3);
- mnp3->SetPattern(p3);
- mnp3->StoreGoal(g);
- LexPermutationPDB<MNPuzzleState<4, 4>, slideDir, MNPuzzle<4, 4>>* pdb3 = new LexPermutationPDB<MNPuzzleState<4, 4>, slideDir, MNPuzzle<4, 4>>(mnp3, g, p3);
- toClean->push_back(pdb3);
- if (!to_load || !pdb3->Load(hprefix))
- {
- pdb3->BuildAdditivePDB(g, 1);
- if (to_save){
- pdb3->Save(hprefix);
- }
- }
- // PDB4
- MNPuzzle<4, 4>* mnp4 = new MNPuzzle<4, 4>();
- toClean->push_back(mnp4);
- mnp4->SetPattern(p4);
- mnp4->StoreGoal(g);
- LexPermutationPDB<MNPuzzleState<4, 4>, slideDir, MNPuzzle<4, 4>>* pdb4 = new LexPermutationPDB<MNPuzzleState<4, 4>, slideDir, MNPuzzle<4, 4>>(mnp4, g, p4);
- toClean->push_back(pdb4);
- if (!to_load || !pdb4->Load(hprefix))
- {
- pdb4->BuildAdditivePDB(g, 1);
- if (to_save){
- pdb4->Save(hprefix);
- }
- }
- h.lookups.resize(0);
- h.heuristics.resize(0);
- h.lookups.push_back({kAddNode, 1, 4});
- h.lookups.push_back({kLeafNode, 0, 0});
- h.lookups.push_back({kLeafNode, 1, 1});
- h.lookups.push_back({kLeafNode, 2, 2});
- h.lookups.push_back({kLeafNode, 3, 3});
- h.heuristics.push_back(pdb1);
- h.heuristics.push_back(pdb2);
- h.heuristics.push_back(pdb3);
- h.heuristics.push_back(pdb4);
- return toClean;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement