\"Взлом\" кубика Рубика

На модерации Отложенный

Дэниел Канкл (Daniel Kunkle), ну или, по крайней мере, его компьютер, может собрать кубик Рубика за 26 ходов.

Канкл — специалист в области вычислительной техники Северо-Восточного университета в г. Бостон, доказал, что 26 ходов достаточно, чтобы собрать кубик Рубика, в каком бы состоянии он ни находился. Это на один ход меньше предыдущего рекорда. В процессе «взлома» кубика он разработал несколько алгоритмов, которые вполне можно применить для решения таких сложных задач, как составление графиков авиарейсов и расчет укладки структуры белков.

Приблизительно число возможных комбинаций кубика составляет 43 триллиона. Даже суперкомпьютер не сможет проверить все возможные комбинации в поисках самого быстрого решения с любого начального состояния кубика в разумный период времени. Поэтому Канкл и его помощник Джин Куперман (Gene Cooperman) придумали несколько остроумных математических и вычислительных алгоритмов, чтобы сделать эту задачу выполнимой.

Начали они с математических хитростей: кубик считается собранным, если каждая его сторона имеет один цвет, независимо от того, какой это цвет. Приняв комбинации, отличающиеся лишь перестановкой двух цветов, за эквивалентные, им удалось сократить количество действительно различных комбинаций до немногим более триллиона.

Затем они взялись за более простую задачу: они начали рассматривать лишь те комбинации, которые можно было решить, применяя только полуобороты — без четверть-оборотов. Оказалось, что таким способом можно собрать около 15 000 из триллиона комбинаций. Обычный компьютер сможет найти кратчайшее решение для каждой из этого сравнительного небольшого количества комбинаций путем простого перебора всех возможных ходов менее чем за день. Они также обнаружили, что каждая из этих комбинаций может быть решена за 13 ходов и меньше.

Далее они вычислили, сколько шагов потребуется, чтобы привести любую случайную комбинацию к одной из этих 15 000 специальных комбинаций. Для этого они сначала разбили эти комбинации на наборы, каждый из которых состоял их таких комбинаций, которые сами по себе можно было трансформировать только при помощи полуоборотов. Эти наборы были составлены таким образом, что ряд ходов, превращающий одну комбинацию из набора в одну из специальных комбинаций, также превращал другую комбинацию этого набора в специальную. В итоге у них получилось 1,4 триллиона таких наборов — т.е. им требовалось решить лишь 1,4 триллиона задач, что намного меньше, чем первоначальные 43 триллиона, но все равно — пугающее количество.

Тут они прибегли к помощи суперкомпьютера и применили остроумные вычислительные алгоритмы, чтобы ускорить поиск. Так как компьютеру требуется очень много времени для поиска информации, сохраненной на жестком диске, Канкл и Куперман придумали, как сохранить информацию точно в таком порядке, в котором она позднее понадобится компьютеру. Таким образом, компьютер мог считывать необходимые данные, не прибегая к поиску.

«Подобные методы можно применить для решения любой комбинаторной задачи», говорит Канкл. В качестве примеров он приводит шашки, шахматы, планирование авиарейсов и расчет укладки структуры белков. Подобные вычислительные методы использовались при недавнем расчете оптимального алгоритма для игры в шашки.

Спустя 63 часа вычислений, суперкомпьютер обнаружил, что для превращения любой случайной комбинации в специальную, которую можно собрать лишь при помощи полуоборотов, требуется не более 16 ходов. А так как эти специальные комбинации решаются не более чем за 13 ходов, получалось, что таким способом любую комбинацию кубика Рубика можно собрать за 29 ходов.

Но для нового рекорда это решение не подходило. В прошлом году Сильвиу Раду из Лундского технологического института в Швеции доказал, что любая комбинация кубика Рубика может быть решена не более чем за 27 ходов. Канкл и Куперман понимали, что для нового рекорда им потребуется исключить три хода.

При помощи существующего метода было установлено, что все наборы комбинаций, кроме приблизительно 80 млн. наборов, можно было решить не более чем за 26 ходов. Перебрав все возможные ходы, начиная с этих комбинаций, им удалось найти решение каждой из них, для которого требовалось 26 ходов или меньше.

Они представили результаты своей работы 29 июля на Международном симпозиуме по вопросам символьных и алгебраических вычислений в г. Ватерлоо, пров. Онтарио, Канада.

Теперь Канкл и Куперман намереваются снизить количество максимальных ходов до 25. Они полагают, что при помощи своего метода «грубой силы» (brute-force) им удастся перебрать все комбинации, требующие 26 ходов, и найти более быстрое решение.

Даже если это у них получится, место для улучшения еще останется. Большинство исследователей считает, что для решения любой комбинации кубика Рубика достаточно всего лишь 20 ходов, однако, никто этого еще не доказал.