กลับไปหน้าบทความ

อ่าน 3 นาที

อัลกอริทึมแดมม์

ใน การตรวจจับข้อผิดพลาด อั ลกอริทึม Damm เป็น อัลกอริทึมตัวเลข ตรวจสอบ ที่ตรวจจับ ข้อผิดพลาดตัวเลขหลักเดียว ทั้งหมด และ ข้อผิดพลาดการสลับตำแหน่งที่อยู่ติดกัน ทั้งหมด...

อัลกอริทึมแดมม์

ในการตรวจจับข้อผิดพลาดอัลกอริทึม Dammเป็นอัลกอริทึมตัวเลขตรวจสอบ ที่ตรวจจับข้อผิดพลาดตัวเลขหลักเดียว ทั้งหมด และข้อผิดพลาดการสลับตำแหน่งที่อยู่ติดกัน ทั้งหมด อัลกอริทึมนี้ได้รับการนำเสนอโดย H. Michael Damm ในปี 2547 [ 1 ]ซึ่งเป็นส่วนหนึ่งของวิทยานิพนธ์ปริญญาเอกของเขาในหัวข้อTotally Antisymmetric Quasigroups

จุดแข็งและจุดอ่อน

จุดแข็ง

อัลกอริทึม Damm คล้ายกับอัลกอริทึม Verhoeffโดยจะตรวจจับข้อผิดพลาดในการถอดความสองประเภทที่พบได้บ่อยที่สุดทั้งหมดเช่นกัน ได้แก่ การเปลี่ยนแปลงตัวเลขหลักเดียวหรือการสลับตำแหน่งตัวเลขสองหลักที่อยู่ติดกัน (รวมถึงการสลับตำแหน่งของตัวเลขตรวจสอบท้ายสุดและตัวเลขก่อนหน้า) [ 1 ] [ 2 ]อัลกอริทึม Damm มีข้อดีตรงที่ไม่ต้องใช้การเรียงสับเปลี่ยน ที่สร้างขึ้นโดยเฉพาะและ กำลังเฉพาะตำแหน่งของแบบแผน Verhoeffนอกจากนี้ยังสามารถละเว้นตารางผกผัน ได้เมื่อค่าใน แนวทแยงหลัก ทั้งหมด ของตารางการดำเนินการเป็นศูนย์

อัลกอริทึม Damm สร้างค่าที่เป็นไปได้เพียง 10 ค่าเท่านั้น ซึ่งช่วยหลีกเลี่ยงความจำเป็นในการใช้ตัวอักษรที่ไม่ใช่ตัวเลข (เช่น ตัวXใน ระบบ ตรวจสอบตัวเลขISBN 10 หลัก )

การใส่เลขศูนย์นำหน้าไม่มีผลต่อตัวเลขตรวจสอบ (ซึ่งเป็นจุดอ่อนของรหัสที่มีความยาวแปรผัน) [ 1 ]

มีควาซิกรุ๊ปแบบแอนตี้สมมาตรโดยสมบูรณ์ที่ตรวจจับข้อผิดพลาดทางเสียงทั้งหมดที่เกี่ยวข้องกับภาษาอังกฤษ ( 13 ↔ 30 , 14 ↔ 40 , ..., 19 ↔ 90 ) ตารางที่ใช้ในตัวอย่างประกอบนั้นอิงตามกรณีดังกล่าว

จุดอ่อน

สำหรับอัลกอริธึมตรวจสอบผลรวมทั้งหมด รวมถึงอัลกอริธึม Damm การเติมเลขศูนย์นำหน้าจะไม่ส่งผลต่อตัวเลขตรวจสอบ[ 1 ]ดังนั้น 1, 01, 001 เป็นต้น จะสร้างตัวเลขตรวจสอบเดียวกัน ดังนั้นจึงไม่ควรตรวจสอบรหัสที่มีความยาวแปรผันร่วมกัน

ออกแบบ

ส่วนสำคัญของมันคือควาซิกรุปอันดับ10 (กล่าวคือมีตารางละติน10 × 10 เป็นตัวดำเนินการ ) ซึ่งมีคุณสมบัติพิเศษคือเป็น ควาซิกรุปแบบแอนติ สมมาตรโดยสมบูรณ์อย่างอ่อน[ 3 ] [ 4 ] [ i ] [ ii ] [ iii ]แดมม์ได้เปิดเผยวิธีการหลายวิธีในการสร้างควาซิกรุปแบบแอนติสมมาตรโดยสมบูรณ์อันดับ 10 และได้ยกตัวอย่างบางส่วนในวิทยานิพนธ์ปริญญาเอกของเขา[ 3 ] [ i ]ด้วยเหตุนี้ แดมม์จึงได้หักล้างข้อสันนิษฐานเก่าที่ว่าควาซิกรุปแบบแอนติสมมาตรโดยสมบูรณ์อันดับ 10 ไม่มีอยู่จริง[ 5 ]

กลุ่มกึ่งควอซิ( Q , ∗)เรียกว่ากลุ่มกึ่งควอซิสมมาตรโดยสมบูรณ์ ถ้าสำหรับทุกc , x , yQข้อความต่อไปนี้เป็นจริง: [ 4 ]

  1. ( cx ) ∗ y = ( cy ) ∗ xx = y
  2. xy = yxx = y ,

และเรียกว่ากลุ่มกึ่งสมมาตรแบบอ่อนโดยสมบูรณ์ (weak totally anti-symmetric) ถ้าเงื่อนไขแรกเป็นจริงเท่านั้น แดมม์พิสูจน์ว่าการมีอยู่ของกลุ่มกึ่งสมมาตรแบบสมบูรณ์โดยสมบูรณ์อันดับnเทียบเท่ากับการมีอยู่ของกลุ่มกึ่งสมมาตรแบบอ่อนโดยสมบูรณ์โดยสมบูรณ์อันดับnสำหรับอัลกอริทึมของแดมม์ที่มีสมการตรวจสอบ (...((0 ∗ x m ) ∗ x m −1 ) ∗ ...) ∗ x 0 = 0 จำเป็นต้องใช้ กลุ่มกึ่งสมมาตรแบบอ่อนโดยสมบูรณ์โดยสมบูรณ์โดยมีคุณสมบัติ xx = 0 กลุ่มกึ่งสมมาตรดังกล่าวสามารถสร้างขึ้นได้จากกลุ่มกึ่งสมมาตรแบบสมบูรณ์โดยสมบูรณ์ใดๆ โดยการจัดเรียงคอลัมน์ใหม่ในลักษณะที่ศูนย์ทั้งหมดอยู่บนแนวทแยง และในทางกลับกัน จากกลุ่มกึ่งสมมาตรแบบอ่อนโดยสมบูรณ์โดยสมบูรณ์ใดๆ กลุ่มกึ่งสมมาตรแบบสมบูรณ์โดยสมบูรณ์สามารถสร้างขึ้นได้โดยการจัดเรียงคอลัมน์ใหม่ในลักษณะที่แถวแรกอยู่ในลำดับธรรมชาติ[ 3 ]

อัลกอริทึม

ความถูกต้องของลำดับตัวเลขที่มีตัวเลขตรวจสอบจะถูกกำหนดบนควาซิกรุป ตารางควาซิกรุปที่พร้อมใช้งานสามารถนำมาจากวิทยานิพนธ์ของ Damm (หน้า 98, 106, 111) [ 3 ]จะเป็นประโยชน์หากค่าในแนวทแยงหลักแต่ละค่าเป็น0 [ 1 ] เนื่องจากจะ ทำให้การคำนวณตัวเลขตรวจสอบง่ายขึ้น

ตรวจสอบความถูกต้องของตัวเลขโดยเทียบกับตัวเลขตรวจสอบที่ให้มา

  1. ตั้งค่าตัวเลขชั่วคราวและกำหนดค่าเริ่มต้นเป็น0
  2. ประมวลผลตัวเลขทีละหลัก: ใช้หลักของตัวเลขเป็นดัชนีคอลัมน์ และหลักกลางเป็นดัชนีแถว นำค่าในตารางมาแทนที่หลักกลาง
  3. ตัวเลขนี้ใช้ได้ก็ต่อเมื่อตัวเลขระหว่างกลางที่ได้มีค่าเป็น0เท่านั้น[ 1 ]

การคำนวณตัวเลขตรวจสอบ

เงื่อนไขเบื้องต้น:ค่าในแนวทแยงหลักของตารางต้องเป็น 0

  1. ตั้งค่าตัวเลขชั่วคราวและกำหนดค่าเริ่มต้นเป็น0
  2. ประมวลผลตัวเลขทีละหลัก: ใช้หลักของตัวเลขเป็นดัชนีคอลัมน์ และหลักกลางเป็นดัชนีแถว นำค่าในตารางมาแทนที่หลักกลาง
  3. ตัวเลขชั่วคราวที่ได้จะให้ตัวเลขตรวจสอบและจะถูกเพิ่มเป็นตัวเลขต่อท้ายของตัวเลข[ 1 ]

ตัวอย่าง

