سؤال

مجرد سؤال فضول. تذكر متى في الفصل الدراسي ، يقوم الأستاذ بتقسيم الأشخاص إلى مجموعات من عدد معين (n)?

بعض أساتذتي سوف يأخذون قائمة من n الناس يريد المرء العمل مع و n الناس لا يريد المرء العمل معهم من كل طالب ، ثم يتحولون بطريقة سحرية إلى مجموعات من n حيث سيتم مطابقة الطلاب مع الأشخاص الذين يفضلونهم ويتجنبون العمل مع أشخاص لا يفضلونه.

بالنسبة لي ، تبدو هذه الخوارزمية مثل مشكلة knapsack ، لكنني اعتقدت أنني سأسأل حول ما هو مقاربك في هذا النوع من المشكلات.

تعديل: وجدت مقالة ACM وصف شيء مثل سؤالي بالضبط. اقرأ الفقرة الثانية لـ Deja Vu.

هل كانت مفيدة؟

المحلول

بالنسبة لي يبدو الأمر أكثر مثل نوع ما زمرة مشكلة.

الطريقة التي أرى بها المشكلة ، قمت بإعداد ما يلي رسم بياني:

  • ستكون الرؤوس هي الطلاب
  • سيتم توصيل طالبين بحافة إذا كان كلاهما من هذين الأشياء التالية:
    1. واحد على الأقل من الطلاب يريد العمل مع الآخر.
    2. لا يريد أي من الطلاب العمل مع الآخر.

إنها بعد ذلك مسألة تقسيم الرسم البياني إلى مجموعات من الحجم n. (على افتراض أن عدد الطلاب قابل للقسمة على N)

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

أما بالنسبة لمقاربة حل هذا بكفاءة ، فليس لدي أي فكرة ، ولكن هذا يجب أن يجعلك أقرب إلى بعض الأفكار حول المشكلة.

نصائح أخرى

يمكنك تصميم هذا بسهولة كبيرة كمشكلة تجميعية ولن تحتاج حقًا إلى تحديد المساحة ، يمكنك في الواقع تحديد المسافات:

اجعل شخصين قريبًا جدًا إذا أرادوا العمل معًا. أغلق إذا كان أحدهم يريد العمل مع الآخر. المسافة المتوسطة إذا كان هناك مجرد اللامبالاة. بعيدًا إذا كان أحدهما لا يريد العمل مع الآخر.

ثم يمكنك فقط العثور على مجموعات ، ياي. ثم تقسيم أي مجموعات ذات حجم كبير للغاية ، بثقة في أن الناس في المجموعات سيكونون جميعًا على ما يرام.

يمكن أن تكون هذه المشكلة غشاشًا ، وبالتالي فإن نهجي سيكون أولاً في إجبارها على فرضها ، ثم إصلاحها عندما أحصل على فكرة أفضل.

هناك بضع خوارزميات يمكنك استخدامها. مثال رائع هو ما يسمى "مشكلة الزواج المستقرة" ، والتي لها حل مثالي. يمكنك قراءة المزيد عنه هنا:

http://en.wikipedia.org/wiki/stable_marriage_problem

لا تعمل مشكلة الزواج المستقرة إلا مع مجموعتين من الناس (الرجال/النساء في قضية الزواج). إذا كنت ترغب في تكوين زوج ، فيمكنك استخدام تباين ، مشكلة زميل الغرفة المستقرة. في هذه الحالة ، تقوم بإنشاء أزواج ولكن الجميع يأتي من حمام سباحة واحد.

لكنك طلبت فريقًا (أترجمه إلى> 2 أشخاص لكل فريق). في هذه الحالة ، يمكنك السماح للجميع بملء أفضل ما لديهم إلى أسوأ مباراة ثم تشغيل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top