2016-07-30 6 views
-2

Ich versuche, eine Dezimalzahl in eine binäre Form zu transformieren, aber trotzdem Entfernungsinformation zu behalten. Wie 10-2 = 8 im euklidischen Raum, aber im binären Fall, Hamming (1010-0010) = 1, verlor offensichtlich die Entfernungsinformation viel. Gibt es eine Möglichkeit, 10 in eine binäre Form zu transformieren, aber trotzdem die Distanzeigenschaft in der Hamming-Abstandsmetrik beizubehalten? Der naive Weg ist Hamming (1111111111-0000000011) = 8 ....Wie wandelt man eine Dezimalzahl in eine binäre Form um, behält aber die Entfernungseigenschaft?

+1

Sie haben keine Informationen verloren, indem Sie in binär konvertiert haben: 1010 - 0010 ist immer noch 1000. Sie haben Informationen verloren, indem Sie sich entschieden haben, den Popcount 1000 zu berechnen, anstatt seinen numerischen Wert zu verwenden. – Hurkyl

Antwort

0

Sie haben gefunden, was im Grunde die einzige Distanz Erhaltung Karte aus dem metrischen Raum von nichtnegativen ganzen Zahlen mit Abstand d(x,y) = |x-y| zum metrischen Raum von Bit Vektoren mit der Hamming Entfernung.

Dies ist nicht schwer zu beweisen: d(x,0) = x, so muss die Transformation von xx Bits gesetzt haben. Ähnlich, wenn x<y, dann müssen die in der Transformation von x gesetzten Bits eine Teilmenge der in der Transformation von y gesetzten Bits sein.

Also, was Sie gebaut haben, ist im Grunde Ihre einzige Option, wenn Sie wirklich und wirklich in dem Raum der Bit Vektoren und Hamming Abstand arbeiten müssen.

+0

Vielen Dank für Ihre Antwort, eigentlich dachte ich, es könnte der beste Weg sein, ohne Informationen zu transformieren. Ich denke, ich kann ein bisschen Abstand akzeptieren, vielleicht, aber ich werde versuchen, dafür einen besseren Weg zu finden. Vielen Dank. –

+0

@Hx: Ich denke, wenn Sie als separate Frage darstellen, welches Programmierproblem Sie damit zu lösen versuchten, würden Sie nützliche Antworten bekommen. – Hurkyl

Verwandte Themen