32
Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek-Kon Κωνσταντινίδης Νεκτάριος Επιβλέποντες καθηγητές: Σαμαράς Νικόλαος Ευαγγελίδης Γεώργιος Παπαρρίζος Κωνσταντίνος 2008

Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Embed Size (px)

DESCRIPTION

Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος. Επιβλέποντες καθηγητές: Σαμαράς Νικόλαος Ευαγγελίδης Γεώργιος Παπαρρίζος Κωνσταντίνος 2008. Συνοπτική περιγραφή του αλγόριθμου. - PowerPoint PPT Presentation

Citation preview

Page 1: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Πτυχιακή εργασία

Αλγόριθμος Συμπίεσης ΔεδομένωνNek-Kon

Κωνσταντινίδης Νεκτάριος

Επιβλέποντες καθηγητές: Σαμαράς ΝικόλαοςΕυαγγελίδης ΓεώργιοςΠαπαρρίζος Κωνσταντίνος

2008

Page 2: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Συνοπτική περιγραφή του αλγόριθμου

• Η παρούσα εργασία παρουσιάζει και περιγράφει αναλυτικά έναν νέο συνδυασμό αλγόριθμων συμπίεσης με την ονομασία Nek-Kon.

• Ο συνδυασμός Nek-Kon αποτελείται από δύο αλγόριθμους, τον Nek και τον Kon, οι οποίοι είναι μη απωλεστικοί και μπορούν να εφαρμοστούν σε όλα τα είδη δεδομένων που αποθηκεύονται σε δυαδική μορφή (κείμενο, ήχο, εικόνα, video κτλ.).

• Ο αλγόριθμος Nek εφαρμόζεται πρώτος στα δεδομένα. Μετατρέπει την μορφή των δεδομένων σε μια συμπυκνωμένη μορφή με περισσότερα μοτίβα (patterns), συμπιέζοντας ταυτόχρονα.

• Ο αλγόριθμος Kon εφαρμόζεται αμέσως μετά. Ο αλγόριθμος Kon εντοπίζει τα μοτίβα και τα αντικαθιστά με μικρότερες δομές που παρέχουν μεγαλύτερη συμπίεση.

• Ο συνδυασμός των αλγόριθμων Nek-Kon έχει ως στόχο την γρήγορη και καλή συμπίεση δεδομένων όλων των μεγεθών.

Page 3: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Κωδικοποίηση «Elias gamma coding»

• Κατά την εφαρμογή του αλγόριθμου χρησιμοποιείται η κωδικοποίηση «Elias gamma coding». Η κωδικοποίηση αυτή εφαρμόζεται στην αποθήκευση ακέραιων αριθμών σε συμπιεσμένη μορφή.

• Σύμφωνα με την κωδικοποίηση αυτή ένας ακέραιος αριθμός Χ αποθηκεύεται ως αριθμός «gamma» ακολουθώντας τα παρακάτω βήματα:

1. Εύρεση της μεγαλύτερης δύναμης που έχει τιμή μικρότερη ή ίση με Χ.2. Τα πρώτα Ν bit που αποθηκεύουν τον αριθμό Χ είναι άσσοι. Προστίθεται ένα

μηδενικό στο τέλος των άσσων.3. Τέλος, στα επόμενα Ν bit αποθηκεύεται το υπόλοιπο της αφαίρεσης X- .

• Για παράδειγμα ο αριθμός Χ=12 αποθηκεύεται ως αριθμός «gamma» ως εξής:

12= +4= 1110 100 [Ν=3] [Χ- =4]

Page 4: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Nek

• Ο αλγόριθμος Nek ξεκινά σαρώνοντας τα δεδομένα. Κατά την σάρωση αποθηκεύονται σε έναν πίνακα, μικρών διαστάσεων, πληροφορίες που θα χρειαστούν για την μετατροπή των δεδομένων σε μια νέα συμπιεσμένη μορφή με περισσότερα μοτίβα (patterns).

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

Τα στάδια που ακολουθεί ο αλγόριθμος Nek είναι τα εξής:1. Σάρωση των δεδομένων και δημιουργία του πίνακα.2. Επεξεργασία του πίνακα 3. Επιλογή των μεταβολών που θα εφαρμοστούν στα δεδομένα.4. Αποθήκευση των απαραίτητων πληροφοριών που απαιτούνται για την

αποσυμπίεση.5. Μετατροπή των δεδομένων στην νέα τους μορφή.

Page 5: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Nek

