Несколько лет назад исследователи объявили, что они разработали комплексное решение для шашек методом грубой силы.
Меня заинтересовала еще одна похожая игра, в которой должно было бы быть меньше состояний, но все же довольно непрактично запускать полный решатель в любой разумный период времени.Я все еще хотел бы сделать попытку, поскольку даже частичное решение могло бы дать ценную информацию.
Концептуально я хотел бы иметь базу данных состояний игры, в которой есть все известные позиции, а также их последующие позиции.Один или несколько клиентов могут извлекать неисследованные состояния из базы данных, вычислять возможные перемещения и вставлять новые состояния в базу данных.Как только конечное состояние найдено, все состояния, приводящие к нему, могут быть обновлены минимаксной информацией для построения деревьев решений.Если будут приняты разумные решения, чтобы выбрать вероятные ветви для исследования, я смогу собрать информацию для наиболее важных отраслей, а затем постепенно доводить ее до завершения.
Игнорирование достоинств этой идеи или осуществимости ееКаков наилучший способ реализации такой базы данных?Я сделал быстрый прототип на сервере SQL, который хранит строковое представление каждого состояния.Это работало, но мой решающий клиент работал очень очень медленно, так как он вытягивал одно состояние за раз и вычислял все ходы.Я чувствую, что мне нужно делать большие фрагменты в памяти, но пространство поиска определенно слишком велико, чтобы хранить все это в памяти сразу.
Существует ли система баз данных, лучше подходящая для такого рода работы?Я буду делать много много вставок, много чтений (чтобы проверить, существуют ли уже состояния (или эквивалентные состояния)) и очень мало обновлений.
Кроме того, как я могу распараллелить это так, чтобы много клиентов могли работатьна решение различных веток, не дублируя слишком много работы.Я думаю о чем-то вроде программы, которая проверяет назначение, генерирует несколько миллионов состояний и отправляет его обратно для интеграции в основную базу данных.Я просто не уверен, что что-то подобное сработает хорошо, или если раньше уже были методы, чтобы делать такие вещи.