هذه الخوارزمية تطبق على مشكلة الاقتران الأمثل المتمثل بمصفوفة الحدوث **R** و عناصرها **rij ≥ 0**. تبحث الخوارزمية عن عناصر **rij** ليس لها أي صف مشترك (لا سطر مشترك و لا عمود مشترك) و مجموعها المتراكم له أكبر قيمة ممكنة. صممت هذه الخوارزمية سنة 1955 من طرف هارولد كوهن.

الخوارزمية
----------

### تعريفات

تعرّف المتغيرات التالية :  

**ui** يسمى **كمون السطر i** ، و **vj كمون العمود j** ، مع الشرط لكل عنصر **ui + vj ≥ rij**
المصفوفة **Q** ، تدعى **مصفوفة المساواة** و عناصرها qij  

إذا ui + vj > rij فإن qij = 0
إذا ui + vj = rij والسطر **i** مسند للعمود **j** فإن \*qij = 1
إذا ui + vj = rij والسطر **i** غير مسند للعمود **j** فإن qij = 1
عملية **الانتقال** : السطر i المسند في عمود j يتم إسناده إلى عمود k مع k ≠ j ،
في المصفوفة Q ، الانتقال يستبدل \*1 ب 1 ، و 1 ب \*1 في نفس السطر  

**سطر ضروري** : سطر مسند فيه إمكانية للانتقال ،
في المصفوفة Q ، هو سطر يحتوي على \*1 و 1 في عمود غير مغطى  

**عمود مغطى** : عمود تم إليه إسناد سطر، لا توجد إمكانية انتقال ،
في المصفوفة Q ، هو عمود يحتوي على \*1 في سطر غير ضروري  

**عمود مؤهل** : عمود لا يحتوي على \*1  

**الإسناد كامل** إذا لم يمكن إسناد سطرا غير مسند في عمود غير مسند إلا بعد القيام بانتقال

### الاجراءات

الخوارزمية بعد عملية تهيئة تتمثل في التكرار المتناوب لإجراءين (**I البحث عن انتقال متزايد**) و (**II تسوية المصفوفة Q**)

#### التهيئة

ui = أكبر عنصر rij في كل سطرi  

0 = vj في كل عمود j   

qij = 0 إذا
ui + vj > rij

```
qij = 1  إذا ui + vj = rij
```

لجميع الأسطر في Q  

{ تفحّص السطر من اليسار إلى اليمين

غيّر أول 1 تواجهه إلى \*1 إذا لا يوجد \*1 في عموده}

#### الإجراء I

// سرد عمليات الانتقال الممكنة بدءًا من عمود مؤهل  

لجميع أعمدة Q المؤهلة (لا تحتوي على \*1)  

{ إذا كان العمود لا يحتوي على 1
{ انتقل إلى العمود التالي}
وإلا
// 1 موجود في العمود (نفرض jk-1)
{ كرر لكل 1 موجود في العمود jk-1 (نفرض في السطر ik)
{ إذا وجد \*1 في السطر ik // فإن أي انتقال يعطي اسنادا كاملا
{ // بناء تسلسل 1 ، \*1 ، 1 ، \*1 ، 1 ، ...
ضع العلامات كالتالي :
1 في الموقع (ik, jk-1)
1\* في الموقع (ik, jk)
1 في الموقع (ik+1, jk)
**... ...... .....**
إذا كان عدد العناصر في التسلسل فردي
{ // عثرنا على انتقال يحرر عمودًا يحتوي على 1 غير مسند
اعكس كل 1 إلى \*1 و كل \*1 إلى 1 في التسلسل }
}
}
}
} // لا يوجد عمود مؤهل : لا يوجد انتقال ممكن ، الإسناد كامل
#### الإجراء II

إذا لم يوجد سطر غير ضروري و لا عمود غير مغطى
{ كل \*1 هو الاسناد الأمثل}
وإلا
{ احسب (d = min (ui + vj - rij على الأسطر غير الضرورية والأعمدة غير المغطاة
إذا جميع الأسطر غير الضرورية لها ui > 0
{ (m = min(d، ui مأخوذ على جميع الأسطر غير الضرورية
لجميع الأسطر غير الضرورية ui = ui - m
لجميع الأعمدة المغطاة vj = vj + m
}
إذا كان سطر غير ضروري فيه 0 = ui
{ (m = min(d، vj مأخوذة على جميع الأعمدة غير المغطاة j
لجميع الأسطر الضرورية ui = ui + m
لجميع الأعمدة غير المغطاة vj = vj – m
}
}

تحسينات الطريقة الأصلية
-----------------------

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

تتمثل مراجعة الطريقة المجرية في إعادة النظر إلى **الإجراء I** للخوارزمية من زاوية نظرية البيان. يجدي اعتبار Q مصفوفة حدوث لبيان ثنائي و عناصرها التي تساوي **\*1** تمثل حواف إقتران M ، في هذه الحالة عملية إيجاد تسلسل **1 ،\*1 ، 1، \*1 ، 1** ... يرجع إلى البحث عن مسار متزايد حول الاقتران M. لم يأتي الحل الأمثل لهذا المشكل إلا بعد عمل هوبكروفت و كارب حيث أصبحت طريقتهما تستغل على نطاق واسع في إطار الاسناد الأمثل لغرض البرمجة الحازمة ل**الإجراء I**

### صيغة كوهن ميونكرز للطريقة المجرية

المسألة تطرح بالنظر إلى مصفوفة **A** وسعها n×n تسمى مصفوفة التكلفة ، عناصرها **aij** أعداد حقيقية غير سالبة ، المطلوب هو إيجاد **n** عناصر لا تشترك في صف بحيث تحقق أقل مبلغ **aij**∑ **ممكن**

ترجع الطريقة المستخدمة لحل هذه المشكلة إلى جهود كوهن ثم ميونكرر لتحسين وتبسيط تطبيق الطريقة المجرية

#### المصطلحات

**الصف** يعني سطر أو عمود من المصفوفة **A**

**الغطاء** هو مجموعة الصفوف التي تحتوي على جميع الأصفار **0** في **A**

#### الخوارزمبة

• لجميع أسطر **A** أطرح أصغر عنصر في السطر من جميع عناصر السطر

• لجميع أعمدة **A** أطرح أصغر عنصر في العمود من جميع عناصر العمود

• قم بتغطية كل **0** في المصفوفة A بأقل عدد ممكن من الصفوف **k**

طالما **k < n**

{
فليكن **h** قيمة أصغر عنصر **aij** غير مغطى في **A**
لجميع العناصر aij
{
إذا aij غير مغطى فإن **aij = aij - h**
إذا aij مغطى بصف فإن **aij** يبقى على قيمته
إذا aij مغطى بصفين متقاطعين فإن **aij = aij + h**
}
**k =** أدنى عدد الصفوف اللازمة لتغطية كل **0** في **A**
}
ليكن **G** البيان الثنائي الذي يمثل حوافه كل **0** في **A**

الاقتران الكامل في **G** هو الإسناد الأمثل

وصف الخوارزمية هذا لا يتطرق إلى تفاصيل إجراء اختيار أدنى تغطية في كل تكرار.

وصلات خارجية
------------

* شريط فيديو(طراز فلاش ، مدة 75 دقيقة) محاضرة عن «الطريقة المجرية» ألقاها هارولد كوهن في 13 يوليو 2010 أثناء ندوة EURO XXIV في بحوث العمليات بلشبونة ، البرتغال. يلفت الانتباه أن نسخة مطبوعة مختصرة لهذه المحاضرة قد نشرت كمقال.

مراجع
-----

1. ↑  KUHN, Harold W. The Hungarian method for the assignment problem. Naval research logistics quarterly, 1955, vol. 2, no 1‐2, p. 83-97
2. ↑  KUHN, Harold W. Variants of the Hungarian method for assignment problems, 1956
3. ↑  HALL, Marshall. An algorithm for distinct representatives. The American Mathematical Monthly, 1956, vol. 63, no 10, p. 716-717.
4. ↑  FORD JR, Lester Randolph et FULKERSON, Delbert Ray. Solving the transportation problem. Management Science, 1956, vol. 3, no 1, p. 24-32.
5. ↑  MUNKRES, James. Algorithms for the assignment and transportation problems. Journal of the society for industrial and applied mathematics, 1957, vol. 5, no 1, p. 32-38
6. ↑  KUHN, Harold W. A tale of three eras: The discovery and rediscovery of the Hungarian Method. European Journal of Operational Research, vol. 219, no 3, p. 641-651, 2012

* أيقونة بوابةبوابة علم الحاسوب