Difference between revisions of "Aufgaben:Aufgabe 2.12: Run–Length Coding & RLLC"
m (Text replacement - "„" to """) |
|||
(8 intermediate revisions by 3 users not shown) | |||
Line 8: | Line 8: | ||
* Ohne Quellencodierung würde man pro Quellensymbol genau ein Bit benötigen, und dementsprechend würde bei einer Quellensymbolfolge der Länge N für die Codebit folge folge ebenfalls NBit=Ngelten. | * Ohne Quellencodierung würde man pro Quellensymbol genau ein Bit benötigen, und dementsprechend würde bei einer Quellensymbolfolge der Länge N für die Codebit folge folge ebenfalls NBit=Ngelten. | ||
* Entropiecodierung macht hier ohne weitere Maßnahme (Zusammenfassen mehrerer Symbole zu einem Tupel) wegen der ungünstigen Symbolwahrscheinlichkeiten wenig Sinn. | * Entropiecodierung macht hier ohne weitere Maßnahme (Zusammenfassen mehrerer Symbole zu einem Tupel) wegen der ungünstigen Symbolwahrscheinlichkeiten wenig Sinn. | ||
− | * Abhilfe schafft [[ | + | * Abhilfe schafft [[Information_Theory/Weitere_Quellencodierverfahren#Laufl.C3.A4ngencodierung_.E2.80.93_Run.E2.80.93Length_Coding|Run-Length Coding]] (RLC), das unter dem genannten Link im Theorieteil beschrieben ist. Zum Beispiel ergibt sich für die Quellensymbolfolge: '''ABAABAAAABBAAB''' ... die entsprechende Ausgabe von ''Run–Lenght Coding'': ''' 2; 3; 5; 1; 3;''' ... |
* Natürlich muss man die Längen L1=2, L2=3, ... der einzelnen, jeweils durch <b>B</b> getrennten Substrings vor der Übertragung binär darstellen. Verwendet man für alle Li jeweils D=3 (Bit), so erhält man die RLC–Binärfolge '''010′011′101′001′011′'''... | * Natürlich muss man die Längen L1=2, L2=3, ... der einzelnen, jeweils durch <b>B</b> getrennten Substrings vor der Übertragung binär darstellen. Verwendet man für alle Li jeweils D=3 (Bit), so erhält man die RLC–Binärfolge '''010′011′101′001′011′'''... | ||
Line 19: | Line 19: | ||
''Hinweise:'' | ''Hinweise:'' | ||
− | *Die Aufgabe gehört zum Kapitel [[ | + | *Die Aufgabe gehört zum Kapitel [[Information_Theory/Weitere_Quellencodierverfahren|Weitere Quellencodierverfahren]]. |
− | *Insbesondere wird Bezug genommen auf die Seite [[ | + | *Insbesondere wird Bezug genommen auf die Seite [[Information_Theory/Weitere_Quellencodierverfahren#Laufl.C3.A4ngencodierung_.E2.80.93_Run.E2.80.93Length_Coding|Lauflängencodierung – Run-Length Coding]]. |
− | + | ||
+ | |||
{{GraueBox| | {{GraueBox| | ||
Line 47: | Line 48: | ||
{Wie groß ist die relative Häufigkeit des Symbols <b>B</b>? | {Wie groß ist die relative Häufigkeit des Symbols <b>B</b>? | ||
|type="{}"} | |type="{}"} | ||
− | hB = { | + | hB = { 2 3% } % |
Line 76: | Line 77: | ||
===Musterlösung=== | ===Musterlösung=== | ||
{{ML-Kopf}} | {{ML-Kopf}} | ||
− | + | '''(1)''' Die Binärfolge besteht aus insgesamt <i>N</i> = 1250 Binärsymbolen (ablesbar aus der letzten Spalte in der Tabelle). <br>Damit benötigt man ohne Codierung ebenso viele Bit: <i>N</i><sub>Bit</sub> <u>= 1250</u>. | |
− | + | '''(2)''' Die gesamte Symbolfolge der Länge <i>N</i> = 1250 beinhaltet <i>N</i><sub>B</sub> = 25 Symbole <b>B</b> und somit <i>N</i><sub>A</sub> = 1225 Symbole <b>A</b>. <br>Damit gilt für die relative Häufigkeit von <b>B</b>: | |
:hB=NBN=251250=0.02_=2%. | :hB=NBN=251250=0.02_=2%. | ||
− | + | '''(3)''' Wir betrachten nun <i>Run–Length Coding</i> (RLC), wobei jeder Abstand zwischen zwei <b>B</b>–Symbolen mit 8 Bit dargestellt wird (<i>D</i> = 8). Damit ergibt sich mit <i>N</i><sub>B</sub> = 25: | |
:NBit=NB⋅8=200_. | :NBit=NB⋅8=200_. | ||
− | + | '''(4)''' <i>Run–Length Coding</i> mit <i>D</i> = 7 erlaubt für <i>L<sub>i</sub></i> nur Werte zwischen 1 und 127. Der Eintrag "226" in Zeile 19 ist aber größer ⇒ <u>NEIN</u>. | |
− | + | '''(5)''' Auch bei <i>Run–Length Limited Coding</i> (RLLC) sind für die "echten" Abstände <i>L<sub>i</sub></i> mit <i>D</i> = 7 nur Werte zwischen 1 und 2<sup>7</sup> – 1 = 127 zulässig. Der Eintrag "226" in Zeile 19 wird bei RLLC ersetzt durch | |
− | + | * Zeile 19a: <b>S</b> = <b>0000000</b> ⇒ Sonderzeichen, steht für "+ 127", | |
+ | |||
+ | * Zeile 19b: <b>1100011</b> ⇒ Dezimal 99. | ||
− | |||
Damit erhält man insgesamt 26 Worte zu je 7 Bit: | Damit erhält man insgesamt 26 Worte zu je 7 Bit: | ||
:NBit=26⋅7=182_. | :NBit=26⋅7=182_. | ||
− | + | '''(6)''' Nun müssen bei RLLC gegenüber RLC (siehe Tabelle) folgende Änderungen vorgenommen werden: | |
+ | |||
+ | * Zeile 1: 122 = 1 · 63 + 59 (ein Wort mehr), | ||
− | + | * Zeile 6: 70 = 1 · 63 + 7 (ein Wort mehr), | |
− | + | * Zeile 7: 80 = 1 · 63 + 17 (ein Wort mehr), | |
− | + | * Zeile 12: 79 = 1 · 63 + 18 (ein Wort mehr), | |
− | + | * Zeile 13: 93 = 1 · 63 + 30 (ein Wort mehr), | |
− | + | * Zeile 19: 226 = 3 · 63 + 37 (drei Worte mehr), | |
− | + | * Zeile 25: 97 = 1 · 63 + 34 (ein Wort mehr). | |
− | |||
Damit erhält man insgesamt 34 Worte zu je 6 Bit: | Damit erhält man insgesamt 34 Worte zu je 6 Bit: | ||
Line 115: | Line 118: | ||
also ein schlechteres Ergebnis als mit 7 Bit gemäß Teilaufgabe (5). | also ein schlechteres Ergebnis als mit 7 Bit gemäß Teilaufgabe (5). | ||
{{ML-Fuß}} | {{ML-Fuß}} | ||
− | |||
− | |||
− | |||
− |
Latest revision as of 16:30, 28 May 2021
Wir betrachten eine Binärquelle mit dem Symbolvorrat A und B, wobei B allerdings nur sehr selten auftritt.
- Ohne Quellencodierung würde man pro Quellensymbol genau ein Bit benötigen, und dementsprechend würde bei einer Quellensymbolfolge der Länge N für die Codebit folge folge ebenfalls NBit=Ngelten.
- Entropiecodierung macht hier ohne weitere Maßnahme (Zusammenfassen mehrerer Symbole zu einem Tupel) wegen der ungünstigen Symbolwahrscheinlichkeiten wenig Sinn.
- Abhilfe schafft Run-Length Coding (RLC), das unter dem genannten Link im Theorieteil beschrieben ist. Zum Beispiel ergibt sich für die Quellensymbolfolge: ABAABAAAABBAAB ... die entsprechende Ausgabe von Run–Lenght Coding: 2; 3; 5; 1; 3; ...
- Natürlich muss man die Längen L1=2, L2=3, ... der einzelnen, jeweils durch B getrennten Substrings vor der Übertragung binär darstellen. Verwendet man für alle Li jeweils D=3 (Bit), so erhält man die RLC–Binärfolge 010′011′101′001′011′...
Die Grafik zeigt das das zu analysierende RLC–Ergebnis. In Spalte 2 und 3 sind die Substringlängen Li binär bzw. dezimal angegeben und in Spalte 4 in kumulierter Form (Werte von Spalte 3 aufsummiert).
Ein Problem von Run-Length Coding (RLC) ist der unbegrenzte Wertebereich der Größen Li. Mit D=3 kann kein Wert Li>7 dargestellt werden und mit D=2 lautet die Beschränkung 1≤Li≤3.
Das Problem umgeht man mit Run–Length Limited Coding (RLLC). Ist ein Wert Li≥2D, so ersetzt man Li durch ein Sonderzeichen S und die Differenz Li−2D+1. Beim RLLC–Decoder wird dieses Sonderzeichen S wieder expandiert.
Hinweise:
- Die Aufgabe gehört zum Kapitel Weitere Quellencodierverfahren.
- Insbesondere wird Bezug genommen auf die Seite Lauflängencodierung – Run-Length Coding.
RLLC–Beispiel 2: Wir gehen wieder von obiger Folge und dem Parameter D=2 aus:
- Quellensymbolfolge: ABAABAAAABBAAB ...
- RLC–Dezimalfolge: 2; 3; 5; 1; 3; ...
- RLLC–Dezimalfolge: 2; 3; S;2; 1; 3; ...
- RLLC–Binärfolge: 01′11′ 00′10′01′11′...
Man erkennt:
- Das Sonderzeichen S ist hier als 00 binär–codiert. Dies ist nur ein Beispiel – es muss nicht so sein.
- Da mit D=2 für alle echten RLC–Werte 1≤Li≤3 gilt, erkennt der Decoder das Sonderzeichen 00.
- Er ersetzt dieses wieder durch 2D−1 (im Beispiel drei) A–Symbole.
Fragebogen
Musterlösung
Damit benötigt man ohne Codierung ebenso viele Bit: NBit = 1250.
(2) Die gesamte Symbolfolge der Länge N = 1250 beinhaltet NB = 25 Symbole B und somit NA = 1225 Symbole A.
Damit gilt für die relative Häufigkeit von B:
- hB=NBN=251250=0.02_=2%.
(3) Wir betrachten nun Run–Length Coding (RLC), wobei jeder Abstand zwischen zwei B–Symbolen mit 8 Bit dargestellt wird (D = 8). Damit ergibt sich mit NB = 25:
- NBit=NB⋅8=200_.
(4) Run–Length Coding mit D = 7 erlaubt für Li nur Werte zwischen 1 und 127. Der Eintrag "226" in Zeile 19 ist aber größer ⇒ NEIN.
(5) Auch bei Run–Length Limited Coding (RLLC) sind für die "echten" Abstände Li mit D = 7 nur Werte zwischen 1 und 27 – 1 = 127 zulässig. Der Eintrag "226" in Zeile 19 wird bei RLLC ersetzt durch
- Zeile 19a: S = 0000000 ⇒ Sonderzeichen, steht für "+ 127",
- Zeile 19b: 1100011 ⇒ Dezimal 99.
Damit erhält man insgesamt 26 Worte zu je 7 Bit:
- NBit=26⋅7=182_.
(6) Nun müssen bei RLLC gegenüber RLC (siehe Tabelle) folgende Änderungen vorgenommen werden:
- Zeile 1: 122 = 1 · 63 + 59 (ein Wort mehr),
- Zeile 6: 70 = 1 · 63 + 7 (ein Wort mehr),
- Zeile 7: 80 = 1 · 63 + 17 (ein Wort mehr),
- Zeile 12: 79 = 1 · 63 + 18 (ein Wort mehr),
- Zeile 13: 93 = 1 · 63 + 30 (ein Wort mehr),
- Zeile 19: 226 = 3 · 63 + 37 (drei Worte mehr),
- Zeile 25: 97 = 1 · 63 + 34 (ein Wort mehr).
Damit erhält man insgesamt 34 Worte zu je 6 Bit:
- NBit=34⋅6=204_,
also ein schlechteres Ergebnis als mit 7 Bit gemäß Teilaufgabe (5).