خوارزمية مطابقة الأحرف البديلة لكراوس

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

تاريخ

تعتمد الخوارزمية على تاريخ من التطوير، واختبارات الصحة والأداء، وملاحظات المبرمجين، والتي بدأت ببحث غير ناجح عن خوارزمية موثوقة غير تكرارية لمطابقة الأحرف البديلة. وقد أثارت خوارزمية أولية، مُنفذة في حلقة while واحدة، تعليقات سريعة من مطوري البرامج، مما أدى إلى تحسينات. [ 1 ] وتوجت التعليقات والاقتراحات المستمرة [ 2 ] [ 3 ] بخوارزمية مُعدلة، لا تزال مُنفذة في حلقة while واحدة، ولكنها مُحسّنة بناءً على مجموعة من حالات الاختبار ومحلل أداء . [ 4 ] وقد حفزت تجربة ضبط حلقة while الواحدة باستخدام محلل الأداء تطوير استراتيجية من حلقتين حققت مكاسب إضافية في الأداء، لا سيما في الحالات التي تتضمن سلاسل إدخال فارغة أو إدخال لا يحتوي على أحرف بديلة. [ 5 ] تتوفر خوارزمية الحلقتين للاستخدام من قبل مجتمع تطوير البرامج مفتوحة المصدر ، بموجب شروط رخصة أباتشي الإصدار 2.0، وهي مُرفقة بشفرة حالات الاختبار.

الاستخدام

الخوارزمية المتاحة بموجب ترخيص أباتشي مُطبقة بلغة C++ باستخدام المؤشرات ، وبصيغة C++ قابلة للنقل (مُطبقة بدون مؤشرات). يمكن تطبيق كود حالة الاختبار، المتاح أيضًا بموجب ترخيص أباتشي، على أي خوارزمية تُوفر عمليات مطابقة الأنماط المذكورة أدناه. لا يدعم التطبيق بصيغته الحالية مجموعات الأحرف متعددة البايتات ، ويُسبب مشاكل عند احتواء النص المراد البحث فيه على مجموعات أحرف متعددة غير متوافقة.

عمليات مطابقة الأنماط

تدعم الخوارزمية ثلاث عمليات لمطابقة الأنماط:

  • يتم إجراء مطابقة واحدة لواحد بين النمط والمصدر المراد التحقق منه بحثًا عن تطابق، باستثناء أحرف النجمة ( * ) أو علامة الاستفهام ( ؟ ) في النمط.
  • يتطابق رمز النجمة ( * ) مع أي تسلسل من صفر أو أكثر من الأحرف.
  • علامة الاستفهام ( ؟ ) تطابق أي حرف منفرد.

أمثلة

  • *foo* يطابق أي سلسلة نصية تحتوي على "foo".
  • يطابق mini* أي سلسلة تبدأ بـ "mini" (بما في ذلك السلسلة "mini" نفسها).
  • ???* يطابق أي سلسلة من ثلاثة أحرف أو أكثر.

التطبيقات

قام لاري هيجز [ 6 ] بنقل الخوارزمية الأصلية إلى لغة برمجة DataFlex لاستخدامها مع مكتبة أكواد Data Access Worldwide . وقد نُشرت على GitHub بصيغة مُعدّلة كجزء من قارئ ملفات السجل. [ 7 ] تُعدّ خوارزمية 2014 جزءًا من عارض نماذج Unreal المدمج في محرك ألعاب Unreal Engine من Epic Games . [ 8 ] [ 9 ]

انظر أيضاً

مراجع

  1. كراوس، كيرك (26 أغسطس 2008). "مطابقة الأحرف البديلة: خوارزمية" . مجلة دكتور دوبز . مؤرشف من الأصل في 4 ديسمبر 2024.
  2. "البحث باستخدام الأحرف البديلة" . alt.os.development. 2008.
  3. TJ (2014). "مطابقة الأحرف البديلة في سلسلة نصية" . Stack Overflow.
  4. كراوس، كيرك (2014). "مطابقة الأحرف البديلة: طريقة تجريبية لترويض خوارزمية" . مجلة دكتور دوبز .
  5. كراوس، كيرك (2018). "مطابقة الأحرف البديلة: خوارزمية محسّنة للبيانات الضخمة" . التطوير من أجل الأداء.
  6. هيجز، لاري (2008). "دالة مقارنة النصوص - generalTextCompare.txt" . مكتبة أكواد الوصول إلى البيانات العالمية .
  7. ^ دينيسكور (2013). "Deniskore/wildcard/CLogReader.cpp" . المستودعات الشعبية . جيثب.الأسطر 173-279.
  8. gildor2 (2016). "UModel/Core/Core.cpp" . عارض نماذج محرك Unreal Engine (UE Viewer) . GitHub.{{cite web}}: CS1 maint: أسماء رقمية: قائمة المؤلفين ( رابط ) الأسطر 334-435.
  9. gildor2 (2016). "سجل UModel/Core/Core.cpp" . عارض نماذج محرك Unreal Engine (UE Viewer) .{{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )