46 lines
2.2 KiB
Markdown
46 lines
2.2 KiB
Markdown
|
---
|
|||
|
title: Rabin Karp Algorithm
|
|||
|
localeTitle: خوارزمية رابين كارب
|
|||
|
---
|
|||
|
## خوارزمية رابين كارب
|
|||
|
|
|||
|
* خوارزمية مطابقة / بحث عن الخوارزمية طورها مايكل رابين وريتشارد م. كارب.
|
|||
|
* يستخدم تقنية **_التجزئة_** و **_القوة الغاشمة_** للمقارنة.
|
|||
|
|
|||
|
#### شروط مهمة
|
|||
|
|
|||
|
* **_النمط_** هو السلسلة المراد البحث عنها. النظر في طول نمط كأحرف **_M._**
|
|||
|
* **_النص_** هو **_النص_** الكامل الذي سيتم البحث عن النمط منه. النظر في طول النص كأحرف **_N._**
|
|||
|
|
|||
|
#### ما هي القوة الغاشمة المقارنة؟
|
|||
|
|
|||
|
في مقارنة القوة الغاشمة يتم مقارنة كل حرف للنمط مع كل حرف من النص حتى يتم العثور على أحرف غير متطابقة.
|
|||
|
|
|||
|
#### العمل من خوارزمية رابين كارب
|
|||
|
|
|||
|
1. حساب قيمة التجزئة _للنمط_
|
|||
|
2. حساب قيمة التجزئة من الشخصيات _M_ الأولى من _النص_
|
|||
|
3. قارن بين قيم التجزئة
|
|||
|
4. إذا كانت غير متساوية ، قم بحساب قيمة التجزئة للأحرف _M_ _للنص التالي_ وقارن مرة أخرى.
|
|||
|
5. إذا كانوا متساوين ، قم بإجراء مقارنة القوة الغاشمة.
|
|||
|
|
|||
|
`hash_p = hash value of pattern
|
|||
|
hash_t = hash value of first M letters in body of text
|
|||
|
do
|
|||
|
if (hash_p == hash_t)
|
|||
|
brute force comparison of pattern and selected section of text
|
|||
|
hash_t= hash value of next section of text, one character over
|
|||
|
while (end of text or brute force comparison == true)
|
|||
|
`
|
|||
|
|
|||
|
#### ميزة أكثر من خوارزمية مطابقة سلسلة ناييف
|
|||
|
|
|||
|
ينتج عن هذه التقنية مقارنة واحدة فقط لكل تسلسل فرعي للنص ، وتكون القوة الغاشمة مطلوبة فقط عندما تتطابق قيم هاش.
|
|||
|
|
|||
|
#### تطبيقات
|
|||
|
|
|||
|
* **_كشف الانتحال_**
|
|||
|
|
|||
|
#### معلومات اكثر:
|
|||
|
|
|||
|
[رابين كارب على ويكيبيديا](https://en.wikipedia.org/wiki/Rabin%E2%80%93Karp_algorithm/)
|