Richtige Permutation Zyklus für Verhoeff Algorithmus
-
03-10-2019 - |
Frage
Ich bin die Verhoeff Algorithmus für ein Prüfziffer Schema implementiert, aber es scheint eine gewisse Uneinigkeit in Web-Quellen zu sein, wie auf die Permutation Zyklus die Grundlage der Permutation Tabelle bilden soll.
Wikipedia Verwendungen: (36) (01.589.427)
offenbar , Numerical Recipies verwendet einen anderen Zyklus und dieses Buch Verwendungen: (0) (14) ( 23) (56.789), aus einem 1990 Artikel von Winter zitiert. Er stellt außerdem fest, dass Verhoeff die ein Wikipedia Zitate verwendet.
Nun ist meine Zahlentheorie ein wenig rostig, aber der Wikipedia-Zyklus wiederholt sich deutlich nach der 8. Macht, während das Buch ein 10 nehmen, obwohl es zu sagen, dass s ^ 8 = s. Tabelle 2.14 (b) andere Fehler in den 2-Zyklen, so dass diese fragwürdigen ohnehin.
Leider habe ich keine Kopien der Originalarbeiten (und bin zu eng zu Bezahlung / angewidert, dass 40-jährige Wissen noch von den Verlegern erpresst werden wird), noch eine Kopie von Numerical Recipes zu überprüfen (und am abgeneigt ihre Paranoia-induzierte Kopierschutz-Plug-in Online-Ansicht installieren).
Das Gleiche gilt für eine beliebige wissen, welche ist richtig? Sind sie beide richtig?
Lösung
Es gibt eine alte Ausgabe von Numerical Recipes verfügbar hier als PDF-Dateien. Verhoeff Algorithmus wird in Abschnitt 20.3 beschrieben wurde. Er verwendet die gleiche Permutation wie Wikipedia-Artikel.
Andere Tipps
Die Permutation (0) (14) (23) (56789) ist besser als die Permutation (36) (01.589.427). Dies liegt daran, dass, (36) (01.589.427) nur 88,89% der einzelnen Umsetzungsfehler erkennen kann, während (0) (14) (23) (56789), können alle von ihnen erkennen. Betrachten Sie den numerischen Code 716 gegeben 0 als Prüfziffer, wenn (36) (01.589.427) verwendet wird. das heißt, wird der Code 7160. Aber, wenn die 1 und 6 Zahlendreher geht dieses Prüfziffer Schema keinen Fehler geben, wie die Checksumme Null ist. Dies ist nicht der Fall mit (0) (14) (23) (56789).