Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "דחיסת מידע או: אייך מספרים סיפור בקיצור. כיצד מאחסנים ספר במחשב  הדיסק שלנו יכול לאחסן רק ביטים, ולכן הספר יאוחסן כמחרוזת רציפה של ביטים.  מחרוזת ביטים."— Presentation transcript:

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

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

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

4 ASCII Table American Standard Code for Information Interchange

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

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

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

8 האמנם נוכל לשחזר את הטקסט? 1000001100001010000101000001 1000001, 1000010, 1000010, 10000011000001A1000010B 1000011C ABBA

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

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

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

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

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

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

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

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

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

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

19 0 0 01 1 1 d a b c 01001100100111 a

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

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

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

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

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

25 התשובה: על פי הפמן Huffman, 1952)) 80100150250120100200 180220 330 420 580 1000 a bcdefg 0 1 1 0 01 1 1 1 0 0 0 0000

26 התשובה: על פי הפמן Huffman, 1952)) 80100150250120100200 180220 330 420 580 1000 a bcdefg 0 1 1 0 01 1 1 1 0 0 0 00000001

27 התשובה: על פי הפמן Huffman, 1952)) 80100150250120100200 180220 330 420 580 1000 a bcdefg 0 1 1 0 01 1 1 1 0 0 0 000000010011001011101

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

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

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

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

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

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

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

35 הצפנה עם הצופן שבנינו הצפנה עם הצופן שבנינו מילה בינארית אות 0000 0000a 0001 0001b 001 001c 01 01d 100 100e 101 101f 11 11g defecd 0110010110000101 ס"ה 16 ביטים. בהצפנה בעזרת מילים שוות אורך, היינו צריכים למילים בנות 3 ביטים ואז היתה נוצרת מחרוזת באורך 18 (לא דוגמא טובה כי לא הטקסט הזה שימש ליצירת ההפמן)

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

37 פיענוח עם הצופן שבנינו מילה בינארית אות 0000 0000a 0001 0001b 001 001c 01 01d 100 100e 101 101f 11 11g 0110010110000101 צריך לפסק למילים מהמילון. אפשר לפסק בעזרת הטבלה אך נוח יותר עם העץ עצמו – העץ שהגדיר את הצופן.

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

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

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

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

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

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

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

45 מה יתן הפמן עבור הסדרה שלנו מעל {a,b,c,d} abacabadabacabad 8 4 22 a bcd 4 8 16 0 0 0 1 1 1 0 10110111

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Similar presentations


Ads by Google