У меня есть школьный проект, где я должен найти решения игры "Lights Out" ( https://en.wikipedia.org/wiki/Lights_Out_(game) ) с помощью SAT Solver, но у меня возникают проблемы при попытке установить конъюнктивную нормальную форму игры.
Игра состоит из сетки 5 на 5 огней. Нажатие на любой из индикаторов переключит его и четыре соседних индикатора. Цель головоломки - выключить все огни.
Как я пытался до сих пор:
Для сетки 3х3 (для начала) я установил 9 терминов (для каждой кнопки) таким образом:
C11 : загорается кнопка в позиции 1,1 C12 : загорается кнопка в позиции 1,2 C13 : загорается кнопка в позиции 1,3. [...]
Так как кнопка в позиции 1,1 гаснет, кнопки в позиции 1,2 и 2,1
Я сделал C11 => C12 и C21 кнопка в положении 1,2 горит гаснет кнопка в положении 1,1 и 1,3 и 2,2 Я сделал C12 => C11 и C13 и C22
и продолжил для другого:
C13 => C12 and C23
C21 => C11 and C22 and C31
C22 => C12 and C21 and C23 and C32
C23 => C13 and C22 and C33
C31 => C21 and C32
C32 => C31 and C33 and C22
C33 => C23 and C32
затем я просто преобразовал их в CNF, чтобы получить пункты, которые мне нужны для спутникового решателя, но кажется, что я сделал что-то неправильно.
Может ли кто-нибудь помочь мне написать эту игру в форме CNF?
Большое спасибо !
Вот игра, если вам нужно понять ее лучше: