6 Κώδικες µεταβλητού µήκους Στο κεφάλαιο αυτό µελετώνται οι κώδικες µεταβλητού µήκους, στους οποίους όλες οι λέξεις δεν έχουν το ίδιο µήκος και δίνονται οι µέ- ϑοδοι Fano-Shannon και Huffman για την κατασκευή τέτοιων κωδίκων. Οι κώδικες αυτοί χρησιµοποιούνται στις περιπτώσεις στις οποίες υπάρχει κάποια γνώση για την πιθανότητα εµφάνισης των συµβόλων µίας πηγής.
Κώδικες µεταβλητού µήκους 6.1 Μέθοδοι κωδικοποίησης Η ειδική περίπτωση αποδοτικού κώδικα που αναφέρθηκε στην πα- ϱάγραφο 4.8 του κεφαλαίου Κώδικες, δίνει µόνο τα µήκη των κωδικών λέξεων και όχι τον τρόπο κατασκευής ενός συµπαγούς και στιγµιαίου κώδικα. Στη συνέχεια ϑα περιγραφούν οι µέθοδοι Fano- Shannon και Huffman µε τη ϐοήθεια των οποίων κατασκευάζονται συµπαγείς και στιγµιαίοι κώδικες. 6.2 Μέθοδος Fano-Shannon Η µέθοδος αυτή προτάθηκε για πρώτη ϕορά από τους Shannon και Weaver το 1940 και τροποποιήθηκε αργότερα από το Fano το 1961. Τα ϐήµατα που ακολουθούνται στη µέθοδο αυτή είναι τα εξής 1. Διατάσσουµε το σύνολο των συµβόλων σε ϕθίνουσα διάταξη, σύµφωνα µε τις πιθανότητές τους. 2. Χωρίζουµε το σύνολο των συµβόλων σε δύο υποσύνολα, πηγαίνοντας από την αρχή προς το τέλος, έτσι ώστε το άθροισµα των πιθανοτήτων σε κάθε υποσύνολο να είναι το ίδιο ή σχεδόν το ίδιο. 3. Σε κάθε υποσύνολο αντιστοιχούµε ένα κωδικό χαρακτήρα 0 και 1 ή 1 και 0. 4. Επαναλαµβάνουµε τη διαδικασία που περιγράψαµε σε κάθε υποσύνολο. Η κωδική λέξη κάθε συµβόλου, προκύπτει διαβάζοντας τις ακολου- ϑίες των ψηφίων 0 και 1 από τα δεξιά προς κάθε ένα σύµβολο. Τα επόµενα παραδείγµατα ϐοηθούν στην πλήρη κατανόηση της µεθόδου. 134
Μέθοδος Fano-Shannon Παραδείγµατα 1 Εστω x 1, x 2, x 3, x 4, x 5 τα σύµβολα µίας πηγής µε πιθανότητες 0.5, 0.2, 0.1, 0.1, 0.1. Να ευρεθεί συµπαγής και στιγµιαίος κώδικας µε τη µέθοδο του Fano-Shannon και τα µεγέθη L, H και Ε. L = 5 p i l i = 0.5 1 + 0.2 3 + 0.1 3 3 = 2bits 5 H = p i logp i = 1.96 bits/symbol E = H L = 0.98 Παρατηρούµε ότι µε τη µέθοδο Fano-Shannon τα σύµβολα µε µεγάλες πιθανότητες κωδικοποιούνται µε µικρές κωδικές λέξεις 2 Εστω τα σύµβολα x 1, x 2, x 3, x 4, x 5, x 6, x 7, x 8, µε αντίστοιχες πι- ϑανότητες 0.35, 0.15, 0.15, 0.13, 0.12, 0.06, 0.03, 0.01. Να ευ- ϱεθεί συµπαγής και στιγµιαίος κώδικας µε τη µέθοδο του Fano- 135
Κώδικες µεταβλητού µήκους Shannon 6.3 Μέθοδος Huffman Τα ϐήµατα της µεθόδου αυτής, η οποία προτάθηκε από τον Huffman το 1958, είναι τα εξής 1. Διατάσσουµε τα σύµβολα της πηγής σε ϕθίνουσα διάταξη σύµ- ϕωνα µε τις πιθανότητές τους. 2. Αντικαθιστούµε τα δύο τελευταία σύµβολα µε ένα σύµβολο του οποίου δείκτης είναι οι δείκτες των συµβόλων που αντικαθιστά ενώ η πιθανότητά του είναι το άθροισµα των πιθανοτήτων των συµβόλων από τα οποία προέκυψε. 3. Στα σύµβολα που αντικαταστάθηκαν αντιστοιχούµε τους κωδικούς χαρακτήρες 0 και 1 ή 1 και 0. 136
Μέθοδος Huffman 4. Επαναλαµβάνουµε τη διαδικασία που περιγράψαµε. Η κωδική λέξη κάθε συµβόλου προκύπτει διαβάζοντας από τα δεξιά προς κάθε ένα σύµβολο, παίρνοντας τον αντίστοιχο κωδικό χαρακτήρα όπου υπάρχει δείκτης του κωδικοποιούµενου συµβόλου. Το επόµενο παράδειγµα ϐοηθάει στην πλήρη κατανόηση της µεθόδου. Παράδειγµα Να ευρεθεί ένας συµπαγής και στιγµιαίος κώδικας µε τη µέθοδο Huffman και τα µεγέθη Η, L και Ε για το παράδειγµα 1. Κώδικας : x 1 0 x 2 11 x 3 101 x 4 1000 x 5 1001 L = 5 p i l i = 0.5 1 + 0.2 2 + 0.1 3 + 0.1 4 + 0.1 4 = 2bits H = 5 p i logp i = 1.96 bits E = H/L = 0.98 137
Κώδικες µεταβλητού µήκους Παρατηρούµε ότι ο κώδικας που προέκυψε είναι διαφορετικός από αυτόν της µεθόδου Fano Shannon αλλά και οι δύο κώδικες έχουν την ίδια απόδοση. Γενικά η εύρεση αποδοτικότερου κώδικα µε τη µέθοδο του Huffman γίνεται ϕανερή σε πολυπλοκότερα συστήµατα. Είναι προφανές ότι για την κατασκευή κωδίκων για πηγές µεγάλων αλφαβήτων είναι απαραίτητη η χρήση υπολογιστών. Εφαρµογές Τα παραδείγµατα που ακολουθούν εκτός του ότι ϐοηθούν στην εµπέδωση των µεθόδων που προτάθηκαν από τους Fano Shannon και Huffman, δείχνουν και την ευρύτητα του ϕάσµατος των εφαρ- µογών των κωδίκων µεταβλητού µήκους. 1 Οι κατηγορίες και το πλήθος των οχηµάτων που περνούν από ένα σηµείο του δρόµου πρόκειται να καταχωρηθούν αυτόµατα σε ένα µαγνητικό µέσο. Ενας δυαδικός κωδικός αντιστοιχεί στην κάθε κατηγορία οχήµατος της αντίστοιχης κατηγορίας. Η µέση ϱοή των οχηµάτων ανά ώρα είναι n 1 = 500 n 4 = 50 n 7 = 25 n 2 = 200 n 5 = 50 n 8 = 25 n 3 = 100 n 6 = 50 Σύµφωνα µε τη µέθοδο Fano Shannon έχουµε 138
Μέθοδος Huffman L = 8 p i l i = 1 0.5 + 3 0.2 + 3 0.2 + (4 0.05) 3 + (5 0.025) 2 = 2.25 bits 8 H = p i logp i = 2.21 bits 2 Δίνεται το αλφάβητο n 1, n 2, n 3, n 4, n 5, n 6 µε αντίστοιχες πιθανότητες εµφάνισης των γραµµάτων 0.35, 0.20, 0.15, 0.13, 0.10, 0.07. Να κατασκευασθεί ένας αποδοτικός κώδικας µε τη µέθοδο του Huffman 139
Κώδικες µεταβλητού µήκους Κώδικας n 1 = 00 n 2 = 10 n 3 = 010 n 4 = 011 n 5 = 110 n 6 = 111 L = 6 p i l i = 2.49 bits H = 6 p i logp i = 2.45 bits E = H L = 0.94 3 Γενικά υπάρχει ένας παραλληλισµός µεταξύ κωδίκων και ερωτη- µατολογίων. Ετσι σε κάθε ερωτηµατολόγιο αντιστοιχεί ένας κώδικας και αντίστροφα κάθε κώδικας µπορεί να ξαναγραφεί ως ένα ερωτη- µατολόγιο. Εστω το ακόλουθο ερωτηµατολόγιο στο οποίο έχουµε 8 δυνατότητες για µία άγνωστη οντότητα και δύο απαντήσεις σε κάθε ερώτηση (ΝΑΙ-ΟΧΙ). 140
Μέθοδος Huffman Αν αντικαταστήσουµε το ΝΑΙ µε 1, το ΟΧΙ µε 0 και το ή µε ν έχουµε Στο οποίο αντιστοιχεί ο παρακάτω κώδικας n 1 11 n 2 10 n 3 011 n 4 010 n 5 0011 n 6 0010 n 7 0001 n 8 0000 141
Κώδικες µεταβλητού µήκους Αντίστροφα, έστω ο δυαδικός κώδικας : n 1 11 n 2 00 n 3 101 n 4 100 n 5 011 n 6 0101 n 7 01001 n 8 01000 Το αντίστοιχο ερωτηµατολόγιο είναι το ακόλουθο Το αλφάβητο των συµβόλων αντιστοιχεί στις πιθανές τιµές της οντότητας για την οποία πραγµατοποιείται η έρευνα. Οι πιθανότητες p i των συµβόλων, αντιστοιχούν στις a priori πιθανότητες των πιθανών τιµών της άγνωστης οντότητας. Το σύνολο των κωδικών χαρακτή- ϱων αντιστοιχεί στις απαντήσεις για τα αντικείµενα που ερευνώνται. Επίσης, το µέσο µήκος του κώδικα p i l i ϑα αντιστοιχεί στο µέσο αριθµό ερωτήσεων. i Εποµένως η ϑεωρία κωδίκων σε αθόρυβο δίαυλο και η µεθοδολογία κατασκευής ερωτηµατολογίων έχουν τον εξής κοινό στόχο : Την κατασκευή οικονο- µικών κωδίκων µε µικρό µέσο µήκος ή την κατασκευή ερωτηµατο- 142
Κωδικοποίηση ανά οµάδες λογίων µε µικρό µέσο αριθµό ερωτήσεων αντίστοιχα. Με άλλα λόγια, αν έχουµε ένα σύνολο πιθανών τιµών µίας οντότητας την οποία διερευνούµε, ένα σύνολο πιθανών απαντήσεων και τις πιθανότητες p i, (i = 1, 2,.., n) των τιµών της οντότητας, µπορούµε να ϐρούµε ένα αποδοτικό κώδικα χρησιµοποιώντας τη µέθοδο Fano-Shannon ή τη µέθοδο Huffman και στη συνέχεια να µετατρέψουµε τον κώδικα σε µορφή ερωτηµατολογίου. 6.4 Κωδικοποίηση ανά οµάδες Η αύξηση της απόδοσης κώδικα µπορεί να επιτευχθεί αν αντί για τα ίδια τα σύµβολα µίας πηγής κωδικοποιούµε οµάδες 2,3,..., συµ- ϐόλων. Για την κατασκευή των κωδικών λέξεων αυτών των οµάδων χρησιµοποιούµε τις µεθόδους Fano-Shannon και Huffman. Οι πι- ϑανότητες των νέων συµβόλων (οµάδων) όταν αυτές είναι ανεξάρτητες µεταξύ τους ϑα είναι το γινόµενο των πιθανοτήτων των συµβόλων α- πό τα οποία συνίσταται η οµάδα. Στην περίπτωση που τα αρχικά σύµβολα δεν είναι ανεξάρτητα οι πιθανότητες των οµάδων των συµ- ϐόλων υπολογίζονται λαµβάνοντας υπόψη την αλληλεξάρτηση που υπάρχει µεταξύ τους. Παράδειγµα Μία πηγή πληροφοριών παράγει µία ακολουθία από τρία α- νεξάρτητα σύµβολα µε πιθανότητες 0.8,0.15 και 0.05 αντίστοιχα. Εκατό τέτοια σύµβολα παράγονται ανά δευτερόλεπτο. Οι πληροφο- ϱίες µεταβιβάζονται δια µέσου ενός αθόρυβου δυαδικού διαύλου ο οποίος µπορεί να µεταβιβάζει 100 bits/sec. Να κατασκευασθεί ένας συµπαγής και στιγµιαίος κώδικας και να ευρεθούν οι πιθανότητες των παραγοµένων bits της εξόδου. Η εντροπία της πηγής είναι H = p i logp i = 0.884 Εποµένως το ποσοστό παραγωγής της πηγής είναι 88.4bits/sec δηλαδή µικρότερο από τη χωρητικότητα (µέγιστη µεταβιβαζόµενη 143
Κώδικες µεταβλητού µήκους πληροφορία) του διαύλου. Κωδικοποιώντας τα σύµβολα α,β,γ έχου- µε L 1 = i p i l i = 1 0.8 + 2 0.15 + 2 0.05 = 1.2 E 1 = H = 0.72 L 1 και το ποσοστό της πηγής ϑα είναι 120 bits/sec, δηλαδή µεγαλύτερο από τη χωρητικότητα του διαύλου. Εποµένως είναι αναγκαία η κωδικοποίηση ανά οµάδες των δύο συµβόλων, οπότε έχουµε 144
Κωδικοποίηση ανά οµάδες L 2 = i p i l i = 1.865 ανά Ϲεύγος=0.9325 bits/σύµβολο και το ποσοστό της πηγής ϑα είναι 93.25, δηλαδή µικρότερο της χωρητικότητας του διαύλου. E 2 = H L 2 = 0.93 = 93% Οι πιθανότητες των κωδικών χαρακτήρων 0 και 1 σε µία ακολουθία εξόδου ϑα είναι p(0) p(1) = 0.64 1 + 0.12 2 + 0.04 3 + 0.0225 1 + 0.075 2 0.12 3 + 0.04 7 + 0.0225 2 + 0.0075 11 + 0.0025 7 = 1.028 0.85 Επιπλέον p(0) + p(1) = 1 οπότε p(0) = 0.547, p(1) = 0.453 Η εντροπία της ακολουθίας εξόδου ϑα είναι H = p i logp i = 0.993 bits και το πραγµατικό ποσοστό πληροφορίας ϑα είναι H L 2 100 = 0.993 0.9325 100 = 92.6 bits/sec το οποίο πλησιάζει το ποσοστό εισόδου, καθώς η απόδοση αυξάνεται και γίνεται ίσο µε αυτό της ιδανικής κωδικοποίησης, δηλαδή όταν p(0) = p(1), γεγονός για το οποίο απαιτείται κωδικοποίηση ανά µεγαλύτερες κωδικές οµάδες. 145