/ / קודי הופמן: דוגמאות, יישומים

קודי הופמן: דוגמאות, יישומים

כרגע, מעטים חושבים עליהםכיצד דחיסת קבצים עובדת - -. בהשוואה לעבר, השימוש במחשב אישי הפך להרבה יותר קל. וכמעט כל אדם שעובד עם מערכת הקבצים משתמש בארכיונים. אך מעטים חושבים על אופן עבודתם ועל פי איזה עיקרון מתרחש דחיסת קבצים. קודי הופמן הפכו לגרסה הראשונה ביותר של תהליך זה, והם עדיין משמשים בארכיונים פופולריים שונים. משתמשים רבים אפילו לא חושבים על כמה פשוט דחיסת הקבצים ועל פי איזו תוכנית היא עובדת. במאמר זה נשקול כיצד מתרחשת דחיסה, אילו ניואנסים עוזרים להאיץ ולפשט את תהליך הקידוד, וגם נבין מה העיקרון של בניית עץ קידוד.

היסטוריית האלגוריתמים

האלגוריתם הראשון לניהול אפקטיביקידוד מידע אלקטרוני היה הקוד שהציע הופמן באמצע המאה העשרים, כלומר בשנת 1952. זה הוא כרגע המרכיב הבסיסי העיקרי ברוב התוכניות המיועדות לדחיסת מידע. כרגע, אחד המקורות הפופולריים ביותר המשתמשים בקוד זה הם ZIP, ARJ, RAR ורבים אחרים.

קודי האפמן
אלגוריתם זה של הופמן משמש גם אליודחיסת תמונות JPEG וחפצים גרפיים אחרים. ובכן, כל הפקסים המודרניים משתמשים גם בקידוד שהומצא בשנת 1952. למרות העובדה שכל כך הרבה זמן עבר מאז יצירת הקוד, עד היום הוא משמש בקליפות החדשות ביותר ועל ציוד מהסוגים הישנים והמודרניים.

העיקרון של קידוד יעיל

אלגוריתם האפמן מבוסס על מעגל,מה שמאפשר לך להחליף את התווים הסבירים והנפוצים ביותר בקודי מערכת בינארית. ואלה שפחות נפוצים מוחלפים על ידי קודים ארוכים יותר. המעבר לקודי Huffman ארוכים מתרחש רק לאחר שהמערכת משתמשת בכל ערכי המינימום. טכניקה זו מאפשרת לך למזער את אורך הקוד עבור כל תו בהודעה המקורית כולה.

האלגוריתם של הופמן
הנקודה החשובה היא שבהתחלהכבר ידוע על קידוד ההסתברות להתרחשות של אותיות. מהם ההרכב האחרון של ההודעה הסופית. על סמך נתונים אלה, נבנה עץ הקוד של הופמן, שעל בסיסו יבוצע תהליך קידוד אותיות בארכיון.

דוגמא לקוד האפמן

כדי להמחיש את האלגוריתם, קחגרסה גרפית לבניית עץ הקוד. כדי להשתמש בשיטה זו כדי להיות יעילה, כדאי להבהיר את ההגדרה של כמה ערכים הנחוצים למושג של שיטה זו. הסט של קשתות וצמתים רבים המכוונים מצומת לצומת נקרא גרף. העץ עצמו הוא גרף עם קבוצה של תכונות ספציפיות:

  • כל צומת יכול לכלול לא יותר מאחד הקשתות;
  • אחד הצמתים חייב להיות שורש העץ, כלומר הוא לא צריך לכלול קשתות כלל;
  • אם אתה מתחיל לנוע לאורך קשתות מהשורש, תהליך זה אמור לאפשר לך להגיע כמעט לכל אחד מהצמתים.

דוגמה קוד של הופמן
Существует также такое понятие, входящее в коды האפמן כמו עלה של עץ. זהו צומת שממנו אין קשתות צריכות לצאת. אם שני צמתים מחוברים באמצעות קשת, אז אחד מהם הוא הורה, השני הוא ילד, תלוי לאיזה צומת הקשת יוצאת ומתוכה היא נכנסת. אם לשני צמתים יש צומת אב זהה, הם נקראים בדרך כלל צומת אחות. אם בנוסף לעלים מספר קשתות צצות בצמתים, אז עץ זה נקרא בינארי. בדיוק כזה הוא עץ האפמן. מאפיין של הצמתים בבנייה זו הוא שמשקלו של כל הורה שווה לסכום המשקל של כל ילדיו הנוזלים.

