או: איך מספרים סיפור בקיצור

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
עיבוד תמונות ואותות בעזרת מחשב
הדרכה בשימוש בקטלוג הספרייה מפגש מס ' 2 תשס " ח. מטרת ההדרכה  איתור חומר מתוך הסילבוס  איתור חומר בנושא מבוקש.
מתמטיקה בדידה תרגול 3.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
מסדי נתונים תשס " ג 1 תכנון סכמות (Design Theory) מסדי נתונים.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
מה החומר למבחן ? כל החומר שנלמד בהרצאות ובתרגולים. לגבי backtracking: לא תידרשו לממש אלגוריתם, אך כן להבין או להשלים מימוש נתון. אחת משאלות המבחן מבוססת.
רקורסיות נושאי השיעור מהן רקורסיות פתרון רקורסיות : שיטת ההצבה שיטת איטרציות שיטת המסטר 14 יוני יוני יוני 1514 יוני יוני יוני 1514.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
אוטומט מחסנית הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 11.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
A. Frank File Organization Indexed-Sequential File Introduction Thanks to Tamar Barnes.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
עיבוד תמונות ואותות במחשב אלכסנדר ברנגולץ דואר אלקטרוני : שיטות קידוד שיטות קידוד אורך מלת קוד ואנטרופיה אורך מלת קוד ואנטרופיה קידוד.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
מערכות הפעלה ( אביב 2009) חגית עטיה ©1 מערכת קבצים log-structured  ה log הוא העותק היחיד של הנתונים  כאשר משנים בלוק (data, header) פשוט כותבים את הבלוק.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
תכנות תרגול 10 שבוע : הקשר בין מערכים למצביעים נרצה לעמוד על הקשר בין מערך למצביע מאחר ומערכים הם הכללה של משתנים הרי שברור שלמערך ולכל אחד מאיבריו.
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
The Cyclic Multi-peg Tower of Hanoi מעגלי חד-כווני סבוכיות הפתרון בגרסאות עם יותר מ-3 עמודים.
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
1 מבוא למדעי המחשב מושגי יסוד. 2 אלפבית תווים המותרים בשימוש בתכניות C: אותיות לטיניות קטנות : a,b,c, …,z אותיות לטיניות גדולות : A,B, C, …,Z ספרות :
דחיסת מידע או: אייך מספרים סיפור בקיצור. כיצד מאחסנים ספר במחשב  הדיסק שלנו יכול לאחסן רק ביטים, ולכן הספר יאוחסן כמחרוזת רציפה של ביטים.  מחרוזת ביטים.
מתמטיקה בדידה תרגול 2.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
Points on a perimeter (Convex Hull) קורס – מבוא לעבוד מקבילי מבצעים – אריאל פנדלר יאיר ברעם.
(C) סיון טל גילוי מידע וזיהוי תבניות תרגול מס. 9 גילוי מידע וזיהוי תבניות תרגול מס. 9 דחיסת נתונים מהו קידוד תכונות של קידודים אי - שוויון קרפט.
Text to speech In Mobile Phones איתי לוי. הקדמה שימוש בהודעות טקסט על המכשירים הסלולארים היא דרך תקשורת מאוד פופולארית בימינו אשר משתמשים בה למטרות רבות,
Kashrut is a mitzvah in the Torah and has been passed on through generations. Kashrut is a chok. this means that we don’t know why we do it but we.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Costs and Filters Dr. Avi Rosenfeld Department of Industrial Engineering Jerusalem College of Technology
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
. Sequence Alignment Tutorial #3 © Ydo Wexler & Dan Geiger.
בגיל 9 למדתי שהמורה שלי שאלה אותי רק כאשר לא ידעתי את התשובהבגיל 9 למדתי שהמורה שלי שאלה אותי רק כאשר לא ידעתי את התשובה בגיל 10 למדתי שאפשר להיות מאוהב.
קשר לוגי : סיבה ותוצאה. במשפט – דוגמות קלות בגלל הגשם החלטנו לא לנסוע לטיול לחיפה. הרצון שלי להצליח הניע אותי להשקיע בלימודים. ציפורים נודדות בין יבשות.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Programming Arrays.
Tirgul 12 Trees 1.
Formal Specifications for Complex Systems (236368) Tutorial #1
מבוא למדעי המחשב סיבוכיות.
תקשורת ומחשוב תרגול 1 IP, Classes and Masks.
תירגול 14: מבני נתונים דינאמיים
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 4
בעיות נוספות ב-NPC.
Marina Kogan Sadetsky –
הנעה חשמלית.
תזכורת על מה דיברנו שיעור שעבר? בנינו אתר אינטרנט עם כותרות
מחרוזות קרן כליף.
מערכים של מצביעים הקצאה דינאמית
תוכנה 1 תרגול 13 – סיכום.
NG Interpolation: Divided Differences
Presentation transcript:

או: איך מספרים סיפור בקיצור דחיסת מידע או: איך מספרים סיפור בקיצור

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

נבחן, למשל, אנגלית נתאים מילה באורך 8 ביט – בית אחד – לכל סימן בשפה: אותיות (גדולות וקטנות), ספרות, סימני פיסוק, רווחים, סוף שורה, סוף קובץ, וכו' נוח, משום שיחידת הכתיבה בדיסק היא בית -- 8 ביטים מספיק, משום שישנם כ- 100 סימנים כאלה בשפה, וישנן 256 = 28 מילים שונות בנות 8 ביט יש אפשרות לייצג גם סימנים נוספים מיוחדים כמו שינוי שפה, שינוי פונט, וכו'. אפשר לאחסן גם טקסט בן שתי שפות, ועוד.

ASCII Table American Standard Code for Information Interchange

Extended ASCII Codes “The most popular ‘standard’ extended set”

ספר באנגלית בן 1000 סימנים מאוחסן כקובץ בן 1000 בתים, כשמשתמשים בבית לכל סימן בשפה. אם רוצים לדחוס, כי חשוב לחסוך בנפח האיחסון, נוכל להסתפק ב- 7 ביטים לסימן באנגלית. ישנן 128 = 27 מילים שונות באורך 7 ביטים, והן מספיקות כדי לייצג את כל 100~ הסימנים בשפה. הספר יאוחסן כקובץ בן 1000*7/8 = 875 בתים לא כל סימן בבית משלו; קשה לאתר סימן על פי מקומו בספר.

דוגמא ליצוג טקסט כמחרוזת ביטים על פי 7 הביטים ה"ימניים" של ASCII 1000001 A 1000010 B 1000011 C 1000100 D 1010010 R 1010011 S 0100000 ‘ ‘ A B R A _ C A D A B R A 100000110000101010010 100000101000001000011 100000110001001000001 100001010100101000001 12 סימנים באנגלית X 7 ביטים לסימן -> 84 ביטים ס"ה

האמנם נוכל לשחזר את הטקסט? 1000001100001010000101000001 1000001 , 1000010 , 1000010 , 1000001 A B B A 1000001 A 1000010 B 1000011 C

האם נוכל לחסוך עוד בנפח האיחסון? אולי כדאי האם נוכל לחסוך עוד בנפח האיחסון? אולי כדאי להתאים לאותיות השכיחות מילים קצרות יותר מ- 7 ביטים ובתמורה, לאותיות הנדירות, להתאים מילים ארוכות יותר מ – 7 ביטים העיקר שסך הכל נייצר מילים שונות כמספר הסימנים בשפה (עכשיו אין הכרח שמספר המילים יהיה חזקה של 2) ושהאורך הכולל, בביטים, של הקובץ המיצג את הספר יהיה פחות מ- 7 X מספר הסימנים שבספר ושתתקיים תכונה נוספת שתיכף נדון בה

דוגמא: שפה בת 4 אותיות טקסט = abacabadabacabad בשימוש במילים שוות אורך, צריך להתאים לכל אות מילה בת 2 ביטים. 00 a 01 b 10 c 11 d הטקסט כולו יאוחסן על פי התאמה זו כ - 00010010000100110001001000010011 אורך האיחסון: 2 x 16 = 32 ביטים אבל…

נקצה לאותיות מילים באורכים שונים ל- a, השכיחה ביותר, נקצה מילה באורך 1 ל- b, השניה בשכיחותה – מילה באורך 2 ול- c ול- d, השכיחות הכי פחות – באורך 3 a 10 b 110 c 111 d abacabadabacabad הטקסט כולו יאוחסן אז כ - 0100110010011101001100100111 אורך האיחסון = 8 x 1 + 4 x 2 + 2 x 3 + 2 x 3 = 28 ביטים דחסנו מ- 32 ביטים ל- 28.

האם נוכל לשחזר את הטקסט מתוך המחרוזת הבינארית? האם נוכל לשחזר את הטקסט מתוך המחרוזת הבינארית? נתונה ההתאמה של כל אות בשפה למילה בינארית ונתונה מחרוזת המתאימה לטקסט כולו 01001100100111 מהו הטקסט? מאחר שלאותיות מותאמות מילים באורכים שונים, אי אפשר לפרוס את הטקסט לפרוסות שוות אורך כך שכל פרוסה תתאים לאות מהשפה. יש לבחון את תוכן המחרוזת הבינארית ולפרוס אותה בזהירות. a 10 b 110 c 111 d

ננסה לשחזר את הטקסט מתוך המחרוזת הבינארית ננסה לשחזר את הטקסט מתוך המחרוזת הבינארית האם 0 היא מילה מהטבלה ? כן! – מתאימה ל- a האם היא תחילתה של מילה אחרת ? לא! לכן נפרוס את הפרוסה 0, ונכריז על האות a 01001100100111 01001100100111 a 10 b 110 c 111 d a

ננסה לשחזר את הטקסט מתוך המחרוזת הבינארית ננסה לשחזר את הטקסט מתוך המחרוזת הבינארית האם 1 היא מילה מהטבלה ? לא! האם 10 היא מילה מהטבלה ? כן! – מתאימה ל- b האם היא תחילתה של מילה אחרת ? לכן נפרוס את הפרוסה 10, ונכריז על האות b 0,1001100100111 0,1001100100111 0,1001100100111 a 10 b 110 c 111 d ab

ננסה לשחזר את הטקסט מתוך המחרוזת הבינארית ננסה לשחזר את הטקסט מתוך המחרוזת הבינארית האם 0 היא מילה מהטבלה ? כן! – מתאימה ל- a האם היא תחילתה של מילה אחרת ? לא! לכן נפרוס את הפרוסה 0, ונכריז על האות a 0,10,01100100111 0,10,01100100111 a 10 b 110 c 111 d aba

ננסה לשחזר את הטקסט מתוך המחרוזת הבינארית ננסה לשחזר את הטקסט מתוך המחרוזת הבינארית האם 1 היא מילה מהטבלה ? לא! האם 11 היא מילה מהטבלה? האם 110 היא מילה מהטבלה ? כן! – מתאימה ל- c האם היא תחילתה של מילה אחרת ? לכן נפרוס את הפרוסה 110, ונכריז על האות c 0,10,0,1100100111 0,10,0,1100100111 0,10,0,1100100111 0,10,0,1100100111 a 10 b 110 c 111 d abac וכו'

כאשר שום מילה בטבלה אינה תחילתה של מילה אחרת 1 d a b c a 10 b 110 c 111 d אפשר להציב את כל מילות הטבלה על פני עץ מסומן קשתות: Trie

קל מאד לפרוס את המחרוזת הבינארית למרכיביה ולשחזר את הטקסט קל מאד לפרוס את המחרוזת הבינארית למרכיביה ולשחזר את הטקסט 01001100100111 1 a 1 b 1 c d

קל מאד לפרוס את המחרוזת הבינארית למרכיביה ולשחזר את הטקסט קל מאד לפרוס את המחרוזת הבינארית למרכיביה ולשחזר את הטקסט 01001100100111 1 a 1 b a 1 c d

קל מאד לפרוס את המחרוזת הבינארית למרכיביה ולשחזר את הטקסט קל מאד לפרוס את המחרוזת הבינארית למרכיביה ולשחזר את הטקסט 0,1001100100111 1 a 1 b ab 1 c d

קל מאד לפרוס את המחרוזת הבינארית למרכיביה ולשחזר את הטקסט קל מאד לפרוס את המחרוזת הבינארית למרכיביה ולשחזר את הטקסט 0,10,01100100111 1 a 1 b aba 1 c d

קל מאד לפרוס את המחרוזת הבינארית למרכיביה ולשחזר את הטקסט קל מאד לפרוס את המחרוזת הבינארית למרכיביה ולשחזר את הטקסט 0,10,0,1100100111 1 a 1 b abac 1 c d וכו'

אי שוויון Kraft-McMillan כדי להבטיח שפריסת מחרוזת בינארית למילים שמרכיבות אותה תעשה באופן יחיד, חייבים אורכי המילים הבינאריות שבטבלה לקיים: לכן לא כל המילים יכולות להיות קצרות; אם אחת מתקצרת, חייבות האחרות להתארך. ואם נתון אוסף מילים שאורכיהן מקיימים אי שוויון זה, אפשר (אם צריך) לשנות את תוכני המילים כך ששום מילה לא תהיה תחילתה של מילה אחרת. יחס הדחיסה לא ישתנה, אך פריסת מחרוזות תהיה קלה במיוחד. לכן אוספים כאלה (prefix free) חביבים במיוחד.

סכום ביניים קצר: מבוקש!!! צופן: התאמה בין אותיות השפה שבה נכתב הספר למילים בינאריות. צופן שיקצר ככל האפשר את אורך האיחסון של הספר לאות שכיחה – מילה קצרה לאות נדירה – מילה ארוכה צופן שכל מחרוזת שייצר עבור טקסט תיפרס באופן יחיד למילים שהרכיבו את המחרוזת אורכי המילים מקיימים את אי שוויון KM רצוי אוסף המילים שהינו prefix free

התשובה: על פי הפמן Huffman, 1952)) 1000 1 580 330 420 1 1 180 220 1 1 1 80 100 150 250 120 100 200 a b c d e f g 0000

התשובה: על פי הפמן Huffman, 1952)) 1000 1 580 330 420 1 1 180 220 1 1 1 80 100 150 250 120 100 200 a b c d e f g 0000 0001

התשובה: על פי הפמן Huffman, 1952)) 1000 1 580 330 420 1 1 180 220 1 1 1 80 100 150 250 120 100 200 a b c d e f g 0000 0001 001 01 100 101 11

הצופן שבנינו מילה בינארית אות 0000 a 0001 b 001 c 01 d 100 e 101 f 11 g

הצפנה עם הצופן שבנינו מילה בינארית אות 0000 a 0001 b 001 c 01 d 100 e 101 f 11 g defecd 0110010110000101 ס"ה 16 ביטים.

פיענוח עם הצופן שבנינו מילה בינארית אות 0000 a 0001 b 001 c 01 d 100 e 101 f 11 g 0110010110000101 1 1 1 1 1 d g 1 c e f a b

פיענוח עם הצופן שבנינו מילה בינארית אות 0000 a 0001 b 001 c 01 d 100 e 101 f 11 g 01,10010110000101 d 1 1 1 1 1 d g 1 c e f a b

פיענוח עם הצופן שבנינו מילה בינארית אות 0000 a 0001 b 001 c 01 d 100 e 101 f 11 g 01,100,10110000101 d e 1 1 1 1 1 d g 1 c e f a b

פיענוח עם הצופן שבנינו מילה בינארית אות 0000 a 0001 b 001 c 01 d 100 e 101 f 11 g 01,100,101,10000101 d e f 1 1 1 1 1 d g 1 c e f a b

