السلام عليكم و رحمة الله و بركاته .. في إحدى البرامج واجهتني مشكلة يمكن تبسيطها في الآتي .. لدينا عدد N من المجموعات .. كل مجموعة بها عدد M من العناصر .. كل عنصر له 3 أرقام a و b و c .. المطلوب هو أن أختار عنصر واحد من كل مجموعة بحيث يكون مجموع الرقم a لكل العناصر المختارة أقل من X و مجموع b لكل العناصر المختارة أقل من Y و مجموع c لكل العناصر المختارة أقل من Z .. بالطبع سيكون لدينا الكثير من الإحتمالات و التوافيق التي توافق هذا الشرط .. و التوفيق الأفضل هو الذي إذا قمنا بالتعويض في F(A,B,C) و التي هي هذه المعادلة : h*A+i*B+ j*C نحصل على أقل قيمة .. حيث أن A هي مجموع الـ a لكل العناصر و هكذا B و C .. مثال : المجموعة الأولى : عنصر 1 : a = 7 , b = 5 , c = 11 عنصر 2 : a = 2 , b = 8 , c = 12 المجموعة الثانية : عنصر 1 : a = 3 , b = 5 , c = 22 عنصر 2 : a = 9 , b = 1 , c = 44 و بقية المدخلات : X = 15 Y = 14 Z = 50 h = 0.4 i = 0.3 j = 0.3 هنا كل التوافيق ستكون : عنصر 1 من مجموعة 1 مع عنصر 1 من مجموعة 2: مجموع الـ A سيكون 10 .. مجموع الـ B سيكون 10 و مجموع الـ C سيكون 33 و الحل مقبول حيث أن A أقل من X و B أقل من Y و C أقل من Z .. F(A,B,C) = 10*0.4 + 10*0.3 + 33*0.3 = 16.9 عنصر 2 من مجموعة 1 مع عنصر 1 من مجموعة 2 مجموع الـ A سيكون 5 .. مجموع الـ B سيكون 13 و مجموع الـ C سيكون 34 و الحل مقبول أيضاً .. F(A,B,C) = 5*0.4 + 13*0.3 + 34*0.3 = 11.55 و هنا هذا الحل أفضل من الحل السابق لأن قيمة الـ F أقل عنصر 1 من مجموعة 1 مع عنصر 2 من مجموعة 2 مجموع الـ A سيكون 16 .. مجموع الـ B سيكون 6 و مجموع الـ C سيكون 55 و هنا الحل غير مقبول حيث أن C أكبر من Z و A أكبر من X .. عنصر 2 من مجموعة 1 مع عنصر 2 من مجموعة 2 مجموع الـ A سيكون 11 .. مجموع الـ B سيكون 9 و مجموع الـ C سيكون 56 و هذا الحل غير مقبول أيضاً بسبب قيمة الـ C .. و هنا نكون قد توصلنا إلى أن إختيار عنصر 2 من مجموعة 1 مع عنصر 1 من مجموعة 2 هو الأحل الأفضل .. قمت بحل هذه المسألة بطريقة أشبه إلى حدٍ ما بالـ Brute Force .. تصل في أسوأ الحالات إلى O(M^N) .. هل لديكم من أفكار أخرى لحل هذه المشكلة ؟؟ و جزاكم الله خيراً ..