Εισαγωγή στους Αλγόριθμους

Σχετικά έγγραφα
Κώδικες Διόρθωσης Σφαλμάτων (Error-Correcting Codes) Σφάλματα που αυτο- διορθώνονται

Ψηφιακή Λογική Σχεδίαση

Εισαγωγή στη Δικτύωση Υπολογιστών

Εισαγωγή στη Δικτύωση Υπολογιστών

Εισαγωγή στους Αλγόριθμους

Εισαγωγή στους Αλγόριθμους

Θέματα υπολογισμού στον πολιτισμό

Εισαγωγή στους Η/Υ. Ενότητα 8: Μετάδοση Δεδομένων. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Θέματα υπολογισμού στον πολιτισμό

Κβαντική Επεξεργασία Πληροφορίας

Διακριτά Μαθηματικά. Ενότητα 7: Προχωρημένες μέθοδοι απαρίθμησης: Εγκλεισμός Αποκλεισμός

Εισαγωγή στην Επιστήμη των Υπολογιστών

Κβαντική Επεξεργασία Πληροφορίας

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Συστήματα αρίθμησης

Εισαγωγή στους Αλγορίθμους

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Θέματα υπολογισμού στον πολιτισμό

Έννοιες Φυσικών Επιστημών Ι

Εισαγωγή στους Αλγόριθμους

Εισαγωγή στη Δικτύωση Υπολογιστών

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Ψηφιακή Επεξεργασία Εικόνων

Διοικητική Λογιστική

Εισαγωγή στους Αλγόριθμους

Κβαντική Επεξεργασία Πληροφορίας

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Θέματα υπολογισμού στον πολιτισμό

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Εισαγωγή στους Υπολογιστές

Βάσεις Περιβαλλοντικών Δεδομένων

Τεχνολογία Πολιτισμικού Λογισμικού

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Εισαγωγή στους Αλγορίθμους

Πρακτική Άσκηση σε σχολεία της δευτεροβάθμιας εκπαίδευσης

Μεθοδολογία των Επιστημών του Ανθρώπου: Στατιστική

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Αερισμός. Ενότητα 1: Αερισμός και αιμάτωση. Κωνσταντίνος Σπυρόπουλος, Καθηγητής Σχολή Επιστημών Υγείας Τμήμα Ιατρικής

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Τεχνολογία Λογισμικού

Βέλτιστος Έλεγχος Συστημάτων

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Ποιοτική μεθοδολογία έρευνας στη Διδακτική των Μαθηματικών Ενότητα: Η διαχείριση του λάθους στην τάξη των μαθηματικών

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Μαθηματικά στην Πολιτική Επιστήμη:

Κβαντική Επεξεργασία Πληροφορίας

Διδακτική Απειροστικού Λογισμού

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Διακριτά Μαθηματικά. Ενότητα 5: Απαρίθμηση: Διωνυμικοί συντελεστές

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εφαρμοσμένη Βελτιστοποίηση

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Υπολογιστική άλγεβρα Ενότητα 1: Πολυωνυμικές σχέσεις και ταυτότητες, μέρος Ι

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Ιστορία της μετάφρασης

Ασφάλεια Πληροφοριακών Συστημάτων

Συστήματα Επικοινωνιών

Διαχείριση Πολιτισμικών Δεδομένων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Επεξεργασία Στοχαστικών Σημάτων

Γενική Φυσική Ενότητα: Δυναμική Άκαμπτου Σώματος

Ευφυής Προγραμματισμός

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Β. Διαφορικός Λογισμός

Εισαγωγή στους Υπολογιστές

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

ΤΠΕ στη Διδακτική των γλωσσών - Πολύγλωσσα ψηφιακά περιβάλλοντα γλωσσικής διδασκαλίας

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 8: ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ΑΛΓΟΡΙΘΜΟΣ HEAPSORT

Βάσεις Περιβαλλοντικών Δεδομένων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

Διοικητική Λογιστική

Μηχανολογικό Σχέδιο Ι

Έλεγχος Ποιότητας Φαρμάκων

Εισαγωγή στην Πληροφορική

Φιλοσοφία της Ιστορίας και του Πολιτισμού

Ποιοτική μεθοδολογία έρευνας στη Διδακτική των Μαθηματικών Ενότητα 1: Η έρευνα στη Διδακτική των Μαθηματικών

Διδακτική της Πληροφορικής

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Συστήματα Επικοινωνιών

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 6: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ: ΠΡΟΒΛΗΜΑ ΑΝΑΖΗΤΗΣΗΣ

Έρευνα στη Διδακτική των Μαθηματικών και Διδακτική Πράξη

Χωρικές σχέσεις και Γεωμετρικές Έννοιες στην Προσχολική Εκπαίδευση

ΟΙΚΟΝΟΜΕΤΡΙΑ. Ενότητα 3: Πολλαπλή Παλινδρόμηση. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αρχές Προγραμματισμού

Transcript:

Εισαγωγή στους Αλγόριθμους Εύη Παπαϊωάννου Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και Νέων Τεχνολογιών

Σκοποί ενότητας Παρουσίαση και μελέτη κωδίκων διόρθωσης σφαλμάτων Τίτλος Ενότητας 2

Περιεχόμενα ενότητας Κώδικες διόρθωσης σφαλμάτων Τίτλος Ενότητας 3

Εισαγωγή στους Αλγόριθμους Κώδικες διόρθωσης σφαλμάτων

Κώδικες Διόρθωσης Σφαλμάτων (Error Correcting Codes) Σφάλματα που αυτο διορθώνονται 5

Είναι άλλο πράγμα να δείξεις σε κάποιον ότι κάνει λάθος και άλλο πράγμα να τον κάνεις να αντιληφθεί την αλήθεια 632-74 JOHN LOCKE, Δοκίμιο για την Ανθρώπινη Κατανόηση (69) 6

Πώς ξεκίνησε η ιστορία Σήμερα, έχουμεπρόσβασησευπολογιστήόποτετο θελήσουμε Ο Richard Hamming, ερευνητής στα εργαστήρια της τηλεφωνικής εταιρείας Bell τη δεκαετία του 94, δεν ήταν τόσο τυχερός: ο υπολογιστής της εταιρείας που χρειαζόταν χρησιμοποιούταν και από άλλα τμήματα της εταιρείας και ο ίδιος μπορούσε να τον χρησιμοποιεί μόνο τα ΣΚ Ο υπολογιστής συχνά «κόλλαγε» λόγω λαθών κατά την ανάγνωση δικών του δεδομένων Φανταστείτε τι πρόβλημα αντιμετώπιζε ο Hamming 7

Πώς ξεκίνησε η ιστορία @Bell Labs Bell Labs Murray Hill, USA 8

Πώς ξεκίνησε η ιστορία ΟίδιοςοHamming έλεγε: Για δύο συνεχόμενα ΣΚ ήρθα στο γραφείο και βρήκα τον υπολογιστή κολλημένο και όλη μου τη δουλειά να μην έχει προχωρήσει. Ενοχλήθηκα τρομερά γιατί χρειαζόμουν τα αποτελέσματα των πειραμάτων που έτρεχα και δύο ΣΚ είχαν πάει χαμένα... Είπα, Τι στο καλό; Αν το μηχάνημα μπορεί να ανιχνεύσει ένα σφάλμα, γιατί να μη μπορεί να εντοπίσει τη θέση του σφάλματος και να το διορθώσει; Όπως και σε άλλες περιπτώσεις, τελικά η ανάγκη είναι η κινητήρια δύναμη πίσω από κάθε εφεύρεση: ο Hamming σύντομα δημιούργησε τον πρώτο κώδικα διόρθωσης σφαλμάτων: έναν μαγικό αλγόριθμο που ανίχνευε και διόρθωνε σφάλματα σε δεδομένα υπολογιστή... Χωρίς τέτοιους κώδικες, οι υπολογιστές μας και τα συστήματα επικοινωνίας θα ήταν εξαιρετικά πιο αργά, λιγότερο ισχυρά και λιγότερο αξιόπιστα από ό,τι είναι σήμερα 9

Τι εργασίες εκτελεί ένας υπολογιστής; Οι υπολογιστές εκτελούν 3 θεμελιώδεις εργασίες: Η πιο σημαντική εργασία είναι η εκτέλεση υπολογισμών: δηλ., ο υπολογιστής πρέπει να μετατρέψει κάποια δεδομένα εισόδου με κάποιον τρόπο ώστε να παράγει μια χρήσιμη απάντηση Η δυνατότητα του υπολογιστή να παράγει απαντήσεις θα ήταν στην ουσία άχρηστη χωρίς άλλες 2 σημαντικές εργασίες που εκτελούν οι υπολογιστές: την αποθήκευση και τη μετάδοση δεδομένων οι υπολογιστές αποθηκεύουν δεδομένα κυρίως στο σκληρό δίσκο, τη μνήμη τους και στις άλλες μονάδες δίσκων ενώ συνήθως μεταδίδουν δεδομένα στο internet Φανταστείτεένανυπολογιστήπουδενθαμπορούσενααποθηκεύειούτενα μεταδίδει πληροφορία: θαήτανσχεδόνάχρηστος: θα μπορούσαμε να εκτελέσουμε κάποιους πολύπλοκους υπολογισμούς (όπως π.χ., να ετοιμάσουμε μια λογιστική κατάσταση για τον προϋπολογισμό μιας εταιρείας) αλλάδενθαμπορούσαμεναστείλουμετααποτελέσματασε συναδέλφουςούτενατααποθηκεύσουμεγιαμεταγενέστερηχρήση η μετάδοση και αποθήκευση δεδομένων είναι και οι δύο πραγματικά ουσιώδεις για τους σύγχρονους υπολογιστές

Γιατίχρειάζεταιηανίχνευση σφαλμάτων και η διόρθωσή τους; Η μεγάλη πρόκληση σχετικά με τη μετάδοση και αποθήκευση δεδομένων είναι ότι τα δεδομένα πρέπει να είναι ολόσωστα αφού σε πολλές περιπτώσεις ακόμα κι ένα πολύ μικρό λάθος μπορεί να καταστήσει τα δεδομένα άχρηστα Σαν άτομα, είμαστε εξοικειωμένοι με την ανάγκη αποθήκευσης και μετάδοσης δεδομένων χωρίς σφάλματα: Αν σημειώσουμε κάποιον αριθμό τηλεφώνου, είναι ουσιώδες κάθε ψηφίο του αριθμού να είναι γραμμένο σωστά και να έχει καταγραφεί με τη σωστή σειρά. Ακόμα κι ένα λάθοςσεέναμόνοψηφίο, κάνει τον αριθμό άχρηστο (και για εμάς και για άλλους) Μπορεί λάθη στα δεδομένα να κάνουν τα δεδομένα κάτι χειρότερο από άχρηστα: ένα λάθοςσεκάποιοαρχείοπου περιέχει ένα πρόγραμμα μπορεί να κάνει το πρόγραμμα να «κολλάει» ή ακόμα και να το κάνει να εκτελεί άσχετες εργασίες: ένα λάθος σε οικονομικά αρχεία θα μπορούσε να προκαλέσει μεγάλες χρηματικές απώλειες (να αγοράζει κανείς μετοχές αξίας $5.34 με τιμή $8.34 από λάθος!!!!) Αλλά το ποσό πληροφορίας που καλούμαστε εμείς να αποθηκεύουμε είναι σχετικά μικρό, και επίσης μικρό είναι και το ποσό πληροφορίας που πρέπει να αποθηκεύουμε χωρίς λάθη, και δεν είναι δύσκολο να αποφεύγουμε τα λάθη αν προσέχουμε εξαιρετικά όταν πρόκειται για σημαντική πληροφορία όπως τραπεζικοί λογαριασμοί, passwords, διευθύνσεις e mail, κτλ

Γιατίχρειάζεταιηανίχνευση σφαλμάτων και η διόρθωσή τους; Αντίθετα, το ποσό πληροφορίας που πρέπει οι υπολογιστές να αποθηκεύσουν και να μεταδώσουν χωρίς λάθη είναι τεράστιο Υποθέστε ότι έχουμε ένα υπολογιστικό σύστημα με δυνατότητα αποθήκευσης gigabytes (π.χ., ένα σχετικά φθηνό laptop) τα οποία ισοδυναμούν με περίπου 5 εκατομμύρια σελίδες κειμένου. Ακόμα κι αν ο υπολογιστής κάνει μόνον λάθος ανά.. σελίδες κειμένου θα υπήρχαν (κατά μέσο όρο) 5 σφάλματα όταν θα «γέμιζε» ο υπολογιστής Το ίδιο ισχύει και για μεταδόσεις δεδομένων: αν κατεβάσουμε ένα πρόγραμμα των 2 megabytes και ο υπολογιστής λαμβάνει λάθος μόνον / εκατομ. χαρακτήρες, θα υπάρχουν πιθανώς περισσότερα από 2 λάθη στο πρόγραμμα που κατεβάσαμε και καθένα θα μπορούσε να κάνει το πρόγραμμα να δυσλειτουργήσει ακόμα κι όταν δεν το περιμένουμε με ενδεχομένως ανυπολόγιστο κόστος 2

Γιατίχρειάζεταιηανίχνευση σφαλμάτων και η διόρθωσή τους; Δίδαγμα: ακόμα και κατά το 99.9999% να είναι ακριβής ένας υπολογιστής, αυτό δεν είναι ούτε καν κοντά στο «αρκετά καλά» Οι υπολογιστές πρέπει να αποθηκεύουν και να μεταδίδουν δισεκατομμύρια τμημάτων πληροφορίας χωρίς ούτε ένα λάθος, αλλά όπως και άλλες συσκευές αντιμετωπίζουν προβλήματα επικοινωνίας, π.χ., δεν μεταδίδουν άψογα την πληροφορία τα τηλέφωνα λόγω θορύβου, τα ηλεκτρικά καλώδια και οι ασύρματες επικοινωνίες λόγω παρεμβολών, φυσικά μέσα όπως σκληροί δίσκοι, CD/DVD λόγω καταστροφής, σκόνης, κτλ Πώς μπορούμε να πετύχουμε λιγότερο από λάθος σε πολλά δισεκατομμύρια, όταν υπάρχουν οι παραπάνω προφανείς επικοινωνιακές δυσκολίες; με χρήση σωστών ιδεών, μπορούν να χρησιμοποιηθούν ακόμα και εξαιρετικά μη αξιόπιστα επικοινωνιακά κανάλια για τη μετάδοση δεδομένων με εξαιρετικά χαμηλό ρυθμό εμφάνισης σφαλμάτων τόσο χαμηλό που τα λάθη μπορούν πρακτικά να εξαλειφθούν πλήρως 3

Η ιδέα της επανάληψης (repetition) Γιανασιγουρευτούμεότικάποιαπληροφορίαμεταφέρθηκε σωστά, αρκεί να την επαναλάβουμε μερικές φορές Αν κάποιος μάς υπαγορεύει έναν αριθμό τηλεφώνου ή έναν τραπεζικό λογαριασμό μέσω μιας κακής τηλεφωνικής σύνδεσης, πιθανότατα θα του ζητήσουμε να επαναλάβει τουλάχιστον μια φορά για να είμαστε σίγουροι ότι δεν έγινε κάποιο λάθος Το ίδιο κάνουν και οι υπολογιστές 4

Η ιδέα της επανάληψης (repetition) Έστω ένας υπολογιστής τράπεζας που προσπαθεί να μάς μεταδώσει το υπόλοιπο του λογαριασμού μας μέσω internet Το υπόλοιπο είναι στα αλήθεια $523.75, αλλά το δίκτυο δεν είναι πολύ αξιόπιστο και κάθε ψηφίο μπορεί να μεταδοθεί λάθοςμεπιθανότητα2% Την πρώτη φορά που μεταδίδεται το υπόλοιπο φτάνει σαν $5293.75 χωρίς φυσικά να μπορούμε να γνωρίζουμε αν αυτό είναι σωστό ή λάθος Χρησιμοποιώντας την ιδέα της επανάληψης, μπορούμε να έχουμε μια πολύ καλή εκτίμηση του πραγματικού υπολοίπου 5

Η ιδέα της επανάληψης (repetition) Ζητάμε να μεταδοθεί το υπόλοιπο του λογαριασμού μας 5 φορές και λαμβάνουμε τις παρακάτω απαντήσεις: Μετάδοση : Μετάδοση 2: Μετάδοση 3: Μετάδοση 4: Μετάδοση 5: $ 5 2 9 3. 7 5 $ 5 2 3. 7 5 $ 5 2 3. $ 5 4 4 3. 7 5 $ 7 2 8. 7 5 Κάποιεςαπότιςμεταδόσειςέχουν ή περισσότερα ψηφία λάθος και υπάρχει και μετάδοση στην οποία όλα τα ψηφία είναι σωστά Αλλά εμείς δεν έχουμε τρόπο να γνωρίζουμε πού είναι τα λάθη δεν μπορούμε να επιλέξουμε τη μετάδοση 2 που είναι η σωστή 6

Η ιδέα της επανάληψης (repetition) Όμως, μπορούμεναεξετάσουμεκάθεψηφίοχωριστά, κοιτώνταςτοψηφίοαυτόσεόλεςτιςμεταδόσειςκαι επιλέγοντας την τιμή που εμφανίζεται συχνότερα Να τα αποτελέσματα, όπου το πιο συχνά εμφανιζόμενο ψηφίο αναφέρεται στο τέλος: Μετάδοση : Μετάδοση 2: Μετάδοση 3: Μετάδοση 4: Μετάδοση 5: Ψηφίο που εμφανίζεται συχνότερα: $ 5 2 9 3. 7 5 $ 5 2 3. 7 5 $ 5 2 3. $ 5 4 4 3. 7 5 $ 7 2 8. 7 5 $ 5 2 3. 7 5 7

Η ιδέα της επανάληψης (repetition) Ψηφίο : στις μεταδόσεις 4, το πρώτο ψηφίο ήταν 5, ενώ στη μετάδοση 5 το πρώτο ψηφίο ήταν 7 αν και δεν μπορούμε να είμαστε απόλυτα σίγουροι, ή πιο πιθανή τιμή του πρώτου ψηφίου του τραπεζικού μας υπολοίπου πρέπει να είναι το 5. Ψηφίο 2: η τιμή 2 εμφανίστηκε 4 φορές ενώ η τιμή 4 εμφανίστηκε μόνο φορά ητιμή2 είναι η πιθανότερη για το δεύτερο ψηφίο του τραπεζικού υπολοίπου Ψηφίο 3: εδώ υπάρχουν 3 εκδοχές: η τιμή εμφανίζεται 3 φορές, η τιμή 9 εμφανίζεται φορά και η τιμή 4 εμφανίζεται φορά ητιμή είναι η πιθανότερη για το τρίτο ψηφίο του τραπεζικού υπολοίπου Κάνοντας το ίδιο για όλα τα ψηφία: η τελική εκτίμηση για το τραπεζικό μας υπόλοιπο είναι $523.75 που είναι πράγματι και η σωστή Μετάδοση : Μετάδοση 2: Μετάδοση 3: Μετάδοση 4: Μετάδοση 5: $ 5 2 9 3. 7 5 $ 5 2 3. 7 5 $ 5 2 3. $ 5 4 4 3. 7 5 $ 7 2 8. 7 5 Ψηφίο που εμφανίζεται συχνότερα: $ 5 2 3. 7 5 8