פיענוח עם הצופן שבנינו מילה בינארית אות 0000 a 0001 b 001 c 01 d 100 e 101 f 11 g 01,100,101,100,00101 d e f e 1 1 1 1 1 d g 1 c e f a b

פיענוח עם הצופן שבנינו מילה בינארית אות 0000 a 0001 b 001 c 01 d 100 e 101 f 11 g 01,100,101,100,001,01 d e f e c 1 1 1 1 1 d g 1 c e f a b

פיענוח עם הצופן שבנינו מילה בינארית אות 0000 a 0001 b 001 c 01 d 100 e 101 f 11 g 01,100,101,100,001,01 d e f e c d 1 1 1 1 1 d g 1 c e f a b

מה יתן הפמן עבור הסדרה שלנו מעל {a,b,c,d} abacabadabacabad 16 1 8 1 4 1 8 4 2 2 a b c d 10 110 111

שום צופן אחר אינו נותן דחיסה כמה טוב הוא צופן הפמן? שום צופן אחר אינו נותן דחיסה טובה יותר מצופן הפמן.

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

Claude Elwood Shannon 1916 -2001 A Mathematical Theory of Communication (1948)

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

האנטרופיה של מקור עם א"ב בן שתי אותיות הנפלטות בהסתברויות p , p-1

ואולי אות היא שצריכים להסתכל על שתי אותיות? טקסטים שנוצרו על ידי אדם אינם כאלה הנפלטים ממקור חסר זיכרון. יש קשר בין שכיחות ההופעה של אותיות בתוך הטקסט להקשר שלהן בטקסט, כלומר לזהות האותיות הסמוכות להן בטקסט. במקום להתאים מילה בינארית לכל אות בשפה, נתאים מילה בינארית לכל זוג אותיות. למשל: בשפה בת 4 האותיות, עבור הטקסט abacabadabacabad תוך שימוש בצופן שבטבלה: נייצר את המחרוזת הבינארית: 010011010011 ס"ה 12 ביטים. (עם מילה לכל אות בודדת (אפילו עם מילים שונות אורך) – 28 ביטים.) ab 10 ac 11 ad

ומה יש לשנון להגיד על זה ? עבור מקורות שאינם חסרי זיכרון, המאופינים על ידי ההסתברויות לפליטת מחרוזות של אותיות (ולא אותיות בודדות), או עבור טקסט נתון, ושכיחות ההופעה בו של מחרוזות של אותיות, המספר המינימאלי הממוצע של ביטים לאות הוא הוא האוסף בן המחרוזות באורך n מעל הא"ב A של המקור. כדי לדחוס, אפשר להפעיל הפמן על המחרוזות באורך n מסוים, במקום על אותיות בודדות (עבורן n=1)

אז איך מספרים סיפור בקיצור ? מכבירים מילים על האירועים המפתיעים, אלה שההסתברות שיקרו (כפי שמעריכים אותה לפני פרוץ סדרת האירועים) – נמוכה ומקצרים בתיאור הארועים הצפויים במהדורת חדשות מכבירים יותר מילים על אירוע בו איש נשך כלב מאשר על אירוע בו כלב נשך איש. שנון: כמות המידע בדווח על קרות אירוע שההסתברות (א-פריורי) שיקרה היא הינה

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

האלגוריתם של למפל וזיו 1978 מפסקים את הסדרה הנתונה לפסקאות שונות זו מזו, פסקה אחרי פסקה, מראשית המחרוזת אל סופה, כך שכל אחת מהפסקאות מורכבת מפסקה שפוסקה קודם לכן פלוס האות שבאה אחריה תודה לכרמל ולאוהד

האלגוריתם של למפל וזיו 1978 במקום כל פסקה, כותבים את מספר הפסקה שלה היא דומה ("בדיוק כמו ביום שלישי שעבר") ואת האות הנוספת ("חוץ מתוספת קטנה אחת והיא..") (0 הוא היום בו לא קרה כלום)

aaababbbaaabaaaaaaabaabb גם פה ה-Trie עוזר מאד aaababbbaaabaaaaaaabaabb

