myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Brauche Hilfe bei Hamming Distanz (https://mygully.com/showthread.php?t=2063625)

reny 18.06.10 13:33

Brauche Hilfe bei Hamming Distanz
 
Hi ich brauche eure Hilfe ich möchte ein Programm schreiben welches bei gegebener Hammingdistanz und Bitlänge alle möglichen Codes ausgibt. Mir ist es hierbei egal ob in JAVA od. C++.

Wie mache ich das am besten?

(XOR)

mfg

kramido 18.06.10 15:41

Der einfachste Lösungsansatz ist per Brute-Force.


Try&Error:
Code:


//Code, der analysiert werden soll
const int code = 0b1001011;
//Bitlänge des Codes
const int bitlaenge = 7;
//Maximale Distanz, die angezeigt werden soll
const int maxHd = 3;


//Für 7 Bit gibt es 2^7 Codes von 0 bis 2^7 - 1
const int pruefeBis = (1<<bitlaenge) - 1;
//Für alle erlaubten Kombinationen Durchlauf starten
for(int i = 0; i < pruefeBis; i++)
{
        //Sofern Code nicht identisch mit pruefeBits ist und innerhalb der
        //angezeigten HD, ausgeben
        if(i != code && hd(code, i, bitlaenge) < maxHd)
        {
                System.out.println("Code: " + Integer. toBinaryString(i));
        }
}


Berechnung der HD:
Code:

int function hd(int code1, const int code2, const int bitlaenge)
{
        //Initial HD mit null annehmen
        int hd = 0;
       
        //Differenz der Codes berechnen
        code1 = code1 ^ code2;
       
        //Nachfolgend Anzahl der unterschiedlichen Bits bestimmen
       
        //Für alle Bits
        for(int i = 0; i < bitlaenge - 1; i++)
        {
                //Nur unterstes Bit betrachten
                //Sofern unterstes Bit = 1, addieren zu HD
                hd += (code1 & 1);
                //Code shiften
                code1 = code1 >> 1;
        }
       
        return hd;
}

Nicht erprobt, aber sollte vom Sinn passen.

reny 18.06.10 17:42

thx hat mir sehr geholfen habe schon nen ansatz gehabt aber mit nem kleinen bug

mfg
reny:)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:41 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.