W komentarzu OP wyraził zainteresowanie redukcją, która wygenerowała instancje z 3 różnymi zmiennymi na klauzulę. Oto proste podejście:
Redukcja wynika z 1-w-3 SAT z 3 odrębnymi zmiennymi na klauzulę:
- Przede wszystkim uwzględnij wszystkie klauzule we wzorze wejściowym jako klauzule we wzorze wyjściowym.
- Po drugie, wprowadź trzy nowe zmienne F1, F2, i F3 i dodaj następujące trzy klauzule do formuły wyjściowej: (¬F1,F2,F3), (F1,¬F2,F3), i (F1,F2,¬F3).
- Wreszcie dla każdej zmiennej x w oryginalnej formule wprowadź nową zmienną x′i dodaj następujące dwie klauzule do formuły wyjściowej: (x,x′,F1) i (¬x,¬x′,F1).
Sprawdźmy, czy ta redukcja robi to, co chcemy. Potrzebujemy następujących właściwości:
- Każda klauzula ma zawsze trzy różne zmienne.
- Każda zmienna występuje w niektórych klauzulach dodatnio, a w niektórych klauzulach negatywnie.
- Formuła wejściowa jest równoważna formule wyjściowej.
Właściwość 1 jest łatwa do sprawdzenia. Łatwo jest również sprawdzić właściwość 2: zmienneF1, F2, i F3 każda występuje zarówno pozytywnie, jak i negatywnie w klauzulach dodanych w drugim punkcie wypunktowania, podczas gdy każda inna zmienna we wzorze występuje zarówno pozytywnie, jak i negatywnie w klauzulach dodanych w trzecim punkcie wypunktowania.
Jeśli chodzi o właściwość 3, jest to mniej banalne, ale wciąż łatwe. Możesz łatwo argumentować, że jedynym przypisaniem do zmiennychF1, F2, i F3 że spełnienie każdej klauzuli z drugiego punktu jest wykonanie wszystkich trzech Fis false. Ale wtedy przyjmując wartość false dlaF1, klauzule (x,x′,F1) i (¬x,¬x′,F1) dodane w trzecim punkcie są spełnione wtedy i tylko wtedy x′=¬x. Ponieważ nie ma żadnych innych ograniczeńx′oznacza to, że zawsze możliwe jest rozszerzenie satysfakcjonującego przypisania dla formuły wejściowej na satysfakcjonujące przypisanie dla formuły wyjściowej: po prostu ustaw każdy x′ być zaprzeczeniem odpowiedniego x i ustaw każdy Fi do fałszu.