
map<City, int> h =
{
{City::ORADEA, 380},
{City::ZERIND, 374},
{City::ARAD, 366},
{City::TIMISOARA, 329},
{City::LUGOJ, 244},
{City::MEHADIA, 241},
{City::DOBRETA, 242},
{City::SIBIU, 253},
{City::RIMNICU_VILCEA, 193},
{City::CRAIOVA, 160},
{City::FAGARAS, 176},
{City::PITESTI, 100},
{City::GIURGIU, 77},
{City::BUCHAREST, 0},
{City::NEAMT, 234},
{City::URZICENI, 80},
{City::IASI, 226},
{City::VASLUI, 199},
{City::HIRSOVA, 151},
{City::EFORIE, 161},
};
Heurystyki dla piętnastki:
- h1 - liczba kafelków znajdujących się na niewłaściwej pozycji
- h2 - sumaryczna odległość kafelków od ich pozycji docelowych
Przypadki testowe dla piętnastki:
State({{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 0}}); // 0
State({{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 0, 15}}); // 1
State({{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 0, 11}, {13, 14, 15, 12}}); // 2
State({{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 14, 10, 11}, {13, 0, 15, 12}}); // 4
State({{1, 3, 0, 4}, {5, 2, 6, 8}, {9, 10, 7, 11}, {13, 14, 15, 12}}); // 6
State({{1, 2, 3, 4}, {6, 7, 8, 0}, {5, 10, 11, 12}, {9, 13, 14, 15}}); // 8
State({{1, 2, 0, 4}, {5, 6, 3, 8}, {14, 13, 7, 11}, {9, 15, 10, 12}}); // 12
State({{1, 2, 3, 0}, {5, 15, 6, 4}, {9, 10, 7, 8}, {13, 14, 12, 11}}); // 15
State({{1, 2, 0, 4}, {5, 10, 3, 6}, {13, 9, 15, 8}, {14, 12, 7, 11}}); // 18
State({{1, 4, 3, 7}, {5, 2, 0, 8}, {9, 12, 14, 15}, {13, 6, 11, 10}}); // 25
State({{1, 6, 7, 2}, {5, 10, 12, 3}, {0, 14, 13, 8}, {9, 15, 11, 4}}); // 30
State({{14, 7, 6, 4}, {2, 3, 1, 11}, {5, 9, 12, 15}, {13, 0, 10, 8}}); // 40
State({{1, 6, 15, 0}, {14, 11, 5, 7}, {10, 9, 8, 3}, {2, 13, 12, 4}}); // 45
State({{15, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}, {12, 13, 14, 0}}); // 46
State({{15, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 14, 10}, {11, 12, 13, 0}}); // 50
State({{15, 1, 2, 3}, {4, 5, 14, 6}, {7, 8, 9, 10}, {11, 12, 13, 0}}); // <=54
State({{15, 14, 13, 12}, {11, 10, 9, 8}, {7, 6, 5, 4}, {3, 1, 2, 0}}); // <=72