ตารางการดำเนินการต่อไปนี้จะถูกใช้[ 1 ]อาจได้รับจากควาซิกรุปแบบแอนตี้สมมาตรทั้งหมดxyในวิทยานิพนธ์ปริญญาเอกของ Damm หน้า 111 [ 3 ]โดยการจัดเรียงแถวใหม่และเปลี่ยนรายการด้วยการเรียงสับเปลี่ยนφ = (1 2 9 5 4 8 6 7 3)และกำหนดxy = φ −1 ( φ ( x ) ∗ y )

0 1 2 3 4 5 6 7 8 9
0 0317598642
1 7092154863
2 4206871359
3 1750983426
4 6123045978
5 3674209581
6 5869720134
7 8945362017
8 9438617205
9 2581436790

สมมติ ว่าเราเลือกหมายเลข (ลำดับตัวเลข) 572

การคำนวณตัวเลขตรวจสอบ

ตัวเลขที่จะประมวลผล → ดัชนีคอลัมน์ 5 7 2
ตัวเลขชั่วคราวเก่า→ ดัชนีแถว 09 7
รายการในตาราง → ตัวเลขชั่วคราว ใหม่9 7 4

ตัวเลขหลักกลางที่ได้คือ4นี่คือตัวเลขตรวจสอบที่คำนวณได้ เรานำตัวเลขนี้ไปต่อท้ายตัวเลขและได้ 5724

ตรวจสอบความถูกต้องของตัวเลขโดยเทียบกับตัวเลขตรวจสอบที่ให้มา

ตัวเลขที่จะประมวลผล → ดัชนีคอลัมน์ 5 7 2 4
ตัวเลขชั่วคราวเก่า→ ดัชนีแถว 09 7 4
รายการในตาราง → ตัวเลขชั่วคราว ใหม่9 7 4 0

ตัวเลขหลักกลางที่ได้คือ0ดังนั้นตัวเลขนั้นจึงถูก ต้อง

ภาพประกอบกราฟิก

ตัวอย่างข้างต้นแสดงรายละเอียดของอัลกอริธึมที่สร้างตัวเลขตรวจสอบ (ลูกศรสีน้ำเงินเส้นประ) และตรวจสอบความถูกต้องของหมายเลข572กับตัวเลขตรวจสอบนั้น

  • การตรวจสอบและสร้างโค้ด Damm ในภาษาโปรแกรมหลายภาษา
  • การประยุกต์ใช้ในทางปฏิบัติในประเทศสิงคโปร์
  • ควาซิกรุปสำหรับอัลกอริทึม Damm จนถึงอันดับ 64
  • ที่ RosettaCode.org มีการนำอัลกอริทึม Damm ไปใช้ในภาษาโปรแกรมต่างๆ มากมาย
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Damm_algorithm&oldid=1331182745 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ อัลกอริทึมแดมม์

ใน การตรวจจับข้อผิดพลาด อั ลกอริทึม Damm เป็น อัลกอริทึมตัวเลข ตรวจสอบ ที่ตรวจจับ ข้อผิดพลาดตัวเลขหลักเดียว ทั้งหมด และ ข้อผิดพลาดการสลับตำแหน่งที่อยู่ติดกัน ทั้งหมด...

จุดแข็ง

อัลกอริทึม Damm คล้ายกับ อัลกอริทึม Verhoeff โดยจะตรวจจับ ข้อผิดพลาดในการถอดความ สองประเภทที่พบได้บ่อยที่สุด ทั้งหมด เช่นกัน ได้แก่ การเปลี่ยนแปลงตัวเลขหลักเดียวหรือการสลับตำแหน่งตัวเลขสองหลักที่อยู่ติดกัน...

จุดอ่อน

สำหรับอัลกอริธึมตรวจสอบผลรวมทั้งหมด รวมถึงอัลกอริธึม Damm การเติมเลขศูนย์นำหน้าจะไม่ส่งผลต่อตัวเลขตรวจสอบ [ 1 ] ดังนั้น 1, 01, 001 เป็นต้น จะสร้างตัวเลขตรวจสอบเดียวกัน ดังนั้นจึงไม่ควรตรวจสอบรหัสที่มีความยาวแปรผันร่วมกัน

ออกแบบ

ส่วนสำคัญของมันคือ ควาซิกรุป อันดับ 10 (กล่าวคือมี ตารางละติน 10 × 10 เป็นตัว ดำเนินการ ) ซึ่งมีคุณสมบัติพิเศษคือเป็น ควาซิกรุปแบบแอนติ สมมาตร โดยสมบูรณ์อย่างอ่อน [ 3 ] [ 4 ] [ i ] [ ii ] [ iii ]...