Szybkie mnozenie wielomianów i macierzy

advertisement
Szybkie mno»enie wielomianów i macierzy
Šukasz Kowalik
Instytut Informatyki, Uniwersytet Warszawski
Šukasz Kowalik (UW)
FFT & FMM
1 / 30
Szybka Transformata Fouriera
Šukasz Kowalik (UW)
FFT & FMM
2 / 30
Wielomiany
Wielomian reprezentowany jako ci¡g wspóªczynników
Niech R b¦dzie pier±cieniem (np. R
Wielomian stopnia n
−1
= C, R, Z, . . .).
: C → C postaci
to funkcja A
( )=
A x
n −1
X
i =0
gdzie ai
i
i ,
a x
∈ R.
Wielomian A reprezentujemy jako ci¡g
(a0 , . . . , an−1 ).
Dodawanie
= (a0 , . . . , an−1 ) i B = (b0 , . . . , bn−1 ).
= A(x ) + B (x ).
= (a0 + b0 , . . . , an−1 + bn−1 ).
Dane dwa wielomiany A
Obliczy¢ wielomian C , C (x )
Rozwi¡zanie: C
Czas: O (n ) operacji arytmetycznych (na elementach R ).
Šukasz Kowalik (UW)
FFT & FMM
3 / 30
Mno»enie wielomianów w
O (n
2
)
Problem
Dane dwa wielomiany A
= (a0 , . . . , an−1 ) i B = (b0 , . . . , bn−1 ).
= A( x ) · B ( x ) .
Obliczy¢ wielomian C , C (x )
Rozwi¡zanie
Rozwi¡zanie: C
= (c0 , . . . , c2n−2 ),
k=
c
Czas: O (n
2
)
gdzie
k
X
i =0
a
i · bk −i .
operacji arytmetycznych (na elementach R ).
Šukasz Kowalik (UW)
FFT & FMM
4 / 30
Mno»enie wielomianów w
O (n)
A gdyby tak...
Wyobra¹my sobie nowy lepszy ±wiat, w którym wielomiany mno»y si¦
równo ªatwo jak dodaje.
Šukasz Kowalik (UW)
(Co to za ±wiat?)
FFT & FMM
5 / 30
Mno»enie wielomianów w
O (n)
Twierdzenie (O Interpolacji)
Dla dowolnego zbioru
{(x0 , y0 ), . . . , (xn−1 , yn−1 )}
takiego, »e x
i
s¡ parami
ró»ne, istnieje dokªadnie jeden wielomian P stopnia mniejszego ni» n taki,
( i ) = yi
»e P x
dla ka»dego i
= 0, . . . , n − 1.
Reprezentacja przez warto±ci w 2n punktach
n
par
(xi , yi )
jednoznacznie wyznacza wielomian stopnia
< n.
2n par tym bardziej.
< n, dane jako
A = {(x0 , y0 ), . . . , (x2n−1 , y2n−1 )} oraz
0
0
B = {(x0 , y0 ), . . . , (x2n−1 , y2n−1 )}.
Wtedy C = A · B jest reprezentowany przez
{(x0 , y0 · y00 ), . . . , (x2n−1 , y2n−1 · y20 n−1 )}
Niech A i B b¦d¡ stopnia
Obliczyli±my C w czasie O (n ).
Šukasz Kowalik (UW)
FFT & FMM
5 / 30
(Prawdziwe) mno»enie wielomianów w
Šukasz Kowalik (UW)
FFT & FMM
O (n log n)
6 / 30
(Prawdziwe) mno»enie wielomianów w
Šukasz Kowalik (UW)
FFT & FMM
O (n log n)
6 / 30
Liczby zepolone, pierwiastki z 1: przypomnienie
Liczby zespolone przedstawiamy jako:
z
z
= x + yi = r (cos ϕ + i sin ϕ)
= r · e ϕi
ωn = e
2π
n
jest pierwiastkiem stopnia n z 1.
wszystkie pierwiastki stopnia n z 1:
Šukasz Kowalik (UW)
ωn0 , ωn1 , . . . ωnn−1 .
FFT & FMM
7 / 30
DFT i FFT
Dyskretna Transformata Fouriera, DFT
P
(a0 , . . . , an−1 ) reprezentuj¡cy wielomian A(x ) = ni =−01 ai x i .
j
warto±ci A(x0 ), . . . , A(xn−1 ), gdzie xj = ωn dla j = 0, . . . , n .
Dany ci¡g
Obliczy¢
Uwaga
W naszym zastosowaniu do mno»enia wielomianów stopnia
oraz ad
< d,
n
= 2d
= ad +1 = . . . = a2d −1 = 0.
Poka»emy algorytm, który oblicza DFT u»ywaj¡c O (n log n ) operacji
arytmetycznych (na liczbach zespolonych).
Ten algorytm to szybka transformata Fouriera (FFT), odkryty przez
Cooleya i Tuckeya w 1965 (wªa±ciwie wywa»yli oni drzwi otwarte w
1805 przez Gaussa).
Šukasz Kowalik (UW)
FFT & FMM
8 / 30
FFT: dziel i zwyci¦»aj
Zaªó»my, »e n
= 2k
(wpp. dodajemy an
Okre±lmy 2 wielomiany stopnia
= 0).
< n/2:
= a0 + a2 x + a4 x 2 + . . . + an−2 x n/2−1 ,
[1] (x ) = a + a x + a x 2 + . . . + a
A
1
3
5
n−1 x n/2−1 .
[0] (x )
A
Wtedy:
( ) = A[0] (x 2 ) + xA[1] (x 2 ),
A x
(tzn. wystarczy obliczy¢ n warto±ci 2 wielomianów stopnia
2π i
2π i
2
2
fartownie, (ωn ) = (e n ) = e n/2 = ωn/2 .
< n/2.)
= 0, . . . , n/2, mamy:
k +n/2 2
n/2
k
2
k
(ωn ) = ωn/2 oraz (ωn
) = ωnk/2 · ωn/2 = ωnk/2 .
0 2
1 2
n−1 )2 } = {ω 0 , ω 1 , . . . , ω n/2−1 }
czyli {(ωn ) , (ωn ) , . . . , (ωn
n/2 n/2
n /2
Rekurencyjnie obliczamy n/2 warto±ci 2 wielomianów stopnia < n/2
st¡d, dla k
Šukasz Kowalik (UW)
FFT & FMM
9 / 30
FFT: dziel i zwyci¦»aj
Wniosek
Algorytm FFT dziaªa w czasie O (n log n ).
Dowód
Bo T (n )
= 2T (n/2) + O (n).
Šukasz Kowalik (UW)
FFT & FMM
10 / 30
Mno»enie wielomianów w
Šukasz Kowalik (UW)
O (n log n):
FFT & FMM
Czego jeszcze brakuje?
11 / 30
Odwrotna Dyskretna Transformata Fouriera (IDFT)
Odwrotna Dyskretna Transformata Fouriera, IDFT
y0 , . . . , yn−1 ) reprezentuj¡cy warto±ci wielomianu
Pn(−
1
i
1
n −1
i =0 ai x odpowiednio w punktach 1, ωn , . . . , ωn .
Wykona¢ interpolacj¦, tzn. obliczy¢ warto±ci a0 , . . . , an−1 .
Dany ci¡g
( )=
A x
Chcemy znale¹¢ a0 , . . . , an−1 takie, »e:
y0
y1
y2
=
=
=
.
.
.
n −1 =
y
a0
a0
a0
+
+
+
.
.
.
a0
Šukasz Kowalik (UW)
+
+
a1 ωn
+
2
a1 ωn
+
a1
a1
ωnn−1 +
a2
2
ωn
4
a 2 ωn
a2
a2
(n−1)
2
ωn
FFT & FMM
+ ... +
+ ... +
+ ... +
n −1 ,
n −1 ,
an−1 ωn
2(n−1)
a n − 1 ωn
,
a
(n−1)(n−1)
+ . . . + an−1 ωn
.
12 / 30
Odwrotna Dyskretna Transformata Fouriera (IDFT)
Odwrotna Dyskretna Transformata Fouriera, IDFT
y0 , . . . , yn−1 ) reprezentuj¡cy warto±ci wielomianu
Pn(−
1
i
1
n −1
i =0 ai x odpowiednio w punktach 1, ωn , . . . , ωn .
Wykona¢ interpolacj¦, tzn. obliczy¢ warto±ci a0 , . . . , an−1 .
Dany ci¡g
( )=
A x
Chcemy znale¹¢ a0 , . . . , an−1 takie, »e:

y0
y1






y2
.
.
.
n −1

1
1
1
1
 
 
 
=
 
 

1
ωn
ωn2
ωn2
ωn4
ωn3
ωn6

y
czyli
y=
det Vn
1
.
.
.
1
V
=
a,
n ·Y
.
.
.
ωnn−1 ωn
.
.
.
(n−1)
2
···
···
···
.
.
.
..
(n−1)
3
ωn
1
ωnn−1
2(n−1)
ωn
.
.
.
.
(n−1)(n−1)
· · · ωn
 
 
 
 
·
 
 

a0
a1
a2
.
.
.







n−1
a
gdzie Vn jest macierz¡ Vandermonde'a
≤i <j ≤n−1
(ωnj − ωni ) 6= 0.
St¡d,
a=
V
−1
n y.
0
Šukasz Kowalik (UW)
FFT & FMM
12 / 30
Odwrotna Dyskretna Transformata Fouriera (IDFT), cd
Chcemy obliczy¢
a=
V
−1
n y,
n−1 .)
(Vn jest macierz¡ Vandermonde'a dla warto±ci 1, ωn , ωn , . . . , ωn
2
Fakt (dowód: obliczenie Vn−1 Vn , Vn Vn−1 , nuda.)
(Vn−1 )j ,k = n1 ωn−jk
Wniosek
n −1
n −1
X
X
−jk
−j k
n−j
1
1
1
·
y
=
aj =
ω
yk (ωn ) =
k n
n n
n Y (ωn ),
k =0
k =0
gdzie Y jest wielomianem o wspóªczynnikach
(y0 , . . . , yn−1 ).
Wniosek z wniosku
a=
1
R
n (DFT (y0 , . . . , yn−1 )) ,
gdzie operacja v
R
odwraca wektor v , oprócz
pierwszej skªadowej.
Czyli IDFT liczymy za pomoc¡ FFT w czasie O (n log n ).
Šukasz Kowalik (UW)
FFT & FMM
13 / 30
Uwagi
W algorytmie zakªadali±my dokªadn¡ arytmetyk¦ liczb rzeczywistych
(zespolonych). W praktyce korzystamy z liczb o ograniczonej precyzji.
Nie prowadzi to do du»ych bªedów (algorytm FFT ma bardzo dobre
wªasno±ci numeryczne)
Je±li wspóªczynniki na wej±ciu s¡ caªkowite (wi¦c na wyj±ciu chcemy
równie» mie¢ caªkowite) to mo»emy zaokr¡gla¢/obcina¢, ale nale»y
przeprowadzi¢ analiz¦ jak dokªadnej arytmetyki liczb rzeczywistych
potrzebujemy.
Algorytm FFT bardzo ªatwo si¦ zrównolegla: mo»na go
zaimplementowa¢ jako obwód arytmetyczny o gª¦boko±ci log2 n .
Šukasz Kowalik (UW)
FFT & FMM
14 / 30
Zastosowanie 1: Mno»enie
Powiedzmy, »e chcemy pomno»y¢ przez siebie 2 liczby n -bitowe
a
=
1
Pn−1 i
i =0 ai 2
a
i b
=
Pn−1
i
i =0 bi 2 .
i b reprezentujemy jako wielomiany A(x ), B (x ):
Pn−1
mo»na po prostu jako
( ) = i =0 i i , gdzie i
ax
Ax
a
∈ {0, 1}
ale zwykle bardziej si¦ opªaca pokroi¢ liczby na grubsze bloki,
Wtedy
A(x ) =
Šukasz Kowalik (UW)
/`e−1
i =0
Pd
n
a x , gdzie a
i
i
FFT & FMM
i
`-bitowe.
∈ {0, . . . , 2` − 1}.
15 / 30
Zastosowanie 1: Mno»enie
Powiedzmy, »e chcemy pomno»y¢ przez siebie 2 liczby n -bitowe
a
=
1
Pn−1 i
i =0 ai 2
a
i b
=
Pn−1
i
i =0 bi 2 .
i b reprezentujemy jako wielomiany A(x ), B (x ):
Pn−1
mo»na po prostu jako
( ) = i =0 i i , gdzie i
ax
Ax
a
∈ {0, 1}
ale zwykle bardziej si¦ opªaca pokroi¢ liczby na grubsze bloki,
Wtedy
2
A(x ) =
/`e−1
i =0
Pd
n
a x , gdzie a
i
i
za pomoc¡ FFT obliczamy C (x )
(wówczas cj
i
`-bitowe.
∈ {0, . . . , 2` − 1}.
= A(x )B (x )
∈ {0, . . . , n}).
Šukasz Kowalik (UW)
FFT & FMM
15 / 30
Zastosowanie 1: Mno»enie
Powiedzmy, »e chcemy pomno»y¢ przez siebie 2 liczby n -bitowe
a
=
1
Pn−1 i
i =0 ai 2
a
i b
=
Pn−1
i
i =0 bi 2 .
i b reprezentujemy jako wielomiany A(x ), B (x ):
Pn−1
mo»na po prostu jako
( ) = i =0 i i , gdzie i
ax
Ax
a
∈ {0, 1}
ale zwykle bardziej si¦ opªaca pokroi¢ liczby na grubsze bloki,
Wtedy
2
3
A(x ) =
/`e−1
i =0
Pd
n
a x , gdzie a
i
i
za pomoc¡ FFT obliczamy C (x )
(wówczas cj
i
`-bitowe.
∈ {0, . . . , 2` − 1}.
= A(x )B (x )
∈ {0, . . . , n}).
wykonujemy przeniesienie za pomoc¡ O (n log n ) operacji na bitach
Przeniesienie
p
i
zawsze ma co najwy»ej warto±¢
n:
bc0 /2c ≤ n, czyli OK
pi ≤ n to pi +1 = b(pi + ci )/2c ≤ n.
Na pocz¡tku
Je±li
St¡d, obliczenie
Šukasz Kowalik (UW)
i -tej cyfry wyniku wymaga O (log n) operacji bitowych.
FFT & FMM
15 / 30
Zastosowanie 1: Mno»enie, cd
Analiza
Powiedzmy, »e n bitów podzielili±my na
≈ 2k
Wówczas algorytm wykona si¦ w czasie O (n
bloków dªugo±ci
+ k · Mn/`),
`.
gdzie M to
czas mno»enia dwóch liczb zespolonych.
Powiedzmy, »e liczby zespolone reprezentujemy na m bitach.
Jak du»e powinno by¢ m »eby wynik mno»enia byª poprawny?
m
≥ 4k + 2`
(patrz Knuth, t. II)
Wnioski sytuacja praktyczna
= 109 ) wystarczy
typu double.
W praktyce dla rozs¡dnych danych (np. n
zespolone reprezentowa¢ jako par¦ liczb
liczby
Wówczas mno»enie dwóch liczb m -bitowych dziaªa w czasie O (1).
Bior¡c
`=k
Šukasz Kowalik (UW)
dostajemy algorytm w czasie O (n ).
FFT & FMM
16 / 30
Zastosowanie 1: Mno»enie, cd
Analiza
Powiedzmy, »e n bitów podzielili±my na
≈ 2k
Wówczas algorytm wykona si¦ w czasie O (n
bloków dªugo±ci
+ k · Mn/`),
`.
gdzie M to
czas mno»enia dwóch liczb zespolonych.
Powiedzmy, »e liczby zespolone reprezentujemy na m bitach.
Jak du»e powinno by¢ m »eby wynik mno»enia byª poprawny?
m
≥ 4k + 2`
(patrz Knuth, t. II)
Teoria
(Schönhage-Strassen 1971) W powy»szej analizie we¹my
` = k.
Mamy rekurencj¦ T (n )
= O (nT (log n)), st¡d
T (n ) = O (n log n log log n log log log n · · · )
(Schönhage-Strassen 1971) Zamiast ciaªa
C
bierzemy pier±cie«
Z2e +1
dla pewnego e . Prowadzi to do czasu O (n log n log log n ).
log
(Fürer 2007) algorytm O (n log n 2
Šukasz Kowalik (UW)
∗
FFT & FMM
n ).
16 / 30
Zastosowanie 2: Dodawanie zbiorów
Problem
Dane dwa zbiory A, B
Znale¹¢ C
= {a + b :
⊂ {0, . . . , n},
a ∈ A, b ∈ B } .
Rozwi¡zanie w czasie
O (n log n)
P
P
a
b
We¹my A(x ) =
a∈A x , B (x ) = b∈B x .
Obliczamy C (x ) = A(x )B (x ).
P2n
j
Je±li C (x ) =
j =0 cj x to C = {j : cj 6= 0}.
Šukasz Kowalik (UW)
FFT & FMM
17 / 30
Szybkie mno»enie macierzy
Šukasz Kowalik (UW)
FFT & FMM
18 / 30
Mno»enie macierzy (kwadratowych)
Problem
Dane macierze n
× n: A i B .
= A · B.
Znale¹¢ macierz C
Algorytm naiwny (wg zwykªego wzoru)
Pn
cij =
k =1 aik bkj .
Czas: O (n
3
)
operacji arytmetycznych.
Šukasz Kowalik (UW)
FFT & FMM
19 / 30
Mno»enie macierzy: Dziel i zwyci¦»aj (1)
Bez straty ogólno±ci n
Podzielmy
A, B , C
= 2k .
na podmacierze o wymiarach
A1,1
A=
A2,1
A1,2
A2,2
,
B=
B1,1
B2,1
(n/2) × (n/2):
B1,2
B2,2
Wówczas
C=
A1,1 B1,1 + A1,2 B2,1
A2,1 B1,1 + A2,2 B2,1
Mamy rekurencj¦ T (n )
A1,1 B1,2 + A1,2 B2,2
A2,1 B1,2 + A2,2 B2,2
= 8T (n/2) + O (n2 )
czyli T (n )
(Dominuj¡cy jest ostatni poziom, gdzie jest 8
Šukasz Kowalik (UW)
FFT & FMM
log2
n = n3
= O (n3 ).
w¦zªów.)
20 / 30
Mno»enie macierzy: Dziel i zwyci¦»aj (2)
A1,1
A=
A2,1
A1,2
A2,2
,
B1,1
B=
B2,1
B1,2
B2,2
Drugie podej±cie (Strassen 1969):
M1
M3
M5
M7
:= (A1,1 + A2,2 )(B1,1 + B2,2 )
:= A1,1 (B1,2 − B2,2 )
:= (A1,1 + A1,2 )B2,2
:= (A1,2 − A2,2 )(B2,1 + B2,2 ).
M2 := (A2,1 + A2,2 )B1,1
M4 := A2,2 (B2,1 − B1,1 )
M6 := (A2,1 − A1,1 )(B1,1 + B1,2 )
Wtedy:
C=
=
A1,1 B1,1 + A1,2 B2,1
A2,1 B1,1 + A2,2 B2,1
M1 + M4 − M5 + M 7
M2 + M4
A1,1 B1,2 + A1,2 B2,2
A2,1 B1,2 + A2,2 B2,2
M3 + M5
M1 − M 2 + M 3 + M6
= 7T (n/2) + O (n2 )
log2 n
T (n ) = O (7
) = O (nlog2 7 ) = O (n2.81 ).
Mamy rekurencj¦ T (n )
Šukasz Kowalik (UW)
FFT & FMM
czyli
21 / 30
Kilka faktów podanych bez dowodu
Najszybszy znany algorytm mno»enia macierzy Coppersmitha i
Winograda (1990) dziaªa w czasie O (n
.
2 38
)
(jest kompletnie
niepraktyczny).
Najlepsze znane dolne ograniczenie to
Ω(n2 ).
Ciekawe wyniki dla macierzy prostok¡tnych, np. je±li r
≤ 0.294
macierz
w czasie
(
O n
r
n × n
+o (1) ).
mo»na pomno»y¢ przez macierz
r
n × n
to
2
× n.
ω < 2.38.
Niech M (n ) to czas mno»enia macierzy n
Wiemy, »e M (n )
= O (nω ),
gdzie
Mo»na znale¹¢ odwrotno±¢ macierzy w czasie O (M (n )).
Mo»na obliczy¢ wyznacznik macierzy w czasie O (M (n )).
Dowody dwóch ostatnich faktów mo»na znale¹¢ w podr¦czniku Cormena.
Šukasz Kowalik (UW)
FFT & FMM
22 / 30
Zastosowanie 1: liczba marszrut
Lemat
Niech
A
b¦dzie macierz¡ s¡siedztwa n -wierzchoªkowego grafu G
(skierowanego lub nieskierowanego). Dla k
dowolnego i , j
= 1, . . . , n
element
od wierzchoªka i do wierzchoªka j
Aki,j
∈ N>0 .
Wówczas dla
zawiera liczb¦ marszrut dªugo±ci k
Dowód
Indukcja. Dla k
=1
> 1 mamy:
Aki ,`−1 · A`,j jest
OK.
Dla k
liczb¡ marszrut dªugo±ci k od i do j , w których
`.
Pn
k
−1
k
Ai ,j =
`=1 Ai ,` · A`,j
przedostatni wierzchoªek to
St¡d,
k
jest liczb¡ wszystkich marszrut dªugo±ci
od i do j .
Wniosek
Liczb¦ marszrut dªugo±ci k mi¦dzy wszystkimi parami
wierzchoªków mo»emy policzy¢ w czase O (n
Šukasz Kowalik (UW)
FFT & FMM
ω log k ).
23 / 30
Szybkie mno»enie macierzy: zastosowania
Oznaczmy przez O (n
ω ) najlepszy znany czas mno»enia macierzy
n
× n.
1
Rozwi¡zywanie ukªadów równa« w O (n
2
Wyszukiwanie trójk¡tów w grae w O (n
3
Domkni¦cie przechodnie w O (n
4
Sprawdzenie (ew. znajdowanie) czy graf zawiera skojarzenie doskonaªe
w czasie
ω)
ω)
ω log n)
(nω ).
Šukasz Kowalik (UW)
FFT & FMM
24 / 30
MAX-SAT (Williams 2004)
Problem MAX-SAT
Dana formuªa
φ
w postaci 2-CNF, zawieraj¡ca n zmiennych. Znale¹¢
warto±ciowanie zmiennych, które maksymalizuje liczb¦ speªnionych klauzul.
Zªo»ono±¢
Odpowiedni problem decyzyjny jest NP-zupeªny.
Algorytm naiwny ma zªo»ono±¢ O (2
Pytanie:
n)
Czy mo»na szybciej? Np. O (1.9
Šukasz Kowalik (UW)
FFT & FMM
n )?
25 / 30
MAX-SAT (Williams 2004)
Problem MAX-SAT
Dana formuªa
φ
w postaci 2-CNF, zawieraj¡ca n zmiennych. Znale¹¢
warto±ciowanie zmiennych, które maksymalizuje liczb¦ speªnionych klauzul.
Zªo»ono±¢
Odpowiedni problem decyzyjny jest NP-zupeªny.
Algorytm naiwny ma zªo»ono±¢ O (2
Pytanie:
n)
Czy mo»na szybciej? Np. O (1.9
n )?
B¦dziemy si¦ zajmowa¢ równowa»nym (z dokªadno±ci¡ do czynnika
log(#klauzul)) problemem:
Problem MAX-SAT, wersja testuj¡ca
Dana formuªa
φ
w postaci 2-CNF, zawieraj¡ca n zmiennych oraz k
∈N
Czy istnieje warto±ciowanie zmiennych, dla którego jest dokªadnie k
speªnionych klauzul.
Šukasz Kowalik (UW)
FFT & FMM
25 / 30
MAX-SAT (Williams 2004)
Zbudujemy pewien graf G o O (2
Ustalmy dowolny podziaª V
n/3 )
wierzchoªkach.
= V0 ∪ V1 ∪ V2
na trzy równe cz¦±ci (tak
równe jak si¦ da).
Wierzchoªkami G s¡ wszystkie warto±ciowania vi
i
: Vi → {0, 1}
dla
= 0, 1, 2.
Dla dowolnych v
∈ Vi ,
w
∈ V(i +1) mod 3
2V0
graf G zawiera kraw¦d¹ vw .
2V1
2V2
Šukasz Kowalik (UW)
FFT & FMM
26 / 30
MAX-SAT (Williams 2004)
Idea rozwi¡zania
Dobierzemy tak wagi na kraw¦dziach, »e waga trójk¡ta vwu w G
b¦dzie równa liczbie speªnionych klauzul przy warto±ciowaniu
(v , w , u ).
Wtedy wystarczy sprawdzi¢, czy istnieje trójk¡t o wadze k w G .
2V0
2V1
2V2
Šukasz Kowalik (UW)
FFT & FMM
27 / 30
MAX-SAT (Williams 2004)
Idea rozwi¡zania
Dobierzemy tak wagi na kraw¦dziach, »e waga trójk¡ta vwu w G
b¦dzie równa liczbie speªnionych klauzul przy warto±ciowaniu
(v , w , u ).
Wtedy wystarczy sprawdzi¢, czy istnieje trójk¡t o wadze k w G .
Problem 1
Niech c (v )
Jak dobra¢ wagi?
=
wszystkie klauzule, które s¡ speªnione przy warto±ciowaniu v .
Wtedy liczba speªnionych klauzul przy warto±ciowaniu
(v , w , u )
wynosi:
|c (v ) ∪ c (w ) ∪ c (u )| = |c (v )| + |c (w )| + |c (u )|
− |c (v ) ∩ c (w )| − |c (v ) ∩ c (u )| − |c (w ) ∩ c (u )|
+ |c (v ) ∩ c (w ) ∩ c (u )|.
Šukasz Kowalik (UW)
FFT & FMM
27 / 30
MAX-SAT (Williams 2004)
Idea rozwi¡zania
Dobierzemy tak wagi na kraw¦dziach, »e waga trójk¡ta vwu w G
b¦dzie równa liczbie speªnionych klauzul przy warto±ciowaniu
(v , w , u ).
Wtedy wystarczy sprawdzi¢, czy istnieje trójk¡t o wadze k w G .
Problem 1
Niech c (v )
Jak dobra¢ wagi?
=
wszystkie klauzule, które s¡ speªnione przy warto±ciowaniu v .
Wtedy liczba speªnionych klauzul przy warto±ciowaniu
(v , w , u )
wynosi:
|c (v ) ∪ c (w ) ∪ c (u )| = |c (v )| + |c (w )| + |c (u )|
− |c (v ) ∩ c (w )| − |c (v ) ∩ c (u )| − |c (w ) ∩ c (u )|
+ |c (v ) ∩ c (w ) ∩ c (u )| .
|
{z
}
0
Šukasz Kowalik (UW)
FFT & FMM
27 / 30
MAX-SAT (Williams 2004)
Idea rozwi¡zania
Dobierzemy tak wagi na kraw¦dziach, »e waga trójk¡ta vwu w G
b¦dzie równa liczbie speªnionych klauzul przy warto±ciowaniu
(v , w , u ).
Wtedy wystarczy sprawdzi¢, czy istnieje trójk¡t o wadze k w G .
Problem 1
Niech c (v )
Jak dobra¢ wagi?
=
wszystkie klauzule, które s¡ speªnione przy warto±ciowaniu v .
Wtedy liczba speªnionych klauzul przy warto±ciowaniu
(v , w , u )
wynosi:
|c (v ) ∪ c (w ) ∪ c (u )| = |c (v )| + |c (w )| + |c (u )|
− |c (v ) ∩ c (w )| − |c (w ) ∩ c (u )| − |c (u ) ∩ c (v )|
+ |c (v ) ∩ c (w ) ∩ c (u )| .
{z
}
|
0
Czyli dajemy waga(xy )
Šukasz Kowalik (UW)
= |c (x )| − |c (x ) ∩ c (y )|.
FFT & FMM
27 / 30
MAX-SAT (Williams 2004)
Pozostaªo sprawdzi¢, czy istnieje trójk¡t o wadze k w G .
Trick
Rozwa»amy wszystkie O (m
k
= k0 + k1 + k2 .
2
) = O (n4 )
podziaªów (m
=
liczba klauzul)
Dla ka»dego podziaªu budujemy graf Gk0 ,k1 ,k2 zªo»ony
tylko z:
V
V
kraw¦dzi o wadze k0 mi¦dzy 2 0 a 2 1 ,
V
V
kraw¦dzi o wadze k1 mi¦dzy 2 1 a 2 2 ,
V
V
kraw¦dzi o wadze k2 mi¦dzy 2 2 a 2 0 .
Wtedy wystarczy...
Šukasz Kowalik (UW)
FFT & FMM
28 / 30
MAX-SAT (Williams 2004)
Pozostaªo sprawdzi¢, czy istnieje trójk¡t o wadze k w G .
Trick
Rozwa»amy wszystkie O (m
k
= k0 + k1 + k2 .
2
) = O (n4 )
podziaªów (m
=
liczba klauzul)
Dla ka»dego podziaªu budujemy graf Gk0 ,k1 ,k2 zªo»ony
tylko z:
V
V
kraw¦dzi o wadze k0 mi¦dzy 2 0 a 2 1 ,
V
V
kraw¦dzi o wadze k1 mi¦dzy 2 1 a 2 2 ,
V
V
kraw¦dzi o wadze k2 mi¦dzy 2 2 a 2 0 .
Wtedy wystarczy... sprawdzi¢, czy istnieje dowolny trójk¡t.
Šukasz Kowalik (UW)
FFT & FMM
28 / 30
Sprawdzanie, czy
Gk0,k1,k2
Wniosek
Graf Gk0 ,k1 ,k2 ma 3
· 2n/3
zawiera trój¡t
wierzchoªków.
Mo»emy sprawdzi¢, czy Gk0 ,k1 ,k2 zawiera trój¡t w czasie
ω n/3 ) = O (1.732n )
O (2
Czyli mo»emy sprawdzi¢, czy G zawiera trój¡t o wadze k w czasie
(
O n
4
· 2ωn/3 ) = O (n4 · 1.732n ) = O (1.733n )
Šukasz Kowalik (UW)
FFT & FMM
29 / 30
MAX-SAT (Williams 2004): Podsumowanie
Wniosek
Mo»emy rozwi¡za¢ MAX-SAT w czasie i pami¦ci O (1.733
Šukasz Kowalik (UW)
FFT & FMM
n ).
30 / 30
MAX-SAT (Williams 2004): Podsumowanie
Wniosek
Mo»emy rozwi¡za¢ MAX-SAT w czasie i pami¦ci O (1.733
n ).
Šatwo przerobi¢ nasz algorytm (jak?) »eby dosta¢
Wniosek
Mo»emy zliczy¢ wszystkie rozwi¡zania optymalne MAX-SAT w czasie i
pami¦ci O (1.733
n ).
Šukasz Kowalik (UW)
FFT & FMM
30 / 30
Download