mojo's Blog

2-sat, Balancing Numbers 본문

학교에서 들은거 정리/자동장치

2-sat, Balancing Numbers

_mojo_ 2021. 11. 16. 21:03

Theorem 1

 

A 2-sat formula φ is satisfiable if and only if there is no variable x with paths from x ~> x'

and x' ~> x in G(φ).

 

Proof : 

If such a pair of paths exists, then φ is contradictory, and hence unsatisfiable.

Suppose then that no such pair exists. 

Observe that a single one of these paths does not cause a contradiction.

 

x ~> x', x' ~> x 에 대한 경로가 두 개 존재할 경우 즉, x에서 x'으로 가거나 x'에서 x으로 여러번 걸쳐

지나가거나 한번 걸쳐 지나갈 때 이러한 경로가 2-sat formula φ를 만족시키지 못한다.

이러한 경로가 없다고 가정하고 모순이 생기는지 안생기는지를 먼저 관찰해보도록 한다.

 

Now set the value of some variable.

Ex : letting x to "true" converts any clause of the form (x' ∨ y) into a one-variable clause y

which demands that y be "true".

Let's call these one-variable clauses unit clauses.

 

x' ∨ y 라는 clause 에서 x = "true" 라고 한다면, x' = "false" 이므로 y는 무조건 "true"를 요구한다.

즉, x' ∨ y => y 으로 하나의 변수를 갖는 clause로 변환할 수 있으며 이를 unit clause 라고 한다.

 

Satisfying a unit clause might turn some 2-sat clauses into additional unit clauses, and so on.

This process is called unit clause propagation, and can lead to two possible outcomes

=> cascaed of unit clauses runs out or forced to a contradiction.

 

Suppose we start the unit clause propagation process by setting x to "true" as x ~> x'

does not exist by assumption.

Contradiction at this point occurs if and only if there are paths x ~> y and x ~> y' for some y.

 

즉, 여러 항들중 몇 항들이 unit clause로 변경되는 것을 unit cluase propagation 이라고 한다.

그러나 이를 통해 contradiction 을 얻어낼 수 있다.

x ~> x' 과 같은 unit clause 가 없다는 가정하에서 x = "true" 라고 세팅해보자.

그렇다면 x ~> y, x ~> y'  와 같은 두 경로가 존재할 때, y 가 어떤 boolean이 와도 상관 없게 되는 경우가

발생하게 되므로, contradiction 을 낳을 수 있다. (x ~> y, x ~> y' 둘 중에 한 경로만 있었다면 상관 x)

 

But G(φ) has the following symmetry

=> for any literals l1, l2, there is a path l1 ~> l2 if and only if there is a path l2' ~> l1'.

Thus, if there are paths x ~> y and x ~> y' then there are also paths y ~> x' and

y' ~> x', and hence a path x ~> x'.

So contradiction occurs if and only if there is a path x ~> x' which cannot exist by assumption.

Unit clause propagation continues.

Similar argument if we set x to "false".

 

굉장히 중요한 스킬이 나온것 같다.

G(φ)'s symmetry :  l1 ~> l2 는 l2' ~> l1' 이 존재할 경우에 해당 경로가 존재하는 특성을 이용한 것이다.

그래서 위에서 x ~> y, x ~> y' 와 같은 unit clause 는 y' ~> x', y ~> x 의 경로가 존재할 경우에 존재하며

이는 결국 x ~> y' ~> x' 임으로 x ~> x' 와 같은 경로를 얻게 된다.

 

즉, x ~> y, x ~> y' 두 경로가 존재할 경우 contradiction 을 낳는데 symmetry를 이용하여

x ~> x' 와 같은 경로를 만들어 지므로 이러한 경로가 존재한다면 contradiction 임이 완벽하게 증명되었다.

 

 

Polynomial-time algorithm for 2 - sat

 

while there is an unset variable do
    choose an unset variable x;
    if there is a path x ~> x', then set x = "false";
    else if there is a path x' ~> x, then set x = "true";
    else set x to any value you like;
    while there is a unit clause do unit clause propagation;
end

 

 

reachability

 

Input: A possibly directed graph G and two vertices s and t

Output: Is there a path from s to t?

 

So, we can solve 2-sat by solving 2n instances of reachability,

checking to see if there are paths x ~> x' and x' ~> x for each variable x.

 

2-sat ≤ reachability.

 

So 2-sat is in P.

How about 3-sat? It turns out

 

sat ≤ 3-sat,   k-sat ≤ 3-sat (for any K)

 

In other words, any k-sat formula φ can be converted to a 3-sat formula φ'

which is satisfiable if and only if φ is.

 

 

To prove this, we will show how to convert a sat clause c to a collection of 3-sat clauses

which are satisfiable if and only if c is.

For k = 1, 2,

 

( x ) ⇔ ( x ∨ z 1 ∨ z 2 ) ∧ ( x ∨ z 1 ∨ z 2' ) ∧ ( x ∨ z 1' ∨ z 2 ) ∧ ( x ∨ z 1' ∨ z 2' )

( x ∨ y ) ⇔ ( x ∨ y ∨ z ) ∧ ( x ∨ y ∨ z' )

 

k = 1 일 경우 z1, z2에 대한 dummy node를 추가하였고,

k = 2 일 경우에 z에 대한 dummy node를 추가하여 3-sat 으로 구성하였음을 알 수 있다.

 

For  k > 3, a k-sat clause becomes k - 2 3-sat clauses linked together by k - 3 dummy variables zi.

ex : for k = 5,

 

( x 1 ∨ x 2 ∨ x 3 ∨ x 4 ∨ x 5 ) ⇔ ( x 1 ∨ x 2 ∨ z 1 ) ∧( z 1' ∨ x 3 ∨ z 2 ) ∧( z 2' ∨ x 4 ∨ x 5 )

 

If there was a way to break these clauses down even further so that they have just two literals each,

we would have 3-sat ≤ 2-sat.

No simple way to achieve this, however.

 

k = 4, 5, ... 에 대해서 k-sat의 각 clause를 k - 2 개의 3-sat clause들로 연결시킬 수 있으며 k - 3 개의 dummy

node를 추가함으로써 3-sat 으로 구성이 가능하다.

그러나 이렇게 만들 수 있는 과정이 쉽지는 않다는 점을 알아두자.

 


Balancing Numbers

 

integer partitioning

Input: A list S = {x1, ..., xl} of positive integers 

Question: Is there a balanced partition, a subset A ⊆ {1, ..., l} such that

subset sum

Input: A set S = {x1, ..., xl} of positive integers and an integer t

Question: Does there exist a subset A ⊆ {1, ..., l} such that

Clearly, integer partitioning ≤ subset sum.

Claim: subset sum ≤ integer partitioning.

 

사실 subset sum에 대한 문제는 알고리즘 수업시간에 했던 것 처럼 NP 문제이다.

그 말은 즉, integer partitioning 또한 NP에 속하는 문제인데 이를 확인해보도록 하자.

 

Suppose we have an instance of subset sum with total weight W = (x1 + ... + xi) and

target weight t.

Add an additional integer y so that we can put half of W + y on each side if and

only if there is a subset A with total weight t.

 

W = (w1 + ... + wi), 그리고 목표 가중치 t를 설정하였을 때,

t의 부분 집합 A가 있는 경우에만 W + y의 절반을 양쪽에 놓을 수 있도록 양수 y를 더한다.

그리고 t를 어떻게 잡느냐에 따라 다음과 같이 case를 나눌 수 있다.

 

Suffices to consider the following three cases:

① If t = W/2, we are done. (y = 0)

② If t < W/2, set y = W - 2t. Then t + y = (W + y)/2,

      so one side consists of A ∪ {y} and the other of A¯.

 

 

③ If t > W/2, set y = 2t - W. Then t = (W + y)/2,

      so one side consists of A and the other of A¯  ∪ {y}

 

 

'학교에서 들은거 정리 > 자동장치' 카테고리의 다른 글

balanced k-coloring  (0) 2021.11.30
Designing Reduction  (0) 2021.11.25
Subset sum, Clique  (0) 2021.11.18
Satisfiability Problem  (0) 2021.11.11
Duality, Reduction  (0) 2021.11.10
Comments