λογισμικό

Γνώση Υπολογιστών >> λογισμικό >  >> Συμπίεση δεδομένων

Πώς είναι συμπιεσμένα και αποσυμπιεσμένα μεγάλα αρχεία;

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

Τεχνικές συμπίεσης:

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

* συμπίεση με βάση το λεξικό (LZ77, LZ78, LZW): Αυτοί οι αλγόριθμοι αναγνωρίζουν επαναλαμβανόμενες ακολουθίες bytes (ή χαρακτήρες) εντός των δεδομένων και αντικαθιστούν τις με μικρότερες αναφορές. Σκεφτείτε το σαν να δημιουργείτε ένα λεξικό κοινών φράσεων και να χρησιμοποιείτε κωδικούς για να τις αντιπροσωπεύετε. Παραδείγματα περιλαμβάνουν GZIP και ZIP (τα οποία συχνά χρησιμοποιούν συνδυασμό μεθόδων).

* κωδικοποίηση Huffman: Αυτή η στατιστική μέθοδος αποδίδει μικρότερους κωδικούς σε πιο συχνή σύμβολα (bytes ή χαρακτήρες) και μεγαλύτερους κωδικούς σε λιγότερο συχνές. Είναι πολύ αποτελεσματικό για αρχεία κειμένου όπου ορισμένοι χαρακτήρες εμφανίζονται πολύ πιο συχνά από άλλους.

* Αριθμητική κωδικοποίηση: Παρόμοια με την κωδικοποίηση Huffman, αλλά αντί να εκχωρηθεί κωδικούς σταθερού μήκους, εκχωρεί κλασματικούς κώδικες, οδηγώντας σε ελαφρώς καλύτερους λόγους συμπίεσης.

* Μετασχηματισμός Burrows-Wheeler (BWT): Αυτή η τεχνική αναδιατάζει τα δεδομένα για τη βελτίωση της αποτελεσματικότητας άλλων μεθόδων συμπίεσης όπως η κωδικοποίηση μήκους λειτουργίας (RLE). Χρησιμοποιείται συχνά σε συνδυασμό με τον μετασχηματισμό μετακίνησης προς προνομιούχο (MTF) και την κωδικοποίηση Huffman (όπως φαίνεται στο BZIP2).

* Μίξη περιβάλλοντος: Αυτή είναι μια πιο προηγμένη τεχνική όπου ο αλγόριθμος συμπίεσης λαμβάνει υπόψη το πλαίσιο που περιβάλλει κάθε byte/χαρακτήρα κατά την επιλογή ενός κώδικα. Αυτό βοηθά στην εκμετάλλευση σύνθετων απολύσεων που μπορεί να χάσουν άλλες μέθοδοι.

* συμπίεση απώλειας: Αυτός ο τύπος συμπίεσης θυσιάζει ορισμένα δεδομένα προκειμένου να επιτευχθούν υψηλότεροι λόγοι συμπίεσης. Είναι αποδεκτό για δεδομένα όπου μια μικρή απώλεια ποιότητας είναι ανεκτή (π.χ. εικόνες, ήχος, βίντεο). Οι συνήθεις μέθοδοι περιλαμβάνουν:

* jpeg (εικόνες): Χρησιμοποιεί το διακριτό μετασχηματισμό συνημιτονίου (DCT) για να μειώσει την ποσότητα των δεδομένων που απαιτούνται για να αντιπροσωπεύουν μια εικόνα.

* mp3 (ήχος): Χρησιμοποιεί την αντιληπτική κωδικοποίηση για να αφαιρέσετε ήχους που είναι πιθανό να καλυφθούν από άλλους ήχους.

* mpeg (βίντεο): Χρησιμοποιεί διάφορες τεχνικές όπως η αντιστάθμιση κίνησης και το DCT για να συμπιέσουν αποτελεσματικά το βίντεο.

Η διαδικασία συμπίεσης/αποσυμπίεσης:

1. Ανάλυση: Ο συμπιεστής αναλύει τα δεδομένα εισόδου για τον εντοπισμό μοτίβων και απολύσεων. Αυτή η ανάλυση είναι ειδική για τον αλγόριθμο.

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

3. κωδικοποίηση: Τα μετασχηματισμένα δεδομένα κωδικοποιούνται σε μια πιο συμπαγή αναπαράσταση χρησιμοποιώντας κωδικούς (κωδικοί Huffman, αριθμητικούς κώδικες κ.λπ.). Τα μεταδεδομένα σχετικά με τη μέθοδο συμπίεσης που χρησιμοποιείται συχνά περιλαμβάνονται.

4. Αποθήκευση/μετάδοση: Τα συμπιεσμένα δεδομένα αποθηκεύονται σε ένα αρχείο ή μεταδίδονται σε ένα δίκτυο.

5. Αποκάλυψη: Ο αποσυμπιεστής λαμβάνει τα συμπιεσμένα δεδομένα και αντιστρέφει τη διαδικασία κωδικοποίησης.

6. Αντίστροφος μετασχηματισμός: Ο αποσυμπιεστής εφαρμόζει το αντίστροφο του μετασχηματισμού που χρησιμοποιείται κατά τη διάρκεια της συμπίεσης.

7. Ανασυγκρότηση: Για συμπίεση χωρίς απώλειες, τα αρχικά δεδομένα ανακατασκευάζονται τέλεια. Για την απώλεια συμπίεσης, ανακατασκευάζεται μια στενή προσέγγιση των αρχικών δεδομένων.

Λογισμικό και υλικό:

Διάφορα εργαλεία λογισμικού (όπως `gzip`,` zip`, `7-zip`,` bzip2`) και οι βιβλιοθήκες εφαρμόζουν αυτούς τους αλγόριθμους. Οι σύγχρονες CPU έχουν συχνά οδηγίες που επιταχύνουν ορισμένες λειτουργίες συμπίεσης και εξειδικευμένο υλικό (όπως οι συν-επεξεργαστές συμπίεσης) μπορούν να επιταχύνουν σημαντικά τη διαδικασία για πολύ μεγάλα αρχεία. Οι πάροχοι αποθήκευσης σύννεφων χρησιμοποιούν επίσης βελτιστοποιημένες τεχνικές συμπίεσης σε κλίμακα.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα