Μαθηµατικά για Πληροφορική Μάθηµα 7 Ηλίας Κουτσουπιάς, Γιάννης Εµίρης Τµήµα Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήµιο Αθηνών 1 / 31
Γενικό πλάνο 1 Θεωρητικό Υπόβαθρο 2 Αποτελεσµατική ακριβής αριθµητική 3 Ταχύς Πολλαπλασιασµός πολυωνύµων 2 / 31
Εισαγωγή Αλγεβρικά προβλήµατα: πράξεις αριθµών / πολυωνύµων / διανυσµάτων / πινάκων, επίλυση εξισώσεων / συστηµάτων. Εφαρµογές: κρυπτογραφία, γραφικά, υπολογιστική γεωµετρία, εξόρυξη δεδοµένων κλπ Επίλυση µέσω Αλγεβρικών αλγορίθµων ή Αριθµητικών µεθόδων Αλγεβρικοί αλγόριθµοι: χαρακτηρίζονται από απόλυτη ακρίβεια (π.χ. int), αλλά υψηλότερο κόστος. Αριθµητικές µέθοδοι: χρησιµοποιούν προσεγγιστικούς αλγορίθµους (π.χ. floats) και στοχεύουν σε προσεγγιστικές λύσεις. 3 / 31
Υπολογιστική Αλγεβρα Η περιοχή των αλγεβρικών αλγορίθµων ονοµάζεται και «άλγεβρα µε υπολογιστή» (computer algebra). «υπολογιστική άλγεβρα» (computational algebra). «συµβολική επεξεργασία» (symbolic computation). ιάφορα παραδείγµατα: πολλαπλασιασµός πολυωνύµων: (x 2 + 3) (x + 286) x 3 + 286x 2 + 3x + 858. διαίρεση πολυωνύµων: x 3 + 286x 2 + 3x + 858/(x 2 + 3) x + 286. ΜΚ πολυωνύµων: x 3 + 286x 2 + 3x + 858, 135x 2 + 37659x 286 x + 286. επίλυση πολυωνύµων (και αργότερα συστηµάτων): x 3 + 286x 2 + 3x + 858 { 286, i 3, i 3}. 4 / 31
Σύγκριση µεθόδων Προβλήµατα / κριτήρια Αλγεβρικοί Αλγόριθµοι Απόλυτη ακρίβεια Εκρηξη ενδιαµέσων τιµών (intermediate swell) Υψηλή πολυπλοκότητα υαδική (Boolean) πολυπλοκότητα Αριθµητικές Μέθοδοι Ακρίβεια αποτελέσµατος (accuracy) περιορίζεται από το αριθµητικό σφάλµα Ακρίβεια των υπολογισµών (precision) Ικανοποιητική ταχύτητα Αριθµητική πολυπλοκότητα: µοναδιαίο (ενιαίο) κόστος πράξεων Μέγεθος αποτελέσµατος (κατώτερο όριο) Σταθερότητα (stability) αποτελέσµατος, Conditioning = απόσταση από εκφυλισµένη (singular) κατάσταση 5 / 31
Σύγκριση Παράδειγµα Υπολογισµός ορίζουσας πίνακα 2 2: Αλγεβρικοι αλγόριθµοι: 4 πολλ/σµοί, 3 ΜΚ, 1 ΕΚΠ, 1 πρόσθεση [ ] 2/3 4/5 det = 2 4/3 399/250 3 399 250 4 3 4 1 == 5 375 Αριθµητικές µέθοδοι: 2 πολλ/σµοί, 1 πρόσθεση [ ] 0, 666... 0, 8 det = 1, 037333 1, 062936 = 0, 002666... 1, 333... 1, 596 6 / 31
Υπολογιστικό µοντέλο Η RAM (Random Access Machine) χρειάζεται σταθερό χρόνο O(1) για: είσοδος / έξοδος στοιχείου, «τυχαία» πρόσβαση µνήµης, σύγκριση (<, =, >), 4 ϐασικές πράξεις (ίσως και, ln, a b, mod, div). Κάθε στοιχείο καταλαµβάνει χώρο ίσο µε κάποια σταθερά. Random RAM: παραγωγή τυχαίων αριθµών. 7 / 31
Real RAM Κάθε πραγµατικός αναπαριστάται µε απόλυτη ακρίβεια. Πράξεις µεταξύ πραγµατικών γινονται µε απόλυτη ακρίβεια. Ουσιαστικά το µοντέλο που προϋποθέτουν οι αριθµητικές µεθοδοι. Μπορούµε να το οδηγήσουµε σε µη ϱεαλιστική συµπεριφορά: Παράδειγµα ύο προσθέσεις a + b, c + d ακεραίων < 2 n ανάγονται σε µία: (a 2 n+1 + b) + (c 2 n+1 + d) = (b + d) + 2 n+1 (a + c). Οµοίως οι πολλαπλασιασµοί ac, bd ανάγονται σε έναν: (a 2 2n+1 + b) (c 2 2n+1 + d) = ac 2 4n+2 + (ad + bc)2 2n+1 + bd. 8 / 31
Boolean (δυαδική) RAM Κάθε στοιχείο αναπαριστάται δυαδικά, δηλ. το x µε log 2 x δυαδικά ψηφία συν 1 για το πρόσηµο. Π.χ: 21 = 10101 2 µέγεθος(21) = 5 bits. Ακριβέστερη µελέτη πολυπλοκότητας. εν µπορούµε να ανάγουµε δύο πράξεις σε µία. Πλησιάζει στη µηχανή Turing. Με O A ( ) και O B ( ) ϑα συµβολίζουµε αντίστοιχα την αριθµητική (real RAM) και δυαδική πολυπλοκότητα. 9 / 31
Αναπαράσταση αριθµών Αναπαράσταση ακεραίων (Z) ή ϱητών (Q) : Απόλυτη ακρίβεια µε χρήση πολλαπλών λέξεων µνήµης ή πινάκων (arrays). Π.χ. 2 10 = [00000100][00000000] Αναπαράσταση πραγµατικών (R): Προσεγγίζονται µε αριθµούς κινητής υποδιαστολής (floating point). Π.χ. ±m c p : εκθέτης p [Pmin, Pmax), δεδοµένο c. mantissa m [0, 2 M ). IEEE double: 64 bits = 1 (πρόσηµο) + 53 (=Μ) + 10 (εκθέτης p). 10 / 31
Αναπαράσταση πολυωνύµων Αναπαράσταση πολυωνύµου µίας µεταβλητής ϐαθµού d 0, π.χ. στο Z[x] ή R[x]: ΠΑΡΑ ΕΙΓΜΑ Πυκνή, ως πίνακας (array) d + 1 συντελεστών. Αραιή ως συνδεδεµένη λίστα (κατάλογος) των µη µηδενικών όρων. Το πολυώνυµο 15x 4 + 3x 2 9 αναπαρίσταται ως (πυκνή) [ 15, 0, 3, 0, 9] όπου d = 4 (αραιή) [ 15, 4] [3, 2] [ 9, 0]. 11 / 31
Αναπαράσταση πολυωνύµων Αναπαράσταση πολυωνύµων n µεταβλητων Z[x 1,...,x n ] ύο δυνατές προσεγγίσεις: Επαγωγική: πολυώνυµο ως προς την 1η µεταβλητή, µε συντελεστές πολυώνυµα στις n 1 µεταβλητές κοκ. Κατανεµηµένη: µε ϐάση µια Ολική ταξινόµηση των όρων δηλ. των n-διάστατων διανυσµάτων των εκθετών, π.χ. λεξικογραφική ταξινόµηση. Εξετάζουµε ως παράδειγµα το πολυώνυµο (x + y) 2 + x + y + 1. 12 / 31
Επαγωγική Αναπαράσταση πολυωνύµων Θεωρούµε το πολυώνυµο ως προς µία µεταβλητή: συντελεστές = πολυώνυµα στις υπόλοιπες µεταβλητές. Αποθηκεύουµε λίστα ως προς 1η µεταβλητή, οι συντελεστές αποθηκεύονται επαγωγικά. Για κάθε στοιχείο (record) αποθηκεύεται ο αριθµητικός συντελεστής, ο εκθέτης ως προς την τρέχουσα µεταβλητή και δείκτης (pointer) στο πολυώνυµο που αντιστοιχεί στον συντελεστή. Συνήθως για αραιά πολυώνυµα. ΠΑΡΑ ΕΙΓΜΑ x > y x 2 + x(2y + 1) + (y 2 + y + 1) : δ 3 2 1 1 0 δ 7 1 2 1 2 1 1 δ 3 1 1 1 0 δ 7 1 0 13 / 31
Κατανεµηµένη Αναπαράσταση πολυωνύµων Λίστα (αραιο) ή πίνακας (πυκνο) όρων διατεταγµένων ως προς τα διανυσµατα των εκθετων. Κάθε στοιχείο (record) περιέχει το διάνυσµα του εκθέτη και τον αριθµητικό συντελεστή. Απαιτείται µια ολική διάταξη στα n-διάστατα διανύσµατα. Συνήθως λεξικογραφική διάταξη (τηλεφωνικός κατάλογος): διατάσσει τις µεταβλητές, π.χ. x 1 > x 2 > > x n, τότε (a 1, a 2,... a n ) > (b 1, b 2,..., b n ) ανν a k > b k και a i = b i, i < k. Αλλη διάταξη: συνολικος ϐαθµος, και έπειτα λεξικογραφικά. ΠΑΡΑ ΕΙΓΜΑ x > y x 2 + 2xy + x + y 2 + y + 1: 2 0 1 1 1 2 1 0 1 0 2 1 0 1 1 0 0 1 14 / 31
Βασικές Πράξεις: Πρόσθεση/Αφαίρεση Ακέραιοι µήκους n δυαδικών ψηφίων (δυφίων) στη δυαδική RAM. Η πρόσθεση / αφαίρεση καταλήγουν σε ακέραιο n + 1 δυφίων άρα χρειάζονται n + 1 στοιχειώδεις πράξεις Ω B (n). Ο σχολικός αλγόριθµος έχει πολυπλοκότητα O B (n). υαδική πολυπλοκότητα Πρόσθεσης / Αφαίρεσης = Θ B (n). Πολυώνυµα στο Z[x] ϐαθµού n στη real RAM. Η πρόσθεση / αφαίρεση καταλήγουν σε πολυώνυµο ϐαθµού n άρα χρειάζονται n πράξεις ακεραίων Ω A (n). Σχολικός αλγόριθµος = O A (n). Αριθµητική πολυπλοκότητα Πρόσθεσης / Αφαίρεσης = Θ A (n). 15 / 31
Πολλαπλασιασµός Ακέραιοι µήκους n δυφίων. Το γινόµενό τους έχει 2n δυφία Ω B (n). Ο σχολικός αλγόριθµος δηµιουργεί (πολλαπλασιάζοντας µε 0 ή 1) n προσθετέους µήκους n, και τους προσθέτει υαδική πολυπλοκότητα = O B (n 2 ). Τα ϕράγµατα εφαρµόζονται και στον πολλαπλασιασµό πολυωνύµων µίας µεταβλητής ϐαθµού n, δηλ. Ω A (n) και O A (n 2 ). 16 / 31
ιαίρει και Βασίλευε Θέλουµε να πολλαπλασιάσουµε τους a, b µήκους n δυφίων καθένας. Γράφουµε a = a 0 + 2 n/2 a 1, b = b 0 + 2 n/2 b 1, a i, b i Z µήκους n/2. ab = a 0 b 0 + 2 n/2 (a 0 b 1 + b 0 a 1 ) + 2 n a 1 b 1, όπου (a 0 b 1 + b 0 a 1 ) = (a 0 + a 1 )(b 0 + b 1 ) a 0 b 0 a 1 b 1. Εστω M(n), A(n) η πολυπλοκότητα πολλαπλασιασµού και πρόσθεσης ακεραίων µήκους n: M(n) = 3M(n/2) + 4A(n/2) + 2A(n) = 3M(n/2) + O(n) 3M(n/2) + cn 9M(n/4) + 2cn 3 k M(n/2 k ) + kcn = 3 lg n O(1) + O(n lg n) = O(n lg 3 ). 17 / 31
Πολλαπλασιασµός τετραγωνων πινάκων ίνονται δύο n n πίνακες πραγµατικών. Μέγεθος εξόδου = n 2 κάτω ϕράγµα = Ω A (n 2 ) στη real RAM. Σχολικός αλγόριθµος: n 3 πολλαπλασιασµοι. ιαίρει και ϐασίλευε [Strassen 69] O A (n lg 7 ) O A (n 2.81 ). [Coppersmith-Winograd 90] O A (n 2.376 ). Το κλείσιµο του χάσµατος µεταξύ κάτω / άνω ϕράγµατος αποτελεί ένα από τα σηµαντικότερα ανοικτά προβλήµατα στην ϑεωρητική πληϱοϕοϱική. 18 / 31
Αλγόριθµος Strassen ίνονται πίνακες 2 2 µε στοιχεία a ij, b ij για i, j = 1, 2 και έστω ο πίνακας-γινόµενο c ij. Θέτουµε: m 1 = (a 12 a 22 )(b 21 + b 22 ), m 2 = (a 11 + a 22 )(b 11 + b 22 ), m 3 = (a 11 + a 12 )b 22, m 4 = a 22 (b 21 b 11 ), m 5 = a 11 (b 12 b 22 ), m 7 = (a 21 + a 22 )b 11, m 8 = (a 11 a 21 )(b 11 + b 12 ) [ ] m1 + m (c ij ) = 2 m 3 + m 4 m 3 + m 5 m 4 + m 7 m 2 + m 5 m 7 m 8 Για γενική διάσταση, αντικαταθιστούµε τα στοιχεία a ij, b ij, c ij µε υποπίνακες A ij, B ij, C ij διάστασης n/2 και εφαρµόζουµε ιαίρει και Βασίλευε: M(n) = 7M(n/2) + O(n 2 ) 7 k M(n/2 k ) + kcn 2 = O(n lg 7 ), όπου η πρόσθεση πινακων n n έχει πολυπλοκότητα O(n 2 ). 19 / 31
Πολλαπλασιασµός πολυωνύµων Πολλαπλασιασµός µέσω αποτίµησης και παρεµβολής 1: function Mult(p, q) % p, q Z[x], ϐαθµού n 2: Καθόρισε σηµεία x 0,..., x 2n C 3: Αποτίµηση: Υπολόγισε τις τιµές r i p(x i ) q(x i ), i = 0,...,2n 4: Παρεµβολή: Υπολόγισε το πολυώνυµο f Z[x] : f(x i ) = r i 5: end function Με τη συνήθη αναπαράσταση πολυωνύµων µέσω συντελεστών µπορούµε γρήγορα να τα προσθέσουµε αλλά «δύσκολα» να τα πολλαπλασιάσουµε. Στην αναπαράσταση πολυωνύµου από τις τιµες του σε συγκεκριµένα σηµεία, ο πολλαπλασιασµός είναι εξίσου αποδοτικός µε την πρόσθεση. 20 / 31
Αποτίµηση πολυωνύµου σε ένα σηµείο Εστω πολυώνυµο µίας µεταβλητής p = c 0 + + c n x n Z[x], και έστω σηµείο a. Για τον υπολογισµό µιας τιµής p(a), αν υπολογίζαµε ξεχωριστά κάθε όρο του πολυωνύµου ϑα χρειαζονταν O A (n lg n) πολλαπλασιασµοι και n προσθέσεις. Αποτίµηση µε τον κανόνα του Horner [Νεύτων]: p(a) = ( (c n a + c n 1 )a + ) + c 0. Η πολυπλοκοτητα είναι ϐέλτιστη: n προσθέσεις, n πολλαπλασιασµοι. ΠΑΡΑ ΕΙΓΜΑ Η αποτίµηση του p(x) = c 3 x 3 + + c 0 γίνεται ως εξης. p(a) = ((c 3 a + c 2 )a + c 1 )a + c 0. 21 / 31
Αποτίµηση πολυωνύµου σε k σηµεία Ο κανόνας του Horner οδηγεί στο O A (kn). Υπάρχει αλγόριθµος ιαίρει και ϐασίλευε στο O A (k lg 2 max{k, n}). ΠΑΡΑ ΕΙΓΜΑ Η αποτίµηση του p(x) στα σηµεία x 0, x 1, x 2 γράφεται ως εξής: p(x) = c 2 x 2 + c 1 x + c 0 1 x 0 x0 2 1 x 1 x1 2 1 x 2 x2 2 c 0 c 1 c 2 = p(x 0 ) p(x 1 ) p(x 2 ) 22 / 31
Ιδιότητες αποτίµησης Λήµµα p Z[x], a C p(a) = p(x) mod (x a). Λήµµα a, b, c 0 (a mod (bc)) mod b = a mod b. Αρα p(x) mod (x x i ) = [p(x) mod (x x j )] mod (x x i ), i J N. j J 23 / 31
Αποτίµηση σε n σηµεία Αλγόριθµος fan-out Λίγες πράξεις µε πολυώνυµα µεγάλου ϐαθµού, πολλές µε µικρού: q 0 p mod n 1 i=0 (x x i) q 1 q 0 mod n/2 1 i=0 (x x i ) = p mod n/2 1 i=0 (x x i ) p mod (m+1)n/2 k 1 i=mn/2 k m [0, 2 k ) q λ p mod (x x 0 )(x x 1 ) r 0 q λ mod (x x 0 ) Στο επίπεδο k, υπολογισε 2 k υπόλοιπα πολυωνύµων ϐαθµού n/2 k 1 1 διαιρεµένα µε πολυώνυµο ϐαθµού n/2 k Κόστος 2 k O((n/2 k ) lg n). Συνολικά, οι αποτιµήσεις κοστίζουν O(n lg 2 n). 24 / 31
Παρεµβολή Ορισµός Παρεµβολή (interpolation) πολυωνύµου p Z[x] ϐαθµού n καλείται ο υπολογισµός των n + 1 συντελεστών του p αν δίνονται οι τιµες p(x i ) σε διαφορετικά σηµεία x 0,..., x n. Θεώρηµα Κάθε πολυωνυµο p Z[x], ϐαθµού n, είναι µοναδικά ορισµένο από τις τιµές του σε n + 1 διαφορετικά σηµεία. Απόδειξη. Επίλυση ενός γραµµικού συστήµατος Vandermonde, µε δεδοµένο το διάνυσµα τιµών [p(x 0 ),..., p(x n )]. Ο πίνακας Vandermonde είναι αντιστρέψιµος ανν τα σηµεία είναι διαφορετικά διότι det = i j x i x j. 25 / 31
Αλγόριθµος Παρεµβολής Lagrange Με δεδοµένα τα σηµεία x 0,..., x n και τις τιµές r 0,..., r n υπολογίζουµε p n i=0 r i j=0,...,n,j i x x j x i x j. ΠΑΡΑ ΕΙΓΜΑ Εστω x i = [0, 1, 2], r i = [ 1, 3, 9], τότε 1 x 1 1 x 2 2 + 3x 1 x 2 1 2 + 9x 2 x 1 2 1 δίνει το πολυώνυµο p(x) = x 2 + 3x 1. 26 / 31
Πολυπλοκότητα Πολλαπλασιασµού Θεώρηµα Υπάρχει αλγόριθµος ιαίρει και ϐασίλευε για την αποτίµηση πολυωνύµου σε k σηµεία µε πολυπλοκότητα O A (k lg 2 max{k, n}). Για το πρόβληµα της παρεµβολής, υπάρχει αλγόριθµος ιαίρει και ϐασίλευε µε πολυπλοκότητα O A (n lg 2 n). Πόρισµα Ο πολλαπλασιασµός πολυωνύµων ϐαθµού n έχει πολυπλοκότητα O A (n lg 2 n) 27 / 31
Ταχύς Μετασχηµατισµός Fourier (Fast Fourier Transform) Πρόβληµα ιακριτού Μετασχηµατισµού Fourier Με δεδοµένο πολυώνυµο p(x) = c n 1 x n 1 + c n 2 x n 2 + + c 0 υπολογίζουµε τις τιµές του σε όλες τις n-οστές ϱίζες της µονάδας 1,ω = e 2πi/n,ω 2,...,ω n 1 C. Επίλυση µε τον Ταχύ Μετασχηµατισµό Fourier (FFT). Το πρόβληµα είναι ειδική περίπτωση του υπολογισµού k = n τιµών και ο FFT είναι ένας αλγόριθµος αποτίµησης στα συγκεκριµένα σηµεία. 28 / 31
Ταχύς Μετασχηµατισµός Fourier Εστω T(n) η πολυπλοκότητα του FFT, δηλ. για την αποτίµηση του p(n) στα x = ω j, j = 0,..., n 1. Γράφουµε p(x) = q(x 2 ) + x s(x 2 ) και ϑέτουµε y = x 2. Τα q(y), s(y) είναι ϐαθµού (n 1)/2. Οταν x = ω j για j = 0,...,n 1, το y = x 2 = ω 2j παίρνει µόνο n/2 διαφορετικές τιµές. Αρα απαιτούνται 2T(n/2) πράξεις για την αναγωγή σε µικρότερα προβλήµατα. ω j = ω j+n/2 q(y) + ω j s(y) = q(y) ω j+n/2 s(y). Αρα απαιτούνται n/2 πολλαπλασιασµοι x s(y) και n προσθαφαιρέσεις, συνεπώς: T(n) = 1, 5n + 2T(n/2) 1, 5kn + 2 k T(n/2 k ) = O A (n log n) + O A (n) = O A (n lg n). 29 / 31
Ταχύς Μετασχηµατισµός Fourier ΠΑΡΑ ΕΙΓΜΑ p(x) = 3x 3 + 2x 2 x + 5, n = 4, και τα σηµεία είναι {1,ω = i,ω 2 = 1,ω 3 = ω}. Γράφουµε p(x) = (5 + 2x 2 ) + x( 1 + 3x 2 ) = q(y) + x s(y). Υπολογίζουµε: p(1) = q(1) + 1 s(1), p(ω) = q(ω 2 ) + ω s(ω 2 ), p(ω 2 ) = q(1) 1 s(1), p(ω 3 ) = q(ω 2 ) ω s(ω 2 ). Με 2 πολλαπλασιασµούς και 4 προσθαφαιρέσεις το πρόβληµα ανάγεται στην αποτίµηση των q(1), s(1) και q( 1), s( 1). Αυτό απαιτεί 2 πολλαπλασιασµούς (2 1, 3 1) και 4 προσθαφαιρέσεις (5 + 2, 5 2, 1 + 3, 1 3). Εχουµε 4 πολλαπλασιασµους και 8 προσθαφαιρέσεις συν 4 πράξεις για τον επαγωγικό υπολογισµό των q(y), s(y), άρα συνολικά το πλήθος πράξεων πράγµατι ϕράσσεται από 1, 5n lg n + n = 12 + 4. 30 / 31
Αντίστροφος Μετασχηµατισµος Fourier Πρόβληµα παρεµβολής Υπολογισµός των συντελεστών (ϐαθµός πολυωνύµου = n 1) από τις τιµές στις n-οστές ϱίζες της µονάδας. Επίλυση µέσω Αντίστροφου Μετασχηµατισµού Fourier (Inverse FFT, IFFT). Χρησιµοποιούµε αλγορίθµους ιαίρει και Βασίλευε της παρεµβολής µε πολυπλοκοτητα O A (n lg n). Πόρισµα Ο πολλαπλασιασµός πολυωνύµων ϐαθµού n έχει πολυπλοκότητα O A (n lg n). 31 / 31