AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Vorwärts- / rückwärts-dynamische Entropiekodierung
Thema durchsuchen
Ansicht
Themen-Optionen

Vorwärts- / rückwärts-dynamische Entropiekodierung

Ein Thema von Meflin · begonnen am 4. Mai 2009 · letzter Beitrag vom 5. Mai 2009
Antwort Antwort
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#1

Vorwärts- / rückwärts-dynamische Entropiekodierung

  Alt 4. Mai 2009, 09:23
Moin moin,

Entropiekodierung (statistische Kodierung) ist ja erstmal relativ leicht nachzuvollziehen, solange man sich das statische Modell anschaut. Man muss ja nur die Zeichen zählen und entsprechend ihrer Häufigkeit kürzer oder länger kodieren.

Jetzt gibts ja aber auch das dynamische Modell, bzw. gleich deren zwei, nämlich die vorwärts-dynamische und die rückwärts-dynamische Entropiekodierung. Und da verstehe ich jetzt irgendwie überhauptnichtmehr was abgeht

1) Wo besteht der Unterschied zwischen vorwärts-dynamisch und statisch? Wenn beim vorwärts-dynamischen nach dem Kodieren eines Zeichens dessen Häufigkeit erhöht wird, wo liegt dann im Endeffekt der unterschied zum statischen (die Zähler für jedes Zeichen müssen ja dann am Schluss gleich sein!)? Und insbesondere verstehe ich nicht, wieso die Statistiken beim vorwärts-dynamischen Modell nicht mit übertragen werden müssen.

2) Wo liegt der Unterschied zwischen dem rückwärts-dynamischen und dem statischen Modell? Hier werden ja genau wie beim statischen vor dem Kodieren alle Zeichen gezählt, und dann während dem Kodieren wird beim Vorkommen eines Zeichens dessen Zähler verringert. Wieso? Was soll das bringen?


Nuja, ich hoffe es kann jemand etwas Licht in mein Dunkel bringen
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Vorwärts- / rückwärts-dynamische Entropiekodierung

  Alt 4. Mai 2009, 09:56
ich vermute mal...

bei der statischen Kodierung hast Du ja die Zuordnung der Zeichen zum Code über das ganze Dokument fest. Dadurch ergibt sich nur über das ganze Dokument eine optimale Kodierung.

Die dynamische Kodierung prüft permanent bei den verbleibenden Zeichen die Häufigkeit und ordnet die Zeichen neuem Code zu und bleibt so auch für Teilbereiche bei der optimalen Kodierung.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#3

Re: Vorwärts- / rückwärts-dynamische Entropiekodierung

  Alt 4. Mai 2009, 11:20
Jo, aber wie soll man sich das konkret vorstellen?

Wenn man das mal am Beispiel "HELLOWORLD" durchexerzieren würde... Statisch wäre das ja dann z.B.
Code:
L   3    0
O   2    1
H   1    00
E   1    01
W   1    10
R   1    11
D   1    000
Also quasi kodiert
Code:
00  01  0  0  1  10  1  11  0  000
Aber wie sollte man jetzt da vorwärts- und rückwärtsdynamisch vorgehen?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Vorwärts- / rückwärts-dynamische Entropiekodierung

  Alt 4. Mai 2009, 12:52
Wir fangen mit einem bestimmten Kodierungsmuster mit irgendwelchen willkürlichen 'Häufigkeiten' an. Diese Anfangskodierung wird empirisch ermittelt.

Nun wird ein Zeichen kodiert. Anschließend erhöht man die Häufigkeit und passt das Kodierungsmuster an*.

Beim Dekodieren liest man den ersten Code, dekodiert das Zeichen und passt wieder das (De-)kodierungsmuster an.

Wo der unterschied zwischen Vorwärts und Rückwärts ist, weiss ich aber nicht.


*In der Realität wird man nicht jedes mal das Kodierungsmuster anpassen, weil das etwas zu lange dauern würde, denke ich.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.145 Beiträge
 
Delphi 12 Athens
 
#5

Re: Vorwärts- / rückwärts-dynamische Entropiekodierung

  Alt 4. Mai 2009, 13:22
http://de.wikipedia.org/wiki/Entropiekodierung

wenn ich das richtig versteh, dann wird praktisch "Blockweise" Kodiert und ...

