m個の数字をn個のグループに分けるアルゴリズムはある?

このQ&Aのポイント
  • m個の数字をn個のグループに分け、各グループの和が指定した比に一番近くなるようなアルゴリズムは存在するのでしょうか。
  • 例えば、{1, 3, 4, 6}を和の比が1:2に一番近くなるように2つのグループに分けると、 {1, 4}, {3, 6}となります。
  • アルゴリズム以外の考え方や、効率的な総当たり方法があれば教えてください。
回答を見る
  • ベストアンサー

m個の数字をn個のグループに分けるとき、

m個の数字をn個のグループに分けるとき、 各グループの和s(i) ,(1<=i<=n) が、指定した比 r(0):r(1): ・・・ :r(n-1):r(n) ( = s(0):s(1): ・・・ :s(n-1):s(n) ) に一番近くなるようなグループ分けを導けるアルゴリズムはありますか。 例えば、{1, 3, 4, 6}を和の比が1:2に一番近くなるように2つのグループに分けると、 {1, 4}, {3, 6} となります。(もし違ってたら指摘してください) アルゴリズムでなくても、こうしたら良いんじゃないか、という考えがありましたら 教えてください。 総当たりで調べる場合はどのようにすれば、効率良く調べられるかという点もお願いします。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

それは宿題ですか? NP問題? ナップサック問題? たぶん、これを簡単に解けるようなアルゴリズムを作れたら、世界的に有名になれるほどの問題です。(一部のマニアックな人たちの間だけですが・・・) 完全な正解ではなく、近似でよいのであれば、できるかもしれませんが。 総当たりで行う場合の効率よくやるやり方はわかりません。地道に総当たりするしかないと思います。(NP問題の反例は私には見つけられません。) 効率というのが数学的な効率ではなく、コンピュータ上の効率という意味であれば、いろいろとあると思いますが。メモリの配列の使い方とか。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

あれ? 問題がおかしい. 比は r(1):r(2):...:r(n-1):r(n) ですか? そうじゃないと s(i), i ≦ i ≦ n にあいませんよね. で, 3つ以上のグループにわけるときに「一番近い」というのを定義する必要もあります. とりあえず n=2 に対してはナップサック問題になりそう. もしそうなら NP-困難だけど DP 使えば FPTAS までいけるかな.