• Κατά την σάρωση των δεδομένων δημιουργείται ένας πίνακας ο οποίος περιέχει τις τιμές των μεταβλητών L1, L2 και N. Ο πίνακας είναι ταξινομημένος πρώτα ως προς L1 και ύστερα ως προς L2 σε αύξουσα σειρά.

• Η μεταβλητή L1 αντιπροσωπεύει το μήκος των συνεχόμενων bit με την ίδια τιμή.

• Η μεταβλητή L2 αντιπροσωπεύει το μήκος των συνεχόμενων ίδιων L1. • Η μεταβλητή Ν είναι το πλήθος των συνδυασμών L1-L2 που υπάρχουν στα

δεδομένα.

• Τα μήκη L1 των συνεχόμενων bit με την ίδια τιμή υπολογίζονται ως εξής:

• Στα παραπάνω δεδομένα το πρώτο L1 έχει τιμή δύο, αφού τα bit ξεκινάνε με δύο συνεχόμενους άσσους. Το δεύτερο L1 έχει τιμή πάλι δύο αφού ακολουθούν, μετά το προηγούμενο L1, δύο συνεχόμενα μηδενικά. Η διαδικασία αυτή συνεχίζεται ως το τέλος των δεδομένων βρίσκοντας έτσι τα L1.

Σάρωση των δεδομένων και δημιουργία του πίνακα.

Page 6: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Nek

• Τα μήκη L2 των συνεχόμενων ίδιων L1 υπολογίζονται ως εξής:

• Στα δεδομένα το πρώτο L2 έχει τιμή τρία, αφού τα bit ξεκινάνε με τρία συνεχόμενα L1 με τιμή δύο. Το δεύτερο L2 έχει τιμή τέσσερα αφού ακολουθούν, μετά το προηγούμενο L2, τέσσερα συνεχόμενα L1 με τιμή ένα. Η διαδικασία αυτή συνεχίζεται ως το τέλος των δεδομένων βρίσκοντας έτσι τους συνδυασμούς L1-L2.

• Ο πίνακας των προηγούμενων δεδομένων είναι ο εξής:

Σάρωση των δεδομένων και δημιουργία του πίνακα.

i L1 L2 N

1 1 4 1

2 1 6 1

3 2 1 1

4 2 3 2

Page 7: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Nek

• Η σάρωση ενός αρχείου γίνεται σύμφωνα με το προηγούμενο παράδειγμα, δηλαδή:

Σάρωση των δεδομένων και δημιουργία του πίνακα.

i L1 L2 N

1 1 1 21

2 1 2 9

3 1 3 1

4 2 1 18

5 2 2 11

6 2 3 3

7 3 1 10

8 4 1 4

9 4 2 2

10 5 2 2

11 7 1 1

12 8 2 3

13 9 1 1

14 10 1 1

15 13 1 1

16 18 1 1

17 33 1 1

Page 8: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Nek

• Η επεξεργασία του πίνακα γίνεται με την προσθήκη στηλών. Οι στήλες που προστίθενται είναι οι στήλες FL1, FL2, sortN και Temp. Οι στήλες αυτές είναι απαραίτητες για την πραγματοποίηση των επόμενων βημάτων του αλγόριθμου.

• Η στήλη FL1 περιέχει τα μήκη L1 έτσι ώστε να ξεκινούν από το 1 και να έχουν συνεχόμενες τιμές.

• Η στήλη FL2 περιέχει τα μήκη L2 έτσι ώστε να ξεκινούν από το 1 και να έχουν συνεχόμενες τιμές.

• Η στήλη sortN περιέχει τους δείκτες i, για κάθε συνδυασμό L1-L2, ταξινομημένα ως προς το Ν σε φθίνουσα σειρά. Σε περίπτωση που τα Ν είναι ίσα, τότε ταξινομείται ως προς L1 κατά αύξουσα σειρά. Σε περίπτωση που τα Ν και τα L1 είναι ίσα, τότε ταξινομείται ως προς L2 κατά αύξουσα σειρά.

• Η στήλη Temp περιέχει τιμές που αποθηκεύονται προσωρινά κατά την εφαρμογή μεταβολών στα δεδομένα.

Επεξεργασία του πίνακα

Page 9: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Nek

• Ύστερα από την σάρωση του παραδείγματος και την επεξεργασία του πίνακα, προκύπτει ο παρακάτω πίνακας.

Επεξεργασία του πίνακα

i L1 L2 N FL1 FL2 sortN Temp

1 1 1 21 1 1 1 0

2 1 2 9 1 2 4 0

3 1 3 1 1 3 5 0

4 2 1 18 2 1 7 0

5 2 2 11 2 2 2 0

6 2 3 3 2 3 8 0

