Una semana en mi clase de teoría de la complejidad en la universidad, nuestro único problema de tarea fue demostrar que # 2-SAT era # P-completo, reduciendo de #BIPARTITE PERFECTO ENCUENTRO. Nadie pudo resolverlo, incluso cuando finalmente todos nos unimos para trabajar en ello.
En la siguiente clase, el profesor se sorprendió de lo difícil que todos lo habíamos encontrado y presentó su prueba. Estaba mal. Afortunadamente, una cookie inteligente fue capaz de dar la reducción correcta, lo cual fue absolutamente loco y asquerosamente complicado. Por cierto, el profesor tiene un Premio Turing :)
De todos modos, aunque mis compañeros de clase y yo no pudimos resolver ese problema, pudimos resolver el problema más fácil de reducir de #BIPARTITE MATCHING a # 2-SAT, así que aquí está la prueba que obtuve hace unos años.
Teorema. #BIPARTITE Matching # 2-SAT.≤pags
Prueba . Sea una instancia de #BIPARTITE MATCHING. Deje que los conjuntos de particiones sean
A = { a i ∣ i ∈ [ n ] } ,G=(V,E)
(de modo | A | = n y | B | = m ).
A={ai∣i∈[n]},B={bi∣i∈[m]}
|A|=n|B|=m
Ahora reducimos a una fórmula 2SAT , de modo que cada asignación satisfactoria de sea una coincidencia de , y viceversa. Para comenzar, para cada arista cree una variable . La idea es que establecer la variable en TRUE corresponde a que el borde esté en la coincidencia. Para cada vértice , cree las expresiones 2SAT
Para que se satisfaga, todos menos uno como tienen que ser falsos. Para ver esto, asuma que tantoGφ G a i b j ∈ E x i j x i j a i b j i A i = ⋀ j < k ( ¬ x i j ∨ ¬ x i k ) ,φφGaibj∈ExijxijaibjiA i x i j x i j x i k ( ¬ x i j ∨ ¬ x i k )
Ai=⋀j<k(¬xij∨¬xik),Bi:=⋀j<k(¬xji∨¬xki)
Aixijxijy son verdaderas. Entonces es falso, y también lo es . Lo mismo vale para . Dejando que
tenemos que se satisface si y solo si cada vértice en incide como máximo en un borde que elegimos, y así Los bordes forman una coincidencia.
xik(¬xij∨¬xik)B i C = n ⋀ i = 1 A i ∧ m ⋀ i = 1 B i C GAiBiC=⋀i=1nAi∧⋀i=1mBi
CG