G is a set
S of vertices of G such that
S are adjacent and u in G-S, there is a vertex
v in S such that u-->v is an arc of G.
The reduction is from SAT: given a boolean formula
F in a conjunctive normal form, we shall construct a
directed graph G such that G has a kernel if
and only if F is satisfiable.
For each clause, say C, of F, we take three
vertices C1,C2,C3 and
join them in the cyclic triangle,
C1 --> C2 --> C3 --> C1
.
x, of F, we take two
vertices x and ¬x (the negation of
x) and join them in the cyclic digon
x --> ¬x --> x
.
(v,C) such that literal v
appears in clause C, we add the three arcs
C1 --> v,
C2 --> v,
C3 --> v
.
F is a kernel if and only if
this set consists of literals, includes precisely one of x
and ¬x for each variable x, and
includes at least one literal from each clause of F.An easy variation on this construction produces an
oriented graph G (meaning a directed
graph with no cyclic digons) such that G has a kernel
if and only if F is satisfiable. The trick is to introduce
two extra vertices, x' and ¬x',
for each variable x of F and to replace the digon
x --> ¬x --> x
.
x --> ¬x --> x' --> ¬x' --> x