7 3 1 10 3 1 6 0

8 4 1 4 4 1 12 0

9 4 2 2 4 2 9 0

10 5 2 2 5 1 10 0

11 7 1 1 6 1 3 0

12 8 2 3 7 1 11 0

13 9 1 1 8 1 13 0

14 10 1 1 9 1 14 0

15 13 1 1 10 1 15 0

16 18 1 1 11 1 16 0

17 33 1 1 12 1 17 0

Page 10: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Nek

• Ύστερα από την σάρωση των δεδομένων, την δημιουργία και την επεξεργασία του πίνακα, επιλέγονται οι μεταβολές που θα υποστούν τα δεδομένα. Οι μεταβολές έχουν ως σκοπό να συμπιέσουν τα δεδομένα και να δημιουργήσουν περισσότερα μοτίβα μέσα σε αυτά.

• Η πρώτη μεταβολή είναι η αντικατάσταση των συνδυασμών L1-L2 με τους συνδυασμούς FL1-FL2. Αυτό επιτυγχάνει πολύ καλή συμπίεση σε δεδομένα όπου τα L1 ή τα L2 δεν είναι συνεχόμενα και εφαρμόζεται πάντα. Με την μεταβολή αυτή οι συνδυασμοί συμπυκνώνονται συμπιέζοντας τα δεδομένα.

• Στο παράδειγμα τα αρχικά δεδομένα είχαν μέγεθος 360 bit. Ύστερα από την εφαρμογή αυτής της μεταβολής τα δεδομένα θα έχουν μήκος 289 bit, όπως φαίνεται παρακάτω.

Πριν την 1η μεταβολή Μετά την 1η μεταβολή

Επιλογή των μεταβολών που θα εφαρμοστούν στα δεδομένα.

Page 11: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Nek

• Η δεύτερη μεταβολή είναι η επιλογή του «σημείου τομής» του πίνακα. • Το σημείο τομής είναι ένα σημείο στην ταξινόμηση ως προς Ν όπου από

εκεί και ύστερα κάθε συνδυασμός FL1-FL2 θεωρείται ίδιος. Η τομή του πίνακα έχει ως σκοπό την δημιουργία μοτίβων καθώς διαφορετικοί σπάνιοι συνδυασμοί FL1-FL2 αντικαθίστανται με τον κοινό συνδυασμό *FL1-*FL2 που είναι πιο συχνός.

• Έτσι με την μεταβολή αυτή δημιουργούνται περισσότερα μοτίβα και συμπιέζονται τα δεδομένα παράλληλα.

• Η τομή του πίνακα προκύπτει ύστερα από υπολογισμούς.• Στην στήλη Temp αποθηκεύονται προσωρινά τιμές που προκύπτουν από

την εφαρμογή της μεθόδου αυτής. Στο τέλος επιλέγεται ως σημείο τομής το i που έχει την μεγαλύτερη τιμή στην στήλη Temp.

• Η εφαρμογή της δεύτερης μεταβολής μπορεί να γίνει με τρεις τρόπους, όπου ο κάθε τρόπος έχει τα ανάλογα αποτελέσματα.

1. Ο «συντηρητικός» τρόπος2. Ο «ριψοκίνδυνος» τρόπος3. Ο «μικτός» τρόπος

Επιλογή των μεταβολών που θα εφαρμοστούν στα δεδομένα.

Page 12: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Nek

• Το σημείο τομής που προκύπτει αν εφαρμοστεί ο «συντηρητικός» τρόπος ονομάζεται Κ1. Το σημείο τομής Κ1 είναι το i με το μεγαλύτερο λ1 στην στήλη Temp. Σε περίπτωση που υπάρχουν πολλά i με το μεγαλύτερο λ1 τότε επιλέγεται το i με το μεγαλύτερο N(sortN(i)).

• Σε περίπτωση που το K1 είναι ίσο με το μεγαλύτερο i στον πίνακα, δηλαδή το n, τότε δεν συμφέρει η εφαρμογή του «συντηρητικού» τρόπου.

• Το μήκος των bit της αρχικής κατάστασης είναι το συνολικό μήκος των δεδομένων σε bit πριν εφαρμοστεί η 2η μεταβολή.

• Το μήκος των bit της δοκιμαστικής κατάστασης είναι το μήκος των δεδομένων αφού έχει εφαρμοστεί η 2η μεταβολή. Είναι το άθροισμα του μήκους των bit που απαιτούνται για την αποθήκευση των συνδυασμών ως το σημείο τομής K, το άθροισμα των bit που απαιτούνται για την αποθήκευση του σημείου τομής, το άθροισμα των bit που απαιτούνται για την αποθήκευση της ταξινόμησης ως προς Ν, το άθροισμα των bit που απαιτούνται για την αποθήκευση των κοινών συνδυασμών *FL1-*FL2 και των αριθμών «gamma» που δείχνουν τι συμβολίζει ο καθένας.

