MAXimal | |
добавлено: 11 Jun 2008 11:27 Содержание [скрыть] Игра Пятнашки: существование решенияНапомним, что игра представляет собой поле Игру Пятнашки ("15 puzzle") изобрёл в 1880 г. Нойес Чэпман (Noyes Chapman). Существование решенияЗдесь мы рассмотрим такую задачу: по данной позиции на доске сказать, существует ли последовательность ходов, приводящая к решению, или нет. Пусть дана некоторая позиция на доске: ![]() Рассмотрим перестановку: Обозначим через Далее, пусть Тогда, решение существует тогда и только тогда, когда РеализацияПроиллюстрируем указанный выше алгоритм с помощью программного кода: int a[16]; for (int i=0; i<16; ++i) cin >> a[i]; int inv = 0; for (int i=0; i<16; ++i) if (a[i]) for (int j=0; j<i; ++j) if (a[j] > a[i]) ++inv; for (int i=0; i<16; ++i) if (a[i] == 0) inv += 1 + i / 4; puts ((inv & 1) ? "No Solution" : "Solution Exists"); ДоказательствоДжонсон (Johnson) в 1879 г. доказал, что если![]() ![]() Однако оба эти доказательства были достаточно сложны. В 1999 г. Арчер (Archer) предложил значительно более простое доказательство (скачать его статью можно здесь).
|