Η ιδέα της επανάληψης (repetition): προβλήματα Κατά κάποιον τρόπο έχουμε λύσει το πρόβλημα, αλλά υπάρχουν δύο «προβληματάκια» Το ποσοστό σφαλμάτων για το συγκεκριμένο κανάλι επικοινωνίας ήταν μόνο 2% και στην πράξη οι υπολογιστές πρέπει να καταφέρουν να επικοινωνήσουν πάνω από κανάλια πολύ χειρότερα από αυτό Ητελικήαπάντηση/μαντεψιά αποδείχθηκε ότι ήταν η σωστή στο προηγούμενο παράδειγμα, αλλά δεν υπάρχει καμία εγγύηση ότι αυτό θα συμβαίνει πάντα: πρόκειται απλά για μαντεψιά με βάση την τιμή που νομίζουμε ότι είναι η πιο πιθανή για να αντιστοιχεί στο τραπεζικό μας υπόλοιπο Και οι δύο προβληματισμοί αντιμετωπίζονται εύκολα: αυξάνουμε το πλήθος των επαναμεταδόσεων μέχρι η αξιοπιστία να γίνει όσο υψηλή επιθυμούμε 9

Η ιδέα της επανάληψης (repetition): λύσεις στα προβλήματα Υποθέστε ποσοστό σφαλμάτων 5% (αντί για 2% που υποθέσαμε πριν) Ζητάμε στην τράπεζα να μεταδώσει το τραπεζικό μας υπόλοιπο φορές (αντί για 5) Εξετάζουμε το πρώτο ψηφίο (ανάλογα επιχειρήματα ισχύουν και για τα άλλα ψηφία): Ποσοστό λάθους 5% περίπου σε μισές από τις μεταδόσεις η τιμή τουψηφίουθαείναισωστή, δηλ, θα μεταδοθεί η τιμή 5 ενώ στις υπόλοιπες μισές μεταδόσεις η τιμή θα μεταδοθεί λάθος θα υπάρχουν περίπου 5 εμφανίσεις της τιμής 5 και μόνο περίπου 5 εμφανίσεις των υπόλοιπων ψηφίων ( 4 και 6 9). Αποδεικνύεται ότι ακόμα κι αν μεταδίδαμε ένα νέο τραπεζικό υπόλοιπο ανά δευτερόλεπτο με την παραπάνω μέθοδο θα έπρεπε να περιμένουμε για τρισεκατομμύρια χρόνια για να κάνουμε λάθος πρόβλεψη του τραπεζικού υπολοίπου 2

Η ιδέα της επανάληψης (repetition): συμπέρασμα Συμπέρασμα: επαναλαμβάνοντας ένα μη αξιόπιστο μήνυμα αρκετές φορές, μπορούμε να το κάνουμε όσο αξιόπιστο θέλουμε Παρατήρηση: στην ανάλυσή μας, υποθέσαμε ότι τα σφάλματα συμβαίνουν τυχαία αν μια κακόβουλη οντότητα σκόπιμα παρεμβάλλεται στη μετάδοση και επιλέγει τα σφάλματα, η ιδέα της επανάληψης γίνεται ευάλωτη, αλλά μεταγενέστεροι κώδικες αντιμετωπίζουν και αυτό το ενδεχόμενο Η ιδέα της επανάληψης δεν είναι αρκετά καλή για τους σύγχρονους υπολογιστές: όταν μεταδίδεται ένα μικρό τμήμα πληροφορίας όπως π.χ., ένας τραπεζικός λογαριασμός, η επαναμετάδοση για φορές δεν κοστίζει ακριβά, αλλά θα ήταν εντελώς μη πρακτική ηεπαναμετάδοσηγια φορές ενός μεγάλου πακέτου λογισμικού (των π.χ., 2 megabytes) 2

Εντοπισμός και διόρθωση σφάλματος Λύση : επανάληψη Ανησυχία : μεγάλο ποσοστό σφάλματος στη μετάδοση ΟΚ: ζητάω πολλές επαναμεταδόσεις Ανησυχία 2: μεγάλα μηνύματα ΠΡΟΒΛΗΜΑ: μεγάλο overhead ΤΙ ΚΑΝΩ; Λύση 2: περίσσεια ενσωματώνω παραπάνω πληροφορία στο μήνυμα κωδικοποιώ το μήνυμα 22

Η ιδέα της περίσσειας (redundancy) Βελτιωμένη ιδέα: δεναρκείνασταλείμόνοτοαρχικόμήνυμααλλάπρέπεινα σταλεί και κάτι παραπάνω για να αυξηθεί η αξιοπιστία Στην ιδέα της επανάληψης το «κάτι παραπάνω» ήταν τα παραπάνω αντίγραφα του αρχικού μηνύματος Αλλά υπάρχουν κι άλλοι τύποι παραπάνω πραγμάτων που μπορούν να σταλούν γιαναβελτιωθείηαξιοπιστίαπου στην επιστήμη των υπολογιστών καλούνται με τον όρο περίσσεια (redundancy) Η περίσσεια αυτή μπορεί να προστεθεί και στο αρχικό μήνυμα Στη συνέχεια θα μελετήσουμε μια μορφή περίσσειας σύμφωνα με την οποία το αρχικό μήνυμα μετατρέπεται σε ένα μήνυμα μεγαλύτερου μήκους (με πρόσθεση συμπληρωματικής πληροφορίας): Το αρχικό μήνυμα διαγράφεται και αντικαθίσταται από ένα διαφορετικό, μεγαλύτερου μεγέθους Λαμβάνοντας το επιμηκυμένο μήνυμα μπορούμε να το μετατρέψουμε στο αρχικό ακόμα κι αν έχει υποστεί μερική καταστροφή λόγω κακού επικοινωνιακού καναλιού 23

Η ιδέα της περίσσειας (redundancy): παράδειγμα Προσπαθούμε να μεταδώσουμε το τραπεζικό υπόλοιπο $523.75 πάνω από μη αξιόπιστο επικοινωνιακό κανάλι που τυχαία αλλάζει 2% των ψηφίων οπότε προσπαθούμε να μεταδώσουμε αντί για το $523.75 ένα μεγαλύτερο σε μήκος μήνυμα που να περιέχει την ίδια πληροφορία Μεταδίδουμε απλά τις αντίστοιχες αγγλικές λέξεις: five two one three point seven five Υποθέτουμε ότι περίπου 2% των χαρακτήρων του μηνύματος μετατρέπονται τυχαία σε άλλους εξαιτίας του κακού καναλιού και τελικά το μήνυμα μεταδίδεται σαν: fiqe kwo one thrxp point sivpn fivq Αν και δύσκολο να διαβαστεί, καθένας που γνωρίζει αγγλικά θα καταλάβει ότι το παραποιημένο μήνυμα αντιστοιχεί στο πραγματικό τραπεζικό υπόλοιπο $523.75 Σημείο κλειδί: οι κωδικές λέξεις (code words) όπως one, two, three, κ.τ.λ. Επειδή χρησιμοποιήσαμε ένα επαυξημένο μήνυμα, είναι δυνατόν αξιόπιστα να ανιχνεύσουμε και να διορθώσουμε κάθε αλλαγή στο μήνυμα: αν μάς πουν ότι οι χαρακτήρες fiqe αναπαριστούν έναν αριθμό στα αγγλικά και ότι μόνο ένας χαρακτήρας έχει αλλαχτεί, σίγουρα μπορούμε να καταλάβουμε ότι το αρχικό μήνυμα ήταν five αφού δεν υπάρχει άλλος αριθμός στα αγγλικά που να μπορεί να προκύψει από το fiqe με αλλαγή ενός μόνο χαρακτήρα Αντίθετα, αν μάς πουν ότι τα ψηφία 367 αναπαριστούν κάποιον αριθμό αλλά ένα από τα ψηφία έχει αλλαχτεί, δεν έχουμε τρόπο να γνωρίζουμε ποιος ήταν ο αρχικός αριθμός, γιατί δεν έχει προστεθεί συμπληρωματική πληροφορία στο μήνυμα 24