Επιλογή των μεταβολών που θα εφαρμοστούν στα δεδομένα. Ο «συντηρητικός» τρόπος

Page 13: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Nek

• Ο «ριψοκίνδυνος» τρόπος μπορεί να εφαρμοστεί σε δεδομένα όπου είχε εφαρμοστεί ο «συντηρητικός» τρόπος αλλά δεν ήταν ικανοποιητικό το αποτέλεσμα. Ο «ριψοκίνδυνος» τρόπος θα μεγαλώσει το ιστορικό δημιουργώντας όμως πολύ περισσότερες επαναληπτικές δομές στα δεδομένα. Ανάλογα με την δομή των δεδομένων αυτός ο τρόπος ή θα συμπιέσει πολύ καλύτερα τα δεδομένα σε σύγκριση με τον πρώτο τρόπο ή τα τελικά δεδομένα θα είναι μεγαλύτερου μεγέθους από τα αρχικά.

• Το σημείο τομής που προκύπτει αν εφαρμοστεί ο «ριψοκίνδυνος» τρόπος ονομάζεται Κ2. Το σημείο τομής Κ2 είναι το i με το μεγαλύτερο λ2 στην στήλη Temp. Σε περίπτωση που υπάρχουν πολλά i με το μέγιστο λ2 τότε επιλέγεται το i με το μεγαλύτερο Ν(sortN(i)).

• Σε περίπτωση που το K2 είναι ίσο με το μεγαλύτερο i στον πίνακα, δηλαδή το n, τότε δεν συμφέρει η εφαρμογή του «ριψοκίνδυνου» τρόπου.

Επιλογή των μεταβολών που θα εφαρμοστούν στα δεδομένα.Ο «ριψοκίνδυνος» τρόπος

Page 14: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Nek

• Το σημείο τομής K του μικτού τρόπου προκύπτει ύστερα από στρογγυλοποίηση από τον παρακάτω τύπο:

K=K1-(K1-K2)*Χ%

• Το Χ αντιπροσωπεύει το ποσοστό ρίσκου. Όσο μεγαλύτερο είναι το ποσοστό Χ τόσο μεγαλύτερη θα είναι η διαφορά των αρχικών και των τελικών δεδομένων. Όταν αυτή η διαφορά (Χ%) είναι μεγάλη, υπάρχει περίπτωση τα αρχικά δεδομένα είτε να είναι μεγαλύτερα από τα τελικά είτε να είναι πολύ μικρότερα. Όταν η διαφορά αυτή είναι μικρή, τότε κατά πάσα πιθανότητα τα αρχικά δεδομένα θα είναι λίγο μικρότερα από τα αρχικά. Σε περίπτωση που το K είναι ίσο με το μεγαλύτερο i στον πίνακα, δηλαδή το n, τότε δεν συμφέρει η εφαρμογή του μικτού τρόπου.

• Ο αλγόριθμος Nek-Kon κατά την εκτέλεσή του εφαρμόζει τον «μικτό τρόπο». Για αυτό το λόγο πριν εκτελεστεί δηλώνεται το ποσοστό ρίσκου Χ. Αν Χ=0% τότε στην πραγματικότητα εφαρμόζεται ο «συντηρητικός» τρόπος ενώ αν Χ=100% τότε εφαρμόζεται ο «ριψοκίνδυνος».

Επιλογή των μεταβολών που θα εφαρμοστούν στα δεδομένα.Ο «μικτός» τρόπος

Page 15: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Nek

• Οι απαραίτητες πληροφορίες που απαιτούνται για την αποσυμπίεση των δεδομένων στην αρχική τους μορφή είναι τα μήκη L1 και L2.

• Αν έχει εφαρμοστεί η 2η μεταβολή τότε απαιτείται και η αποθήκευση της ταξινόμησης ως προς Ν, το σημείο τομής και οι αριθμοί «gamma». Οι πληροφορίες αυτές αποθηκεύονται ξεχωριστά σε ένα ιστορικό.

Αποθήκευση των απαραίτητων πληροφοριών που απαιτούνται για την αποσυμπίεση.

Page 16: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Nek

• Η μετατροπή των δεδομένων γίνεται σύμφωνα με τον βασικό πίνακα.• Κατά την σάρωση των δεδομένων οι συνδυασμοί L1-L2 αντικαθίστανται

από τους συνδυασμούς FL1-FL2.• Η μετατροπή των δεδομένων του παραδείγματος γίνεται τελικά ως εξής:

Αρχικά δεδομένα:

Τελικά δεδομένα:

Μετατροπή των δεδομένων στην νέα τους μορφή.

Page 17: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Kon

• Ύστερα από την εκτέλεση του αλγόριθμου Nek παραμένουν το ιστορικό, τα δεδομένα που συμπιέστηκαν και οι αριθμοί gamma.

• O αλγόριθμος Kon εκτελείται ακολουθώντας τα παρακάτω βήματα.1. Σάρωση των δεδομένων και δημιουργία πίνακα των πιο συχνών μοτίβων.2. Ταξινόμηση των μοτίβων με βάση την συμπίεση που παρέχουν. Έλεγχος

για σύγκρουση των μοτίβων και δημιουργία του πίνακα ταξινόμησης.3. Αποθήκευση του τελικού ιστορικού.4. Σάρωση των δεδομένων αντικαθιστώντας τα μοτίβα

Page 18: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Kon

• Η σάρωση των δεδομένων και η δημιουργία του πίνακα μοτίβων γίνεται ακολουθώντας τα παρακάτω βήματα.

Α) Καθορισμός των πινάκων που θα χρησιμοποιηθούν

Β) Καθορισμός βασικών μεταβλητών

Γ) Σάρωση των δεδομένων και δημιουργία του πίνακα των μοτίβων.

Σάρωση των δεδομένων και δημιουργία πίνακα των πιο συχνών μοτίβων

Page 19: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Kon

Ο πίνακας των μοτίβων• Τα μοτίβα αποθηκεύονται ως μια ακολουθία από μήκη L1. Ένα παράδειγμα

ενός μοτίβου είναι το 2-3-1, δηλαδή σε bit 110001 ή 001110. • Χρησιμοποιείται ένας πίνακας όπου αποθηκεύονται τα μοτίβα, ο πίνακας

των μοτίβων. • Κάθε στοιχείο του πίνακα μοτίβων έχει την παρακάτω δομή:

Public Structure STRUCTURE_PATTERNPublic BEFORE As IntegerPublic NEXT_PATTERN() As IntegerPublic TIMES As IntegerPublic LENGTH As IntegerPublic IsNOTEdited As BooleanEnd Structure

• Η δομή αυτή αντιστοιχεί σε ένα L1 ενός μοτίβου

Καθορισμός των πινάκων που θα χρησιμοποιηθούν

Page 20: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Kon

Ο πίνακας FIRST_ARRAY• Χρησιμοποιείται και ένας 2ος πίνακας, ο πίνακας FIRST_ARRAY(). Ο πίνακας

αυτός είναι ένας πίνακας διευθύνσεων με μέγεθος MAX στον οποίον αποθηκεύονται οι θέσεις των πρώτων L1 κάθε μοτίβου στον πίνακα των μοτίβων.

• Για παράδειγμα, για το μοτίβο 2-3-1 στο FIRST_ARRAY(2) αποθηκεύεται η θέση της δομής L1=2 στον πίνακα μοτίβων.

Ο πίνακας ΝΕΧΤ• Ο πίνακας NEXT αποθηκεύει τις θέσεις που έχει στον πίνακα των μοτίβων

ένα L1 που διαβάστηκε από τα δεδομένα. Η χρήση του πίνακα NEXT θα εξηγηθεί στην σάρωση των δεδομένων αναλυτικά.

Καθορισμός των πινάκων που θα χρησιμοποιηθούν

Page 21: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Kon

• Ο αλγόριθμος αν ήθελε να συμπιέσει με τον καλύτερο τρόπο, τότε θα έπρεπε να ελέγξει από 1 έως αριθμούς δομών. Όμως, αυτό πολλές φορές δεν είναι εφικτό λόγω περιορισμού μνήμης. Για αυτόν τον λόγο ο χρήστης επιλέγει μέχρι πόση μνήμη Μ (σε ΜΒ) έχει το πρόγραμμα στην διάθεσή του για να εφαρμόσει τον αλγόριθμο Kon.

• Με βάση την μνήμη M που έχει ο αλγόριθμος ορίζονται οι παρακάτω μεταβλητές:

Orio = M * 8000000, Unit = 4 * 32 + ΜΑΧ * 32, LENGTH= , LIMIT=

• Η μεταβλητή Orio είναι το σύνολο των bit που έχει στην διάθεσή του ο αλγόριθμος Kon για την εφαρμογή του.