関連するQ&A

  • 部分和問題がわかりません。

    部分和問題がわかりません。 [問題] n個の整数が配列Aに格納されていて、整数xの値を与えたときに、 A[i] + A[j] = x となるi,jが存在するかどうかを判定する、なるべく効率のよいアルゴリズムを示せ。 この問題は部分和問題のため、NP完全問題なので、総当たりのO(n^2)より効率のいい方法がないと思うのですが、もっと効率のよい方法が存在するのでしょうか?

  • 1からnの数字をk個の空でない部分に分割する方法の数

    n>2とする。1からnの数字をk個の空でない部分に分割する方法の数をS_n(k)で表す。たとえばS_3(2)=3である。 (1)S_n(n-1)を求めよ。 (2)S_n(n-2)を求めよ。 (3)S_n(2)を求めよ。 (4)n>2のとき、S_n+1(k)をS_n(k-1)とS_n(k)を用いて表せ。 この問題を解いています。 (1)はn(n-1)/2 (2)はn^2(n-1)(n-2)/6 となりました(全然自信ありません) (3)からよくわからなくなりました。 「1からnまでの数字を2個の部分に分ける方法の数」を求めるには何個ずつ分配するかによって場合わけが必要なのでしょうか?(そんなことできるのでしょうか?) 回答いただければ幸いです。よろしくお願いします

  • N個の整数の並び替えるアルゴリズム

    N個の整数1,2,3,...Nから任意のM個(M < N )を取り出すのですが、重複はダメという場合、どのようなアルゴリズムがあるでしょうか。重複ありなら、Nまでの一様乱数を発生させて整数化して取り出すことは可能です。今回は重複なしです。重複があったらやり直して重複なしになるまでやり続けるというのはダメだなと思っています。 データ処理言語のRはコマンド1つのようですが。言語はFortranなのですが、アルゴリズムのレベルだとどれでも同じと考えています。よろしくお願いします。

  • n個のものからr個を取り出す実際の計算法を教え乞う

    例えば,5個のものを,1,2,3,4,5(n=5)とします.この5個から2個(r=2)を取り出す組み合せは,(1,2), (1,3), (1,4), (1,5), (2,3), (2,4), (2,5), (3,4), (3,5), (4,5) の10通りです. また,3個(r=3)を取り出す組み合せは,やはり,(3,4,5), (2,4,5), (2,3,5), (2,3,4), (1,4,5), (1,3,5), (1,3,4), (1,2,5), (1,2,4), (1,2,3) の10通りです. では,質問です. 質問:「n 個のものから r 個を取り出す実際の計算法(上記のような組み合せの数列を得る)を教えて下さい.」 よろしくおねがいします.

  • グループ分けの方法について

    みなさん、初めまして。 グループ分けの方法で困っています。 A学校、B学校から集められたn人の男女の集団があるとします。 この集団に対し、年間最大10回グループ分けを行うのですが、 2回目以降のグループ分けにおいて、以前同じグループになった人とは、なるべく同じグループにならないようグループ分けを行いたいのです。 また、男女比及び所属校比も出来るだけ均等にしたいと考えています。 上手くグループ分けをする方法(計算式等)はないでしょうか? どなたかお知恵をお貸し下さい。

  • Σ[n=0..∞](-1)^n5^n/(2n)!の和は?

    Σ[n=0..∞](-1)^n5^n/(2n)!の収束・発散を判定し,収束ならその和を求めよ。 という問題です。 これは交項級数なので数列{5^n/(2n)!}が単調減少且つlim[n→∞]5^n/(2n)!=0より (∵比を採ると5^(n+1)/(2(n+1))!/5^n/(2n)!=2/((2n+2)(2n+1))で単調減少且つ極限値が0) Σ[n=0..∞](-1)^n5^n/(2n)!は収束。 となるのかとと思いますが和はどのように求めればいいのかわかりません。 どのようにして求めれるのでしょうか?

  • 指数分布の小さい方からm個の分布

    指数分布f(x)=λe^-λx (x>=0、λ>0)にしたがうランダムなデータがn個あった場合、小さい方からm個の和はどのような分布になるのでしょうか。(n>=m) n=mの場合中心極限定理で正規分布になると思いますが、その他の場合どのようになるのでしょうか。教えて下さい。

  • 数列の第n^2項?

    {an}を初項a1=A,公差dの等差数列とする。自然数jとkに対して、S(j,k)=Σ(i=j→k)ai=aj+aj+1+aj+2・・・+akとおく。 (1)定数Aとdの値を求めよ。 (2)S(n+1,n^2)/n(n-1)=αn^2+βn+γを満たすα,β,γを求めよ。 (3)S(n+1,n^2)<0となるnの最小値Nを求めよ。 (4)Tn=Σ(i=1→n)a5iとおくときlimn→∞(Tn)^2/S(n+1,n^2)の値を求めよ。 (2)n^2項までの和の意味がわからないです。

  • 第二種スターリング数の母関数の組合せ論・計数子による解釈

    1,2,3,…,nのn個の数字を、k種類の区別のないグループに分ける場合の数を、第二種スターリング数と言って、ここでは、S(n,k) と書きます。 すると、1,2,3,…,nのn個の数字を、k種類の区別のあるグループに分ける場合の数は、k!*S(n,k) となります。 これは、f:{1,2,…,n}→{1,2,…,k}の全射の場合の数でもあります。 ところで、 Σ[n=0,∞] k!*S(n,k)x^n/n! = (e^x - 1)^k という公式があります。 右辺のx^n/n!の係数は、1,2,…,kの数字を重複を許してn個並べて、全種類の数字が少なくとも1回は使われているという条件をつけたときの場合の数とみなせます。(指数型計数子) ここまではいいのですが、似たような公式 Σ[n=0,∞] S(n,k)x^n = x^k/(1-x)(1-2x)…(1-kx) を計数子によって解釈する方法があれば、どうか教えてください。

  • N連立方程式の解き方を教えてください。

    N連立方程式の解き方を教えてください。 未知:  n個の2次元ベクトル: {a_i | i=1,...,n }  なお、すべて大きさは1です。 |a_i| = 1 for all i  n個のスカラー: { λ_i | i=1,...,n }  ※ 未知数は 3n 個ありますが、ベクトルの大きさの条件から実際には 2n 個です。 既知:  n×n 個の 2x2 行列: {A_ij | i,j = 1,...,n } 問題:  以下の n 本の連立方程式から a_i と λ_i の値を出す。 i = 1,...,n に対して    A_i1 a_1 + A_i2 a_2 + ... + A_in a_n = λ_i a_i  (左辺は2次元ベクトルの和ですので、実際には 2n 本の   連立方程式になり、未知数と同数になります。) 考察:  n 個の λ_i が全部同じなら固有値問題に帰着できますが、  そうではなく、また、右辺が非線形なので困っております。 反復的な近似解法でも結構ですので、ご教授いただければ幸いです。 よろしくお願いします。

専門家に質問してみよう