Szybkie mno»enie wielomianów i macierzy ukasz Kowalik Instytut Informatyki, Uniwersytet Warszawski June 6, 2011 ukasz Kowalik (UW) FFT & FMM June 6, 2011 1 / 29 Szybka Transformata Fouriera ukasz Kowalik (UW) FFT & FMM June 6, 2011 2 / 29 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 June 6, 2011 3 / 29 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 June 6, 2011 4 / 29 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 June 6, 2011 5 / 29 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 June 6, 2011 5 / 29 (Prawdziwe) mno»enie wielomianów w ukasz Kowalik (UW) FFT & FMM O (n log n) June 6, 2011 6 / 29 (Prawdziwe) mno»enie wielomianów w ukasz Kowalik (UW) FFT & FMM O (n log n) June 6, 2011 6 / 29 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 i jest pierwiastkiem stopnia n z 1. wszystkie pierwiastki stopnia n z 1: ukasz Kowalik (UW) ωn0 , ωn1 , . . . ωnn−1 . FFT & FMM June 6, 2011 7 / 29 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 June 6, 2011 8 / 29 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 June 6, 2011 9 / 29 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 June 6, 2011 10 / 29 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 . June 6, 2011 11 / 29 Odwrotna Dyskretna Transformata Fouriera (IDFT) Odwrotna Dyskretna Transformata Fouriera, IDFT y0 , . . . , yn−1 ) reprezentuj¡cy warto±ci wielomianu Pn(− 1 i 1 n −1 A(x ) = i =0 ai x odpowiednio w punktach 1, ωn , . . . , ωn . Wykona¢ interpolacj¦, tzn. obliczy¢ warto±ci a0 , . . . , an−1 . Dany ci¡g Chcemy znale¹¢ a0 , . . . , an−1 takie, »e: y0 y1 y2 . . . n −1 y czyli 1 1 1 1 = 1 ωn ωn2 ωn2 ωn4 ωn3 ωn6 1 . . . 1 . . . ωnn−1 ωn y = Vn · a, gdzie a = Vn−1 y. (n−1) 2 V n . . . . . . (n−1) 3 ωn ··· ··· ··· .. . 1 ωnn−1 2(n−1) ωn . . . (n−1)(n−1) · · · ωn · a0 a1 a2 . . . n−1 a jest macierz¡ Vandermonde'a, det Vn 6= 0. St¡d, ukasz Kowalik (UW) FFT & FMM June 6, 2011 11 / 29 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 aj = yk (ωn ) = n ωn · yk = 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 . czyli IDFT liczymy za pomoc¡ FFT w czasie O (n log n ) ukasz Kowalik (UW) FFT & FMM June 6, 2011 12 / 29 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 June 6, 2011 13 / 29 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}. June 6, 2011 14 / 29 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 June 6, 2011 14 / 29 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 June 6, 2011 14 / 29 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 + 2l (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 June 6, 2011 15 / 29 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 + 2l (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 ). June 6, 2011 15 / 29 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 June 6, 2011 16 / 29 Szybkie mno»enie macierzy ukasz Kowalik (UW) FFT & FMM June 6, 2011 17 / 29 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 June 6, 2011 18 / 29 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.) June 6, 2011 19 / 29 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 June 6, 2011 20 / 29 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 June 6, 2011 21 / 29 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 ). June 6, 2011 22 / 29 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 June 6, 2011 23 / 29 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 )? June 6, 2011 24 / 29 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 June 6, 2011 24 / 29 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 June 6, 2011 25 / 29 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 June 6, 2011 26 / 29 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 June 6, 2011 26 / 29 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 June 6, 2011 26 / 29 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 June 6, 2011 26 / 29 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 June 6, 2011 27 / 29 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 June 6, 2011 27 / 29 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 June 6, 2011 28 / 29 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 ). June 6, 2011 29 / 29 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 June 6, 2011 29 / 29