これは、優先順位をどのように表現するかについてのやや補足的な質問
です。答えは、Priority Queue ADT.
私の問題は、この問題をモデルPQ化する方法を理解できないことです( a の仕組みを理解しています)。
したがって、私の元の(些細な例)を使用して、さまざまな料理などを好む...(クラスとして表される)を持っていると仮定PersonA PersonBしPersonYます
。最初の質問スレッドの回答の友人としても提案されています)。
これをどのようにモデル化すればよいかわかりません。私が最初に考えたのは、料理ごとに ( など) を作成し、各キューにすべてのPizzas Spaggeti SteakPreferencePriorityQueuePizzaPQSpaggetiPQPersons各キューからトップを削除し始め(その料理の最大の好みを持つものとして)Person、他のキューからそれを削除します。このプロセスは、すべてのキューを順番に処理します。
概念的には正しいように見えますが(ただし、プロセス自体が原因で矛盾が生じることを念頭に置いているため、最善のアプローチではありません)、正しい軌道に乗っているとは思いません。
- 他のキューからの削除は線形操作であり (すでにサービスが提供されており、他のキューにあるべきではない
remove(Object)場所について話している)、キューの数がどこにあるかがコストになります (そして、これは私にはかなりの量を追加するようです)そもそもプライオリティキューの使用法に)ObjectPizzaO(N*k)k - プライオリティ キューの「プール」で動作するには抽象化が必要なように思えますが、実際にそのようなデータ構造が存在するかどうかはわかりません。
この問題は、ジョブの割り当て方法や複数のキューの操作方法として一般化できると思います (おそらく?)
。このような問題には、標準的な設計アプローチが必要です。
どんな入力でも大歓迎です
@Thomas
の回答後に更新: 問題はもう少し複雑です。
好みに加えて、(人の)他の属性が適所にある可能性があります。
たとえばPersonA、PersonBどちらも他の料理よりもステーキを好みます。しかしPersonA、コレステロールが高くPersonB、アスリートです。どういうわけかこれらの属性を考慮にPersonB入れると、ステーキが得られるはずです。そして、おそらくPersonA最終的には何か別のものになる可能性があります。これが私がもともと料理
について考えた理由ですPQs