• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    C++:漢明距離的實現

    緒:

    漢明距離是一種權衡特征距離的計較方式,

    其本家兒要思惟是找到兩個特征之間的差別巨細,也可以說是相似性;

    漢明距離是以理查德·衛斯里·漢明的名字定名的,漢明在誤差檢測與校正碼的根本性論文中初次引入這個概念。

    用來權衡2個二進制碼字之間的相似水平的。

    東西/原料

    • C++編譯器

    方式/步調

    1. 1

      漢明距離界說:

      從二進制上講是:兩個等長字符串的二進制對應位不不異的位個數;

      例如:

      “toned”和”roses”的漢明距離是3。

      1011101和1001001的漢明距離是2。

      2173896和2233796的漢明距離是3。

    2. 2

      漢明距離的意義:

      對于二進制字符串a和b來說,

      漢明距離等于a^b中1的數量,又叫做漢明權重。

      長度為n的二進制字符通同過漢明距離組成了一個懷抱空間(metric space),

      稱漢明立方(Hamming Cube);

      下圖給出了在hypercube中:

      0100→1001 (紅色)的漢明距離是 3;

      0110→1110 (藍色)的漢明距離是 1;

    3. 3

      漢明距離實現思緒:

      ①將兩個給心猿意馬的數進行異或(^)運算后保留在變量a中,

      則漢明距離就是二進制a中1的個數;

      ②當a不為0時,和0x01進行按位與(&)運算,若是成果為1,則統計變量加一

      ③將a右移一位,反復第02步

    4. 4

      代碼:

      //漢明距離計較

      int hamDist(char *a, char *b)

      {

             int dist = 0;

             while (*a && *b)

             {

                    dist += (*a != *b)?1:0;//異或

                    *a++;

                    *b++;

             }

             return dist;

      }

      int main()

      {

             char *a,*b;//字符指針

             a = "0000100100000001";

             b = "0010100001100100";

             int dist = hamDist(a,b);

             printf("%d\n",dist);

             getchar();

             return 0;

      }

    5. 5

      計較兩個整數的二進制漢明距離;

      Wegner (1960)給出了一種計較漢明權重(即計較給心猿意馬整數的二進制暗示中1的個數)的算法,經由過程頻頻查找并消弭最低的非零位來實現。

      基于此利用C說話實現的計較漢明距離的算法如下:

      //while輪回的次數就是漢明距離;

      //計較漢明距離

      unsigned int value = a^b;

      int GetHammingWeight(unsigned int value)

      {

             if(value == 0)

                    return 0;

             int a = value;

             int b = value -1;

             int c = 0;

             int count = 1;

             while(c = a & b)

             {

                    count++;

                    a = c;

                    b = c-1;

             }

             return count;

      }

    6. 6

      漢明距離的應用:

      漢明距離本家兒要應用在通信編碼范疇上,用于擬定可糾錯的編碼系統。

      在機械進修范疇中,漢明距離也經常被用于作為一種距離的懷抱體例;

    注重事項

    • C++漢明距離的實現;計較給心猿意馬整數的二進制暗示中1的個數
    • while輪回的次數就是漢明距離;
    • 發表于 2018-05-08 00:00
    • 閱讀 ( 973 )
    • 分類:其他類型

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    admin
    admin

    0 篇文章

    作家榜 ?

    1. xiaonan123 189 文章
    2. 湯依妹兒 97 文章
    3. luogf229 46 文章
    4. jy02406749 45 文章
    5. 小凡 34 文章
    6. Daisy萌 32 文章
    7. 我的QQ3117863681 24 文章
    8. 華志健 23 文章

    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