رقم را بررسی کنید

از ویکیپدیا، دانشنامه آزاد
رفتن به ناوبری پرش به جستجو

رقم چک شکلی از بررسی فراوانی برای تشخیص خطا در شماره شناسایی، مانند شماره حساب بانکی، که در یک برنامه که در آن آنها حداقل گاهی اوقات ورودی خواهد بود به صورت دستی استفاده می شود است. این شبیه یک بیت برابری دودویی است که برای بررسی خطاها در داده های تولید شده توسط رایانه استفاده می شود. این شامل یک یا چند رقم (یا حروف) است که توسط الگوریتمی از سایر ارقام (یا حروف) در ورودی دنباله محاسبه می شود.

با یک رقم چک می توان خطاهای ساده ای را در ورودی مجموعه ای از کاراکترها (معمولاً ارقام) مانند یک رقم اشتباه تایپ شده یا برخی از جایگزینی های دو رقم پی در پی تشخیص داد.

طراحی

الگوریتم های چک رقمی عموماً برای ثبت خطاهای رونویسی انسان طراحی شده اند . به ترتیب پیچیدگی ، این موارد شامل موارد زیر است: [1]

  • خطای حروف/رقم ، مانند l → 1 یا O → 0
  • خطاهای تک رقمی ، مانند 1 → 2
  • خطاهای جابجایی ، مانند 21 12 12
  • خطاهای دوگانه ، مانند 11 → 22
  • خطاهای جابجایی پرش مانند 232 13 132
  • خطاهای دوقلو پرش ، مانند 232 → 131
  • خطاهای آوایی ، مانند 60 → 16 ("شصت" تا "شانزده")

در انتخاب یک سیستم ، احتمال زیاد اشتباهات در برابر مشکل پیاده سازی معامله می شود. سیستم های ساده رقم چک به راحتی توسط انسان قابل درک و پیاده سازی می شوند ، اما به اندازه خطاهای پیچیده که به اجرای برنامه های پیچیده نیاز دارند ، خطاها را دریافت نمی کنند.

یک ویژگی مطلوب این است که قسمت چپ با صفر نباید رقم چک را تغییر دهد. این امکان استفاده از اعداد طول متغیر و تغییر طول را می دهد. اگر یک عدد چک واحد به شماره اصلی اضافه شود ، سیستم همیشه چندین خطا مانند دو خطای جایگزینی (34 12 12) را ضبط نمی کند ، اگرچه معمولاً خطاهای مضاعف در 90 the موارد تشخیص داده می شوند (هر دو تغییر نیاز به تغییر خروجی با جبران مقادیر).

روش چک رقمی بسیار ساده خواهد بود را به مجموع تمام رقم ( جمع دیجیتالی ) پیمانه 10. این هر گونه خطا تک رقمی گرفتن، و چنین خطایی همیشه مجموع تغییر دهید، اما هیچ خطاهای جابجایی گرفتن نیست (سوئیچینگ دو رقمی) زیرا سفارش مجدد مجموع را تغییر نمی دهد.

یک روش کمی پیچیده تر این است که مجموع وزنی ارقام ، مدول 10 ، با وزن های مختلف برای هر موقعیت عددی را در نظر بگیرید.

برای نشان دادن این موضوع ، برای مثال اگر وزنهای یک عدد چهار رقمی 5 ، 3 ، 2 ، 7 بود و عددی که باید کدگذاری می شد 4871 بود ، در این صورت وزن 5 × 4 + 3 × 8 + 2 × 7 + 7 × 1 = 65 ، یعنی 65 modulo 10 ، و رقم چک 5 خواهد بود و 48715 می دهد.