• Η μεταβλητή Unit είναι το σύνολο των bit που απαιτούνται για την αποθήκευση μιας δομής L1 ενός μοτίβου. Η μεταβλητή MAX είναι το μεγαλύτερο FL1 στον κύριο πίνακα του αλγόριθμου Nek.

• Η μεταβλητή LENGTH είναι το μέγιστο μήκος των δομών L1 που μπορεί να έχει ένα μοτίβο. Τα μοτίβα που ελέγχονται έχουν μήκος μικρότερο ή ίσο με LENGTH.

• Η μεταβλητή LIMIT είναι το μέγεθος του πίνακα μοτίβων που περιέχει τις δομές L1 των μοτίβων.

Καθορισμός βασικών μεταβλητών

Page 22: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Kon

• Η δημιουργία του πίνακα των μοτίβων ακολουθεί τα παρακάτω βήματα:1. Ανάγνωση της δομής L1 από τα δεδομένα.2. Αύξηση του TIMES των μοτίβων που εντοπίστηκαν3. Ανανέωση των διευθύνσεων του πίνακα NEXT

1. Τα δεδομένα σαρώνονται εντοπίζοντας στην σειρά τα διάφορα L1. Για παράδειγμα αν τα δεδομένα ήταν 1001110000 τότε θα σαρώνονταν στην σειρά 1-2-3-4.

2. Αν στις διευθύνσεις του πίνακα NEXT το NEXT_PATTERN(L1) είναι διάφορο του μηδενός τότε αυξάνεται το TIMES της δομής NEXT_PATTERN(L1) στον πίνακα των μοτίβων κατά 1.

3. Η πρώτη διεύθυνση του πίνακα Next παίρνει την τιμή του FIRST_ARRAY(L1). Αν FIRST_ARRAY(L1)=0 τότε δημιουργείται μια νέα δομή στον πίνακα των μοτίβων στην οποία δείχνει το FIRST_ARRAY(L1).Οι υπόλοιπες διευθύνσεις NEXT(i) του πίνακα NEXT παίρνουν την τιμή του NEXT_PATTERN(NEXT(i-1)) ξεκινώντας από το τέλος του πίνακα.Κάθε νέα δομή έχει TIMES=1. Τα NEXT_PATTERN() είναι όλα ίσα με μηδέν. Το BEFORE παίρνει την τιμή της διεύθυνσης του πίνακα NEXT. Το LENGTH παίρνει τιμή το μήκος του μοτίβου.

Σάρωση των δεδομένων και δημιουργία πίνακα των πιο συχνών μοτίβων

Page 23: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Kon

• Η διαδικασία που περιγράφτηκε επαναλαμβάνεται έως ότου διαβαστούν όλα τα δεδομένα.

• Με αυτόν τον τρόπο δημιουργούνται σχέσεις μεταξύ των δομών L1 που δείχνουν ποιο είναι πριν (BEFORE) και ποιο είναι μετά (NEXT_PATTERN). Οι σχέσεις αυτές είναι που δείχνουν ποια είναι τα μοτίβα στον πίνακα των μοτίβων. Ξεκινώντας από τα πρώτα L1 που δείχνουν οι διευθύνσεις του πίνακα FIRST_ARRAY βρίσκουμε τα μοτίβα και πόσες φορές βρέθηκαν.

• Για παράδειγμα για το μοτίβο 2-3-1 κοιτάμε την διεύθυνση FIRST_ARRAY(2). Αν ο πίνακας μοτίβων είναι ο P τότε το L1=2 αντιστοιχεί σε P(FIRST_ARRAY(2)). Για να βρούμε το 2-3 βρίσκουμε την διεύθυνση

Χ=P(FIRST_ARRAY(2)).NEXT_PATTERN(3)

• To TIMES της διεύθυνσης αυτής μας δείχνει πόσες φορές εμφανίστηκε το μοτίβο 2-3 στα δεδομένα. Για να βρούμε το μοτίβο 2-3-1 βρίσκουμε την διεύθυνση P(X).NEXT_PATTERN(1). Το TIMES της διεύθυνσης αυτής μας δείχνει πόσες φορές εμφανίστηκε το μοτίβο 2-3-1 στα δεδομένα.

• Ακολουθώντας τα ίδια βήματα μπορούμε να βρούμε οποιοδήποτε μοτίβο πόσες φορές εμφανίστηκε στα δεδομένα.

Σάρωση των δεδομένων και δημιουργία πίνακα των πιο συχνών μοτίβων

Page 24: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Kon

