Я ищу несколько советов по сохранению всех возможных перестановок для базы данных шаблонов бахромы.
Итак, пятнадцатая проблема с черепицей имеет 16! возможные перестановки, однако сохраняя значения для fringe
, так что 0 (пустая плитка), 3,7,11,12,13,14,15 составляет 16!/(16-8)!= 518,918,400 перестановок.
Я хочу сохранить все эти перестановки в структуре данных вместе со значением эвристической функции (которая просто увеличивается каждый раз при повторении первого поиска по ширине), пока я делаю это, но очень медленно и взял мне 5 минут, чтобы хранить 60 000, которых у меня нет времени!
На данный момент у меня есть структура, которая выглядит так.
Value Pos0 Pos3 Pos7 Pos11 Pos12 Pos13 Pos14 Pos15
Где я сохраняю позицию заданных чисел. Я должен использовать эти позиции в качестве идентификатора, когда я вычисляю эвристическое значение, которое я могу быстро пропустить до данной композиции и получить значение.
Я довольно не уверен в этом. Состояние головоломки представлено примером массива:
int[] goalState = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}
Мой вопрос в том, какова была бы лучшая структура данных для хранения этих значений? и лучший способ получить их.
(Этот вопрос изначально был основан на хранении в базе данных, но теперь я хочу сохранить их в некоторой форме локальной структуры данных - при медленном извлечении из базы данных)