vorwärts dynamisch: ... praktisch die Verteilung über breits kodierte Zeichen/Blöcke bestimmt
(sozusagen in den vorherigen Blöcken, bzw. dem vorherigen Block, wärend des Kodierens mitgezählt und das Zählergebnis im nächsten Block zum Kodieren verwendet)

rückwärts dynamisch: ... erstmal der Block angesehn und vor der Kodierung dieser Block analysiert

statisch: ... vorher alle Daten analysiert und dann kodiert.



rückwärts dynamisch wäre dann sozusagen alles in blöcke aufgeteilt und dann jeder Block einzeln sozusagen statisch kodiert


@Meflin:

HELLOWORLDBYHIMITSU > HELLO + WORLD + BYHIM + ITSU

rückwärts dynamisch:
- HELLO analysieren
- und anhand der Analyse kodieren
- WORLD analysieren
- und anhand der Analyse kodieren
- BYHIM analysieren
- und anhand der Analyse kodieren
- ITSU analysieren
- und anhand der Analyse kodieren

vorwärts dynamisch:
- irgendwelche Standardwerte als Analyse laden (oder den ersten Block gegen die Definition analysieren)
- HELLO und anhand der Analyse kodieren
und währenddessen/parallel die Zeichen von HELLO mitzählen/analysieren
- WORLD und anhand der letzen Analyse kodieren
und währenddessen/parallel die Zeichen von WORLD mitzählen/analysieren
- BYHIM und anhand der letzen Analyse kodieren
und währenddessen/parallel die Zeichen von BYHIM mitzählen/analysieren
- ITSU und anhand der letzen Analyse kodieren
[und währenddessen/parallel die Zeichen von ITSU mitzählen/analysieren]


ich würde die Vor-/Nachteile dann so definieren:
statisch:
+ ein Wörterbuch (welches Zeichen wie kodiert wurde)
- wenn sich die verteilung über die gesamten Daten "öfters" mal ändert, ist es insgesamt zwar optimal kodiert, aber nicht in Bezug auf einzelne Blöcke

vorwärts dynamisch:
+ sind mehrere Blöcke nacheinander mit gleicher Verteilung, dann wären die nachfolgenden Blöcke gut kodiert
- der erste Block (nach Verteilungsveränderung) wäre nicht optimal kodiert
+ man benötigt aber nur ein oder garkein (wenn man zum Anfang ein Standardwörterbuch läd) Wörterbuch
(beim Standardwörterbuch könnte man ja anhand des Dateitypes schonmal ein "möglichst" Optimales auswählen)

rückwärts dynamisch:
+ jeder Block wird optimal kodiert
- aber für jeden Block wäre ein Wörterbuch notwendig
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#6

Re: Vorwärts- / rückwärts-dynamische Entropiekodierung

  Alt 5. Mai 2009, 12:06
@Himitsu: Den Wiki-Artikel kenne ich, finde ihn aber nicht sehr hilfreich. wie sicher biste dir denn bei deinen ausführungen ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.145 Beiträge
 
Delphi 12 Athens
 
#7

Re: Vorwärts- / rückwärts-dynamische Entropiekodierung

  Alt 5. Mai 2009, 12:36
Zitat von Meflin:
wie sicher biste dir denn bei deinen ausführungen ?
0,000005%

nja, so hab ich das halt verstanden und irgendwie klingts och logisch so
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#8

Re: Vorwärts- / rückwärts-dynamische Entropiekodierung

  Alt 5. Mai 2009, 17:31
Zitat von himitsu:
nja, so hab ich das halt verstanden und irgendwie klingts och logisch so
Hm, naja, das mit der rückwärts-dynamischen kann ich nicht so recht glauben. Das wäre ja ein eklatanter Datenoverhead (die ganzen Statistiken für jeden Block die ja alle mit übertragen werden müssen) und damit eigentlich genau das, was man durch die Kodierung entfernen wollte
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.145 Beiträge
 
Delphi 12 Athens
 
#9

Re: Vorwärts- / rückwärts-dynamische Entropiekodierung

  Alt 5. Mai 2009, 17:37
wenn der Block und der Kodierungsgewinn größer als die Statistik sind, dann hat man ja dennoch was gewonnen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz