第1希望しかない人もいれば第5希望まである人もいます。
・授業はA~Fまでの6種類があります。
授業クラスは40人までです。
・この条件のもと出来る限りの希望を多く通し
多くの人間が満足するアルゴリズムをさがす。
希望の少ない人から優先的に授業に割り当てていくアルゴリズム
を実装したのですが、それだと希望の多い学生がふりになる(希望の低い
授業に割り当てられる)ことがわかりました。(←実装前に気づけ
さらに、学生を適当な順番から割り当て、満足度
(第1希望2点、第2希望1点第3希望0点
第4希望-1点第5希望-2点など)がなるべく
多い組み合わせを見つけるまで計算させるという
アルゴリズムを考えたのですが、学生は1000人
程いる設定なので計算量的に不可能かと思います。
なにか良いアルゴリズムはあるでしょうか…
(以前へろりさんに助けていただいたのですが、力不足で実装できませんでした。)
/*編集箇所*/
アルゴリズムの目的は
・なるべく多くの学生に授業に参加してもらう。(=希望がかぶって参加できない組み合わせ減らす)
・なるべく多くの学生を満足度の高いふりわけをおこなう。
(ただし、なにをもって「満足度がたかい」をするかは考える。
第5希望に振り分けられる学生を減らすことが満足度がたかいとするか、
点数の合計が多いほうが(第5希望が多かろうが)満足度がたかいとす
るか、といった問題)
学生は240人。
クラスは6クラスあり1クラス40人の定員。
/*変更箇所終了*/
