فاصله همینگ
در تئوری اطلاعات فاصلهٔ همینگ برای دو رشته با طول مساوی، برابر تعداد مکانهایی است که سمبلهای متناظر متفاوت هستند. به عبارت دیگر، کمترین تعداد جایگزینی هایی است که یک رشته به یک رشته دیگر تغییرپیدا کند، یا تعداد خطاهایی که یک رشته به رشته دیگر تبدیل گردد.
مثالها
فاصله همینگ بین:
- «toned»و«roses»سه هست.
- ۱۰۱۱۱۰۱ و ۱۰۰۱۰۰۱ دو هست.
- ۲۱۷۳۸۹۶ و ۲۲۳۳۷۹۶ سه هست.
مشخصات
برای یک طول ثابت n، فاصله همینگ یک معیاراندازه روی فضای برداری از کلماتی با آن طول میباشد، بطوریکه دارای شرایط غیر منفی، هویت متقارن و غیرقابل تشخیص تحقق مییابد، و آن میتواند به خوبی مسئله ارضاء نابرابری مثلث رابوسیله استقراءکامل نشان دهد. فاصله همینگ بین دوکلمه a و b میتواند همچنین به وسیلهٔ وزن هامینگ a-b برای یک انتخاب مناسب از عملگر - مشاهده گردد.
برای رشته دودویی a و b فاصله همینگ برابر با تعداد یکهای a یای مانعةالجمع b میباشد. فضای برداری رشتههای دودویی با طول n، با فاصله همینگ، به عنوان Hamming cube شناخته میشود;که آن معادل با فضای برداری مجموعه فواصل بین برداری در یک گراف ابر مکعب میباشد. میتوان یک رشته دودویی با طول 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 .
- 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 .
- Wegner, Peter (1960), "A technique for counting ones in a binary computer", Communications of the ACM, 3 (5): 322, doi:10٫1145/367236٫367286 .
پیوند به بیرون
- 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.