سیستمهای با وزنهای 1 ، 3 ، 7 یا 9 ، با وزنهای اعداد مجاور متفاوت هستند ، به طور گسترده مورد استفاده قرار می گیرند: به عنوان مثال ، 31 31 وزن در کدهای UPC ، 13 13 وزن در اعداد EAN (الگوریتم GS1) و 371 371 371 وزن مورد استفاده در شماره های ترانزیت بانک های ایالات متحده . این سیستم تمام خطاهای تک رقمی و حدود 90 درصد خطاهای جابجایی را تشخیص می دهد. از 1 ، 3 ، 7 و 9 استفاده می شود زیرا آنها مجرم هستندبا 10 ، بنابراین تغییر هر رقمی رقم چک را تغییر می دهد. با استفاده از ضریب قابل تقسیم بر 2 یا 5 اطلاعات را از دست می دهد (زیرا 5 × 0 = 5 × 2 = 5 × 4 = 5 × 6 = 5 × 8 = 0 مدول 10) و بنابراین برخی خطاهای تک رقمی را دریافت نمی کند. استفاده از وزن های مختلف بر روی اعداد همسایه به این معنی است که اکثر جابجایی ها رقم چک را تغییر می دهند. با این حال ، از آنجا که همه وزنها با یک عدد زوج متفاوت است ، این انتقال دو رقمی را که با 5 ، (0 و 5 ، 1 و 6 ، 2 و 7 ، 3 و 8 ، 4 و 9) متفاوت است ، جابجا نمی کند ، زیرا 2 و 5 ضرب کنید تا 10 بدست آید.

کد ISBN-10 در عوض از modulo 11 استفاده می کند ، که اول است و همه موقعیت های عددی دارای وزن های مختلف 1 ، 2 ، ... 10 هستند. این سیستم بدین ترتیب تمام خطاهای جایگزینی و انتقال یک رقمی (از جمله جابجایی پرش ها) را تشخیص می دهد ، اما در هزینه رقم چک احتمالاً 10 است که با "X" نشان داده می شود. (روش جایگزین این است که از شماره های سریال که منجر به رقم "X" می شود خودداری کنید.) ISBN-13 در عوض از الگوریتم GS1 استفاده شده در اعداد EAN استفاده می کند.

الگوریتم های پیچیده تر شامل الگوریتم Luhn (1954) است که 98٪ خطاهای انتقال یک رقمی را ضبط می کند (09 90 90 را تشخیص نمی دهد) و الگوریتم پیچیده تر Verhoeff (1969) ، که همه اشتباهات جایگزینی و انتقال یک رقمی را می گیرد ، و بسیاری (اما نه همه) خطاهای پیچیده تر. مشابه دیگر روش انتزاعی مبتنی بر جبر ، الگوریتم Damm است(2004) ، این نیز همه خطاهای تک رقمی و همه خطاهای جابجایی مجاور را تشخیص می دهد. این سه روش از یک رقم چک واحد استفاده می کنند و بنابراین نمی توانند حدود 10 درصد از خطاهای پیچیده را ضبط کنند. برای کاهش این میزان خرابی ، لازم است از بیش از یک رقم چک استفاده کنید (برای مثال ، چک modulo 97 که در زیر ذکر شده است ، که از دو رقم چک استفاده می کند - برای الگوریتم ، شماره حساب بانک بین المللی را ببینید ) و/یا استفاده از طیف وسیع تری از کاراکترها در رقم چک ، به عنوان مثال حروف به علاوه اعداد.

مثالها

UPC

رقم نهایی یک کد محصول جهانی یک رقم چک است که به شرح زیر محاسبه می شود: [2]

  1. ارقام را در موقعیت های عدد فرد از سمت راست (اول ، سوم ، پنجم و غیره - بدون احتساب رقم چک) به هم اضافه کرده و در سه ضرب کنید.
  2. ارقام (تا رقم چک را شامل نمی شود) در موقعیت های زوج (دوم ، چهارم ، ششم و غیره) به نتیجه اضافه کنید.
  3. باقیمانده حاصل را بر 10 تقسیم کنید (یعنی عمل modulo 10). اگر باقیمانده برابر 0 است ، از 0 به عنوان رقم چک استفاده کنید ، و اگر نه 0 مابقی را از 10 کم کنید تا رقم چک را بدست آورید.

