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



Σχετικά έγγραφα
Εισαγωγή στους Αλγόριθμους

Χρήστος Ξενάκης. Πανεπιστήμιο Πειραιώς, Τμήμα Ψηφιακών Συστημάτων

Μέθοδοι Ελέγχου Σφαλμάτων

Δίκτυα Απευθείας Ζεύξης

Ένα αναλογικό σήμα περιέχει άπειρες πιθανές τιμές. Για παράδειγμα ένας απλός ήχος αν τον βλέπαμε σε ένα παλμογράφο θα έμοιαζε με το παρακάτω:

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

Τεχνικές διόρθωσης και ανίχνευσης σφαλµάτων

Θεωρία Πληροφορίας. Διάλεξη 7: Κωδικοποίηση καναλιού με γραμμικούς κώδικες block. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

Αριθμητική Ανάλυση & Εφαρμογές

Δίκτυα Απευθείας Ζεύξης. Επικοινωνία µεταξύ δύο υπολογιστών οι οποίοι είναι απευθείας συνδεδεµένοι.

Δραστηριότητες σχετικά με κρυπτογραφία και ελέγχους ισοτιμίας

Λειτουργικά Συστήματα (ΗΥ321)

Κατακερματισμός (Hashing)

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

Συνοπτική Μεθοδολογία Ασκήσεων Κεφαλαίου 7. Ασκήσεις στο IP Fragmentation

Τηλεπικοινωνιακά Συστήματα ΙΙ

ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

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

Μια από τις σημαντικότερες δυσκολίες που συναντά ο φυσικός στη διάρκεια ενός πειράματος, είναι τα σφάλματα.

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ: ΑΝΙΧΝΕΥΣΗ ΣΦΑΛΜΑΤΩΝ ΣΕ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΔΙΚΤΥΑ

Θεωρία Πληροφορίας. Διάλεξη 10: Κωδικοποίηση καναλιού με συνελικτικούς κώδικες. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

Ενότητα 3. Στρώµα Ζεύξης: Αρχές Λειτουργίας & Το Υπόδειγµα του Ethernet

Γνωστό: P (M) = 2 M = τρόποι επιλογής υποσυνόλου του M. Π.χ. M = {A, B, C} π. 1. Π.χ.

Τετάρτη 5-12/11/2014. ΣΗΜΕΙΩΣΕΙΣ 3 ου και 4 ου ΜΑΘΗΜΑΤΟΣ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΡΧΙΤΕΚΤΟΝΙΚΗ Η/Υ Α ΕΞΑΜΗΝΟ

Βασικές λειτουργίες Ανίχνευση πλαισίων Τι κάνει το επίπεδο ζεύξης Χρησιμοποιεί τις υπηρεσίες του φυσικού επιπέδου, ήτοι την (ανασφαλή) μεταφορά δεδομέ

Πρωτόκολλα Διαδικτύου

EE728 (22Α004) - Προχωρημένα Θέματα Θεωρίας Πληροφορίας 3η σειρά ασκήσεων Διακριτά και Συνεχή Κανάλια. Παράδοση: Έως 22/6/2015

Επίπεδο ύνδεσης Δεδομένων (Data Link Layer DLL)

Κ15 Ψηφιακή Λογική Σχεδίαση 2: Δυαδικό Σύστημα / Αναπαραστάσεις

6η Δραστηριότητα. Ναυμαχία Αλγόριθμοι αναζήτησης. Περίληψη. Αντιστοιχία με το σχολικό πρόγραμμα * Ικανότητες. Ηλικία. Υλικά

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Αναπαράσταση Αριθμών

3/40. (acknowledged connectionless), (acknowledged connection oriented) 4/40

Διακριτά Μαθηματικά. Απαρίθμηση: Εισαγωγικά στοιχεία Αρχή του Περιστεριώνα

Πρόσθεση, αφαίρεση και πολλαπλασιασμός φυσικών αριθμών

