私たちにはアイテムのリストがあり、各アイテムは(未知の)属性の数を持っています。単一属性によるソートは単純なソートアルゴリズムです。 質問は、すべての属性で同じリストの並べ替えを並べ替える方法ですか? 各属性には重みがありますので、まず重要度の低い属性を最初にソートし、次により安定性の高いソートアルゴリズムなどを使用してより重要な属性で並べ替えることができますが、これは明らかに効率的ではありません。どのマルチ評価基準ソートアルゴリズムを使用するのですか?
ありがとうございました。
私たちにはアイテムのリストがあり、各アイテムは(未知の)属性の数を持っています。単一属性によるソートは単純なソートアルゴリズムです。 質問は、すべての属性で同じリストの並べ替えを並べ替える方法ですか? 各属性には重みがありますので、まず重要度の低い属性を最初にソートし、次により安定性の高いソートアルゴリズムなどを使用してより重要な属性で並べ替えることができますが、これは明らかに効率的ではありません。どのマルチ評価基準ソートアルゴリズムを使用するのですか?
ありがとうございました。
関数f:A1xA2x ..-> R [すなわち、優先度と属性に基づいて各要素に値を与える]。関数は属性に非常に依存しています(たとえば、属性値が0,9の場合、値はシンプルです):Sigma[val(i)*10^prio(i)] for each attribute i
。
リストを反復し、関数値を計算し、この関数結果をキャッシュし、それに従ってソートします。複雑さはO(nk + nlogn)となります。ここで、kは属性の数、nは要素の数です。
ほとんどのソートアルゴリズムは、複数のソート基準を組み合わせることができる1つの比較関数を入力として使用できます。
結局、すべての要素を並べ替えることができるようにするには、すべての要素の間に順序関係がなければなりません(例えば、Aは要素Bの前にあります。推移的/対称的/再帰的な性質を満たさなければならない)ので、これは、有効な比較関数があれば、ソートアルゴリズムの1回のパスでソートすることが可能でなければならないことを意味する。
ソート内部のあなたの比較意志SORT BY A,B,C
: A、B、C、最高である最低prioerity
これは、単純なループでA..n基準に外挿することができます。基準のリスト中の各基準の
両以上
これはO(k * n * logn)。ここで、kは属性の数であり、nは要素の数であり、単純にk回ソートするのと同じです。 – amit
この問題は、1つの基準Aが他のすべてよりも無限に大きな重みを持つということです。学生は数学に優れており、私のロボットチームに誰かを参加させたいと考えています。しかし、学生は、倫理、プロフェッショナル、コーディング、薬物問題などを抱えていますが、数学は重要な要素を開始しているので、最高の生徒は少なくともこれが最高の生徒になると提唱します。 –
@MuhammadUmer - アルゴリズムではなく*ソート*アルゴリズム。だから、あなたが賞賛すると思うものに基づいて各生徒のスコアを生成したいと思うでしょうし、そのスコアだけでソートします。 –
比較されているとは何'prio(i)'ですか? – Dima
'prio(i)'はi番目の属性の優先順位です。この例ではi = 0が最も重要ではありません。 – amit
ちょっと!私はちょうどあなたの答えを見ました(2年後...)..そして私はそれを約2日間理解しようとしています..あなたはアルゴリズムを説明しようとするか、 –