يرجى مراجعة هذه المقالة وإزالة وسم المقالات غير المراجعة، ووسمها بوسوم الصيانة المناسبة.

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

من ويكيبيديا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث
N write.svg
هذه مقالة غير مراجعة. ينبغي أن يزال هذا القالب بعد أن يراجعها محرر عدا الذي أنشأها؛ إذا لزم الأمر فيجب أن توسم المقالة بقوالب الصيانة المناسبة. (يونيو 2019)

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

الخوارزمية[عدل]

تعريفات[عدل]

تعرّف المتغيرات التالية :
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
}
}
The hungarian method.jpg

تحسينات الطريقة الأصلية[عدل]

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

تتمثل مراجعة الطريقة المجرية في إعادة النظر إلى الإجراء 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 هو الإسناد الأمثل

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

Kuhn-munkres.jpg

وصلات خارجية[عدل]

مراجع[عدل]

  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