Ziel
Wie kann man die Daten kodieren, die beschreiben, wie man eine statische Liste von einer Bestellung in eine andere bestellen kann, indem man die minimale Anzahl von möglichen Bytes verwendet?
Ursprüngliche Motivation
Ursprünglich entstand dieses Problem während der Arbeit an einem Problem, bei dem Sensordaten mittels teurer Satellitenkommunikation weitergeleitet wurden. Ein Gerät hatte eine Liste von etwa 1.000 Sensoren, die überwacht wurden. Die Sensorliste konnte nicht geändert werden. Jeder Sensor hatte eine eindeutige ID. Alle Daten wurden intern für eine spätere Analyse protokolliert. Das einzige, was Endbenutzer täglich benötigten, war, welcher Sensor in welcher Reihenfolge ausgelöst wurde.
Das gesamte Projekt wurde verschrottet, aber dieses Problem scheint zu interessant zu sein, um ignoriert zu werden. Auch vorher habe ich über "Swaps" gesprochen, weil ich an den Sortieralgorithmus gedacht habe, aber eigentlich ist es die Gesamtordnung, die wichtig ist, die Schritte, die erforderlich sind, um zu dieser Reihenfolge zu gelangen, wären wahrscheinlich egal.
Wie die Daten bestellt wurden
In SQL-Begriffen könnte man sich das so vorstellen.
%Vor%Annahmen
Wie gesagt, das Projekt / die Hardware ist nicht mehr so, das ist jetzt nur ein akademisches Problem.
Die Herausforderung!
Definieren Sie einen Encoder
Definieren Sie einen Decoder
Viel Spaß mit allen.
Schemata, die auf Diff- oder Off-Shelf-Komprimierung basieren, nutzen das Wissen, dass nicht alle Permutationen gleich wahrscheinlich sind. Je nachdem, welches Gerät Sie verwenden, können Sie davon Kenntnis haben, oder Sie können anhand der vorherigen Daten sehen, ob dies der Fall ist. Gut, wenn es funktioniert. In einigen Fällen mit Sensoren und Satelliten könnten Sie sich über seltene Ausnahmen Gedanken machen, bei denen Sie im schlimmsten Fall das Verhalten Ihres Komprimierungsschemas bekommen und plötzlich mehr Daten übertragen werden, als Sie erwartet haben.
Tags und Links algorithm optimization computer-science sorting