a,aababbbaaabaaaaaaabaabb גם פה ה-Trie עוזר מאד a,aababbbaaabaaaaaaabaabb a 1 (0,a)

a,aa,babbbaaabaaaaaaabaabb גם פה ה-Trie עוזר מאד a,aa,babbbaaabaaaaaaabaabb a 1 a 2 (0,a)(1,a)

a,aa,b,abbbaaabaaaaaaabaabb גם פה ה-Trie עוזר מאד a,aa,b,abbbaaabaaaaaaabaabb a b 1 3 a 2 (0,a)(1,a)(0,b)

a,aa,b,ab,bbaaabaaaaaaabaabb גם פה ה-Trie עוזר מאד a,aa,b,ab,bbaaabaaaaaaabaabb a b 1 3 a b 2 4 (0,a)(1,a)(0,b)(1,b)

a,aa,b,ab,bb,aaabaaaaaaabaabb גם פה ה-Trie עוזר מאד a,aa,b,ab,bb,aaabaaaaaaabaabb a b 1 3 a b b 2 4 5 (0,a)(1,a)(0,b)(1,b)(3,b)

a,aa,b,ab,bb,aaa,baaaaaaabaabb גם פה ה-Trie עוזר מאד a,aa,b,ab,bb,aaa,baaaaaaabaabb a b 1 3 a b b 2 4 5 a 6 (0,a)(1,a)(0,b)(1,b)(3,b)(2,a)

גם פה ה-Trie עוזר מאד a,aa,b,ab,bb,aaa,ba,aaaaaabaabb a b 1 3 a b a b a b 1 3 a b a b 2 4 7 5 a 6 (0,a)(1,a)(0,b)(1,b)(3,b)(2,a)(3,a)

גם פה ה-Trie עוזר מאד a,aa,b,ab,bb,aaa,ba,aaaa,aabaabb a b 1 3 a b a b a b 1 3 a b a b 2 4 7 5 a 6 a (0,a)(1,a)(0,b)(1,b)(3,b)(2,a)(3,a)(6,a) 8

גם פה ה-Trie עוזר מאד a,aa,b,ab,bb,aaa,ba,aaaa,aab,aabb a b 1 3 a b a a b 1 3 a b a b 2 4 7 5 a b 6 9 a (0,a)(1,a)(0,b)(1,b)(3,b)(2,a)(3,a)(6,a)(2,b) 8

גם פה ה-Trie עוזר מאד a,aa,b,ab,bb,aaa,ba,aaaa,aab,aabb a b 1 3 a b a a b 1 3 a b a b 2 4 7 5 a b 6 9 a b 8 10 (0,a)(1,a)(0,b)(1,b)(3,b)(2,a)(3,a)(6,a)(2,b)(9,b)

(0,a)(1,a)(0,b)(1,b)(3,b)(2,a)(3,a)(6,a)(2,b)(9,b) הפלט מתורגם לבינארית (0,a)(1,a)(0,b)(1,b)(3,b)(2,a)(3,a)(6,a)(2,b)(9,b) 1 2 3 4 5 6 7 8 9 10 נמספר את הקטעים המפוסקים מהסדרה a,1a,00b,01b,011b,010a,011a,110a,0010b,1001b בזוג ה- i, ניצג את האינדקס, שהוא תמיד מספר בין 0 ל- i-1, על פני ביטים 0,10,001,011,0111,0100,0110,1100,00101,10011 נחליף כל אות ב- ביטים, כאשר הוא גודל הא"ב של הטקסט. בדוגמא שלנו, הא"ב הוא {a,b} ו- 01000101101110100011011000010110011 נמחק את הפסיקים ארוך יותר מהטקסט המקורי… אבל לקבצים גדולים ישנה התכנסות מוכחת לאנטרופיה

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

מבני נתונים בד"כ ה- Trie מספיק. קובץ מחשב אותו נרצה לדחוס, אשר כולל לא רק טקסט באנגלית, אלא גם נתונים בינאריים, אפשר לראותו כאילו היה מחרוזת טקסט מעל א"ב בן 256 אותיות, כלומר מחרוזת של בתים. בד"כ זהו אופן העיבוד: בית אחרי בית, ולא ביט אחרי ביט. מכיוון שכך, הרי שכל צומת ב- Trie צריך להכיל עד 256 מצביעים לילדיו; כלומר, מכל צומת יצאו עד 256 קשתות, כל אחת מסומנת באות אחרת מהא"ב בן ה- 256 אותיות. מאחר שבפועל, לא לכל צומת יהיו 256 ילדים, הרי שהכנת מקום ל-256 מצביעים בכל צומת תהווה בזבוז שטח. הפיתרון המקובל הוא מצביע יחיד מכל צומת – אל בנו הבכור, ומבכור זה – מצביע אל אחיו, ומאח זה – אל אחיו הבא, וכו' לאורך כל האחים שהם ילדיו בפועל של הצומת האב. בהתווסף ילד חדש, הוא מתקשר לאחרון האחים. פתרון זה יקר בזמן ריצה, אך זול יחסית בנפח זיכרון.

ואייך מפענחים? נתונה מחרוזת בינארית, צריך לייצר טקסט צעד אחרי צעד, קטע אחרי קטע, כפי שהוגדרו בתהליך ההצפנה: לפני ההתחלה: קטע מס' 0 מוגדר כקטע הריק, הקטע באורך 0. בצעד ה-1 קוראים ביטים מתוך המחרוזת הבינארית ומייצרים את הקטע הראשון, קטע מס' 1, שאורכו אות אחת – היא האות המיוצגת על ידי הביטים שקראנו. נרשום אות זו כאות הראשונה של הטקסט אותו אנו משחזרים. נניח שפענחנו ושרשרנו את כל הקטעים עד לקטע i-1. כדי לפענח את הקטע ה-i, נקרא, ראשית ביטים מהמחרוזת הבינארית. אלה מייצגים את המספר הסידורי j עבור j<i, של קטע שכבר מוכר לנו. נדביק קטע זה אל סוף הטקסט שאנו משחזרים. נקרא עוד ביטים מהמחרוזת הבינארית, אלה מיצגים אות שנקרא לה c, ונדביקה אל סוף הטקסט שאנו משחזרים. בכך סיימנו לפענח את הקטע ה-i, אשר מורכב משרשור הקטע ה-j והאות c, ואף הדבקנו אותו אל סוף הטקסט שאנו משחזרים. עם סיום קריאת המחרוזת הבינארית כולה, נסיים לשחזר את הטקסט.

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

סוד הדחיסה Variable to Fixed (Huffman is Fixed to Variable) קטעים קצרים וארוכים מקבלים אותה מילה בינארית: מספר סידורי אל תוך אוסף הקטעים שנוצר עד כה קטעים שכיחים מתארכים וקטעים נדירים – לא רק הקטעים הרלוונטיים גדלים, ולא כולם עם הפמן עבור מקורות שאינם חסרי זיכרון מאריכים את כולם טוב לקבצים "מלאכת יד" -- אינם חסרי זיכרון, אבל קשה לתפוס בדיוק את אורך הזכרון, והאם זהה עבור כל ההקשרים השונים.

האלגוריתמים של למפל וזיו אלגוריתם אוניברסאלי – טוב לכל מחרוזת מבלי להתכונן אליה מראש או ללמוד את שכיחות אותיותיה ותת-מחרוזותיה. הוכח אופטימאלי לסדרות ארוכות מאד, נמצא בפועל טוב ויעיל. (תופס את תכונתנו לחזור על עצמנו בסדרות שאנו מיצרים) 1977 משמש ב- Winzip, 1978 ב- Compress של Unix שניהם בסטנדרטים של תקשורת בין מחשבים נוצרו חומרות רבות לביצועם מהפכה בתחום: עידן שיטות הדחיסה עם מילון, להבדיל מעידן הדחיסה הסטטיסטית.

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