You can edit almost every page by Creating an account. Otherwise, see the FAQ.

Unary coding

מתוך EverybodyWiki Bios & Wiki
קפיצה אל:ניווט, חיפוש

קידוד תרמומטר או קידוד אונרי הוא שיטת קידוד אנטרופיה המייצגת מספר טבעי, n, באמצעות קוד באורך n + 1 (או n), בדרך כלל n אחדים לאחר מכן אפס (אם מספר טבעי מתפרש כמספר שלם חיובי) או עם n - 1 אחדים לאחר מכן אפס (אם מספר טבעי מתפרש כמספר שלם חיובי באופן מחמיר). לדוגמה, המספר 5 מיוצג כ-111110 או 11110. ישנן ייצוגים המשתמשים ב-n או n - 1 אפסים לאחר מכן אחד. האחדים והאפסים ניתנים להחלפה ללא פגיעה בכלליות. קידוד אונרי הוא הן קוד ללא תחילית וגם קוד עצמי מסתדר.

n (לא שלילי) n (חיובי באופן מחמיר) קידוד אונרי חלופי
0 1 0 1
1 2 10 01
2 3 110 001
3 4 1110 0001
4 5 11110 00001
5 6 111110 000001
6 7 1111110 0000001
7 8 11111110 00000001
8 9 111111110 000000001
9 10 1111111110 0000000001

קידוד אונרי הוא קידוד יעיל באופן אופטימלי להתפלגויות הסתברות בדיסקרטיות הבאות:

עבור .

בקידוד סמל אחר סמל, הוא אופטימלי לכל התפלגות גאומטרית:

עבור ≥ φ = 1.61803398879..., יחס הזהב, או, באופן כללי יותר, עבור כל התפלגות דיסקרטית בה מתקיים:

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

קידוד אונרי בשימוש כיום[עריכה]

דוגמאות לשימושים בקידוד אונרי כוללים:

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

קידוד אונרי ברשתות ביולוגיות[עריכה]

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

קודים אונריים באורכי ריצה תקניים[עריכה]

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

n קוד RL הקוד הבא
1 1 0
2 11 00
3 111 000
4 1111 0000
5 11111 00000
6 111111 000000
7 1111111 0000000
8 11111111 00000000
9 111111111 000000000
10 1111111111 0000000000
...

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

קודים אונריים לא מונחי תחילית ניתנים לפענוח באופן ייחודי[עריכה]

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

n קוד אונרי חלופי
1 1 0
2 10 01
3 100 011
4 1000 0111
5 10000 01111
6 100000 011111
7 1000000 0111111
8 10000000 01111111
9 100000000 011111111
10 1000000000 0111111111
...

קודים אלו גם (כאשר כותבים מספרים שאינם סימנים) מאפשרים שימוש והעברה של ביט נוסף (זה שמשמש לביט הראשון). כך הם יכולים להעביר 'm' מספרים שלמים * N ביטים אונריים וביט נוסף של מידע בתוך m*N ביטי נתונים.

קודים אונריים סימטריים[עריכה]

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

n (חיובי באופן מחמיר) קוד אונרי חלופי n (לא שלילי)
1 1 0 0
2 00 11 1
3 010 101 2
4 0110 1001 3
5 01110 10001 4
6 011110 100001 5
7 0111110 1000001 6
8 01111110 10000001 7
9 011111110 100000001 8
10 0111111110 1000000001 9
...

קודים אונריים קנוניים[עריכה]

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

n קוד אונרי חלופי
1 1 0
2 01 10
3 001 110
4 0001 1110
5 00001 11110
6 000001 111110
7 0000001 1111110
8 00000001 11111110
9 000000001 111111110
10 000000000 111111111

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

קידוד אונרי מוכלל[עריכה]

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

n קידוד אונרי קידוד אונרי מוכלל
0 0 0000000
1 10 0000111
2 110 0001110
3 1110 0011100
4 11110 0111000
5 111110 1110000
6 1111110 0010111
7 11111110 0101110
8 111111110 1011100
9 1111111110 0111001
10 11111111110 1110010
11 111111111110 0100111
12 1111111111110 1001110
13 11111111111110 0011101
14 111111111111110 0111010
15 1111111111111110 1110100

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

ראו גם[עריכה]

הערות[עריכה]

תבנית:Reflist

מקורות[עריכה]

תבנית:Reflist



Read or create/edit this page in another language[עריכה]