У меня есть схема перечисления, но для нее требуется массив целых чисел. Если вы можете сжать массив целых чисел до одного значения Q (и обратно), то это может сработать.
Сначала идет N, количество фигур на доске.
Затем идет массив элементов ceil (N / 2), X штук. Каждое число - это количество пустых допустимых пробелов из предыдущей фигуры Х (или начала доски). ВАЖНО: пробел недействителен, если это приведет к окончанию игры. Здесь правило 5 в конце строки помогает нам уменьшить домен.
Затем идет массив напольных (N / 2) предметов, O штук. Применяется та же логика, что и для массива X.
Итак, для этой доски и 3-х частей правила:
XX.
X.O
..O
у нас есть следующий массив:
N: 5
X: 0 (с начала доски), 0 (из предыдущего X), 0 (верхний правый угол недействителен для X, потому что это может закончить игру)
O: 2 (с начала доски, минус все предыдущие X), 2 (с предыдущего O)
и это массив [5, 0, 0, 0, 2, 2]. Учитывая этот массив, мы можем воссоздать доску выше. Появление небольших чисел более вероятно, чем появление больших чисел. В обычной игре с доской 19x19 фигуры по большей части будут сгруппированы, поэтому в следующей строке будет много нулей, единиц, двойок, разделенных случайным «большим» числом.
Теперь вам нужно сжать этот массив, используя тот факт, что маленькие числа встречаются чаще, чем большие. Алгоритм сжатия общего назначения может помочь, но некоторые специализированные могут помочь больше.
Я ничего не знаю о q-learning, но все это требует, чтобы q-значение могло иметь переменный размер. Если вам нужно иметь постоянный размер для q-значения, тогда этот размер должен был бы учитывать наихудшую возможную плату, и этот размер может быть настолько большим, что он в первую очередь лишает цели иметь это перечисление / сжатие.
Мы используем метод «слева направо» и «сверху вниз» для перечисления фрагментов, но мы также могли бы использовать некоторый метод спирали, который может привести к еще лучшему соотношению малых и больших чисел. Нам просто нужно выбрать лучшую отправную точку для центра спирали. Но это может усложнить алгоритм и в итоге тратить больше процессорного времени.
Кроме того, нам на самом деле не нужно первое число в массиве, N. Длина массива дает эту информацию.