Αναπαράσταση Δεδομένων (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Χρήστος Ξενάκης. Πανεπιστήμιο Πειραιώς, Τμήμα Ψηφιακών Συστημάτων

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια

ΚΕΦΑΛΑΙΟ 4. Τεχνική Ανίχνευσης του. Πτυχιακή Εργασία Σελίδα 95

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Κινητές Επικοινωνίες & Τηλεπικοινωνιακά Δίκτυα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Τμήμα Μηχανικών Η/Υ και Πληροφορικής

Συνδυαστικά Λογικά Κυκλώματα

Απαρίθμηση: Εισαγωγικά στοιχεία

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

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Ψευδοκώδικας. November 7, 2011

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Κινητές επικοινωνίες. Κεφάλαιο 6 Τεχνικές πoλυπλεξίας - CDMA

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Μάθημα Εισαγωγή στις Τηλεπικοινωνίες Κωδικοποίηση πηγής- καναλιού Μάθημα 9o

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Κεφάλαιο 7.3. Πρωτόκολλο TCP

Μέρος Β - Δίκτυα. Ασκήσεις I. Ποιος ο ρόλος του πομπού και του δέκτη στο μοντέλο επικοινωνίας που α- πεικονίζεται στο σχήμα που ακολουθεί; Μ Δεδομένα

Υπολογιστές και Πληροφορία 1

7ο ΕΡΓΑΣΤΗΡΙΟ AAAABBBBAAAAABBBBBBCCCCCCCCCCCCCCBBABAAAABBBBBBCCCCD

Πληροφορική 2. Αλγόριθμοι

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. 5 ο Μάθημα. Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ. url:

Φυσική για Επιστήμονες και Μηχανικούς. Εισαγωγή Φυσική και μετρήσεις

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης;

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Αναπαράσταση Αριθμών

Πρωτόκολλα Διαδικτύου

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ

ΚΕΦΑΛΑΙΟ 2 ΔΙΑΤΑΞΕΙΣ, ΜΕΤΑΘΕΣΕΙΣ, ΣΥΝΔΥΑΣΜΟΙ

Χρήστος Ξενάκης. Πανεπιστήμιο Πειραιώς, Τμήμα Ψηφιακών Συστημάτων

Κωδικοποίηση Πηγής. Η λειτουργία ενός συστήματος επικοινωνίας (γενικό διάγραμμα):

ΚΕΦΑΛΑΙΟ 7 ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΙ ΜΕΤΑΔΟΣΗ ΨΗΦΙΑΚΩΝ ΔΕΔΟΜΕΝΩΝ

Οι Φυσικοί Αριθμοί. Παρατήρηση: Δεν στρογγυλοποιούνται αριθμοί τηλεφώνων, Α.Φ.Μ., κωδικοί αριθμοί κλπ. Πρόσθεση Φυσικών αριθμών

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. Συναρτήσεις Κατακερματισμού

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο

Δομές Δεδομένων και Αλγόριθμοι

0,00620 = 6, ΣΗΜΑΝΤΙΚΑ ΨΗΦΙΑ. Γενικοί Κανόνες για τα Σημαντικά Ψηφία

Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε.

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

a. b. c. d ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Κωδικοποίηση Πηγής. Δρ. Α. Πολίτης

Εισαγωγή στην επιστήμη των υπολογιστών. Πράξεις με μπιτ

Πώς λειτουργεί το Google?

Γράψτε ένα πρόγραμμα που θα προσομοιώνει τη ρίψη ενός νομίσματος και θα εμφανίζει στην οθόνη Κορώνα» ή «Γράμματα».

ΠΕΡΙΕΧΟΜΕΝΑ 1 ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ ΑΚΟΛΟΥΘΙΕΣ ΑΡΙΘΜΩΝ EΞΙΣΩΣΕΙΣ...47 ΠΡΟΛΟΓΟΣ... 9

8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές

Θεωρία Πληροφορίας. Διάλεξη 4: Διακριτή πηγή πληροφορίας χωρίς μνήμη. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

Αρχιτεκτονική Μηχανής. Αποθήκευση εδοµένων

Συνοπτική Μεθοδολογία Ασκήσεων IP Fragmentation. Ασκήσεις στο IP Fragmentation

Nέες Τεχνολογίες. στις Επικοινωνίες

Κεφάλαιο 3 Πολυπλεξία

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Πολλαπλασιασμός: αλγόριθμος

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Αλγόριθμος. Αλγόριθμο ονομάζουμε τη σαφή και ακριβή περιγραφή μιας σειράς ξεχωριστών οδηγιών βημάτων με σκοπό την επίλυση ενός προβλήματος.

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Δ ΕΣΠΕΡΙΝΩΝ

Transcript:

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

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

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

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

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

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

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

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

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

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

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

Η ιδέα της επανάληψης (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 που είναι η σωστή 2

Η ιδέα της επανάληψης (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 3

Η ιδέα της επανάληψης (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 4

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

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

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

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

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

Η ιδέα της περίσσειας (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 αναπαριστούν κάποιον αριθμό αλλά ένα από τα ψηφία έχει αλλαχτεί, δεν έχουμε τρόπο να γνωρίζουμε ποιος ήταν ο αρχικός αριθμός, γιατί δεν έχει προστεθεί συμπληρωματική πληροφορία στο μήνυμα 2

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

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

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

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

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

(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 26

(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 = 27

(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 = 28

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

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

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

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

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

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

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

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

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

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

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

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

Η ιδέα του ελέγχου κλιμακωτού αθροίσματος (checksum) Λύση: βελτιώνουμε ελαφρώς την ιδέα και ορίζουμε έναν νέο τύπο ελέγχου αθροίσματος που καλείται έλεγχος κλιμακωτού αθροίσματος ( staircase checksum) Φανταζόμαστε ότι ανεβαίνουμε μία σκάλα (κλίμακα) όταν υπολογίζουμε το αποτέλεσμα του ελέγχου αθροίσματος: κάθε σκαλοπάτι είναι αριθμημένο με τους αριθμούς,2,3, κ.τ.λ. Υπολογίζουμε το staircase checksum ως εξής: προσθέτουμε τα ψηφία του μηνύματος (όπως πριν), αλλά κάθε ψηφίο πολλαπλασιάζεται με τον αριθμό του σκαλοπατιού στο οποίο βρίσκεται (κάθε ψηφίο βρίσκεται σε άλλο σκαλοπάτι) στο τέλος κρατάμε μόνο το τελευταίο ψηφίο του αποτελέσματος (όπως πριν) Παράδειγμα: αν το αρχικό μήνυμα είναι 4 6 7 5 6 το staircase checksum του 46756 είναι το 7: (x4)+(2x6)+(3x7)+(4x5)+(5x6)=4+2+2+2+3=87 4

Σύγκριση ελέγχου απλού και κλιμακωτού αθροίσματος Απλό 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 42

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

Η ιδέα του ελέγχου αθροίσματος (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 44

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

Η ιδέα του ελέγχου αθροίσματος (checksum) Η βασική ιδέα του ελέγχου αθροίσματος που περιγράψαμε παράγει μόνο 2 ψηφία checksum (τα ψηφία ελέγχου απλού και κλιμακωτού αθροίσματος) αλλά τα πραγματικά checksums περιέχουν πολύ περισσότερα ψηφία γύρω στα 5 Ο αριθμός των ψηφίων στο checksum (είτε 2 είτε περίπου 5) είναι προκαθορισμένος για κάθε σχετικό αλγόριθμο και φυσικά μπορούν να γίνουν όσο πολλά θέλουμε και να παραμένουν πολύ λίγα σε σχέση με το μήκος του αντίστοιχου μηνύματος Υποθέστε ότι χρησιμοποιούμε ένα checksum των ψηφίων για να διαπιστώσουμε την ορθότητα μετάδοσης ενός πακέτου λογισμικού μεγέθους 2 megabytes που κατεβάσαμε από το web Το checksum είναι μικρότερο από το / του % του μεγέθους του πακέτου λογισμικού το επίπεδο του overhead είναι προφανώς αποδεκτό! Αποδεικνύεται με μαθηματικά ότι η πιθανότητα αποτυχίας εντοπισμού λάθους όταν χρησιμοποιούμε checksum αυτού του μεγέθους είναι τόσο πολύ μικρή που πρακτικά μπορεί να θεωρηθεί!! 46

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διόρθωση και ανίχνευση σφαλμάτων στην πράξη Η δουλειά του Shannon τοποθέτησε τους κώδικες Hamming σε ένα ευρύ θεωρητικό πλαίσιο και έθεσε τις βάσεις για σημαντική περαιτέρω πρόοδο Οι κώδικες Hamming χρησιμοποιούνταν από τους πρώτους υπολογιστές και χρησιμοποιούνται ακόμα ευρέως σε συστήματα μνημών συγκεκριμένων τύπων Μια άλλη σημαντική οικογένεια κωδίκων είναι οι κώδικες Reed- Solomon που: Μπορούν να προσαρμοστούν για να διορθώνουν μεγάλο αριθμό σφαλμάτων ανά κωδική λέξη (σε αντίθεση με τον (7,4) κώδικα Hamming που μπορεί να διορθώσει μόνο ένα λάθος σε κάθε 7-ψήφια κωδική λέξη) Βασίζονται σε ένα μαθηματικό πεδίο που καλείται Άλγεβρα Πεπερασμένου Χώρου αλλά πρακτικά μπορούμε να τους φανταζόμαστε σα συνδυασμό των χαρακτηριστικών των ιδεών του κλιμακωτού ελέγχου αθροίσματος (staircase checksum) και του διδιάστατου καρφιτσώματος (two-dimensional pinpoint) Χρησιμοποιούνται σε CD, DVD και σκληρούς δίσκους υπολογιστών 6

Διόρθωση και ανίχνευση σφαλμάτων στην πράξη Οι έλεγχοι αθροίσματος (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 ψηφία) 62

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

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

Σύνοψη Εφαρμογές που χρησιμοποιούν κώδικες (δηλ., αλγόριθμους) διόρθωσης σφαλμάτων Συστήματα μνημών συγκεκριμένου τύπου (π.χ., 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) 65

Σύνοψη Εφαρμογές που χρησιμοποιούν κώδικες (δηλ., αλγόριθμους) διόρθωσης σφαλμάτων κώδικες 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 parity-check codes) 66