|  |  |
| --- | --- |
| 3-bit binary مکعب for finding Hamming distance | Two example distances: 100->011 has distance 3 (red path); 010->111 has distance 2 (blue path) |
| 4-bit binary تسرکت for finding Hamming distance |
| Two example distances: 0100->1001 has distance 3 (red path); 0110->1110 has distance 1 (blue path) |

در تئوری اطلاعات **فاصلهٔ همینگ** برای دو رشته با طول مساوی، برابر تعداد مکان‌هایی است که سمبل‌های متناظر متفاوت هستند. به عبارت دیگر، کمترین تعداد *جایگزینی هایی* است که یک رشته به یک رشته دیگر تغییرپیدا کند، یا تعداد *خطاهایی* که یک رشته به رشته دیگر تبدیل گردد.

مثالها
------

فاصله همینگ بین:

* «**toned**»و«**roses**»سه هست.
* **۱۰۱۱۱۰۱** و **۱۰۰۱۰۰۱** دو هست.
* **۲۱۷۳۸۹۶** و **۲۲۳۳۷۹۶** سه هست.

مشخصات
------

برای یک طول ثابت *n*، فاصله همینگ یک معیاراندازه روی فضای برداری از کلماتی با آن طول می‌باشد، بطوری‌که دارای شرایط غیر منفی، هویت متقارن و غیرقابل تشخیص تحقق می‌یابد، و آن می‌تواند به خوبی مسئله ارضاء نابرابری مثلث رابوسیله استقراءکامل نشان دهد. فاصله همینگ بین دوکلمه a و b می‌تواند همچنین به وسیلهٔ وزن هامینگ a-b برای یک انتخاب مناسب از عملگر - مشاهده گردد.
برای رشته دودویی a و b فاصله همینگ برابر با تعداد یک‌های a یای مانعةالجمع b می‌باشد. فضای برداری رشته‌های دودویی با طول n، با فاصله همینگ، به عنوان Hamming cube شناخته می‌شود;که آن معادل با فضای برداری مجموعه فواصل بین برداری در یک گراف ابر مکعب می‌باشد. می‌توان یک رشته دودویی با طول n را در {\displaystyle R^{n}} نشان داد بطوری‌که هر سمبل در رشته به عنوان یک مؤلفه حقیقی رفتار نماید. با این تعبیه، رشته هاراس‌های یک ابرمکعب n بعدی را شکل می‌دهند، و فاصله همینگ رشته‌ها برابر با فاصله مانهاتان (فاصله منهتن)بین رأس‌ها می‌باشد.

تاریخچه و کاربردها
------------------

فاصله هامینگ از نام ریچارد همینگ گرفته شده‌است. که در مقاله بنیادی اش در مورد کد همینگ معرفی شد. که در ارتباطات برای شمارش تعدادبیت‌های معکوس دریک کلمه دودویی با طول ثابت جهت تخمین خطارا می‌شمارد وبنابراین اکثر مواقع به آن **signal distance**گفته می‌شود. آنالیز وزن همینگ در چندین جا شامل نظریه اطلاعات، نظریه کدگذاری و رمزنگاری مورد استفاده قرارگرفته‌است. بهر حال برای مقایسه رشته‌های باطول متفاوت یا رشته‌های که شامل حذف یا درج می‌باشند اما شامل جابجایی نمی‌باشند اندازه‌گیری‌های پیچیده تری مانند فاصله لون‌اشتاین مورد نیاز می‌باشد. برای رشته‌های q تایی روی الفبای *q* ≥ ۲ فاصله همینگ در حالت ماژولایون متعامد انجام می‌گیرد. درحالی که Lee distance برای ماژولاسیون فازی صورت می‌گیرد. در حالت q=2,q=۳ دو حالت فاصله فراهم گردیده‌است. فاصله همینگ همچنین در کلاس بندی فاصله ژنتیکی مورد استفاده قرار گرفته‌است. در Lee distance نقاط یک von Neumann neighborhood آن نقطه را تشکیل می‌دهند.

مثال الگوریتم
-------------

تابع پایتون فاصله همینگ بین دورشته با طول مساوی رامحاسبه می‌کند. با ایجاد یک دنباله از صفر و یک‌ها برابری یا عدم برابری دو رشته را نشان می‌دهیم و سپس دنباله را جمع می‌کنیم.

```
def hamming\_distance(s1, s2):
    assert len(s1) == len(s2)
    return sum(ch1!= ch2 for ch1, ch2 in zip(s1, s2))

```

تابع C زیر فاصله همینگ دو عدد صحیح را محاسبه می‌کند(شامل مقادیر دودویی به صورت دنباله‌ای از بیت‌ها). زمان اجرای زیر برنامه بر اساس تعدادبیت‌های اعداد ورودی مشخص می‌گردد. آن bitwise را برای دو وروی محاسبه می‌کند. و سپس وزن همینگ نتیجه را (تعداد بیت‌های غیر صفر)با استفاده از الگوریتم harvtxt۱۹۶۰ پیدا می‌کند.

```
unsigned hamdist(unsigned x, unsigned y)
{
 unsigned dist = 0, val = x ^ y;

 // Count the number of set bits
 while(val)
 {
 ++dist;
 val &= val - 1;
 }

 return dist;
}

```

جستارهای وابسته
---------------

* درگاه ریاضی

* کد همینگ
* ریچارد همینگ

منابع
-----

* 

مالکیت عمومی این مقاله حاوی محتوای تحت مالکیت عمومی از سند «Federal Standard 1037C». General Services Administration است.

* Hamming, Richard W. (1950), "Error detecting and [[error correcting code]]s" (PDF), *Bell System Technical Journal*, **29** (2): 147–۱۶۰, MR0035935, archived from the original (PDF) on 25 May 2006, retrieved 23 June 2011 `{{citation}}`: URL–wikilink conflict (help).
* Pilcher, C. D.; Wong, J. K.; Pillai, S. K. (March 2008), "Inferring HIV transmission dynamics from phylogenetic sequence relationships", *PLoS Med.*, **5** (3): e69, doi:10٫1371/journal.pmed.0050069, PMC 2267810, PMID 18351799 `{{citation}}`: Check `|doi=` value (help).
* Wegner, Peter (1960), "A technique for counting ones in a binary computer", *Communications of the ACM*, **3** (5): 322, doi:10٫1145/367236٫367286 `{{citation}}`: Check `|doi=` value (help).

پیوند به بیرون
--------------

* Example of Hamming distance
* Hamming Code Tool Tool to generate hamming code
* set\_matcher Tool to match two families of sets from the same base population using Hamming distance.