אלגוריתם בניית עץ האפמן

בניית קוד האפמן נעשית מתוך אותיותקלט אלפבית. נוצרת רשימה של הצמתים החופשיים בעץ הקוד העתידי. המשקל של כל צומת ברשימה זו צריך להיות זהה להסתברות להתרחשות אות ההודעה המתאימה לאותו צומת. במקרה זה, בין כמה צמתים חופשיים של העץ העתידי, נבחר זה שמשקלו הפחות. יתר על כן, אם המחוונים המינימליים נצפים בכמה צמתים, תוכל לבחור באופן חופשי כל אחד מהזוגות.

בניית קוד הופמן
ואז נוצר האב.צומת, שאמור לשקול סכום של צמד הצמתים הזה. לאחר מכן, ההורה נשלח לרשימה עם צמתים בחינם, והילדים מוסרים. במקרה זה, הקשתות מקבלים את האינדיקטורים המתאימים, אלה והאפסים. תהליך זה חוזר על עצמו בדיוק ככל שצריך כדי להשאיר קשר אחד בלבד. ואז הספרות הבינאריות נכתבות מלמעלה למטה.

שיפור יעילות הדחיסה

כדי לשפר את יעילות הדחיסה, עליךבעת בניית עץ הקוד, השתמש בכל הנתונים בנוגע לסבירות שהאותיות יופיעו בקובץ מסוים המצורף לעץ, ואל תאפשר לפזר אותן על פני מספר רב של מסמכי טקסט. אם אתה עובר על קובץ זה לראשונה, אתה יכול לחשב מיד נתונים סטטיסטיים על התדירות שבה נמצאות אותיות מהאובייקט שיש לדחוס.

להאיץ את תהליך הדחיסה

כדי להאיץ את האלגוריתם, זיהוי אותיותיש צורך לבצע לא על פי האינדיקטורים של ההסתברות להופעת אות מסוימת, אלא לפי תדירות הופעתה. זה הופך את האלגוריתם לפשוט ומהיר יותר לעבודה. הוא גם נמנע מנקודות צף ופעולות חלוקה.

קוד הופמן דינמי
בנוסף, פועל במצב זה, הדינמיקהקוד האפמן, או יותר נכון האלגוריתם עצמו, אינו כפוף לשינויים כלשהם. זה נובע בעיקר מהעובדה שההסתברויות נמצאות ביחס ישר לתדרים. כדאי להקדיש תשומת לב מיוחדת לעובדה שמשקלו הסופי של הקובץ או צומת השורש שנקרא יהיה שווה לסכום מספר האותיות באובייקט לעיבוד.

מסקנה

קודים של הופמן - פשוטים וותיקיםאלגוריתם שעדיין נמצא בשימוש על ידי תוכנות וחברות ידועות רבות. הפשטות והבהירות שלה מאפשרים לך להשיג תוצאות יעילות של דחיסת קבצים בכל גודל ולהקטין באופן משמעותי את שטח האחסון שלהם. במילים אחרות, האלגוריתם של הופמן הוא תכנית שנחקרה ומעובדת, שרלוונטיותה אינה פוחתת עד היום.

קידוד הופמן
ובזכות היכולת להקטין את גודל הקובץ,השידור שלהם דרך הרשת או באמצעים אחרים הופך לפשוט, מהיר ונוח יותר. בעבודה עם האלגוריתם, אתה יכול לדחוס כל מידע ללא פגיעה במבנהו ובאיכותו, אך עם האפקט המקסימלי של הפחתת משקל הקובץ. במילים אחרות, קידוד הופמן היה ונותר השיטה הפופולרית והעדכנית ביותר לדחיסת גודל הקובץ.

אהבתי:
0
הודעות פופולריות
התפתחות רוחנית
מזון
כן