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 = C, R, Z,...). Wielomian stopnia n 1 to funkcja A : C C postaci n 1 A(x) = a i x i, i=0 gdzie a i R. Wielomian A reprezentujemy jako ci g (a 0,..., a n 1). Dodawanie Dane dwa wielomiany A = (a 0,..., a n 1) i B = (b 0,..., b n 1). Obliczy wielomian C, C(x) = A(x) + B(x). Rozwi zanie: C = (a 0 + b 0,..., a n 1 + b n 1). 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 = (a 0,..., a n 1) i B = (b 0,..., b n 1). Obliczy wielomian C, C(x) = A(x) B(x). Rozwi zanie Rozwi zanie: C = (c 0,..., c 2n 2), gdzie c k = k a i b k i. i=0 Czas: O(n 2 ) 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. (Co to za ±wiat?) Šukasz Kowalik (UW) FFT & FMM 5 / 30
Mno»enie wielomianów w O(n) Twierdzenie (O Interpolacji) Dla dowolnego zbioru {(x 0, y 0 ),..., (x n 1, y n 1)} takiego,»e x i s parami ró»ne, istnieje dokªadnie jeden wielomian P stopnia mniejszego ni» n taki,»e P(x i ) = y i dla ka»dego i = 0,..., n 1. Reprezentacja przez warto±ci w 2n punktach n par (x i, y i ) jednoznacznie wyznacza wielomian stopnia < n. 2n par tym bardziej. Niech A i B b d stopnia < n, dane jako A = {(x 0, y 0 ),..., (x 2n 1, y 2n 1)} oraz B = {(x 0, y 0 ),..., (x 2n 1, y 2n 1 )}. Wtedy C = A B jest reprezentowany przez {(x 0, y 0 y 0 ),..., (x 2n 1, y 2n 1 y 2n 1 )} Obliczyli±my C w czasie O(n). Šukasz Kowalik (UW) FFT & FMM 5 / 30
(Prawdziwe) mno»enie wielomianów w O(n log n) Šukasz Kowalik (UW) FFT & FMM 6 / 30
(Prawdziwe) mno»enie wielomianów w O(n log n) Šukasz Kowalik (UW) FFT & FMM 6 / 30
Liczby zepolone, pierwiastki z 1: przypomnienie Liczby zespolone przedstawiamy jako: z = x + yi = r(cos ϕ + i sin ϕ) z = r e ϕi ω n = e 2π n jest pierwiastkiem stopnia n z 1. wszystkie pierwiastki stopnia n z 1: ω 0 n, ω 1 n,... ω n 1 n. Šukasz Kowalik (UW) FFT & FMM 7 / 30
DFT i FFT Dyskretna Transformata Fouriera, DFT Dany ci g (a 0,..., a n 1) reprezentuj cy wielomian A(x) = n 1 i=0 a i x i. Obliczy warto±ci A(x 0 ),..., A(x n 1), gdzie x j = ω j n dla j = 0,..., n. Uwaga W naszym zastosowaniu do mno»enia wielomianów stopnia < d, n = 2d oraz a d = a d+1 =... = a 2d 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 a n = 0). Okre±lmy 2 wielomiany stopnia < n/2: Wtedy: A [0] (x) = a 0 + a 2 x + a 4 x 2 +... + a n 2x n/2 1, A [1] (x) = a 1 + a 3 x + a 5 x 2 +... + a n 1x n/2 1. A(x) = A [0] (x 2 ) + xa [1] (x 2 ), (tzn. wystarczy obliczy n warto±ci 2 wielomianów stopnia < n/2.) fartownie, (ω n ) 2 = (e 2π n i ) 2 = e 2π n/2 i = ω n/2. st d, dla k = 0,..., n/2, mamy: (ωn) k 2 = ωn/2 k oraz (ωk+n/2 n ) 2 = ωn/2 k ωn/2 n/2 = ωk n/2. czyli {(ωn) 0 2, (ωn) 1 2,..., (ω n 1 n ) 2 } = {ωn/2 0, ω1 n/2,..., ωn/2 1 n/2 } Rekurencyjnie obliczamy n/2 warto±ci 2 wielomianów stopnia < n/2 Š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 O(n log n): Czego jeszcze brakuje? Šukasz Kowalik (UW) FFT & FMM 11 / 30
Odwrotna Dyskretna Transformata Fouriera (IDFT) Odwrotna Dyskretna Transformata Fouriera, IDFT Dany ci g (y 0,..., y n 1) reprezentuj cy warto±ci wielomianu A(x) = n 1 i=0 a i x i odpowiednio w punktach 1, ωn, 1..., ω n 1 n. Wykona interpolacj, tzn. obliczy warto±ci a 0,..., a n 1. Chcemy znale¹ a 0,..., a n 1 takie,»e: y 0 = a 0 + a 1 + a 2 +... + a n 1, y 1 = a 0 + a 1 ω n + a 2 ω 2 n +... + a n 1ω n 1 n, y 2 = a 0 + a 1 ω 2 n + a 2 ω 4 n +... + a n 1ω 2(n 1) n,.. y n 1 = a 0 + a 1 ω n 1 n + a 2 ω 2(n 1) n +... + a n 1ω (n 1)(n 1) n. Šukasz Kowalik (UW) FFT & FMM 12 / 30
Odwrotna Dyskretna Transformata Fouriera (IDFT) Odwrotna Dyskretna Transformata Fouriera, IDFT Dany ci g (y 0,..., y n 1) reprezentuj cy warto±ci wielomianu A(x) = n 1 i=0 a i x i odpowiednio w punktach 1, ωn, 1..., ω n 1 n. Wykona interpolacj, tzn. obliczy warto±ci a 0,..., a n 1. Chcemy znale¹ a 0,..., a n 1 takie,»e: y 0 y 1 y 2. y n 1 = 1 1 1 1 1 1 ω n ω 2 n ω 3 n ω n 1 n 1 ω 2 n ω 4 n ω 6 n ω 2(n 1) n........ 1 ω n 1 n ω 2(n 1) n ω 3(n 1) n ω (n 1)(n 1) n czyli y = V n a, gdzie V n jest macierz Vandermonde'a det V n = (ω j n ωn) i 0. St d, a = V 1 n y. 0 i<j n 1 a 0 a 1 a 2. a n 1 Šukasz Kowalik (UW) FFT & FMM 12 / 30
Odwrotna Dyskretna Transformata Fouriera (IDFT), cd Chcemy obliczy a = V 1 n y, (V n jest macierz Vandermonde'a dla warto±ci 1, ω n, ω 2 n,..., ω n 1 n.) Fakt (dowód: obliczenie V 1 n (V 1 n ) j,k = 1 n ω jk n Wniosek a j = n 1 k=0 n 1 1 n ω jk n y k = 1 n k=0 V n, V n V 1 n, nuda.) y k (ω j n ) k = 1 Y n (ωn j n ), gdzie Y jest wielomianem o wspóªczynnikach (y 0,..., y n 1). Wniosek z wniosku a = 1(DFT (y n 0,..., y n 1)) R, 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 log 2 n. Šukasz Kowalik (UW) FFT & FMM 14 / 30
Zastosowanie 1: Mno»enie Powiedzmy,»e chcemy pomno»y przez siebie 2 liczby n-bitowe a = n 1 i=0 a i 2 i i b = n 1 i=0 b i 2 i. 1 a i b reprezentujemy jako wielomiany A(x), B(x): mo»na po prostu jako A(x) = n 1 i=0 a i x i, gdzie a i {0, 1} ale zwykle bardziej si opªaca pokroi liczby na grubsze bloki, l-bitowe. Wtedy A(x) = n/l 1 i=0 a i x i, gdzie a i {0,..., 2 l 1}. Šukasz Kowalik (UW) FFT & FMM 15 / 30
Zastosowanie 1: Mno»enie Powiedzmy,»e chcemy pomno»y przez siebie 2 liczby n-bitowe a = n 1 i=0 a i 2 i i b = n 1 i=0 b i 2 i. 1 a i b reprezentujemy jako wielomiany A(x), B(x): mo»na po prostu jako A(x) = n 1 i=0 a i x i, gdzie a i {0, 1} ale zwykle bardziej si opªaca pokroi liczby na grubsze bloki, l-bitowe. Wtedy A(x) = n/l 1 i=0 a i x i, gdzie a i {0,..., 2 l 1}. 2 za pomoc FFT obliczamy C(x) = A(x)B(x) (wówczas c j {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 = n 1 i=0 a i 2 i i b = n 1 i=0 b i 2 i. 1 a i b reprezentujemy jako wielomiany A(x), B(x): mo»na po prostu jako A(x) = n 1 i=0 a i x i, gdzie a i {0, 1} ale zwykle bardziej si opªaca pokroi liczby na grubsze bloki, l-bitowe. Wtedy A(x) = n/l 1 i=0 a i x i, gdzie a i {0,..., 2 l 1}. 2 za pomoc FFT obliczamy C(x) = A(x)B(x) (wówczas c j {0,..., n}). 3 wykonujemy przeniesienie za pomoc O(n log n) operacji na bitach Przeniesienie p i zawsze ma co najwy»ej warto± n: Na pocz tku c 0/2 n, czyli OK Je±li p i n to p i+1 = (p i + c i )/2 n. St d, obliczenie i-tej cyfry wyniku wymaga O(log n) operacji bitowych. Šukasz Kowalik (UW) FFT & FMM 15 / 30
Zastosowanie 1: Mno»enie, cd Analiza Powiedzmy,»e n bitów podzielili±my na 2 k bloków dªugo±ci l. Wówczas algorytm wykona si w czasie O(n + k Mn/l), 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 W praktyce dla rozs dnych danych (np. n = 10 9 ) wystarczy liczby zespolone reprezentowa jako par liczb typu double. Wówczas mno»enie dwóch liczb m-bitowych dziaªa w czasie O(1). Bior c l = k dostajemy algorytm w czasie O(n). Šukasz Kowalik (UW) FFT & FMM 16 / 30
Zastosowanie 1: Mno»enie, cd Analiza Powiedzmy,»e n bitów podzielili±my na 2 k bloków dªugo±ci l. Wówczas algorytm wykona si w czasie O(n + k Mn/l), 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 l = 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«z 2 e +1 dla pewnego e. Prowadzi to do czasu O(n log n log log n). (Fürer 2007) algorytm O(n log n2 log n ). Šukasz Kowalik (UW) FFT & FMM 16 / 30
Zastosowanie 2: Dodawanie zbiorów Problem Dane dwa zbiory A, B {0,..., n}, Znale¹ C = {a + b : a A, b B}. Rozwi zanie w czasie O(n log n) We¹my A(x) = a A x a, B(x) = b B x b. Obliczamy C(x) = A(x)B(x). Je±li C(x) = 2n j=0 c j x j to C = {j : c j 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. Znale¹ macierz C = A B. Algorytm naiwny (wg zwykªego wzoru) c ij = n k=1 a ikb kj. 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 = 2 k. Podzielmy A, B, C na podmacierze o wymiarach (n/2) (n/2): [ ] [ ] A1,1 A A = 1,2 B1,1 B, B = 1,2 A 2,1 A 2,2 B 2,1 B 2,2 Wówczas [ ] A1,1 B C = 1,1 + A 1,2 B 2,1 A 1,1 B 1,2 + A 1,2 B 2,2 A 2,1 B 1,1 + A 2,2 B 2,1 A 2,1 B 1,2 + A 2,2 B 2,2 Mamy rekurencj T (n) = 8T (n/2) + O(n 2 ) czyli T (n) = O(n 3 ). (Dominuj cy jest ostatni poziom, gdzie jest 8 log 2 n = n 3 w zªów.) Šukasz Kowalik (UW) FFT & FMM 20 / 30
Mno»enie macierzy: Dziel i zwyci»aj (2) [ ] A1,1 A A = 1,2 A 2,1 A 2,2 Drugie podej±cie (Strassen 1969): [ ] B1,1 B, B = 1,2 B 2,1 B 2,2 M 1 := (A 1,1 + A 2,2 )(B 1,1 + B 2,2 ) M 2 := (A 2,1 + A 2,2 )B 1,1 M 3 := A 1,1 (B 1,2 B 2,2 ) M 4 := A 2,2 (B 2,1 B 1,1 ) M 5 := (A 1,1 + A 1,2 )B 2,2 M 6 := (A 2,1 A 1,1 )(B 1,1 + B 1,2 ) M 7 := (A 1,2 A 2,2 )(B 2,1 + B 2,2 ). Wtedy: [ ] A1,1 B C = 1,1 + A 1,2 B 2,1 A 1,1 B 1,2 + A 1,2 B 2,2 A 2,1 B 1,1 + A 2,2 B 2,1 A 2,1 B 1,2 + A 2,2 B 2,2 [ ] M1 + M = 4 M 5 + M 7 M 3 + M 5 M 2 + M 4 M 1 M 2 + M 3 + M 6 Mamy rekurencj T (n) = 7T (n/2) + O(n 2 ) czyli T (n) = O(7 log 2 n ) = O(n log 2 7 ) = O(n 2.81 ). Šukasz Kowalik (UW) FFT & FMM 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 Ω(n 2 ). Ciekawe wyniki dla macierzy prostok tnych, np. je±li r 0.294 to macierz n n r mo»na pomno»y przez macierz n r n w czasie O(n 2+o(1) ). Niech M(n) to czas mno»enia macierzy n n. Wiemy,»e M(n) = O(n ω ), gdzie ω < 2.38. 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 N >0. Wówczas dla dowolnego i, j = 1,..., n element A k zawiera liczb marszrut dªugo±ci k i,j od wierzchoªka i do wierzchoªka j Dowód Indukcja. Dla k = 1 OK. Dla k > 1 mamy: A k 1 i,l A l,j jest liczb marszrut dªugo±ci k od i do j, w których przedostatni wierzchoªek to l. St d, A k = n i,j k od i do j. l=1 Ak 1 i,l A l,j jest liczb wszystkich marszrut dªugo±ci Wniosek Liczb marszrut dªugo±ci k mi dzy wszystkimi parami wierzchoªków mo»emy policzy w czase O(n ω log k). Šukasz Kowalik (UW) FFT & FMM 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 ω log n) 4 Sprawdzenie (ew. znajdowanie) czy graf zawiera skojarzenie doskonaªe w czasie (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 n ) Pytanie: Czy mo»na szybciej? Np. O(1.9 n )? Šukasz Kowalik (UW) FFT & FMM 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 n ) Pytanie: 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 n/3 ) wierzchoªkach. Ustalmy dowolny podziaª V = V 0 V 1 V 2 na trzy równe cz ±ci (tak równe jak si da). Wierzchoªkami G s wszystkie warto±ciowania v i : V i {0, 1} dla i = 0, 1, 2. Dla dowolnych v V i, w V (i+1) mod 3 graf G zawiera kraw d¹ vw. 2 V 0 2 V 1 2 V 2 Š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. 2 V 0 2 V 1 2 V 2 Š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 Jak dobra wagi? Niech c(v) = 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 Jak dobra wagi? Niech c(v) = 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). }{{} 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 Jak dobra wagi? Niech c(v) = 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). }{{} 0 Czyli dajemy waga(xy) = c(x) c(x) c(y). Šukasz Kowalik (UW) 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 2 ) = O(n 4 ) podziaªów (m = liczba klauzul) k = k 0 + k 1 + k 2. Dla ka»dego podziaªu budujemy graf G zªo»ony k0,k1,k2 tylko z: kraw dzi o wadze k 0 mi dzy 2 V 0 a 2 V 1, kraw dzi o wadze k 1 mi dzy 2 V 1 a 2 V 2, kraw dzi o wadze k 2 mi dzy 2 V 2 a 2 V 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 2 ) = O(n 4 ) podziaªów (m = liczba klauzul) k = k 0 + k 1 + k 2. Dla ka»dego podziaªu budujemy graf G zªo»ony k0,k1,k2 tylko z: kraw dzi o wadze k 0 mi dzy 2 V 0 a 2 V 1, kraw dzi o wadze k 1 mi dzy 2 V 1 a 2 V 2, kraw dzi o wadze k 2 mi dzy 2 V 2 a 2 V 0. Wtedy wystarczy... sprawdzi, czy istnieje dowolny trójk t. Šukasz Kowalik (UW) FFT & FMM 28 / 30
Sprawdzanie, czy G k0,k 1,k 2 zawiera trój t Wniosek Graf G k0,k1,k2 ma 3 2n/3 wierzchoªków. Mo»emy sprawdzi, czy G k0,k1,k2 O(2 ωn/3 ) = O(1.732 n ) zawiera trój t w czasie Czyli mo»emy sprawdzi, czy G zawiera trój t o wadze k w czasie O(n 4 2 ωn/3 ) = O(n 4 1.732 n ) = O(1.733 n ) Š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 n ). Šukasz Kowalik (UW) FFT & FMM 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