डैम एल्गोरिथ्म

त्रुटि का पता लगाने में, डैम कलन विधि एक संख्या जांचें  एल्गोरिदम है जो सभी प्रतिलेखन त्रुटि | एकल-अंक त्रुटियों और सभी ट्रांसक्रिप्शन त्रुटि # ट्रांसपोज़िशन त्रुटि का पता लगाता है। इसे 2004 में एच. माइकल डैम द्वारा प्रस्तुत किया गया था।

ताकत
डैम एल्गोरिथम वेरहॉफ एल्गोरिथम के समान है। यह दो सबसे अधिक बार दिखाई देने वाली प्रकार की ट्रांसक्रिप्शन त्रुटियों की सभी घटनाओं का भी पता लगाएगा, अर्थात् एक अंक को बदलना या दो आसन्न अंकों को ट्रांसपोज़ करना (अनुगामी चेक अंक और पूर्ववर्ती अंक के ट्रांसपोज़ेशन सहित)। डैम एल्गोरिथ्म का लाभ यह है कि इसमें समर्पित रूप से निर्मित क्रमपरिवर्तन और इसकी स्थिति-विशिष्ट घातांक # वेरहॉफ एल्गोरिथ्म के अमूर्त बीजगणित में नहीं है। जब ऑपरेशन तालिका की सभी मुख्य विकर्ण प्रविष्टियाँ शून्य हों तो व्युत्क्रम तत्व की तालिका को भी समाप्त किया जा सकता है।

डैम एल्गोरिथ्म केवल 10 संभावित मान उत्पन्न करता है, गैर-अंकीय वर्ण की आवश्यकता को टालता है (जैसे कि आईएसबीएन#आईएसबीएन-10 चेक अंक गणना में एक्स|10-अंकीय आईएसबीएन चेक अंक#आईएसबीएन_10 योजना)।

अग्रणी शून्य को जोड़ने से चेक अंक (चर-लंबाई कोड के लिए एक कमजोरी) प्रभावित नहीं होता है।

पूरी तरह से एंटी-सिमेट्रिक क्वासिग्रुप हैं जो अंग्रेजी भाषा से जुड़ी सभी ध्वन्यात्मक त्रुटियों का पता लगाते हैं (13 ↔ 30, 14 ↔ 40, ..., 19 ↔ 90). उदाहरणात्मक उदाहरण में प्रयुक्त तालिका इस प्रकार के एक उदाहरण पर आधारित है।

कमजोरियाँ
डैम एल्गोरिथ्म सहित सभी चेकसम एल्गोरिदम के लिए, अग्रणी शून्य को जोड़ने से चेक अंक प्रभावित नहीं होता है, इसलिए 1, 01, 001, आदि समान चेक अंक उत्पन्न करते हैं। परिणामस्वरूप चर-लंबाई कोड को एक साथ सत्यापित नहीं किया जाना चाहिए।

डिज़ाइन
इसका आवश्यक भाग ऑर्डर (समूह सिद्धांत) 10 का एक अर्धसमूह है (अर्थात् एक होना)। 10 × 10 इसके केली टेबल के मुख्य भाग के रूप में लैटिन वर्ग) क्वासिग्रुप#टोटल एंटीसिमेट्री|कमजोर रूप से पूरी तरह से एंटी-सिमेट्रिक होने की विशेष विशेषता के साथ।   डैम ने क्रम 10 के पूरी तरह से विरोधी-सममित क्वासिग्रुप बनाने के लिए कई तरीकों का खुलासा किया और अपने डॉक्टरेट शोध प्रबंध में कुछ उदाहरण दिए। इसके साथ, डैम ने एक पुराने अनुमान को भी खारिज कर दिया कि ऑर्डर 10 के पूरी तरह से विरोधी सममित क्वासिग्रुप मौजूद नहीं हैं।

एक अर्धसमूह $(Q, ∗)$ को यदि सभी के लिए पूर्णतः सममित विरोधी कहा जाता है $c, x, y ∈ Q$, निम्नलिखित निहितार्थ हैं: # $(c ∗ x) ∗ y = (c ∗ y) ∗ x ⇒ x = y$ और यदि केवल पहला निहितार्थ सही बैठता है तो इसे कमजोर पूर्णतया विरोधी-सममितीय कहा जाता है। लानत ने साबित कर दिया कि क्रम के एक पूरी तरह से एंटीसिमेट्रिक अर्ध समूह का अस्तित्व $x ∗ y = y ∗ x ⇒ x = y$ आदेश के एक कमजोर पूर्णतः विरोधी सममित अर्धसमूह के अस्तित्व के बराबर है $n$. चेक समीकरण के साथ डैम एल्गोरिदम के लिए $n$, संपत्ति के साथ एक कमजोर पूरी तरह से विरोधी सममित अर्धसमूह $(...((0 ∗ x_{m}) ∗ x_{m−1}) ∗ ...) ∗ x_{0} = 0$ ज़रूरी है। ऐसे अर्धसमूह का निर्माण स्तंभों को इस तरह से पुनर्व्यवस्थित करके किसी भी पूरी तरह से विरोधी-सममित अर्धसमूह से किया जा सकता है कि सभी शून्य विकर्ण पर हों। और, दूसरी ओर, किसी भी कमजोर पूरी तरह से विरोधी-सममित क्वासिग्रुप से स्तंभों को इस तरह से पुनर्व्यवस्थित करके एक पूरी तरह से विरोधी-सममित क्वासिग्रुप का निर्माण किया जा सकता है कि पहली पंक्ति प्राकृतिक क्रम में हो।

एल्गोरिथम
चेक अंक वाले अंक अनुक्रम की वैधता एक क्वासिग्रुप पर परिभाषित की जाती है। उपयोग के लिए तैयार एक क्वासिग्रुप तालिका डैम के शोध प्रबंध (पृष्ठ 98, 106, 111) से ली जा सकती है। यदि प्रत्येक मुख्य विकर्ण प्रविष्टि है तो यह उपयोगी है $x ∗ x = 0$, क्योंकि यह चेक अंक गणना को सरल बनाता है।

शामिल चेक अंक के विरुद्ध किसी संख्या को मान्य करना

 * 1) एक अंतरिम अंक सेट करें और इसे प्रारंभ करें $0$.
 * 2) संख्या अंक को अंक दर अंक संसाधित करें: संख्या के अंक को स्तंभ सूचकांक के रूप में और अंतरिम अंक को पंक्ति सूचकांक के रूप में उपयोग करें, तालिका प्रविष्टि लें और अंतरिम अंक को इसके साथ बदलें।
 * 3) संख्या तभी मान्य है जब परिणामी अंतरिम अंक का मान हो $0$.

चेक अंक की गणना
पूर्वावश्यकता: तालिका की मुख्य विकर्ण प्रविष्टियाँ हैं $0$.
 * 1) एक अंतरिम अंक सेट करें और इसे प्रारंभ करें $0$.
 * 2) संख्या अंक को अंक दर अंक संसाधित करें: संख्या के अंक को स्तंभ सूचकांक के रूप में और अंतरिम अंक को पंक्ति सूचकांक के रूप में उपयोग करें, तालिका प्रविष्टि लें और अंतरिम अंक को इसके साथ बदलें।
 * 3) परिणामस्वरूप अंतरिम अंक चेक अंक देता है और इसे संख्या के पीछे वाले अंक के रूप में जोड़ा जाएगा।

उदाहरण
निम्नलिखित ऑपरेशन तालिका का उपयोग किया जाएगा. इसे पूरी तरह से एंटी-सिमेट्रिक क्वासिग्रुप से प्राप्त किया जा सकता है $0$डैम के डॉक्टरेट शोध प्रबंध पृष्ठ 111 में पंक्तियों को पुनर्व्यवस्थित करके और क्रमपरिवर्तन के साथ प्रविष्टियों को बदलकर $x ∗ y$ और परिभाषित करना $φ = (1 2 9 5 4 8 6 7 3)$. मान लीजिए हम संख्या (अंक अनुक्रम) 572 चुनते हैं।

चेक अंक की गणना
परिणामी अंतरिम अंक 4 है। यह परिकलित चेक अंक है। हम इसे संख्या के साथ जोड़ते हैं और 5724 प्राप्त करते हैं।

शामिल चेक अंक के विरुद्ध किसी संख्या को मान्य करना
परिणामी अंतरिम अंक 0 है, इसलिए संख्या वैध है।

चित्रमय चित्रण
यह उपरोक्त उदाहरण है जो चेक अंक (धराशायी नीला तीर) उत्पन्न करने वाले एल्गोरिदम का विवरण दिखाता है और चेक अंक के साथ संख्या 572 को सत्यापित करता है।



बाहरी संबंध

 * Damm validation & generation code in several programming languages
 * Practical application in Singapore
 * Quasigroups for the Damm algorithm up to order 64
 * At RosettaCode.org, Implementations of the Damm algorithm in many programming languages