私は1次元配列の数値を持っています。配列の長さと配列内の数値の値は両方とも任意です。私は数値の値に応じて、配列をk個のパーティションに分割したいと思います。 30%/ 30%/ 20%/ 20%、つまり上位30%の値、その後の30%の値などのように4つのパーティションが必要な場合、kとその分布のパーセンテージを選択します。さらに、アレイ内で同じ番号が複数回表示される場合は、2つの異なるパーティションに含まれるべきではありません。これは、上記の分配率が厳密ではなく、むしろ「目標」または「出発点」であることを意味します。番号クラスタリング/パーティショニングアルゴリズム
例えば、私の配列がar = [1, 5, 5, 6, 7, 8, 8, 8, 8, 8]
であるとします。
私はk = 4
を選択し、数字はパーティションA、B、C、DにパーセントpA = pB = pC = pD = 25%
で分配する必要があります。
私は上記与えた制約を考えると、結果のパーティションは次のようになります。
A = [1] B = [5, 5] C = [6, 7] D = [8, 8, 8, 8, 8]
(修正/達成)を得られたとはpcA = 10%, pcB = 20%, pcC = 20%, pcD = 50%
をパーセンテージ私が修正K-を必要とするように私には思えますアルゴリズムは、標準アルゴリズムが、私のパーセンテージおよび/または複数のクラスタ/パーティションに同じ値を入れることができないという要件を遵守することが保証されていないためです。
このようなクラスタリングのアルゴリズムはありますか?
4パーティションを指定し、配列が[1,1,1,1,1,1,1,8]の場合はどうなりますか? – Femaref
まず、要件を明確にするためにいくつかの例を作成する必要があります。例えば、 'ar = [1,2,3,4,5,6,7,8,9,10]'のとき、k = 4、25%の分布については何を期待していますか? –
特定のパーティションがゴールにどのくらい近いかを定量化するために、ある種の指標を定義する必要があります。そのような措置がなければ、どの解決策が「最良」であるかを知ることはできません。素朴なアプローチ(元のパーセンテージに従ったパーティション化、次に制約を満たすためのパーティション境界の移動)は、常にソリューションを提供します。 – fmr