Η ιδέα της περίσσειας (redundancy): παράδειγμα Προσπαθούμε να μεταδώσουμε το τραπεζικό υπόλοιπο $523.75 πάνω από μη αξιόπιστο επικοινωνιακό κανάλι που τυχαία αλλάζει 2% των ψηφίων οπότε προσπαθούμε να μεταδώσουμε αντί για το $523.75 ένα μεγαλύτερο σε μήκος μήνυμα που να περιέχει την ίδια πληροφορία five two one three point seven five Μεταδίδουμε απλά τις αντίστοιχες fiqe kwo one αγγλικές thrxpλέξεις: point five sivpn two one fivqthree point seven five Υποθέτουμε ότι περίπου 2% των χαρακτήρων του μηνύματος μετατρέπονται τυχαία σε άλλους εξαιτίας του κακού καναλιού και τελικά το μήνυμα μεταδίδεται σαν: fiqe kwo one thrxp point sivpn fivq Αν και δύσκολο να διαβαστεί, καθένας που γνωρίζει αγγλικά θα καταλάβει ότι το παραποιημένο μήνυμα αντιστοιχεί στο πραγματικό τραπεζικό υπόλοιπο $523.75 Σημείο κλειδί: οι κωδικές λέξεις (code words) όπως one, two, three, κ.τ.λ. Επειδή χρησιμοποιήσαμε ένα επαυξημένο μήνυμα, είναι δυνατόν αξιόπιστα να ανιχνεύσουμε και να διορθώσουμε κάθε αλλαγή στο μήνυμα: αν μάς πουν ότι οι χαρακτήρες fiqe αναπαριστούν έναν αριθμό στα αγγλικά και ότι μόνο ένας χαρακτήρας έχει αλλαχτεί, σίγουρα μπορούμε να καταλάβουμε ότι το αρχικό μήνυμα ήταν five αφού δεν υπάρχει άλλος αριθμός στα αγγλικά που να μπορεί να προκύψει από το fiqe με αλλαγή ενός μόνο χαρακτήρα Αντίθετα, αν μάς πουν ότι τα ψηφία 367 αναπαριστούν κάποιον αριθμό αλλά ένα από τα ψηφία έχει αλλαχτεί, δεν έχουμε τρόπο να γνωρίζουμε ποιος ήταν ο αρχικός αριθμός, γιατί δεν έχει προστεθεί συμπληρωματική πληροφορία στο μήνυμα 25

Η ιδέα της περίσσειας (redundancy): πώς δουλεύει Τα μηνύματα αποτελούνται από σύμβολα Στο παράδειγμα: τασύμβολαείναιτααριθμητικάψηφία 9 (για ευκολία αγνοούμε το σύμβολο του δολαρίου και την υποδιαστολή) Κάθε σύμβολο αντιστοιχίζεται σε μια κωδική λέξη Στο παράδειγμα: το σύμβολο αντιστοιχίζεται στην κωδική λέξη one, το 2 στην two, κ.ο.κ. Για να μεταδώσουμε το μήνυμα, μεταφράζουμε κάθε σύμβολο στην κωδική του λέξη και μετά στέλνουμε το τροποποιημένο μήνυμα πάνω από ένα μη αξιόπιστο επικοινωνιακό κανάλι Όταν λαμβάνεται το μήνυμα, εξετάζεται κάθε τμήμα του μηνύματος και ελέγχεται αν είναι πράγματι κάποια κωδική λέξη Αν είναι (π.χ., five ), μετατρέπεται στο αντίστοιχο σύμβολο (δηλ., 5) Αν δεν είναι (π.χ., fiqe ), εντοπίζεταιηκωδικήλέξημετηνοποίαταιριάζει περισσότερο (στην περίπτωσή μας η five ) και μετατρέπεται στο αντίστοιχο σύμβολο (δηλ., το 5) 26

Κωδικοποίηση Αποκωδικοποίηση 2 3 4 one two three four five fiqe twe 5 (ακριβές ταίριασμα) 5(πλησιέστερο ταίριασμα) 2(πλησιέστερο ταίριασμα) 5 five Κωδικοποίηση Αποκωδικοποίηση (ακριβές ταίριασμα) (πλησιέστερο ταίριασμα) (πλησιέστερο ταίριασμα) ο (7,4) κώδικας Hamming Ένας κώδικας που χρησιμοποιείται στην πραγματικότητα από υπολογιστές. Αναφέρονται μόνο 5 από τις 6 πιθανές 4-ψήφιες εισόδους. Και για τις υπόλοιπες εισόδους υπάρχουν κωδικές λέξεις που παραλείπονται εδώ. 27

Η ιδέα της περίσσειας (redundancy) Οι υπολογιστές χρησιμοποιούν την ιδέα της περίσσειας συνεχώς για να αποθηκεύσουν και να μεταδώσουν πληροφορία Στην πραγματικότητα, οι κωδικές λέξεις είναι πιο πολύπλοκες (και μαθηματικά τεκμηριωμένες) απότιςαγγλικέςλέξειςτουπαραδείγματος Στο κάτω μέρος του προηγούμενου σχήματος, παρουσιάζεται ο (7,4) κώδικας Hamming που είναι ένας από αυτούς που ανακάλυψε ο Richard Hamming στα Bell Labs το 947 λόγω της δυσλειτουργίας του υπολογιστή της εταιρείας τα ΣΚ Ο Hamming δημοσίευσε τους κώδικές του το 95, λόγω ύπαρξης απαίτησης για σχετική πατέντα από τη Bell Η βασική διαφορά από τον κώδικα του παραδείγματος είναι η χρήση μόνο και Ο λόγος είναι ότι κάθε πληροφορία που αποθηκεύεται ή μεταδίδεται με υπολογιστή μετατρέπεται σε ακολουθίες με και, οπότε κάθε πραγματικός κώδικας αναγκαστικά περιέχει μόνο αυτά τα 2 ψηφία 28

(7,4) κώδικας Hamming Κατά την κωδικοποίηση, σε κάθε ομάδα 4 ψηφίων προστίθεται συμπληρωματική πληροφορία οπότε παράγεται μία κωδική λέξη με 7 ψηφία Κατά την αποκωδικοποίηση, ψάχνουμε πρώτα για πλήρες ταίριασμα των 7 ψηφίων που λάβαμε με κάποια κωδική λέξη αν δεν βρούμε, διαλέγουμε την περισσότερο ταιριαστή κωδική λέξη Ο κώδικας έχει σχεδιαστεί έτσι ώστε κάθε λάθος σε μια 7ψήφια κωδική λέξη να μπορεί να διορθωθεί χωρίς να υπάρχει ασάφεια (υπάρχουν σχετικές μαθηματικές αποδείξεις στις οποίες δεν θα εμβαθύνουμε εδώ) 29

(7,4) κώδικας Hamming 4 ψήφια μηνύματα (dd2d3d4) κωδικοποιούνται σε 7 ψήφιες λέξεις υπάρχουν 3 επιπλέον ψηφία ελέγχου σε κάθε κωδικοποιημένο μήνυμα (pp2dp3d2d3d4) Οι θέσεις του κωδικοποιημένου μηνύματος αριθμούνται από αριστερά προς τα δεξιά Θέσεις που έχουν αριθμηθεί με δύναμη του 2 (θέση i=2 k ) αντιστοιχούν σε ψηφία ελέγχου (pi) ενώ οι υπόλοιπες θέσεις αντιστοιχούν σε ψηφία του αρχικού μηνύματος Το ψηφίο ελέγχου p ελέγχει τα ψηφία του αρχικού μηνύματος σε θέσεις που το αριστερότερο ψηφίο είναι (δηλ., τις θέσεις 3=,5=,7=) Το ψηφίο ελέγχου p2 ελέγχει τα ψηφία του αρχικού μηνύματος σε θέσεις που το δεύτερο αριστερότερο ψηφίο είναι (δηλ., τις θέσεις 3=,6=,7=) Το ψηφίο ελέγχου p3 ελέγχει τα ψηφία του αρχικού μηνύματος σε θέσεις που το τρίτο αριστερότερο ψηφίο είναι (δηλ., τις θέσεις 5=,6=,7=) «ελέγχει»: το ψηφίο ελέγχου pi λαμβάνει την τιμή αν το πλήθος των στα ψηφία του μηνύματος που του αντιστοιχούν είναι περιττό, αλλιώς λαμβάνει την τιμή Θέση =2 Θέση 2=2 Θέση 3= Θέση 4=2 2 Θέση 5= Θέση 6= Θέση 7= p p2 d p3 d2 d3 d4 3

(7,4) κώδικας Hamming: παράδειγμα Αρχικό μήνυμα: dd2d3d4= Κωδικοποιημένο μήνυμα: pp2dp3d2d3d4= p= (αφού dd2d4=) p2= (αφού dd3d4=) p3= (αφού d2d3d4=) Θέση =2 Θέση 2=2 Θέση 3= Θέση 4=2 2 Θέση 5= Θέση 6= Θέση 7= p= p2= d = p3= d2 = d3 = d4 = 3

(7,4) κώδικας Hamming: παράδειγμα Αρχικό μήνυμα: dd2d3d4= Κωδικοποιημένο μήνυμα: pp2dp3d2d3d4= p= (αφού dd2d4=) p2= (αφού dd3d4=) p3= (αφού d2d3d4=) Μήνυμα που λαμβάνεται μετά τη μετάδοση: Ελέγχω (ξανα υπολογίζω με βάση το μήνυμα) τα ψηφία ελέγχου: αν είναι σωστά το μήνυμα μεταδόθηκε σωστά Μήνυμα που λαμβάνεται μετά τη μετάδοση: Ελέγχω (ξανα υπολογίζω με βάση το μήνυμα) τα ψηφία ελέγχου: τα ψηφία ελέγχου p και p3 δεν είναι σωστά αυτά βρίσκονται στις θέσεις +4=5 το ψηφίο στη θέση 5 είναι το λάθος Μήνυμα που λαμβάνεται μετά τη μετάδοση: Ελέγχω (ξανα υπολογίζω με βάση το μήνυμα) τα ψηφία ελέγχου: το ψηφίο ελέγχου p3 δεν είναι σωστό το ίδιο το ψηφίο ελέγχου είναι το λάθος Θέση =2 Θέση 2=2 Θέση 3= Θέση 4=2 2 Θέση 5= Θέση 6= Θέση 7= p= p2= d = p3= d2 = d3 = d4 = 32

Ο (7,4) κώδικας Hamming 7= 6= 5= 4= 3= 2= = d4 d3 d2 p3 d p2 p 33

Επανάληψη ή Περίσσεια Στην πράξη, η ιδέα της περίσσειας προτιμάται σε σχέση με την ιδέα της επανάληψης λόγω του σχετικά χαμηλότερου κόστους της Το κόστος συστημάτων διόρθωσης σφαλμάτων μετριέται με βάση το overhead, δηλ., το ποσό της παραπάνω πληροφορίας που πρέπει να σταλεί για να είμαστε σίγουροι ότι το μήνυμα θα ληφθεί σωστά Το overhead τηςιδέαςτηςεπανάληψηςείναιτεράστιο αφού πρέπει να στείλουμε πολλά αντίγραφα ολόκληρου του μηνύματος Το overhead τηςιδέαςτηςπερίσσειαςεξαρτάταιαπότοακριβέςσύνολοτωνκωδικών λέξεων που χρησιμοποιούμε Στο παράδειγμα: το μήνυμα με τις αγγλικές λέξεις είχε 29 χαρακτήρες ενώ το αρχικό είχε μόνο 6 νούμερα μεγάλο overhead Αλλά στην πράξη χρησιμοποιούνται σύνολα κωδικών λέξεων που έχουν δημιουργηθεί ώστε να εισάγουν πολύ λιγότερη συμπληρωματική πληροφορία και να έχουν πολύ υψηλή απόδοση ως προς την πιθανότητα να μην ανιχνευθεί κάποιο υπαρκτό σφάλμα Μέχρι τώρα αναφερθήκαμε ρητά στη μετάδοση πληροφορίας αλλά οι σχετικές μέθοδοι ισχύουν και για την αποθήκευσή της Τα CD, τα DVD, και οι σκληροί δίσκοι βασίζονται εξαιρετικά σε κώδικες διόρθωσης σφαλμάτων για να πετύχουν την εξέχουσα αξιοπιστία που διαπιστώνουμε στην πράξη 34

Εντοπισμός και διόρθωση σφάλματος Λύση : επανάληψη Καλό: αυξάνοντας τις επαναμεταδόσεις σχεδόν μηδενίζεται η πιθανότητα λάθους στη μετάδοση (σχεδόν σίγουρα θα τα εντοπίσω και θα τα διορθώσω) Ανησυχία : μεγάλο ποσοστό σφάλματος στη μετάδοση ΟΚ: ζητάω πολλές επαναμεταδόσεις Ανησυχία 2: αν έχω μεγάλα μηνύματα;;; ΠΡΟΒΛΗΜΑ: μεγάλο overhead ΤΙ ΚΑΝΩ; Λύση 2: περίσσεια ενσωματώνω παραπάνω πληροφορία στο μήνυμα κωδικοποιώ το μήνυμα (π.χ., με κώδικα Hamming) Καλό: μικρό overhead (τουλάχιστον σε σύγκριση με την επανάληψη) Ανησυχία : μπορώ να εντοπίσω και να διορθώσω το πολύ λάθος αν υπάρχουν παραπάνω; Λύση 2.5: μπορώ να εντοπίσω και να διορθώσω παραπάνω από λάθη με κώδικες Reed Solomon Λύση 3: καρφίτσωμα (pinpoint) ή αλλιώς διδιάστατη ισοτιμία (twodimensional parity) 35

Εντοπισμός σφάλματος ξεχνάμε για λίγο τη διόρθωση και εστιάζουμε στον εντοπισμό Καιτικάνουμεμετηδιόρθωση;;;;;;; Αν εντοπίσουμε το λάθος, διορθώνουμε ζητώντας επαναμετάδοση 36

Η ιδέα του αθροίσματος ελέγχου (checksum) Οι ιδέες της επανάληψης και της περίσσειας είναι τρόποι για ταυτόχρονο εντοπισμό και διόρθωση σφαλμάτων σε δεδομένα Εναλλακτική προσέγγιση: ας αφήσουμε τη διόρθωση και ας εστιάσουμε στον εντοπισμό σφαλμάτων (δες και το σχετικό απόφθεγμα του φιλοσόφου John Locke από τον 7 ο μ.χ. αιώνα) Για πολλές εφαρμογές, καιμόνοοεντοπισμός του σφάλματος είναι αρκετός αφού αν εντοπιστεί λάθος ζητάμε αντίγραφο των δεδομένων συνεχώς 37

Η ιδέα του αθροίσματος ελέγχου (checksum) Υποθέτουμε ότι όλα τα μηνύματα αποτελούνται μόνο από αριθμούς Πρόκειται για πολύ ρεαλιστική υπόθεση αφού οι υπολογιστές αποθηκεύουν κάθε πληροφορία με μορφή αριθμών και απλά μεταφράζουν τους αριθμούς αυτούς σε κείμενο ή εικόνες όταν μάς παρουσιάζουν την αντίστοιχη πληροφορία Κάθε πιθανή επιλογή συμβόλων για την κωδικοποίηση των μηνυμάτων δεν επηρεάζει τις τεχνικές που περιγράφουμε εδώ Άλλες φορές είναι πιο απλό να κωδικοποιούμε με αριθμητικά ψηφία (τα ψηφία 9) και άλλες με αλφαβητικά σύμβολα (τους χαρακτήρες a z), αλλά σε κάθε περίπτωση μπορεί να συμφωνηθεί μια μετάφραση μεταξύ αυτών των συνόλων συμβόλων Π.χ., μια προφανής μετάφραση από αλφαβητικά σε αριθμητικά σύμβολα θα ήταν a, b 2,, z 26 Οπότε δεν έχει σημασία αν θα μελετήσουμε τις τεχνικές υποθέτοντας ότι μεταδίδονται αριθμητικά ή αλφαβητικά μηνύματα αφού κάθε τεχνική μπορεί να εφαρμοστεί σε κάθε τύπο μηνύματος (αλφαβητικού ή αριθμητικού) κάνοντας αρχικά την απαραίτητη μετάφραση 38

Η ιδέα του αθροίσματος ελέγχου (checksum): πώς δουλεύει Υπάρχουν διάφορες εκδοχές της ιδέας εμείς θα παρουσιάσουμε την απλούστερη που καλείται απλός έλεγχος αθροίσματος ( simple checksum ) Αθροίζουμε τα ψηφία του μηνύματος και κρατάμε μόνο το τελευταίο (δεξιότερο) ψηφίο του αθροίσματος που αποτελεί και το αποτέλεσμα του απλού αθροίσματος ελέγχου ( simple checksum ) Παράδειγμα: έστω ότι το μήνυμα είναι 4 6 7 5 6, το άθροισμα των ψηφίων του είναι 4 + 6 + 7 + 5 + 39

Η ιδέα του αθροίσματος ελέγχου (checksum) Πώς χρησιμοποιείται ο έλεγχος αθροίσματος; «κολλάμε» το αποτέλεσμα του αθροίσματος ελέγχου στο τέλος του μηνύματός μας πριν το αποστείλουμε οπότε όταν λαμβάνεται το μήνυμα, μπορεί να υπολογιστεί το αποτέλεσμα του αθροίσματος ελέγχου εκ νέου να συγκριθεί με το προηγούμενο αποτέλεσμα που είχαμε στείλει και να διαπιστωθεί η ορθότητα του μηνύματος Δηλ., οι παραλήπτες ελέγχουν το άθροισμα των ψηφίων του μηνύματος ( check the sum of the message), εξ ού και η ορολογία άθροισμα ελέγχου ( checksum ) 4

Η ιδέα του αθροίσματος ελέγχου (checksum) Παράδειγμα: Αρχικό μήνυμα: 4 6 7 5 6 Τελευταίο ψηφίο αθροίσματος ελέγχου: 8 Μεταδιδόμενο μήνυμα: 4 6 7 5 6 8 Ο παραλήπτης χρησιμοποιεί την ιδέα του αθροίσματος ελέγχου και αντιλαμβάνεται ότι το αποτέλεσμα του αθροίσματος ελέγχου που του στείλαμε είναι το τελευταίο ψηφίο 8 επομένως το 8 δεν είναι ψηφίο του αρχικού μηνύματος και απομακρύνεται από το 4

Η ιδέα του αθροίσματος ελέγχου (checksum) Πόσο είναι το overhead αυτού του συστήματος ελέγχου λαθών (δηλ., πόσα επιπλέον ψηφία στέλνονται μαζί με το αρχικό μήνυμα); overhead = ένα μόνο ψηφίο για να εντοπιστεί ένα λάθος = το τελευταίο ψηφίο του αποτελέσματος του αθροίσματος ελέγχου: πολύ χαμηλό, ανεξάρτητο από το μήκος του αρχικού μηνύματος Ενότητα Πρόβλημα: 5: Κώδικες διόρθωσης σφαλμάτων με τον απλό έλεγχο αθροίσματος ί ί ό έ λάθ 42

checksum αρχικό μήνυμα 4 6 7 5 6 8 μήνυμα με ένα λάθος 6 7 5 6 5 μήνυμα με δύο λάθη 5 7 5 6 4 μήνυμα με δύο (διαφορετικά) λάθη 2 8 7 5 6 8 Αν υπάρχει μόνο ένα λάθος στο αρχικό μήνυμα, ο απλός έλεγχος αθροίσματος θα το εντοπίσει. Όταν υπάρχουν παραπάνω από ένα λάθη, το πρόβλημα μπορεί να εντοπιστεί μπορεί και όχι: Στο πρώτο μήνυμα με δύο λάθη, το πρόβλημα εντοπίζεται Στο δεύτερο μήνυμα με δύο λάθη, το πρόβλημα ΔΕΝ εντοπίζεται 43

