Thomas 'PointedEars' Lahn <
Point...@web.de> schrieb:
> Martin Vaeth wrote:
>
>> Thomas 'PointedEars' Lahn <
Point...@web.de> schrieb:
>>> Allerdings ist das trotzdem nicht die effizienteste Form der Übertragung
>>> eines Lottoergebnisses.
>>
>> Doch. Unter der Voraussetzung, dass Du nicht a-priori Wissen über das
>> Lottorgebnis hast, ist es das.
>
> A-priori Wissen ist immer vorhanden, es handelt sich ja nach Vorgabe um
> Lotto „6 aus 49“
Damit hat man das a-priori-Wissen strenggenomme eben noch nicht exakt
spezifiziert.
> Es geht aber nicht darum, wie leicht eine Codierung erratbar ist, sondern
> wie effizient die Codierung, Übertragung und Decodierung der Information
> ist
Eben. Und wenn man sich darauf einigt, dass es genau darum geht, ist
die Spezifizierung der Codierung Teil des a-priori Wissens, wie auch
immer die Codierung aussieht.
> Sender und Empfänger müssen aber dieselbe Software benutzen (können).
Nein. Sender und Empfänger müsse beide die Codierung kennen.
Welche Software sie zum codieren oder decodieren benutzen, ist
vollkommen egal.
> Bei der Übertragung der Bitmaske oder reinen Zahlen ist das nicht nötig.
Doch. Selbstverständlich ist das da genauso nötig. Stell Dir vor, Du
erhälst einige Bytes aus der Zukunft und erfährst nur, dass es die
Lottozahlen enthält. Das könnte der Bitstream sein, die Zahlen in
49-er Basis als eine große Binärzahl codiert, die Zahlen in 64-er Basis,
pro Byte eine Zahl beginnend bei 0, pro Byte eine Zahl beginnend bei 1,
usw.
Klar, aufgrund der Länge und ggf. großer Redundanz kannst Du die
Codierung mit gewisser Wahrscheinlichkeit erraten, aber oben haben
wir uns ja darauf geeinigt, dass es nicht darum geht, wie leicht
es zu erraten ist, sondern wie effizient es ist.
Bei Bitmaske und reinen Zahlen das eben genau *nicht* ineffizient,
sogar so ineffizient, dass in den redundanten Informationen implizit
so viel drin steckt, dass Du mit großer Wahrscheinlichkeit die
Codierung *erraten* kannst. Aber eben auch nicht sicher:
Wenn Du 8 Bytes hast, und es sind genau 6 Bit gesetzt, ist die
Wahrscheinlichkeit für einen Bytestream hoch, aber Du musst Du immer
noch raten, welches Bit für welche Zahl steht. (Es gibt da zwar nur
einige "kanonische" Möglichkeiten, aber immer noch einige.)
>> Beides ist Unsinn, weil Du die Nicht-Übertragung der Codierung mit einer
>> Übertragung der Codierung vergleichst,
>
> Nein; ich denke nur praktisch und berücksichtige alle Aspekte der
> Implementierung
Eben nicht: Du diskutierst die Übertragung der Weise der Codierung
eben nur in einem Fall und nimmst fälschlicherweise an, dass Du das
im anderen Fall nicht tun müsstest.
Tatsächlich lässt sich die Frage der Übertragung der *Codierung* aber
höchstens dann "in Bit" beantworten, wenn man das Vorwissen von
Sender und Empfänger *exakt* spezifiziert. Deswegen ist die
Kolmogorov-Komplexität auch nur bis auf eine addititve
Konstante definiert, die dann ggf. von weiteren Spezifizierungen
abhängt.
> wohingegen Du meinst, es käme nur auf das übertragene
> Datenvolumen an.
Weil das die einzig sinnvolle Frage in diesem Zusammenhang ist.
>> letzteres auch noch auf denkbar ungeschickte Weise durchführen willst.
>
> Ob das so ungeschickt ist, hängt von den Gegebenheiten ab.
Jein: Wie oben erwähnt hängt die Frage der "geschicktesten"
Übertragung der Codierung natürlich von der exakten Spezifikation
des a-priori Wissens des Empfängers ab. Wenn das allerdings
die geschickteste Form sein sollte, und es für andere Codierungen
kürzer als mit einer Tabelle von ähnlicher Länge ginge: Man kann
natürlich so eine Spezifikation machen, aber das hat mit der
von Dir vorgeschobenen "Praxisnähe" natürlich nichts zu tun.
>> Der einzige, der hier einem Trugschluss aufsitzt bist Du.
Ich bitte um Entschuldigung für die unangemessene ad-hominem
Formulierung.
>>> Auch wenn das Mapping eines Ergebnisses auf einen Index
>>> durch geeignete Datenstrukturen wie Bäume relativ effizient ist [𝓞(1)].
>>
>> Mit Bäumen haben die effizienten Algorithmen nichts zu tun,
>
> Das kommt auf die Algorithmen an. Es ist möglich, mit Bäumen ein
> solches Mapping effizient durchzuführen.
Es ist natürlich immer möglich, Bäume künstlich einzuführen, aber
bei der gegebenen Abbildung tauchen sie m.E. nicht natürlich auf.
>> In dem Fall hat natürlich *jeder* Algorithmus konstante Laufzeit.
>
> Konstant ja (die Anzahl der Daten ist ja endlich), aber nicht jeder
> Suchalgorithmus hat dieselbe Komplexität.
Eben. Der Begriff der Komplexität ist halt nur für nicht-konstante
Daten sinnvoll, und sobald man natürlich Parameter einführt ("k aus n"
o.ä.), haben Baum-basierte Algorithmen eben nicht mehr - wie von Dir
behauptet - konstante Komplexität.
>> Dann hat sie nämlich eine Länge von 49!/43! bzw. 49^6
>> (falls Du sogar doppelte Zahlen erlauben wolltest),
>
> Will ich nicht, wie aus meinm Beispiel hervorgeht.
Also der erste Fall: Ziehen von 6 aus 49 ohne Zurücklegen
*mit* Berücksichtigung der Reihenfolge hat 49*…*44 = 49!/43!
Möglichkeiten. (Bei doppelten Zahlen wären es sogar 49^6).
Wenn Du die "falsch" geordneten Kombinationen (bzw. zusätzlich
die Kombinationen mit Doppelten) nicht *vorher* aus Deiner
Tabelle entfernst, ist das die Länge der Tabelle und damit
die maximal nötige Zahl zur Übertragung, falls Du diese Tabelle
als Grundlage der Codierung benutzt.
>> wären die codierten Daten in beiden Fällen 34 Bit lang
>
> Wie kommst Du darauf?
log_2(49!/43!) bzw. log_2(49^6) = 6 log_2(6)
haben aufgerundet beide den Wert 34.