به عنوان مثال ، بارکد UPC-A برای یک جعبه دستمال "036000241457" است. آخرین رقم رقم چک "7" است و اگر سایر اعداد صحیح باشند ، محاسبه رقم چک باید 7 را تولید کند.

  1. اعداد فرد را اضافه کنید: 0+6+0+2+1+5 = 14.
  2. حاصل را در 3: 14 × 3 = 42 ضرب کنید.
  3. اعداد زوج را اضافه کنید: 3+0+0+4+4 = 11 = 11.
  4. دو نتیجه را با هم جمع کنید: 42 + 11 = 53.
  5. برای محاسبه رقم چک ، باقیمانده (53 /10) را که با نام (53 modulo 10) نیز شناخته می شود ، بردارید و اگر نه 0 ، از 10 کم کنید. بنابراین ، مقدار رقم چک 7 است. یعنی (53 /10 ) = 5 باقی مانده 3 ؛ 10 - 3 = 7.

مثال دیگر: برای محاسبه رقم چک برای ماده غذایی زیر "01010101010 x ".

  1. اعداد عدد فرد را اضافه کنید: 0+0+0+0+0+0 = 0.
  2. نتیجه را در 3 ضرب کنید: 0 3 3 = 0.
  3. اعداد زوج را اضافه کنید: 1+1+1+1+1 = 1 = 5.
  4. دو نتیجه را با هم جمع کنید: 0 + 5 = 5.
  5. برای محاسبه رقم چک ، مابقی (5 /10) را که به آن (5 modulo 10) نیز معروف است ، بردارید و اگر نه 0 ، از 10 کم کنید: یعنی (5 /10) = 0 باقی مانده 5 ؛ (10 - 5) = 5. بنابراین ، رقم چک x مقدار 5 است.

شابک 10

آخرین کاراکتر یک شماره کتاب استاندارد بین المللی ده رقمی یک رقم چک محاسبه شده است به طوری که ضرب هر رقم در موقعیت آن در عدد (شمارش از سمت راست) و جمع مجموع مدول 11 این محصولات 0 است. رقم دورترین در سمت راست (که در 1 ضرب می شود) رقم چک است که برای صحیح جمع انتخاب شده است. ممکن است لازم باشد دارای مقدار 10 باشد که به صورت حرف X نشان داده شده است. به عنوان مثال ، ISBN  0-201-53082-1 ​​را انتخاب کنید: مجموع محصولات 0 × 10 + 2 × 9 + 0 × 8 + 1 × 7 + 5 × 6 + 3 × 5 + 0 × 4 + 8 × 3 + 2 × 2 + 1 × 1 = 99 ≡ 0 ( مد 11) بنابراین شابک معتبر است. توجه داشته باشید که موقعیت ها را نیز می توانید از چپ شمارش کنید ، در این صورت رقم چک را در 10 ضرب می کنند تا اعتبار را بررسی کنید: 0 × 1 + 2 × 2 + 0 × 3 + 1 × 4 + 5 × 5 + 3 × 6 + 0 × 7 + 8 × 8 + 2 × 9 + 1 × 10 = 143 ≡ 0 (مد 11).

شابک 13

شابک 13 (در حال استفاده از ژانویه 2007) برابر با کد EAN-13 است که در زیر بارکد کتاب موجود است. رقم چک آن همانند UPC تولید می شود با این تفاوت که ارقام زوج به جای ارقام فرد در 3 ضرب می شوند. [3]

EAN (شماره GLN ، GTIN ، EAN که توسط GS1 اداره می شود)

ارقام بررسی EAN ( شماره مقاله اروپایی ) (اداره شده توسط GS1 ) با جمع بندی هر یک از اعداد موقعیت فرد ضرب در 3 و سپس با جمع مجموع اعداد موقعیت زوج محاسبه می شود. اعداد از راست به چپ بررسی می شوند ، بنابراین اولین موقعیت فرد آخرین رقم در کد است. رقم نهایی حاصل از 10 کم می شود تا رقم چک محاسبه شود (یا در صورتی که صفر باشد به همان صورت باقی می ماند). یک ماشین حساب رقمی چک GS1 و مستندات دقیق به صورت آنلاین در وب سایت GS1 موجود است. [4] یک صفحه ماشین حساب رسمی دیگر نشان می دهد که مکانیزم GTIN-13 برای شماره مکان سراسری /GLN یکسان است . [5]

NCDA

الگوریتم بررسی رقمی NOID (NCDA) ، [6] که از سال 2004 استفاده می شود ، برای کاربرد در شناسه های ثابت طراحی شده است و با رشته های متغیر طول حروف و ارقام ، که رقم گسترده نامیده می شوند ، کار می کند. این برنامه به طور گسترده ای با طرح شناسه ARK استفاده می شود و تا حدودی در طرح هایی مانند Handle System و DOI استفاده می شود . یک رقم توسعه یافته محدود به betanumeric استحروف ، حروف الفبا و حروف صدادار و حرف 'l' (ell) هستند. این محدودیت هنگام ایجاد رشته های مات کمک می کند که بعید است کلمات را به طور تصادفی تشکیل دهند و شامل O و 0 یا l و 1 نمی شوند. با داشتن رادیس اصلی R = 29 ، رپرتوار بتانومریک به الگوریتم اجازه می دهد تا تشخیص تک قطعه را تضمین کند. خطاهای کاراکتری و جابجایی [7] برای رشته هایی با طول کمتر از R = 29 کاراکتر (که فراتر از آن یک بررسی کمی ضعیف تر ارائه می دهد). این الگوریتم به هر مجموعه کاراکتر با R رادیکس اصلی و طول رشته های کمتر از R نویسه تعمیم می یابد.

نمونه های دیگر از رقم های چک

بین المللی

در ایالات متحده

در آمریکای مرکزی

  • شماره مالیاتی گواتمالا (NIT - Número de Identificación Tributaria) بر اساس modulo 11.

در اوراسیا

در اقیانوسیه

الگوریتم ها

الگوریتم های قابل توجه عبارتند از:

همچنین ببینید

مراجع

  1. ^ کیرتلند، جوزف (2001). شماره شناسایی و طرح های چک رقمی . مطالب منابع کلاس درس انجمن ریاضی آمریکا صص 4-6. شابک 978-0-88385-720-5به
  2. ^ "GS1 چک رقمی ماشین حساب" . GS1 ایالات متحده 2006. بایگانی شده از اصل در 2008-05-09 . بازیابی شده 2008-05-21 .
  3. ^ "راهنمای کاربران ISBN" . آژانس بین المللی شابک 2005 . بازیابی شده 2008-05-21 .
  4. ^ "ماشین حساب رقمی را بررسی کنید" . GS1 2005 . بازیابی شده 2008-05-21 .
  5. ^ "ماشین حساب رقمی را بررسی کنید ، در سایت رسمی GS1 ایالات متحده" . GS1 آمریکا . بازیابی شده 2012-08-09 .
  6. ^ https://metacpan.org/pod/distribution/Noid/noid#NOID-CHECK-DIGIT-ALGORITHM
  7. ^ دیوید برسود ، استن واگن ، "نظریه اعداد محاسباتی" ، 2000 ، انتشارات کالج کلیدی
  8. ^ http://openfigi.com
  9. ^ "کارت شناسایی منحصر به فرد" . کامپیوتر روزنامه . شاخه دانشجویی IEEE ( پاییز 2011 ): 16. بایگانی شده از نسخه اصلی در 24/10/2012.
  10. ^ دکتر چونگ یی خو (20 ژانویه 2014). "قالب جدید برای شماره برنامه های کاربردی IP سنگاپور در IPOS" . سنگاپور ثبت اختراع وبلاگ . IP Cantab . بازبینی شده در 6 جولای 2014 .

پیوندهای خارجی

  • اعداد شناسایی و طرح های رقم چک (توضیح ریاضی طرح های مختلف رقم چک)
  • UPC ، EAN ، و SCC-14 ماشین حساب رقم
  • GS1 ماشین حساب رقم چک