Αριθμητική υπολοίπων

Στα μαθηματικά, η αριθμητική υπολοίπων[1][2] (αναφέρεται και ως μοδιακή αριθμητική[3] ή με μέτρο[4]) είναι ένα σύστημα αριθμητικής για ακέραιους αριθμούς, όπου οι αριθμοί που απέχουν μία σταθερή ποσότητα (ή πολλαπλάσιο αυτής) είναι ισοδύναμοι (ή ισότιμοι) μεταξύ τους. Έτσι η πρόσθεση δύο αριθμών σε αυτό το σύστημα μπορεί να ερμηνευθεί σαν μία «αναδίπλωση» των τιμών.[5][6][7][8]
Μία γνωστή χρήση της αριθμητικής υπολοίπων είναι για παράδειγμα σε ένα ρολόι των 12 ωρών, το οποίο χωρίζει την μέρα σε δύο περιόδους 12-ωρών. Αν τώρα η ώρα είναι 7:00, τότε σε 8 ώρες αργότερα θα είναι 3:00. Στο συνηθισμένο σύστημα αρίθμησης ο μεταγενέστερος χρόνος θα έπρεπε να πρέπει να είναι 7 + 8 = 15, αλλά αυτό δεν γίνεται στην αριθμητική υπολοίπων, διότι η ώρα του ρολογιού «αναδιπλώνεται» κάθε 12 ώρες και έτσι δεν υπάρχει «η ώρα 15:00». Ομοίως, αν το ρολόι ξεκινά στις 12:00 (το μεσημέρι) και έχουν περάσει 21 ώρες, τότε ο χρόνος θα είναι 9:00 την επόμενη μέρα, αντί για 33:00. Επειδή η ώρα ξεκινά ξανά από την αρχή αφού φτάσει στις 12:00, αυτό είναι αριθμητική modulo 12. Σύμφωνα με τον ορισμό παρακάτω, το 12 είναι ισότιμο όχι μόνο με το 12, αλλά και με το 0, έτσι ώστε ο χρόνος που ονομάζεται "12:00" θα μπορούσε επίσης να ονομάζεται "0:00", αφού το 12 είναι ισότιμο με το 0 modulo 12.
Η σύγχρονη προσέγγιση για την αριθμητική υπολοίπων αναπτύχθηκε από τον Καρλ Φρίντριχ Γκάους, στο βιβλίο του Disquisitiones Arithmeticae, που δημοσιεύθηκε το 1801.[9]
Τρεις σχετικές έννοιες
[Επεξεργασία | επεξεργασία κώδικα]Θα εισάγουμε τρεις βασικές έννοιες της αριθμητικής υπολοίπων: (1) την δυαδική πράξη mod, (2) την σχέση ισοτιμίας και (3) τις κλάσεις ισοτιμίας Οι αυστηροί ορισμοί δίνονται στις ακόλουθες ενότητες.
H Ευκλείδεια διαίρεση του με το μας δίνει το πηλίκο και το υπόλοιπο ώστε
- , όπου .
Το θεώρημα της διαίρεσης λέει ότι το υπόλοιπο είναι μοναδικό, επομένως μπορούμε να ορίσουμε μία συνάρτηση που επιστρέφει το υπόλοιπο της διαίρεσης του με το . Αυτή συνήθως γράφεται ως δυαδικός πράξη mod, δηλαδή
- .
Για παράδειγμα, το , καθώς και , καθώς .
Η σχέση ισοτιμίας είναι μία δυαδική σχέση που συνδέει τους ακεραίους αν έχουν το ίδιο υπόλοιπο με το , και γράφουμε
- .[5]
Για παράδειγμα, καθώς και το 12 και το 32 αφήνουν υπόλοιπο όταν διαιρεθούν με το .
Όπως θα δούμε παρακάτω η σχέση ισοτιμίας με το χωρίζει τους ακεραίους σε σύνολα, τις κλάσεις ισοδυναμίας. Για παράδειγμα, για υπάρχουν τα εξής σύνολα
- ,
- ,
- ,
- ,
- .
Άμα διαλέξουμε έναν ακέραιο από κάθε σύνολο, τότε λαμβάνουμε ένα πλήρες σύστημα υπολοίπων modulo .[5]: 28
Σχέση ισοτιμίας
[Επεξεργασία | επεξεργασία κώδικα]Ορισμός
[Επεξεργασία | επεξεργασία κώδικα]Για έναν ακέραιο , δύο ακέραιοι και λέγονται ισοϋπόλοιποι με μέτρο (ή ισοϋπόλοιποι modulo )[5]: 22 [6]: 106
- αν υπάρχει ακέραιος ώστε ,
δηλαδή αν η διαφορά τους είναι ένα ακέραιο πολλαπλάσιο του ή ισοδύναμα το διαιρεί το . Τότε γράφουμε ότι
- , ή .
Παραδείγματα
[Επεξεργασία | επεξεργασία κώδικα]- Ισχύει ότι
- ,
- καθώς , το οποίο είναι πολλαπλάσιο του .
- ,
- καθώς , το οποίο είναι πολλαπλάσιο του .
Αντίστοιχα και για αρνητικές τιμές, ισχύει ότι
- ,
- καθώς , το οποίο είναι πολλαπλάσιο του .
- ,
- καθώς , το οποίο είναι πολλαπλάσιο του .
- ,
- καθώς , το οποίο είναι πολλαπλάσιο του .
Ιδιότητες
[Επεξεργασία | επεξεργασία κώδικα]Η σχέση της ισοτιμίας με μέτρο είναι μία σχέση ισοδυναμίας, δηλαδή ικανοποιεί τις εξής ιδιότητες για κάθε :[5]: 22 [6]: 107
| Απόδειξη |
|
Για κάθε , έχουμε ότι , άρα (θέτοντας )
|
- (Συμμετρική ιδιότητα) Αν , τότε ,
| Απόδειξη |
|
Αν , τότε υπάρχει ώστε
Συνεπώς,
και άρα (θέτοντας ), λαμβάνουμε ότι
|
- (Μεταβατική ιδιότητα) Αν και , τότε .
| Απόδειξη |
|
Αν και , τότε υπάρχουν ώστε και
Προσθέτοντας αυτές τις δύο κατά μέλη έχουμε ότι
Επομένως, θέτοντας λαμβάνουμε ότι
|
Αν
- και
τότε ισχύει ότι[5]: 23 [6]: 107
| Απόδειξη |
|
Υπάρχουν τέτοια ώστε
Αθροίζοντας τις δύο παραπάνω έχουμε ότι Επομένως, καταλήγουμε ότι
|
- ,
- .
| Απόδειξη |
|
Υπάρχουν τέτοια ώστε
Αθροίζοντας τις δύο παραπάνω έχουμε ότι Επομένως, καταλήγουμε ότι
|
- , για κάθε .
| Απόδειξη |
|
Προκύπτει επαγωγικά από την προηγούμενη ιδιότητα. |
- , για κάθε πολυώνυμο .
Για κάθε θετικό ακέραιο και ακεραίους , ισχύει ότι[6]: 108
- αν και μόνο αν .
| Απόδειξη |
|
Ισχύει ότι αν και μόνο αν
που δίνει το ζητούμενο. |
Για κάθε θετικό ακέραιο και ακεραίους , αν ο είναι σχετικά πρώτος με τον ισχύει ότι
- αν και μόνο αν .
Σημείωση: Αυτή είναι η ιδιότητα της απαλοιφής στην διαίρεση με μέτρο, η οποία ισχύει κατά συνθήκη. Στην γενική περίπτωση δεν ισχύει.
| Απόδειξη |
|
Από την ταυτότητα Μπεζού έχουμε ότι υπάρχουν ακέραιοι τέτοιοι ώστε
Αν
τότε υπάρχει ακέραιος , ώστε Πολλαπλασιάζοντας και τα δύο μέλη με έχουμε ότι και χρησιμοποιώντας ότι ,
Καταλήγουμε ότι
Η αντίστροφη κατεύθυνση προκύπτει από την παραπάνω πολλαπλασιαστική ιδιότητα. |
Αν και ο μέγιστος κοινός διαιρέτης , τότε[5]: 23 [6]: 109
- .
| Απόδειξη |
|
Η απόδειξη προκύπτει συνδυάζοντας τις παραπάνω δύο ιδιότητες. |
Δυαδική πράξη mod
[Επεξεργασία | επεξεργασία κώδικα]Όπως αναφέραμε παραπάνω η δυαδική πράξη ορίζεται ως το υπόλοιπο της Ευκλείδειας διαίρεσης του με το . Από το θεώρημα της διαίρεσης αυτός είναι ένας μοναδικός ακέραιος. Αντί να γράψουμε συνήθως γράφουμε , αλλά δεν πρέπει να συγχέεται με το στην σχέση ισοτιμίας.
Ισχύει η εξής ισοδυναμία μεταξύ των δύο
αν και μόνο αν
- .
Ιδιότητες
[Επεξεργασία | επεξεργασία κώδικα]- ,
- ,
- ,
- ,
Συστήματα Υπολοίπων
[Επεξεργασία | επεξεργασία κώδικα]Κάθε κλάση υπολοίπων modulo μπορεί να αντιπροσωπεύεται από οποιοδήποτε από τα μέλη της. Συνήθως όμως επιλέγουμε τον μικρότερο μη αρνητικό ακέραιο από την κάθε κλάση (που είναι και το υπόλοιπο της Ευκλείδειας διαίρεσης). Οποιαδήποτε δύο μέλη από διαφορετικές κλάσεις υπολοίπων modulo δεν είναι ίσα modulo n. Επιπλέον, κάθε ακέραιος ανήκει σε μία και μόνο μία κλάση υπολοίπων modulo n.[10]
Το σύνολο των ακεραίων λέγεται το ελάχιστο σύστημα υπολοίπων modulo . Οποιοδήποτε σύνολο ακεραίων, δύο εκ των οποίων δεν είναι ισότιμοι modulo , ονομάζεται πλήρες σύστημα υπολοίπων modulo .
Είναι σαφές ότι το ελάχιστο σύστημα υπολοίπων είναι ένα πλήρες σύστημα υπολοίπων, και ένα πλήρες σύστημα υπολοίπων είναι απλά ένα σύνολο που περιέχει ακριβώς έναν στοιχείο από κάθε κλάση υπολοίπων modulo .[11] Το ελάχιστο σύστημα υπολοίπων modulo είναι το . Κάποια άλλα πλήρη συστήματα υπολοίπων modulo είναι:
- ,
- ,
- ,
- .
Μερικά σύνολα τα οποία δεν είναι πλήρη συστήματα υπολοίπων modulo 4 είναι:
- αφού το είναι ισότιμο με το modulo .
- αφού ένα πλήρες σύστημα υπολοίπων modulo πρέπει να έχει ακριβώς ασύμβατες κλάσεις υπολοίπων.
Κλάσεις ισοτιμίας
[Επεξεργασία | επεξεργασία κώδικα]Όπως κάθε σχέση ισοτιμίας, η ισοτιμία modulo είναι μία σχέση ισοδυναμίας, και η κλάση ισοδυναμίας του ακέραιου , που συμβολίζεται με ή είναι το σύνολο
- .
Αυτό το σύνολο, που αποτελείται από τους ακεραίους που είναι ισότιμοι με το , ονομάζεται κλάση ισοτιμίας ή κλάση υπολοίπων του modulo .
Ακέραιοι modulo n
[Επεξεργασία | επεξεργασία κώδικα]Το σύνολο όλων των κλάσεων ισοτιμίας των ακεραίων modulo ονομάζεται το σύνολο των ακεραίων modulo n, και συμβολίζεται , ή .[Σημείωση 1] Το σύνολο ορίζεται ως εξής.
Όταν , το έχει στοιχεία και μπορεί να γραφεί ως:
Όταν , το δεν είναι κενό, αλλά είναι ισομορφικό με το , καθώς .
Μπορούμε να ορίσουμε πρόσθεση, αφαίρεση και πολλαπλασιασμό στο σύνολο με τους ακόλουθους κανόνες:
Το γεγονός ότι οι παραπάνω δυαδικές πράξεις ορίζουν συναρτήσεις προκύπτει επό τις ιδιότητες που αποδείξαμε παραπάνω
Με τον τρόπο αυτό, γίνεται ένας αντιμεταθετικός δακτύλιος. Για παράδειγμα, στο δακτύλιο , έχουμε
όπως και στην αριθμητική για το 24-ωρο ρολόι.
Ο συμβολισμός χρησιμοποιείται, επειδή είναι ο δακτύλιος πηλίκο του από το ιδεώδες που περιέχει όλους τους ακεραίους που διαιρούνται με το n, όπου είναι το μονοσύνολο {0}. Έτσι, το είναι ένα σώμα όταν είναι ένα μεγιστοτικό ιδεώδες, αυτό συμβαίνει, όταν το n είναι πρώτος.
Όσον αφορά τις ομάδες, η κλάση υπολοίπων είναι το σύμπλοκο της a στην ομάδα πηλίκου , μια κυκλική ομάδα.[12].
Το σύνολο έχει μια σειρά από σημαντικές μαθηματικές ιδιότητες που είναι θεμελιώδεις για τους διάφορους κλάδους των μαθηματικών.
Αντί να εξαιρείται η ειδική περίπτωση για n = 0, είναι πιο χρήσιμο να περιλαμβάνει το (το οποίο, όπως προαναφέρθηκε, είναι ισομορφικό με το δακτύλιο των ακεραίων), για παράδειγμα, όταν συζητάμε για το χαρακτηριστικό ενός δακτυλίου.
Ο δακτύλιος των ακεραίων modulo n είναι ένα πεπερασμένο σώμα , αν και μόνο αν ο n είναι πρώτος αριθμός. Αν ο n δεν είναι ένας πρώτος με πρωταρχική δύναμη, υπάρχει ένα μοναδικό (μέχρι ισομορφισμό) πεπερασμένο σώμα GF(n) με n στοιχεία, τα οποία δεν πρέπει να συγχέονται με τον δακτύλιο των ακεραίων modulo n, αν και έχουν τον ίδιο αριθμό στοιχείων.
Σχετικά θεωρήματα
[Επεξεργασία | επεξεργασία κώδικα]Μικρό θεώρημα του Φερμά
[Επεξεργασία | επεξεργασία κώδικα]To μικρό θεώρημα του Φερμά λέει ότι για κάθε πρώτο αριθμό και κάθε
- .
Θεώρημα του Όιλερ
[Επεξεργασία | επεξεργασία κώδικα]Το θεώρημα του Όιλερ γενικεύει το θεώρημα του Φερμά, και δηλώνει ότι για κάθε και που είναι σχετικά πρώτοι μεταξύ τους, ισχύει ότι
- ,
όπου είναι η συνάρτηση Όιλερ που μετράει το πλήθος των αριθμών που είναι σχετικά πρώτοι με το .
Θεώρημα Ουίλσον
[Επεξεργασία | επεξεργασία κώδικα]Το θεώρημα Ουίλσον λέει ότι ένας φυσικός αριθμός είναι πρώτος αν και μόνο αν
- ,
όπου είναι το παραγοντικό του .
Κινέζικο θεώρημα υπολοίπων
[Επεξεργασία | επεξεργασία κώδικα]Το κινεζικό θεώρημα υπολοίπων λέει ότι για σχετικά πρώτα μεταξύ τους, το σύστημα γραμμικών ισοτιμιών
έχει μοναδική λύση modulo για κάθε .
Εφαρμογές
[Επεξεργασία | επεξεργασία κώδικα]Η αριθμητική υπολοίπων χρησιμοποιείται στη θεωρία αριθμών, θεωρία ομάδων, θεωρία δακτυλίων, θεωρία κόμβων, αφηρημένη άλγεβρα, υπολογιστική άλγεβρα, την κρυπτογραφία, την πληροφορική, τη χημεία και τις εικαστικές και μουσικές τέχνες.
Είναι ένα από τα θεμέλια της θεωρίας αριθμών, που αγγίζει σχεδόν κάθε πτυχή της κλάδου, και παρέχει βασικά παραδείγματα για τη θεωρία ομάδων, τη θεωρία δακτυλίων και την αφηρημένη άλγεβρα.
Αθλήματα
[Επεξεργασία | επεξεργασία κώδικα]Σε διάφορα αθλήματα, όπου δύο παίχτες σερβίρουν εναλλάξ μετά από καθορισμένο αριθμό σερβίς, η αριθμητική υπολοίπων μπορεί να χρησιμοποιηθεί για να μας πει ποιος από τους δύο παίχτες σερβίρει.
Για παράδειγμα στην επιτραπέζια αντισφαίριση, ο παίχτης που σερβίρει αλλάζει κάθε δύο σερβίς, δηλαδή τα σερβίς πάνε ως εξής . Αν το σκορ είναι εναντίον και , τότε ο παίχτης σερβίρει αν διαφορετικά αν σερβίρει ο παίχτης .
Θεωρία κωδικοποίησης
[Επεξεργασία | επεξεργασία κώδικα]Σε αρκετά αναγνωριστικά υπάρχουν έξτρα ψηφία, τα οποία χρησιμοποιούνται για να επιβεβαιώσουν ότι τα ψηφία του αριθμού έχουν γραφτεί σωστά. Συχνά τα έξτρα αυτά ψηφία υπολογίζονται με την χρήση αριθμητικών υπολοίπων.
Για παράδειγμα, οι διεθνείς πρότυποι αριθμοί βιβλίου (ISBN) που υπάρχουν στο πίσω μέρος των περισσότερων βιβλίων, αποτελούνται από ψηφία , των οποίων το τελευταίο υπολογίζεται από
- .
Για παράδειγμα, στον αριθμό 1-774-64140-2, το τελευταίο ψηφίο δίνεται από τον τύπο
- .
Αν είχαμε κάνει κάποιο λάθος σε ένα από τα ψηφία του αριθμού, π.χ. 1-774-64180-2, τότε θα βλέπαμε ότι το δεν είναι το αναμενόμενο ψηφίο ελέγχου και άρα θα ξέραμε ότι υπήρξε κάπου ένα λάθος.
Αντίστοιχα συστήματα υπάρχουν στους διεθνείς αριθμούς τραπεζικων λογαριασμών (IBAN), και στον αριθμό μητρώου CAS, ένας αριθμός ο οποίος είναι μοναδικός για κάθε χημική ένωση.
Κρυπτογραφία
[Επεξεργασία | επεξεργασία κώδικα]Στην κρυπτογραφία, η αριθμητική υπολοίπων άμεσα στηρίζει τα συστήματα δημοσίων κλειδιών όπως το RSA και πρωτόκολλο Diffie–Hellman και παρέχει πεπερασμένα πεδία που αποτελούν το θεμέλιο των ελλιπτικών καμπυλών, και χρησιμοποιείται σε πολλούς αλγόριθμους κρυπτογράφησης με συμμετρικά κλειδιά, όπως το Advanced Encryption Standard (AES), το International Data Encryption Algorithm (IDEA), και το RC4. Η κρυπτογράφιση RSA και Diffie–Hellman χρησιμοποιούν εκθετοποίηση με την δυαδική πράξη mod.
Στην άλγεβρα υπολογιστών, η αριθμητική υπολοίπων συνήθως χρησιμοποιείται για να περιορίζει το μέγεθος των ακέραιων συντελεστών σε ενδιάμεσους υπολογισμούς και δεδομένα. Χρησιμοποιείται στην παραγοντοποίηση πολυωνύμου, ένα πρόβλημα για το οποίο όλοι οι γνωστοί αποδοτικοί αλγόριθμοι χρησιμοποιούν αριθμητική υπολοίπων. Χρησιμοποιείται από τις πιο αποδοτικές υλοποιήσεις του μέγιστου κοινού διαιρέτη πολυωνύμου , ακριβή γραμμική άλγεβρα και Gröbner βάση αλγορίθμους πάνω στους ακέραιους και στους ρητούς αριθμούς.
Πληροφορική
[Επεξεργασία | επεξεργασία κώδικα]Στην πληροφορική, η αριθμητική υπολοίπων χρησιμοποιείται σε αρκετούς αλγορίθμους για την επίλυση διαφόρων προβλημάτων. Για παράδειγμα, στην επεξεργασία κειμένων, οι συναρτήσεις κατακερματισμού χρησιμοποιούνται για την επιτάχυνση της σύγκρισης συμβολοσειρών. Πιο συγκεκριμένα, αν έχουμε δύο συμβολοσειρές και αντί να συγκρίνουμε τους χαρακτήρες τους έναν-προς έναν, υπολογίζουμε έναν ακέραιο και έναν ακέραιο , και πρώτα ελέγχουμε αν . Αν δεν είναι ίσα, τότε οι συμβολοσειρές δεν μπορεί να είναι ίσες. Διαφορετικά, πρέπει να κάνουμε τον αργό έλεγχο χαρακτήρα προς χαρακτήρα.
Για παράδειγμα, μία τέτοια συνάρτηση μπορεί να είναι η[13]
- .
Αν και , τότε
- ,
- .
Στην συγκεκριμένη περίπτωση, συγκρίνοντας τα και , βλέπουμε ότι είναι διαφορετικά άρα και οι συμβολοσειρές είναι διαφορετικές, άρα μπορούμε να αποφείγουμε να συγκρίνουμε τους έξι χαρακτήρες των συμβολοσειρών.
Μουσική
[Επεξεργασία | επεξεργασία κώδικα]Στη μουσική, το modulo 12 χρησιμοποιείται στην εξέταση του συστήματος του δωδεκάτονου ίσου τέμπου, όπου προκύπτει η οκτάβα και η εναρμόνια ισοδυναμία (δηλαδή, τόνος σε 1∶2 ή 2∶1 αναλογία είναι ισοδύναμα, και η C-Δίεση θεωρείται η ίδια ως D-ύφεση).
Νοεροί υπολογισμοί
[Επεξεργασία | επεξεργασία κώδικα]Η μέθοδος casting out nines προσφέρει ένα γρήγορο έλεγχο των δεκαδικών αριθμητικών υπολογισμών που εκτελούνται με το χέρι. Βασίζεται στην αριθμητική υπολοίπων modulo 9, και συγκεκριμένα στην κρίσιμη ιδιότητα όπου 10 ≡ 1 (mod 9).
Ημερολόγια
[Επεξεργασία | επεξεργασία κώδικα]Το modulo 7 χρησιμοποιείται σε αλγορίθμους που προσδιορίζουν την ημέρα της εβδομάδας για μια συγκεκριμένη ημερομηνία. Ειδικότερα, η συνεκτικότητα Zeller και ο αλγόριθμος της ημέρας της κρίσεως κάνουν μεγάλη χρήση του modulo-7.
Άλλοι κλάδοι
[Επεξεργασία | επεξεργασία κώδικα]Γενικότερα, η αριθμητική υπολοίπων, επίσης, έχει εφαρμογή σε κλάδους όπως το δίκαιο (βλέπε, για παράδειγμα, κατανομή), τα οικονομικά, (βλέπε, για παράδειγμα, τη θεωρία παιγνίων) και σε άλλους τομείς των κοινωνικών επιστημών, όπου η αναλογική κατανομή και η κατανομή των πόρων αποτελεί κεντρικό μέρος της ανάλυσης.
Υπολογιστική πολυπλοκότητα
[Επεξεργασία | επεξεργασία κώδικα]Από τη στιγμή που η αριθμητική υπολοίπων έχει ένα τέτοιο ευρύ φάσμα εφαρμογών, είναι σημαντικό να γνωρίζουμε πόσο αποδοτικα μπορούν να υλοποιηθούν οι διάφορες πράξεις. Για παράδειγμα, η πρόσθεση, η αφαίρεση και ο πολλαπλασιασμός δύο αριθμών με ψηφία μπορεί να γίνει σε χρόνο. Η ύψωση σε μία δύναμη modulo μπορεί επίσης να γίνει αποδοτικά σε χρόνο με την χρήση της δυαδικής εκθετοποίησης Ένα γραμμικό σύστημα ισοτιμιών μπορεί να λυθεί σε πολυωνυμικό χρόνο με μια μορφή απαλοιφής Γκάους, για περισσότερες λεπτομέρειες δείτε το κινεζικό θεώρημα υπολοίπων.
Η αναγωγή Μοντγκόμερι είναι μία τεχνική στις υλοποιήσεις που επιτρέπει διάφορες πράξεις modulo (όπως η πρόσθεση, η αφαίρεση, ο πολλαπλασιασμός και η ύψωση σε κάποια δύναμη), να εκτελούνται αποδοτικά σε μικρότερα υπόλοιπα modulo και μετά να μετατρέπονται σε υπόλοιπα modulo .
Ορισμένα προβλήματα, όπως η εύρεση του διακριτού λογαρίθμου ή η επίλυση τετραγωνικών ισοτιμιών φαίνεται να είναι τόσο δύσκολες όσο η παραγοντοποίηση ακεραίων, πάνω στην δυσκολία της οποίας στηρίζεται μεγάλο μέρος της μοντέρνας κρυπτογραφίας. Αυτά τα προβλήματα είναι NP-ενδιάμεσα. Η επίλυση του συστήματος των μη-γραμμικών εξισώσεων αριθμητικής υπολοίπων είναι NP-πλήρης.[14]
Στις γλώσσες προγραμματισμού
[Επεξεργασία | επεξεργασία κώδικα]Στις γλώσσα προγραμματισμού, η δυαδική πράξη mod συνήθως αναφέρεται είτε με το σύμβολο "%" (για παράδειγμα, στις C, C++, Java, JavaScript, Perl, Python και Scala) ή με "mod" (για παράδειγμα, σε Pascal, BASIC, SQL, Haskell, ABAP, και MATLAB), με εξαιρέσεις (για παράδειγμα, το Excel).
Οι εν λόγω τελεστές συχνά αναφέρονται ως "mod", αλλά συνήθως διαφέρουν από τον μαθηματικό ορισμό. Για παράδειγμα, στην C++ αν το πρώτο επιχείρημα είναι αρνητικό, θα επιστραφεί ένας αρνητικός αριθμός, και στην Python αν το δεύτερο επιχείρημα είναι αρνητικό ένας αρνητικός αριθμός θα επιστραφεί. Η δυαδική modulo αντί mod, όπως 38 ≡ 14 (modulo 12) μερικές φορές χρησιμοποιείται για να δηλώσει το μαθηματικό υπόλοιπο και όχι απλά ένα υπόλοιπο (για παράδειγμα, στη Ruby).
Παράδειγμα
[Επεξεργασία | επεξεργασία κώδικα]Οι περισσότερες γλώσσες προγραμματισμού υποστηρίζουν τον υπολογισμό υπολοίπων. Για παράδειγμα, στην C/C++/Java έχουν την πράξη %, που επιτρέπει να γράψουμε
int a = 53;
int b = 23;
int m = 100;
int res = (a * b) % m; // res=19.
Ένα πιθανό πρόβλημα με αυτή την υλοποίηση είναι ότι ο τύπος int, κρατάει αριθμούς με περιορισμένο πλήθος δυαδικών ψηφίων (συνήθως 16 ή 32). Αυτό σημαίνει ότι αν ο a και ο b είναι αρκετά μεγάλοι, τότε το γινόμενο τους μπορεί να υπερχειλίσει, παρόλο που το αποτέλεσμα χωράει σε int (πχ όταν ).
Υλοποιήσεις
[Επεξεργασία | επεξεργασία κώδικα]Παρακάτω δίνονται δύο αρκετά γρήγορες υλοποιήσεις C για την εκτέλεση πολλαπλασιασμού υπολοίπων στους μη προσημασμένους ακεραίους όχι μεγαλύτερους από 63 bits, αποφεύγοντας κάποια πιθανή υπερχείλιση στις ενδιάμεσες πράξεις. Ο πρώτος είναι ο εξής:[15]:24[16][17]
uint64_t mul_mod(uint64_t a, uint64_t b, uint64_t m) {
uint64_t d = 0, mp2 = m >> 1;
int i;
if (a >= m) a %= m;
if (b >= m) b %= m;
for (i = 0; i < 64; ++i) {
d = (d > mp2) ? (d << 1) - m : d << 1;
if (a & 0x8000000000000000ULL) d += b;
if (d > m) d -= m;
a <<= 1;
}
return d;
}
Στις αρχιτεκτονικές των υπολογιστών, όπου μια εκτεταμένης ακριβείας μορφή, με τουλάχιστον 64 bits mantissa, είναι διαθέσιμη (όπως ο long double τύπος των περισσοτέρων x86 C compilers), η παρακάτω συνάρτηση μπορεί να χρησιμοποιηθεί. Κάνει χρήση του πολλαπλασιασμού κινητής υποδιαστολής και ότι το αποτέλεσμα διατηρεί τα πιο σημαντικά bits του γινομένου, τα οποία θα χανόντουσαν αν χρησιμοποιούσαμε τον αντίστοιχο πολλαπλασιασμό ακεραίων (λόγω της υπερχείλισης).
uint64_t mul_mod(uint64_t a, uint64_t b, uint64_t m) {
long double x;
uint64_t c;
int64_t r;
if (b >= m) b %= m;
x = a;
c = x * b / m;
r = (int64_t)(a * b - c * m) % (int64_t)m;
return r < 0 ? r + m : r;
}
Ωστόσο, και για τις δύο ρουτίνες για να λειτουργήσουν, το m δεν πρέπει να υπερβαίνει τα 63 bits.
Δείτε επίσης
[Επεξεργασία | επεξεργασία κώδικα]Πηγές
[Επεξεργασία | επεξεργασία κώδικα]- Anthony Gioia, Number Theory, an IntroductionReprint (2001) Dover. ISBN 0-486-41449-3
- Long, Calvin T. (1972). Elementary Introduction to Number Theory (2nd έκδοση). Lexington: D. C. Heath and Company. LCCN 77171950.
- Pettofrezzo, Anthony J.; Byrkit, Donald R. (1970), Elements of Number Theory, Englewood Cliffs: Prentice Hall
Σημειώσεις
[Επεξεργασία | επεξεργασία κώδικα]- ↑ Ο συμβολισμός , ωστόσο, δεν συνιστάται επειδή μπορεί να συγχέεται με το σύνολο των n-αδικών ακεραίων.
Παραπομπές
[Επεξεργασία | επεξεργασία κώδικα]- ↑ Ακρίτας, Αλκιβιάδης Γ. Υπολογιστική άλγεβρα με το Mathematica (PDF). σελ. 126.
- ↑ Στεφανίδης, Γιώργος. Διακριτά μαθηματικά. Ζυγός. σελ. 128. ISBN 978-618-5063-07-8.
- ↑ Κολαΐτης, Μ. (1976). Αγγλοελληνικόν Λεξικόν των Θεωρητικών και Εφηρμοσμένων Μαθηματικών. ΤΕΕ.
- ↑ «Αγγλοελληνικό Λεξικό Μαθηματικής Ορολογίας - Πανεπιστήμιο Κύπρου» (PDF).
- 1 2 3 4 5 6 7 Συγκελάκης, Αλέξανδρος Γ. (2012). «Εισαγωγή στη Θεωρία Αριθµών για το Λύκειο: Διαιρετότητα και Ισοτιμίες» (PDF). Ελληνική Μαθηματική Εταιρεία.
- 1 2 3 4 5 6 Apostol, Tom M. (1976). Introduction to Analytic Number Theory. New York: Springer. doi:10.1007/978-1-4757-5579-4. ISBN 978-1-4757-5579-4.
- ↑ Cormen, Thomas H.· Leiserson, Charles E.· Rivest, Ronald L.· Stein, Clifford (2001). «Section 31.3: Modular arithmetic,». Introduction to Algorithms (2η έκδοση). MIT Press and McGraw-Hill. σελίδες 862–868. ISBN 0-262-03293-7.
- ↑ Αδαμόπουλος, Λεωνίδας· Βισκαδουρακης, Βασίλειος· Γαβαλας, Δημήτριος· Πολυζος, Γεώργιος· Σβερκος, Ανδρεας. «Κεφάλαιο 4.3: Διαιρετότητα». Μαθηματικά Β' Τάξη γενικού λυκείου. Διόφαντος.
- ↑ Bullynck, Maarten (2009). «Modular Arithmetic before C.F. Gauss. Systematisations and discussions on remainder problems in 18th-century Germany». Historia Mathematica.
- ↑ Pettofrezzo & Byrkit (1970, p. 90)
- ↑ Long (1972, p. 78)
- ↑ Sengadir T., Discrete Mathematics and Combinatorics, σ. 293, στα Google Books
- ↑ Υπάρχουν πολλές άλλες συναρτήσεις με μικρότερη πιθανότητα, δύο διαφορετικές συμβολοσειρές να έχουν την ίδια τιμή.
- ↑ Garey, M. R.· Johnson, D. S. (1979). Computers and Intractability, a Guide to the Theory of NP-Completeness. W. H. Freeman. ISBN 0716710447.
- ↑ Shoup, Victor (1995). «A New Polynomial Factorization Algorithm and its Implementation». Journal of Symbolic Computation 20 (4): 363–397. doi:.
- ↑ «Modular multiplication». CS Stackexchange. Ανακτήθηκε στις 22 Ιουλίου 2022.
- ↑ Ivanov, Mikhail. «Fast Modular Multiplication». Codeforces. Ανακτήθηκε στις 22 Ιουλίου 2022.