~~~
procedure RANDOM-WALK-3-SAT(f,n,R)
r ← 1
while r ≤ R do
a ← [n変数の割り当てを乱択する]
w ← 1
while w ← 3n
if f(a) then
return 充足する
endif
c ← aの中で充足しない clause
x ← cの literal からひとつを乱択
a ← x を反転した値
w ← w + 1
end-while
r ← r + 1
end-while
return おそらく充足しない
end-procedure
~~~
← c = `lit` $\lor$ `lit` $\lor$ `lit`
c is `False` $\Rightarrow$ 内部の全てのlit
はFalse
← At least, $\frac{1}{3}$ の確率で誤りを訂正している
プログラムの誤り訂正に、一次元のランダムウォークが隠れている
~~~
procedure QUICKSORT (A,L,R)
if L < R then
p ← L
k ← L + 1
while k ≤ R do
if A[L] > A[k] then
A[p+1] ↔ A[k]
p ← p + 1
endif
k ← k + 1
end-while
A[L] ↔ A[p]
A ← QUICKSORT (A,L,p-1)
A ← QUICKSORT (A,p,R)
end-if
return A
end-procedure
~~~
~~~
1
1
1
R-L
R-L
R-L/2
R-L/2
R-L
R-L
1
X'
X'
1
1
.
~~~