Προς το παρόν, λίγοι άνθρωποι σκέφτονταιπώς λειτουργεί η συμπίεση αρχείων. Σε σύγκριση με το παρελθόν, η χρήση προσωπικού υπολογιστή έχει γίνει πολύ πιο εύκολη. Και σχεδόν όλοι όσοι εργάζονται με το σύστημα αρχείων χρησιμοποιούν αρχεία. Αλλά λίγοι άνθρωποι σκέφτονται πώς λειτουργούν και πώς συμπιέζονται τα αρχεία. Η πρώτη έκδοση αυτής της διαδικασίας ήταν οι κωδικοί Huffman και χρησιμοποιούνται μέχρι σήμερα σε διάφορα δημοφιλή αρχεία. Πολλοί χρήστες δεν σκέφτονται καν πόσο εύκολο είναι να συμπιέσουν ένα αρχείο και πώς λειτουργεί. Σε αυτό το άρθρο, θα δούμε πώς συμβαίνει η συμπίεση, ποιες αποχρώσεις βοηθούν στην επιτάχυνση και την απλούστευση της διαδικασίας κωδικοποίησης, και επίσης θα καταλάβουμε ποια είναι η αρχή της δημιουργίας ενός δέντρου κωδικοποίησης.
Ο πρώτος αλγόριθμος για αποτελεσματική συμπεριφοράΗ κωδικοποίηση των ηλεκτρονικών πληροφοριών έγινε ένας κωδικός που πρότεινε ο Huffman στα μέσα του εικοστού αιώνα, δηλαδή το 1952. Αυτός είναι αυτή τη στιγμή το κύριο βασικό στοιχείο των περισσότερων προγραμμάτων που έχουν σχεδιαστεί για τη συμπίεση πληροφοριών. Προς το παρόν, μερικές από τις πιο δημοφιλείς πηγές που χρησιμοποιούν αυτόν τον κωδικό είναι αρχεία ZIP, ARJ, RAR και πολλές άλλες.
Ο αλγόριθμος Huffman βασίζεται στο σχήμασας επιτρέπει να αντικαταστήσετε τους πιο πιθανούς, πιο κοινούς χαρακτήρες με κωδικούς του δυαδικού συστήματος. Και αυτά που είναι λιγότερο κοινά αντικαθίστανται με μεγαλύτερους κωδικούς. Η μετάβαση στους κωδικούς Long Huffman πραγματοποιείται μόνο αφού το σύστημα χρησιμοποιήσει όλες τις ελάχιστες τιμές. Αυτή η τεχνική σάς επιτρέπει να ελαχιστοποιήσετε το μήκος του κώδικα για κάθε χαρακτήρα του αρχικού μηνύματος στο σύνολό του.
Για να απεικονίσετε τον αλγόριθμο, πάρτεγραφική έκδοση της δημιουργίας ενός δέντρου κώδικα. Για να είναι αποτελεσματική η χρήση αυτής της μεθόδου, αξίζει να αποσαφηνιστεί ο ορισμός ορισμένων από τις τιμές που είναι απαραίτητες για την έννοια αυτής της μεθόδου. Το σύνολο ενός συνόλου τόξων και κόμβων που κατευθύνονται από κόμβο σε κόμβο ονομάζεται γράφημα. Το ίδιο το δέντρο είναι ένα γράφημα με ένα σύνολο συγκεκριμένων ιδιοτήτων:
Η δημιουργία ενός κώδικα Huffman γίνεται με γράμματααλφάβητο εισαγωγής. Δημιουργείται μια λίστα με αυτούς τους κόμβους που είναι δωρεάν στο μελλοντικό δέντρο κώδικα. Το βάρος κάθε κόμβου σε αυτήν τη λίστα πρέπει να είναι το ίδιο με την πιθανότητα εμφάνισης του γράμματος μηνύματος που αντιστοιχεί σε αυτόν τον κόμβο. Στην περίπτωση αυτή, επιλέγεται ανάμεσα σε πολλούς ελεύθερους κόμβους του μελλοντικού δέντρου, επιλέγεται αυτός που έχει το μικρότερο βάρος. Επιπλέον, εάν παρατηρηθούν οι ελάχιστοι δείκτες σε πολλούς κόμβους, τότε μπορείτε ελεύθερα να επιλέξετε οποιοδήποτε από τα ζεύγη.
Για να βελτιώσετε την απόδοση συμπίεσης, πρέπει να το κάνετεΚατά τη δημιουργία ενός δέντρου κώδικα, χρησιμοποιήστε όλα τα δεδομένα σχετικά με την πιθανότητα εμφάνισης γραμμάτων σε ένα συγκεκριμένο αρχείο που επισυνάπτεται στο δέντρο και μην τους επιτρέπετε να διασκορπίζονται σε μεγάλο αριθμό εγγράφων κειμένου. Εάν διαβάσετε πρώτα αυτό το αρχείο, μπορείτε να υπολογίσετε αμέσως στατιστικά στοιχεία σχετικά με τη συχνότητα εύρεσης γραμμάτων από το αντικείμενο προς συμπίεση.
Για να επιταχύνετε τον αλγόριθμο, προσδιορίζοντας γράμματαΕίναι απαραίτητο να πραγματοποιείται όχι σύμφωνα με τους δείκτες της πιθανότητας εμφάνισης ενός συγκεκριμένου γράμματος, αλλά σύμφωνα με τη συχνότητα εμφάνισής του. Αυτό καθιστά τον αλγόριθμο απλούστερο και πολύ πιο γρήγορο για εργασία. Αποφεύγει επίσης τις λειτουργίες κινούμενου σημείου και διαίρεσης.
Κωδικοί Huffman - απλοί και μακροχρόνιοιένας αλγόριθμος που εξακολουθεί να χρησιμοποιείται από πολλά γνωστά προγράμματα και εταιρείες. Η απλότητα και η σαφήνεια του επιτρέπουν να επιτύχετε αποτελεσματικά αποτελέσματα συμπίεσης αρχείων οποιουδήποτε μεγέθους και να μειώσετε σημαντικά τον χώρο αποθήκευσης. Με άλλα λόγια, ο αλγόριθμος Huffman είναι ένα μακροχρόνιο μελετημένο και καλά αναπτυγμένο σχήμα, η συνάφεια του οποίου δεν μειώνεται μέχρι σήμερα.