Εντοπισμός σφάλματος ξεχνάμε για λίγο τη διόρθωση και εστιάζουμε στον εντοπισμό Και τι κάνουμε με τη διόρθωση;;;;;;; Αν εντοπίσουμε το λάθος, διορθώνουμε ζητώντας επαναμετάδοση Λύση : προσθέτουμε απλό checksum bit στο τέλος του μηνύματος Καλό: μικρό overhead Ανησυχία: εντοπίζεται το πολύ λάθος αν υπάρχουν παραπάνω λάθη;;;;;;;; Λύση 2: προσθέτουμε απλό checksum bit και staircase checksum bit στο τέλος του μηνύματος 44

Η ιδέα του κλιμακωτού αθροίσματος ελέγχου (checksum) Λύση: βελτιώνουμε ελαφρώς την ιδέα και ορίζουμε έναν νέο τύπο αθροίσματος ελέγχου που καλείται κλιμακωτό άθροισμα ελέγχου ( staircase checksum) Φανταζόμαστε ότι ανεβαίνουμε μία σκάλα (κλίμακα) όταν υπολογίζουμε το αποτέλεσμα του αθροίσματος ελέγχου: κάθε σκαλοπάτι είναι αριθμημένο με τους αριθμούς,2,3, κ.τ.λ. Υπολογίζουμε το staircase checksum ως εξής: προσθέτουμε τα ψηφία του μηνύματος (όπως πριν), αλλά κάθε ψηφίο πολλαπλασιάζεται με 45

Σύγκριση απλού και κλιμακωτού αθροίσματος ελέγχου Απλό checksum Κλιμακωτό checksum αρχικό μήνυμα 4 6 7 5 6 8 7 μήνυμα με ένα λάθος 6 7 5 6 5 4 μήνυμα με δύο λάθη 5 7 5 6 4 2 μήνυμα με δύο (διαφορετικά) λάθη 2 8 7 5 6 8 9 μήνυμα με δύο (πάλι διαφορετικά) λάθη 6 5 7 5 6 9 7 46

Η ιδέα του αθροίσματος ελέγχου (checksum) Επομένως: μεταδίδοντας το αρχικό μήνυμα με δύο επιπλέον ψηφία, το τελευταίο ψηφίο του αποτελέσματος του απλού και του κλιμακωτού αθροίσματος ελέγχου, μπορούμε πάντα να εντοπίζουμε μέχρι το πολύ δύο λάθηστοαρχικόμήνυμα Παράδειγμα: Το μήνυμα 46756 μεταδίδεται σαν 4 6 7 5 6 8 7 47

Η ιδέα του αθροίσματος ελέγχου (checksum) Απλό checksum Κλιμακωτό checksum αρχικό μήνυμα 4 6 7 5 6 8 7 μήνυμα με ένα λάθος 6 7 5 6 5 4 μήνυμα με δύο λάθη 5 7 5 6 4 2 μήνυμα με δύο (διαφορετικά) λάθη 2 8 7 5 6 8 9 μήνυμα με δύο (πάλι διαφορετικά) λάθη 6 5 7 5 6 9 7 48

Η ιδέα του αθροίσματος ελέγχου (checksum) Η βασική ιδέα του αθροίσματος ελέγχου που περιγράψαμε δουλεύει για σχετικά μικρά μηνύματα (με λιγότερα από ψηφία) αλλά παραπλήσιες ιδέες εφαρμόζονται για μεγαλύτερα μηνύματα Είναι δυνατός ο ορισμός checksums μέσω συγκεκριμένωνακολουθιώναπλώνπράξεων όπως πρόσθεση ψηφίων μηνύματος, πολλαπλασιασμός μηνυμάτων με αριθμό «σκαλοπατιού», μετάθεση ψηφίων του μηνύματος σύμφωνα με δοσμένο πρότυπο 49

Η ιδέα του αθροίσματος ελέγχου (checksum) Η βασική ιδέα του αθροίσματος ελέγχου που περιγράψαμε παράγει μόνο 2 ψηφία checksum (τα ψηφία απλού και κλιμακωτού αθροίσματος ελέγχου) αλλά τα πραγματικά checksums περιέχουν πολύ περισσότερα ψηφία γύρω στα 5 Οαριθμόςτωνψηφίωνστοchecksum (είτε 2 είτε περίπου 5) είναι προκαθορισμένος για κάθε σχετικό αλγόριθμο και φυσικά μπορούν να γίνουν όσο πολλά θέλουμε και να παραμένουν πολύ λίγα σε σχέση με το μήκος 5

Η ιδέα του αθροίσματος ελέγχου (checksum) Προσοχή: λαμβάνοντας υπόψη τεχνικές λεπτομέρειες, συμπεραίνουμε ότι και συστήματα που χρησιμοποιούν ψήφια μπορούν να αποτύχουν στον εντοπισμό λαθών Απαιτείται ειδικός τύπος checksums που καλούνται κρυπτογραφικές συναρτήσεις κατακερματισμού (cryptographic hash functions) ειδικά αν οι παραποιήσεις στο αρχικό μήνυμα δεν συμβαίνουν τυχαία λόγω κακού επικοινωνιακού καναλιού αλλά 5

Εντοπισμός σφάλματος ξεχνάμε για λίγο τη διόρθωση και εστιάζουμε στον εντοπισμό Και τι κάνουμε με τη διόρθωση;;;;;;; Αν εντοπίσουμε το λάθος, διορθώνουμε ζητώντας επαναμετάδοση Λύση : προσθέτουμε απλό checksum bit στο τέλος του μηνύματος Καλό: μικρό overhead Ανησυχία: εντοπίζεται το πολύ λάθος αν υπάρχουν παραπάνω λάθη;;;;;;;; Λύση 2: προσθέτουμε απλό checksum bit και staircase checksum bit στο τέλος του μηνύματος Ανησυχία: εντοπίζονται το πολύ 2 λάθη αν υπάρχουν παραπάνω λάθη;;;;;;;; Λύση 3: κρυπτογραφικές συναρτήσεις κατακερματισμού cryptographic has functions 52

Εντοπισμός και διόρθωση σφάλματος Λύση : επανάληψη Καλό: αυξάνοντας τις επαναμεταδόσεις σχεδόν μηδενίζεται η πιθανότητα λάθους στη μετάδοση (σχεδόν σίγουρα θα τα εντοπίσω και θα τα διορθώσω) Ανησυχία : μεγάλο ποσοστό σφάλματος στη μετάδοση ΟΚ: ζητάω πολλές επαναμεταδόσεις Ανησυχία 2: αν έχω μεγάλα μηνύματα;;; ΠΡΟΒΛΗΜΑ: μεγάλο overhead ΤΙ ΚΑΝΩ; Λύση 2: περίσσεια ενσωματώνω παραπάνω πληροφορία στο μήνυμα κωδικοποιώ το μήνυμα (π.χ., με κώδικα Hamming) Καλό: μικρό overhead (τουλάχιστον σε σύγκριση με την επανάληψη) Ανησυχία : μπορώ να εντοπίσω και να διορθώσω το πολύ λάθος αν υπάρχουν παραπάνω; Λύση 2.5: μπορώ να εντοπίσω και να διορθώσω παραπάνω από λάθη με κώδικες Reed Solomon Λύση 3: καρφίτσωμα (pinpoint) ή αλλιώς διδιάστατη ισοτιμία (twodimensional parity) 53

Η ιδέα του καρφιτσώματος (pinpoint) Πρόβλημα: εντοπισμός και διόρθωση επικοινωνιακών σφαλμάτων Λύσεις που είδαμε ήδη: ιδέα επανάληψης αποστολής του αρχικού μηνύματος (μη αποδοτική) και ιδέα ενσωμάτωσης περίσσειας πληροφορίας στο αρχικό μήνυμα (αποδοτική) μέσω κωδικοποίησης του αρχικού μηνύματος (με κωδικές λέξεις) Πώς δημιουργούνται οι κωδικές λέξεις; Είδαμε στο παράδειγμα τη χρήση αγγλικών λέξεων για την κωδικοποίηση αριθμών που όμως είναι λιγότερο αποδοτικός τρόπος κωδικοποίησης από αυτούς που χρησιμοποιούνται από τους υπολογιστές στην πράξη Είδαμε επίσης ένα πραγματικό παράδειγμα ενός κώδικα Hamming Θα περιγράψουμε μια μέθοδο κωδικοποίησης για την ιδέα της περίσσειας που μάς επιτρέπει να «καρφιτσώσουμε» το λάθος πολύ γρήγορα για αυτό και καλείται ιδέα του καρφιτσώματος ( pinpoint trick ) 54

Η ιδέα του καρφιτσώματος (pinpoint): πώς δουλεύει Υποθέτουμε για ευκολία ότι έχουμε μηνύματα που περιέχουν μόνο τα ψηφία 9 (αφού ό,τι και να περιέχουν τα μηνύματα μπορούν να μεταφραστούν σε αριθμούς) Υποθέτουμε για ευκολία (χωρίςβλάβητηςγενικότητας) ότι το αρχικό μήνυμα έχει 6 ψηφία (μήνυμα με περισσότερα από 6 ψηφία το χωρίζουμε σε 6ψήφια τμήματα, μήνυμα με λιγότερα από 6 ψηφία το συμπληρώνουμε με ) Βήμα : τοποθετούμε τα 6 ψηφία του μηνύματος σε ένα τετράγωνο που διαβάζεται από αριστερά προς δεξιά και από πάνω προς τα κάτω: αν το αρχικό μήνυμα είναι 4837543622563997 γίνεται: Βήμα 2: υπολογίζουμε ένα απλό checksum για κάθε γραμμή και το τοποθετούμε δεξιά στο τέλος κάθε γραμμής (π.χ., το checksum για τη δεύτερη γραμμή είναι 5 + 4 + 3 + 6 = 8 και κρατάμε το τελευταίο ψηφίο του αθροίσματος δηλ., το 8) 55

Η ιδέα του καρφιτσώματος (pinpoint) Βήμα 3: υπολογίζουμε απλά checksums γιακάθεστήληκαιταπροσθέτουμεκάτω κάτω στο τέλος κάθε στήλης (π.χ., το checksum για την τρίτη στήλη είναι 3 + 3 + 5 + 9 = 2 και κρατάμε το τελευταίο ψηφίο του αθροίσματος, δηλ., το ) Βήμα 4: αναδιατάσσουμε τους αριθμούς ώστε να μπορούν να αποθηκευθούν και να μεταδοθούν ψηφίο ψηφίο, διαβάζοντας τους αριθμούς από αριστερά προς τα δεξιά και από πάνω προς τα κάτω ώστε να προκύψει το εξής 24 ψήφιο μήνυμα: 48372543682256539978436 56

Η ιδέα του καρφιτσώματος (pinpoint): πώς χρησιμοποιείται Αρχικό 6 ψήφιο μήνυμα: 4837543622563997 Μήνυμα με 24 ψηφία που λάβαμε: 48372543682756539978436 Βήμα (για αποκωδικοποίηση): τοποθετούμε τα ψηφία σε ένα τετράγωνο 5x5 όπου η τελευταία γραμμή και η τελευταία στήλη περιέχουν ψηφία checksum που επισυνάφθηκαν στο αρχικό μήνυμα: Βήμα 2: υπολογίζουμε απλά checksums για τα 4 πρώτα ψηφία σε κάθε γραμμή και κάθε στήλη και καταγράφουμε τα αποτελέσματα σε νέα στήλη και γραμμή, αντίστοιχα, δίπλα στα σταλμένα checksums: 57

Η ιδέα του καρφιτσώματος (pinpoint) Υπάρχουν δύο σύνολα τιμών για τα checksums: οι τιμές που μάς έστειλαν και αυτές που υπολογίσαμε Αν οι αντίστοιχες τιμές είναι ίδιες το μήνυμα σχεδόν σίγουρα μεταδόθηκε σωστά Αν υπήρξε σφάλμα στην επικοινωνία κάποιες τιμές checksums θα είναι διαφορετικές Στο παράδειγμα υπάρχουν 2 διαφορές: στις τιμές 5 και στην τρίτη γραμμή και στις τιμές 3 και 8 στη δεύτερη στήλη Η θέση των διαφορών υποδεικνύει που έγινε το λάθος! 58

Η ιδέα του καρφιτσώματος (pinpoint) Το λάθος έγινε στο εξής ψηφίο: Εντοπίσαμε το λάθος αλλά δεν το έχουμε διορθώσει ακόμα Το διορθώνουμε αντικαθιστώντας το λάθος ψηφίο, δηλ., το 7, με κάποιο άλλο ώστε και τα δύο checksums να είναι σωστά Στην τρίτη στήλη το checksum έπρεπε να είναι 3 αλλά προέκυψε 8, οπότε πρέπει να μειωθεί κατά 5 μειώνουμε το λανθασμένο ψηφίο 7 κατά 5 και γίνεται 2 59

Η ιδέα του καρφιτσώματος (pinpoint) Διαπιστώνουμε ότι πλέον η τρίτη γραμμή έχει checksum 5, που συμφωνεί με το αντίστοιχο checksum που λάβαμε Το λάθος εντοπίστηκε και διορθώθηκε! Το τελικό βήμα είναι να εξάγουμε το αρχικό 6 ψήφιο μήνυμα από το τετράγωνο 5x5 διαβάζοντάς το από αριστερά προς τα δεξιά και από πάνω προς τα κάτω (αγνοώντας φυσικά την τελευταία γραμμή και στήλη): 4837543622563997 που είναι ακριβώς το αρχικό μήνυμα 6

Η ιδέα του καρφιτσώματος (pinpoint) Η ιδέα του καρφιτσώματος (pinpoint trick) αναφέρεται στην επιστήμη των υπολογιστών ως διδιάστατη ισοτιμία ( twodimensional parity ) Οόρος«ισοτιμία» σημαίνει το ίδιο με τον υπολογισμό απλού checksum με δυαδικούς αριθμούς (που χρησιμοποιούν συνήθως οι υπολογιστές) Οόρος«διδιάστατη» χρησιμοποιείται γιατί το μήνυμα τοποθετείται σε ένα πλέγμα δύο διαστάσεων (με γραμμές και στήλες) Η διδιάστατη ισοτιμία έχει χρησιμοποιηθεί σε πραγματικά υπολογιστικά συστήματα αλλά δεν είναι τόσο αποδοτική όσο άλλες συγκεκριμένες μέθοδοι περίσσειας που πάντως βασίζονται σε παραπλήσιες ιδέες 6

Εντοπισμός και διόρθωση σφάλματος Λύση : επανάληψη Καλό: αυξάνοντας τις επαναμεταδόσεις σχεδόν μηδενίζεται η πιθανότητα λάθους στη μετάδοση (σχεδόν σίγουρα θα τα εντοπίσω και θα τα διορθώσω) Ανησυχία : μεγάλο ποσοστό σφάλματος στη μετάδοση ΟΚ: ζητάω πολλές επαναμεταδόσεις Ανησυχία 2: αν έχω μεγάλα μηνύματα??? ΠΡΟΒΛΗΜΑ: μεγάλο overhead ΤΙ ΚΑΝΩ; Λύση 2: περίσσεια ενσωματώνω παραπάνω πληροφορία στο μήνυμα κωδικοποιώ το μήνυμα (π.χ., με κώδικα Hamming) Καλό: μικρό overhead (τουλάχιστον σε σύγκριση με την επανάληψη) Ανησυχία : μπορώ να εντοπίσω και να διορθώσω το πολύ λάθος αν υπάρχουν παραπάνω; Λύση 2.5: μπορώ να εντοπίσω και να διορθώσω παραπάνω από λάθη με κώδικες Reed Solomon ( staircase checksum+two dimensional parity) Λύση 3: καρφίτσωμα (pinpoint) ή αλλιώς διδιάστατη ισοτιμία (twodimensional parity) 62

Διόρθωση και ανίχνευση σφαλμάτων στην πράξη Οι κώδικες διόρθωσης σφαλμάτων εμφανίστηκαν στη δεκαετία του 94 λίγο μετά την εμφάνιση των υπολογιστών για τον προφανή λόγο ότι οι πρώτοι υπολογιστές ήταν μάλλον αναξιόπιστοι και τα συστατικά τους συχνά εμφάνιζαν σφάλματα Αλλά οι ρίζες των κωδίκων διόρθωσης σφαλμάτων ξεκινούν ακόμα πιο παλιά σε επικοινωνιακά συστήματα όπως οι τηλέγραφοι και τα τηλέφωνα οπότε δεν είναι περίεργο ότι δύο βασικά γεγονότα κίνητρα που οδήγησαν στη δημιουργία των κωδίκων διόρθωσης σφαλμάτων συνέβησαν στα εργαστήρια της τηλεφωνικής εταιρείας Bell και μάλιστα σε 2 ερευνητές της, τους Claude Shannon και Richard Hamming : Ο Hamming ενοχλημένος από τις δυσλειτουργίες του υπολογιστή της εταιρείας τα ΣΚ εφηύρε τους πρώτους κώδικες διόρθωσης σφαλμάτων που είναι γνωστοί ως κώδικές Hamming 63

Διόρθωση και ανίχνευση σφαλμάτων στην πράξη : Θεωρία της Πληροφορίας (Shannon) Όμως οι κώδικες διόρθωσης σφαλμάτων είναι μόνο ένα μέρος μιας μεγαλύτερης επιστημονική περιοχής που ονομάζεται Θεωρία της Πληροφορίας (Information Theory IT) ηοποίαξεκίνησεναυπάρχει(θεμελιώθηκε) το 948 μέσω της πολύ σημαντικής δημοσιευμένης εργασίας του Claude Shannon με τίτλο The Mathematical Theory of Communication Ο Shannon απέδειξε με μαθηματικά ότι ήταν δυνατόν στηγενικήπερίπτωση να επιτευχθούν εξαιρετικά ψηλά ποσοστά επικοινωνίας χωρίς σφάλματα πάνω από συνδέσμους που επηρεάζονται από θόρυβο και είναι επιρρεπείς στα σφάλματα Αρκετές δεκαετίες αργότερα οι επιστήμονες σχεδόν κατάφεραν να φτάσουν στην πράξη το θεωρητικό μέγιστο που περιέγραψε ο Shannon O Shannon υπήρξε και συνδιοργανωτής του Συνεδρίου Τεχνητής Νοημοσύνης που έγινε στο Dartmouth το 956 καιενεπλάκηστηθεμελίωσημιαςακόμα επιστημονικής περιοχής που καλείται Τεχνητή Νοημοσύνη Ο Shannon κατασκεύασε επίσης ένα είδος ποδηλάτου με έναν τροχό ελλειπτικού σχήματος (όχι κυκλικού) στο οποίο ο αναβάτης κινούταν πάνω κάτω καθώςτοποδήλατοκινούτανπροςταμπροστά! 64

Διόρθωση και ανίχνευση σφαλμάτων στην πράξη ΗδουλειάτουShannon τοποθέτησε τους κώδικες Hamming σε ένα ευρύ θεωρητικό πλαίσιο και έθεσε τις βάσεις για σημαντική περαιτέρω πρόοδο Οι κώδικες Hamming χρησιμοποιούνταν από τους πρώτους υπολογιστές και χρησιμοποιούνται ακόμα ευρέως σε συστήματα μνημών συγκεκριμένων τύπων Μια άλλη σημαντική οικογένεια κωδίκων Ενότητα είναι 5: Κώδικες διόρθωσης οι κώδικες σφαλμάτων Reed Solomon που: 65

Διόρθωση και ανίχνευση σφαλμάτων στην πράξη Οι έλεγχοι αθροίσματος (checksums) χρησιμοποιούνται ευρέως στην πράξη κυρίως για εντοπισμό (παρά για διόρθωση) σφαλμάτων Το πιο σημαντικό παράδειγμα χρήσης τους είναι το Ethernet, το δικτυακό πρωτόκολλο που χρησιμοποιείται από (σχεδόν) κάθε υπολογιστή στον πλανήτη σήμερα : το Ethernet χρησιμοποιεί checksum που καλείται CRC 32 για τον εντοπισμό σφαλμάτων Το πιο διαδεδομένο πρωτόκολλο internet που καλείται TCP (Transmission Control Protocol Πρωτόκολλο Ελέγχου Μετάδοσης) επίσης χρησιμοποιεί checksums για κάθε πακέτο δεδομένων που στέλνει: πακέτα που δεν έχουν σωστά checksums απλά αγνοούνται αφού το πρωτόκολλο TCP είναι σχεδιασμένο ώστε να τα ξαναστέλνει αργότερα αν αυτό είναι αναγκαίο Πακέτα λογισμικού που δημοσιεύονται στο internet ελέγχονται για ορθότητα με χρήση checksums Οι πιο δημοφιλείς αλγόριθμοι που χρησιμοποιούν checksums είναι οι MD5 και SHA, που αποτελούν κρυπτογραφικές συναρτήσεις κατακερματισμού και παρέχουν προστασία απέναντι σε κακόβουλες τροποποιήσεις λογισμικού και τυχαία επικοινωνιακά σφάλματα Τα checksums που χρησιμοποιεί ο MD5 έχουν περίπου 4 ψηφία Τα checksums που χρησιμοποιεί ο SHA έχουν περίπου 5 ψηφία Υπάρχουν και πιο ανθεκτικές εκδοχές όπως ο SHA 256 (περίπου 75 ψηφία) και ο SHA 52 (περίπου 5 ψηφία) 66

Διόρθωση και ανίχνευση σφαλμάτων στην πράξη Η επιστήμη της διόρθωσης και ανίχνευσης σφαλμάτων συνεχίζει να αναπτύσσεται Από τη δεκαετία του 99, ιδιαίτερη προσοχή έχουν οι κώδικες ελέγχου ισοτιμίας χαμηλής πυκνότητας (low density parity check codes) Οι κώδικες αυτοί χρησιμοποιούνται σε εφαρμογές όπως δορυφορική τηλεόραση και διαστημικές επικοινωνίες Οπότε την επόμενη φορά που θα απολαμβάνεται κάποιο πρόγραμμα υψηλής ευκρίνειας σε δορυφορική τηλεόραση θυμηθείτε ότι εξαιτίας της απόγνωσης του Richard Hamming με τον υπολογιστή της εταιρείας που χάλαγε τα ΣΚ μπορούμε σήμερα να απολαμβάνουμε την ψυχαγωγία του ΣΚ μας 67

Σύνοψη Δεδομένο: μήνυμα προς αποθήκευση ή προς αποστολή πάνω από μη αξιόπιστο επικοινωνιακό κανάλι Ζητούμενο: εντοπισμός και πιθανώς διόρθωση σφαλμάτων στο λαμβανόμενο μήνυμα Ποιο είναι το (θεωρητικά) καλύτερο που μπορούμε να περιμένουμε; Shannon (948): δυνατόν στηγενικήπερίπτωση να επιτευχθούν εξαιρετικά ψηλά ποσοστά επικοινωνίας χωρίς σφάλματα πάνω από συνδέσμους που επηρεάζονται από θόρυβο και είναι επιρρεπείς στα σφάλματα Στην πράξη : Τρόποι εντοπισμού και διόρθωσης σφαλμάτων: Επανάληψη: επαναμετάδοση του μηνύματος Πρόβλημα: μεγάλο overhead Περίσσεια: ενσωμάτωση επιπλέον πληροφορίας στο μήνυμα δηλ., κωδικοποίησή του με βάση κάποιο γνωστό κώδικα διόρθωσης σφαλμάτων (π.χ., Hamming που διορθώνει σφάλμα/κωδική λέξη, Reed Solomon που διορθώνουν πολλά σφάλματα/κωδική λέξη) Προτιμάται λόγω χαμηλού overhead Καρφίτσωμα (pinpoint) Διδιάστατη ισοτιμία (two dimensional parity): τοποθετούμε το μήνυμα σε πλέγμα και υπολογίζουμε απλό checksum για κάθε γραμμή και στήλη Τρόποι εντοπισμού σφαλμάτων η διόρθωση γίνεται συνήθως με αίτηση επαναμετάδοσης του μηνύματος: Σφάλματα συμβαίνουν τυχαία Απλός έλεγχος αθροίσματος (simple checksum): αθροίζουμε τα ψηφία του μηνύματος και κρατάμε το τελευταίο ψηφίο του αποτελέσματος Εντοπίζεται το πολύ σφάλμα Κλιμακωτός έλεγχος αθροίσματος (staircase checksum): πολλαπλασιάζουμε κάθε ψηφίο του μηνύματος με τη θέση του, αθροίζουμε τα γινόμενα και κρατάμε το τελευταίο ψηφίο του αποτελέσματος Σε συνδυασμό με τον απλό έλεγχο εντοπίζονται το πολύ 2 σφάλματα (στέλνουμε μαζί με κάθε μήνυμα και το απλό και το κλιμακωτό checksum) Σφάλματα προκαλούνται από κακόβουλο αντίπαλο (όχι τυχαία) Κρυπτογραφικές συναρτήσεις κατακερματισμού (cryptographic hash functions) 68

Σύνοψη Εφαρμογές που χρησιμοποιούν κώδικες (δηλ., αλγόριθμους) διόρθωσης σφαλμάτων Συστήματα μνημών συγκεκριμένου τύπου (π.χ., DRAM): κώδικες Hamming CD, DVD, HDD: περίσσεια/κωδικοποίηση, κώδικες Hamming, Reed Solomon, διδιάστατη ισοτιμία (2D parity) / καρφίτσωμα (pinpointing) Ethernet (δικτυακή σύνδεση υπολογιστών): checksum CRC 32 TCP (internet): κρυπτογραφικές συναρτήσεις κατακερματισμού MD5 (4 ψήφιο checksum), SHA (5 ψήφιο checksum), SHA 256 (75 ψήφιο checksum), SHA 52 (5 ψήφιο checksum) Δορυφορική τηλεόραση/διαστημικές επικοινωνίες: κώδικες ελέγχου ισοτιμίας χαμηλής πυκνότητας (low density parity check codes) 69

Σύνοψη Εφαρμογές που χρησιμοποιούν κώδικες (δηλ., αλγόριθμους) διόρθωσης σφαλμάτων κώδικες Hamming περίσσεια/κωδικοποίηση, κώδικες Hamming, Reed Solomon, διδιάστατη ισοτιμία (2D parity) / καρφίτσωμα (pinpointing) checksum CRC 32 κρυπτογραφικές συναρτήσεις κατακερματισμού MD5 (4 ψήφιο checksum), SHA (5 ψήφιο checksum), SHA 256 (75 ψήφιο checksum), SHA 52 (5 ψήφιο checksum) κώδικες ελέγχου ισοτιμίας χαμηλής πυκνότητας (low density paritycheck codes) 7

Τέλος Ενότητας

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. Τίτλος Ενότητας 72

Σημειώματα

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση.. Έχουν προηγηθεί οι κάτωθι εκδόσεις: Τίτλος Ενότητας 74

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Πατρών, Εύη Παπαϊωάννου. «Εισαγωγή στους Αλγόριθμους. Κώδικες διόρθωσης σφαλμάτων». Έκδοση:.. Πάτρα 25. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/culture58/index.php Τίτλος Ενότητας 75

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4. [] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [] http://creativecommons.org/licenses/by nc sa/4./ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος(π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Τίτλος Ενότητας 76

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. Τίτλος Ενότητας 77

Σημείωμα Χρήσης Έργων Τρίτων Το Έργο αυτό κάνει χρήση των ακόλουθων έργων: Εικόνες/Σχήματα/Διαγράμματα/Φωτογραφίες 9 Αλγόριθμοι που άλλαξαν το μέλλον. John MacCormick. Επιστημονική επιμέλεια Ελληνικής έκδοσης: Εύη Παπαϊωάννου. Πανεπιστημιακές Εκδόσεις Κρήτης, 25 (υπό έκδοση). ISBN 978 96 524 444 6. Κωδικός Βιβλίου στον Εύδοξο: 565758. http://www.wikipedia.org Τίτλος Ενότητας 78