Как обнаружить цикл в сетке за минимально возможную сложность?

У меня есть максимальная сетка из 35 символов, это может быть (1×35..5×7) или что-то еще. Значение каждой ячейки в сетке может быть только двоичным. При моделировании игры, имеющей определенные ходы, что подразумевает возможное изменение состояния класса после двигаться. Если мне нужно определить цикл / период этой игры, какой алгоритм / структуру данных я могу использовать с наименьшей временной сложностью? Я попробовал подход, основанный на дереве журнала, чтобы сохранить состояние сетки, но он не был достаточно быстрым для моей цели, когда период больше 2 ^ 17. Есть ли способ выполнить хэширование состояния сетки, не занимая слишком много памяти?

0

Решение

Сетка — это 35-битное число, поэтому вы можете хранить сетку как целое число (на 64-битной машине) или 2 слова на младшем. вы можете сохранять состояния, которые вы уже видели, в гигантском массиве прямых адресов или в хеш-таблице.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector