بالنظر إلى سلسلة الأرقام ، العثور على خوارزمية فحص الرقم ...؟

StackOverflow https://stackoverflow.com/questions/2332075

سؤال

لنفترض أن لدي سلسلة من أرقام الفهرس التي تتكون من أ تحقق من الرقم. إذا كان لدي عينة عادلة بما فيه الكفاية (على سبيل المثال 250 أرقام فهرس العينة) ، هل لدي طريقة لاستخراج الخوارزمية التي تم استخدامها لإنشاء رقم الفحص؟

أعتقد أنه يجب أن يكون هناك نهج برمجي على الأقل للعثور على مجموعة من الخوارزميات المحتملة.

تحديث: طول رقم الفهرس هو 8 أرقام بما في ذلك رقم الفحص.

هل كانت مفيدة؟

المحلول

لا ، ليس في الحالة العامة ، منذ عدد ممكن الخوارزميات أكثر بكثير مما تعتقد. قد لا تكون مساحة العينة من 250 كافية لإجراء التحليل العددي المناسب.

للحصول على مثال متطرف ، دعنا نقول أن عيناتك جميعها تبلغ 15 رقمًا. انت ترغب ليس تكون قادرًا على اكتشاف الخوارزمية بشكل موثوق إذا غيرت السلوك لأولئك الذين أكبر من 15 حرفًا.

إذا كنت ترغب في التأكد ، فيجب عليك عكس هندسة الكود الذي يتحقق من الأرقام من الصلاحية (إن وجدت).

إذا كنت تعلم أن الخوارزمية مستمدة من مجموعة فرعية أصغر من "كل خوارزمية ممكنة" ، فقد يكون ذلك ممكنًا. ولكن قد تكون الخوارزميات نصف القصة فقط - هناك أيضًا الحالة التي تتغير فيها المضاعفات والبث والنقاط التفاف حتى باستخدام نفس الخوارزمية.

نصائح أخرى

Paxdiablo صحيح ، ولا يمكنك تخمين الخوارزمية دون وضع أي افتراض آخر (أو مجرد امتلاك مساحة العينة بأكملها - ثم يمكنك تحديد الخوارزمية بواسطة جدول البحث).

ومع ذلك ، إذا تم حساب رقم الفحص باستخدام بعض الصيغة الخطية التي تعتمد على "أرقام البيانات" (وهي حالة شائعة جدًا ، كما ترون في مقالة ويكيبيديا) ، بالنظر إلى عينات كافية يمكنك استخدام Euler Delination.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top