English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
استخدمت الدالة levenshtein() لحساب المسافة بين الكلمتين.
int levenshtein ( string $str1 , string $str2 )
لحساب المسافة بين الكلمتين.
مسافة التحرير هي عدد الحروف التي تحتاج إلى تبديل، وإدراج، وحذف لتحويل الكلمة str1 إلى الكلمة str2. معقدية هذا الخوارزمية هي O(m*n)، حيث n و m هي أطول الكلمتين (عند مقارنتها بـ similar_text() الذي له معقدية O(max(n,m)**3)، فإن هذه الدالة لا تزال جيدة، على الرغم من أنها تستغرق وقتاً طويلاً.).
في أكثر بسيطته، يعتمد هذا الدالة فقط على كلمتين كمعلمتين، ويحسب عدد العمليات المطلوبة لتحويل str1 إلى str2 من خلال إدراج، تبديل، وحذف، وما إلى ذلك.
النوع الثاني من التنسيق يستخدم ثلاثة معلمات إضافية لتحديد عدد التبديلات والإدراجات والحذف. هذا التنسيق أكثر تطبيقاً وملاءمة، ولكن ليس به كفاءة.
يستعيد المسافة بين الكلمتين السترينغية بين المعلمتين، وإلا يعود -1
الرقم | المعلمات والشرح |
---|---|
1 | str1 البحث عن واحدة من الكلمتين في مسافة التحرير |
2 | str2 البحث عن الكلمة الأخرى في مسافة التحرير |
3 | cost_ins تحديد عدد الإدراجات |
4 | cost_del تحديد عدد التبديلات |
تجربة المثال التالي، حساب المسافة بين الكلمتين:
<?php //حساب المسافة بين الكلمتين echo 'the distance between two strings is '; echo levenshtein("Hello World","ello World"); ?>اختبار لمعرفة‹/›
نتيجة الإخراج-
المسافة بين الكلمتين هو 1