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