• Ύστερα από την σάρωση των δεδομένων και την δημιουργία του πίνακα μοτίβων, πρέπει τα μοτίβα να ταξινομηθούν ως προς την συμπίεση που παρέχουν.

• Δημιουργείται ένας νέος πίνακας, ο πίνακας ταξινόμησης, που περιέχει τα καλύτερα μοτίβα. Ο πίνακας ταξινόμησης δημιουργείται ακολουθώντας τα παρακάτω τέσσερα βήματα:

1. Για κάθε μοτίβο εξετάζεται αν αυξάνει ή αν μειώνει το τελικό μέγεθος των δεδομένων η επιλογή του.

2. Από τα μοτίβα που μειώνουν το μέγεθος των δεδομένων επιλέγεται το καλύτερο ως εξής:Από τα μοτίβα που εμφανίζονται περισσότερες φορές από το μήκος τους, επιλέγεται εκείνο με το μεγαλύτερο μήκος L. Έπειτα επιλέγεται από τα μοτίβα που έχουν μεγαλύτερο μήκος από τον αριθμό εμφάνισής τους, εκείνο που εμφανίστηκε τις περισσότερες φορές N. Το τελικό μοτίβο είναι εκείνο με το μεγαλύτερο Ν ή L.

3. Ελέγχεται αν υπάρχει σύγκρουση μεταξύ του μοτίβου που επιλέχθηκε και των μοτίβων του πίνακα μοτίβων. Τα μοτίβα, στον πίνακα των μοτίβων, στα οποία εντοπίζεται σύγκρουση μειώνεται ο αριθμός που εντοπίστηκαν.

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

Ταξινόμηση των μοτίβων με βάση την συμπίεση που παρέχουν. Έλεγχος για σύγκρουση των μοτίβων και δημιουργία του πίνακα ταξινόμησης.

Page 25: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Kon

• Λόγω του ότι το μήκος των μοτίβων είναι μεταβλητό και ο πίνακας περιέχει όλα τα συχνά μοτίβα, μπορεί αρκετά μοτίβα ή να «συγκρούονται». Για παράδειγμα από τα μοτίβα:

2-3-1 και 4-2-3-1-5 και 4-1-2-3

• Το μοτίβο 4-2-3-1-5 «συγκρούεται» με το μοτίβο 2-3-1, και το μοτίβο 2-3-1 με το μοτίβο 4-1-2-3 μπορεί να «συγκρούονται» σε ορισμένες περιπτώσεις όπως αυτή:

…-4-1-2-3-1-…

• Στα μοτίβα που «συγκρούονται» με το μοτίβο που έχει επιλεγεί πρέπει να μειώνεται ο αριθμός των φορών που έχουν εμφανιστεί ώστε να μην υπολογίζεται το ίδιο μοτίβο 2 φορές. Το πρόβλημα αυτό ονομάζεται πρόβλημα «σύγκρουσης».

• Για την αντιμετώπιση του προβλήματος της σύγκρουσης αφού επιλεγεί ένα μοτίβο για τον πίνακα ταξινόμησης, μειώνεται ο αριθμός που εμφανίστηκαν τα μοτίβα του πίνακα σάρωσης που συγκρούονται με αυτό.

Το πρόβλημα της «σύγκρουσης».

Page 26: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Kon

• Το τελικό ιστορικό περιλαμβάνει το ιστορικό του αλγόριθμου Nek, το ιστορικό του αλγόριθμου Kon και τα συμπιεσμένα δεδομένα.

• Το ιστορικό του αλγόριθμου Kon περιλαμβάνει την αποθήκευση των μοτίβων και τους αριθμούς gamma.

• Ύστερα από την εφαρμογή των προηγούμενων βημάτων στον πίνακα των μοτίβων, εντοπίστηκε μόνο ένα μοτίβο, το 4-4.

Αποθήκευση του τελικού ιστορικού.

Page 27: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Kon

• Κατά την διαδικασία αυτή αντικαθιστούνται τα μοτίβα από μια κοινή δομή αντικατάστασης. Η δομή αυτή έχει μήκος MAX+1, όπου MAX το μεγαλύτερο FL1 του κύριου πίνακα του αλγόριθμου Nek.

• Στο παράδειγμα της εργασίας MAX=4 οπότε το μήκος της δομής αντικατάστασης θα είναι L1=5.

• Κατά την σάρωση κάθε φορά που εντοπίζεται ένα μοτίβο αντικαθιστάται από την δομή αντικατάστασης ενώ αποθηκεύεται στο ιστορικό ο αριθμός gamma που αντιπροσωπεύει το είδος του μοτίβου. Ο πρώτος αριθμός gamma αντιστοιχεί στο πρώτο μοτίβο, ο δεύτερος στον δεύτερο κτλ. Στην περίπτωση που είναι μόνο ένα μοτίβο τότε δεν αποθηκεύονται οι αριθμοί gamma.

• Ακολουθούν τα δεδομένα πριν και μετά την εφαρμογή του αλγόριθμου Kon στο παράδειγμα. Παρατηρούμε ότι τα δεδομένα μειώθηκαν κατά 30bit. Αφού στο παράδειγμα μας εντοπίστηκε ένα μόνο μοτίβο δεν θα αποθηκευτούν οι αριθμοί gamma.

Σάρωση των δεδομένων αντικαθιστώντας τα μοτίβα

Page 28: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αλγόριθμος Kon

• Τα δεδομένα πριν την εφαρμογή του αλγόριθμου Kon:

• Τα δεδομένα μετά την εφαρμογή του αλγόριθμου Kon:

Σάρωση των δεδομένων αντικαθιστώντας τα μοτίβα

Page 29: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Αποσυμπίεση

• Κατά την διαδικασία της αποσυμπίεσης δημιουργούνται οι βασικοί πίνακες της συμπίεσης.

• Διαβάζονται στην αρχή τα δεδομένα του αλγόριθμου Nek και δημιουργείται ο βασικός πίνακας.

• Αφού είναι γνωστά από το ιστορικό τα L1, L2, το εάν έχει εφαρμοστεί η 2η μεταβολή, το σημείο τομής και η ταξινόμηση ως προς Ν εύκολα δημιουργείται ο αρχικός πίνακας.

• Ύστερα διαβάζονται τα μοτίβα που είχαν αποθηκευτεί στο ιστορικό. Δημιουργείται ο πίνακας των μοτίβων.

• Τα δεδομένα σαρώνονται και γίνεται αντικατάσταση των δομών με βάση τους πίνακες που έχουν δημιουργηθεί.

• Πρώτα αντικαθιστάται με βάση τους αριθμούς gamma του ιστορικού τα μοτίβα και ύστερα αντικαθιστούνται τα FL1-FL2 του πίνακα Nek με τα αντίστοιχα L1-L2.

Page 30: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Σύγκριση του προγράμματος Nek-Kon με άλλα εμπορικά προγράμματα

• Για την εικόνα “stone20.jpg” με μέγεθος 808.587 byte την καλύτερη συμπίεση έκανε το πρόγραμμα Nek-Kon με 808.534 byte. Επίσης, παρατηρούμε ότι μόνο το πρόγραμμα Nek-Kon μείωσε το μέγεθος του αρχικού αρχείου καθώς τα υπόλοιπα προγράμματα το αύξησαν. Πιθανή αιτία αυτού του φαινομένου είναι το γεγονός ότι το αρχείο είναι ήδη συμπιεσμένο σε μορφή jpg.

Μέγεθος σε byte

Χρόνος σε sec

Αρχικά δεδομένα

808.587

Μετά από τον Nek-Kon

808.534 3654

Μετά από το WinRar

808.657 1

Μετά από το WinZip

808.601 1

Μετά από το 7-zip

815.134 2

Page 31: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

• Το αρχείο “Visual3D.EngineMedia.dll” έχει μέγεθος 16.384 byte και συμπιέστηκε καλύτερα από το πρόγραμμα WinRar με 1.052 byte.

Μέγεθος σε byte

Χρόνος σε sec

Αρχικά δεδομένα

16.384

Μετά από τον Nek-

Kon1.328 3

Μετά από το WinRar

1.052 1

Μετά από το WinZip

1.144 1

Μετά από το 7-zip

1.062 1

Σύγκριση του προγράμματος Nek-Kon με άλλα εμπορικά

προγράμματα

Page 32: Πτυχιακή εργασία Αλγόριθμος Συμπίεσης Δεδομένων Nek - Kon Κωνσταντινίδης Νεκτάριος

Σύγκριση του προγράμματος Nek-Kon με άλλα εμπορικά

προγράμματα • Ο ήχος “rkflood01c.mp3” έχει μέγεθος 53.289 byte και συμπιέστηκε

καλύτερα από το πρόγραμμα WinZip με 52.798 byte.

Μέγεθος σε byte

Χρόνος σε sec

Αρχικά δεδομένα

53.289

Μετά από τον Nek-

Kon52.804 208

Μετά από το WinRar

52.881 1

Μετά από το WinZip

52.798 1

Μετά από το 7-zip

53.113 1