حاسبة مسافة ليفنشتاين
المدخلات
| السلسلة الأولى | kitten |
|---|---|
| السلسلة الثانية | sitting |
حاسبة مسافة ليفنشتاين
احسب مسافة ليفنشتاين (مسافة التحرير) بين سلسلتين نصيتين — أي أقل عدد من عمليات الإدراج والحذف والاستبدال على مستوى المحرف الواحد اللازمة لتحويل إحداهما إلى الأخرى — مع نسبة تشابه مئوية.
المدخلات
السلسلتان
النتائج
أدخل قيمة لعرض النتائج.
النتائج
مسافة ليفنشتاين
مسافة ليفنشتاين، وتُسمى أيضًا مسافة التحرير، تقيس مدى اختلاف سلسلتين نصيتين عبر عدّ أقل عدد من عمليات التحرير على مستوى المحرف الواحد اللازمة لتحويل إحداهما إلى الأخرى. وعمليات التحرير المسموح بها هي الإدراج والحذف والاستبدال، وتكلفة كل منها واحد. تأخذ الحاسبة سلسلتين وتُرجع هذه المسافة مع نسبة تشابه مئوية، وهو ما يفيد في التدقيق الإملائي والمطابقة التقريبية ومقارنة المتتاليات مثل الحمض النووي.
عمليات التحرير الثلاث
يمكن التعبير عن أي تحويل بين سلسلتين كتتابع من ثلاث حركات أساسية. فالإدراج يضيف محرفًا واحدًا، والحذف يزيل محرفًا، والاستبدال يستبدل محرفًا بآخر. تبحث مسافة ليفنشتاين عن أقل هذه التتابعات تكلفة، حيث تكلفة كل حركة واحد. ولأن الاستبدال خطوة واحدة وليس حذفًا يتبعه إدراج، فإن تغيير حرف واحد يُحسب دائمًا تحريرًا واحدًا، لا اثنين.
سُميت المسافة باسم فلاديمير ليفنشتاين الذي عرّفها عام 1965، وهي تعميم لمسافة حاسبة مسافة هامينغ الأقدم: إذ تسمح مسافة هامينغ بالاستبدال فقط، وللسلاسل المتساوية الطول فحسب، بينما تسمح مسافة ليفنشتاين أيضًا بالإدراج والحذف، فتعالج السلاسل المختلفة الأطوال.
جدول البرمجة الديناميكية
تُحسب المسافة بملء جدول يحتوي على صف لكل محرف من السلسلة الأولى (مع صف فارغ في المقدمة) وعمود لكل محرف من السلسلة الثانية (مع عمود فارغ في المقدمة). تحمل الخلية مسافة التحرير بين أول محرفًا من A وأول محرفًا من B.
يَعُدّ الصف الأول والعمود الأول عمليات التحرير مقابل السلسلة الفارغة، فيكون و. أما كل خلية أخرى فهي أصغر ثلاثة مرشحين:
D[i][j]=min⎩⎨⎧D[i−1][j]+1D[i][j−1]+1D[i−1][j−1]+c(حذف)(إدراج)(استبدال)حيث تكلفة الاستبدال تساوي 0 عند تطابق المحرفين و1 عند اختلافهما. ويوجد الجواب في الخلية السفلية اليمنى. ويستغرق ملء الجدول زمنًا يتناسب مع حاصل ضرب الطولين، .
مثال محلول
لنأخذ الزوج الكلاسيكي «kitten» و«sitting». تتبُّع المسار الأمثل عبر الجدول يعطي ثلاث عمليات تحرير:
kittensittensittin→sitten→sittin→sitting(استبدال k→s)(استبدال e→i)(إدراج g)لا يوجد تتابع أقصر، فالمسافة إذن 3. وللسلسلة الأطول 7 محارف، ومن ثَمّ يكون التشابه ، أي نحو 57%.
التشابه وحدوده
تُطبِّع الحاسبة المسافة الخام إلى درجة تشابه عبر العلاقة
والقسمة على طول السلسلة الأطول تُبقي النتيجة بين 0% للسلاسل المختلفة تمامًا و100% للمتطابقة؛ وتُعَدّ السلسلتان الفارغتان متطابقتين. وهذه إحدى طرق التطبيع الشائعة — إذ تقسم أدوات أخرى على مجموع الطولين أو تستخدم مقاييس قائمة على النسب — لذا لا يمكن مقارنة أرقام التشابه من مصادر مختلفة مباشرةً.
أين تُستخدم
تُرتِّب أدوات التدقيق الإملائي التصحيحات المقترحة بحسب مسافة التحرير عن الكلمة المكتوبة خطأً. وتستخدمها أنظمة البحث وقواعد البيانات في المطابقة التقريبية، فتتسامح مع الأخطاء المطبعية عند البحث عن الأسماء أو العناوين. وفي المعلوماتية الحيوية، تقوم مسافة التحرير عليها محاذاة المتتاليات لمقارنة الحمض النووي DNA والـRNA والبروتينات، حيث تقابل عمليات الإدراج والحذف الطفراتِ. ويعامل نموذج تكلفة ليفنشتاين البسيط جميع عمليات التحرير بالتساوي؛ أما التطبيقات التي تحتاج إلى عقوبات مختلفة لعمليات مختلفة، أو يجب أن تحاذي متتاليات طويلة جدًا بكفاءة، فتوسّعه بتكاليف موزونة أو خوارزميات محاذاة متخصصة.
الأسئلة الشائعة (FAQ)
ما هي مسافة ليفنشتاين؟
مسافة ليفنشتاين، وتُسمى أيضًا مسافة التحرير، هي أقل عدد من عمليات التحرير على مستوى المحرف الواحد — الإدراج أو الحذف أو الاستبدال — اللازمة لتحويل سلسلة نصية إلى أخرى. قدّمها عالم الرياضيات السوفيتي فلاديمير ليفنشتاين عام 1965.
فعلى سبيل المثال، المسافة بين «kitten» و«sitting» تساوي 3: استبدال k بـ s، واستبدال e بـ i، وإدراج g في النهاية. ولا توجد سلسلة تحرير أقصر من ذلك.
تُحسب القيمة باستخدام جدول البرمجة الديناميكية الذي تحتوي خلاياه على مسافة التحرير بين بادئات السلسلتين. ويستغرق ملء الجدول زمنًا يتناسب مع حاصل ضرب الطولين.
كيف تختلف عن مسافة هامينغ؟
تَعُدّ مسافة هامينغ عمليات الاستبدال فقط، وهي معرَّفة للسلاسل المتساوية الطول فحسب، إذ تقارن المحارف موضعًا بموضع. أما مسافة ليفنشتاين فتسمح أيضًا بالإدراج والحذف، فتعمل مع السلاسل المختلفة الأطوال وتلتقط الإزاحات في المحاذاة.
بالنسبة إلى سلسلتين متساويتي الطول، تكون مسافة ليفنشتاين دائمًا أصغر من مسافة هامينغ أو مساوية لها، لأن الاستبدال أحد عملياتها، لكنها قد تجد مسارًا أقل كلفة عبر الإدراج والحذف.
كيف تُحسب نسبة التشابه المئوية؟
تُعطى نسبة التشابه بالعلاقة 1 − المسافة / max(len_a, len_b) معبَّرًا عنها كنسبة مئوية. والقسمة على طول السلسلة الأطول تُطبِّع النتيجة ضمن المدى من 0% (مختلفتان تمامًا) إلى 100% (متطابقتان). وعندما تكون السلسلتان فارغتين، يُعرَّف التشابه بأنه 100%.
هذه إحدى طرق التطبيع الشائعة؛ وقد تقسم أدوات أخرى على مجموع الطولين أو تستخدم مقاييس قائمة على النسب، لذا لا يمكن مقارنة درجات التشابه مباشرةً بين التعريفات المختلفة.