• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:数値を複数の群に分ける最適な組み合わせを求める方法)

数値を複数の群に分ける最適な組み合わせを求める方法

amanojaku1の回答

回答No.79

>回答No.78 amanojaku1 >>fb = -(long long)(gmt[m]<gmmin); >>gmmin = (gmt[m] & fb) | (gmmin & ~fb); >>fb = -(long long)(gmmax<gmt[m]); >>gmmax = (gmt[m] & fb) | (gmmax & ~fb); >gmmin = (gmt[m] & (-(long long)(gmt[m]<gmmin))) | (gmmin & ~(-(long long)(gmt[m]<gmmin))); >gmmax = (gmt[m] & (-(long long)(gmmax<gmt[m]))) | (gmmax & ~(-(long long)(gmmax<gmt[m]))); ↑ここの変数がレジスターに割り当てられてない場合、最大値最小値を条件付分岐で記述した方が早い可能性がありますね(^_^;)

katorea21
質問者

お礼

仰る意味はなんとなく分かるのですが、それってかなり環境依存ではないでしょうか?CPUの構造やバスの通信規格など複合的なハード条件に左右されると思います。 自分しか使わないツールならともかく、汎用ソフトで低レベルなハード仕様を意識したコードを書くのはどうでしょうか。 さて、当初の質問とずいぶん内容がずれてきています。 これはこれで大変興味深いテーマではありますが、そろそろこの辺で打ち切りましょう。 他の方から別の解法が投稿されなければ、今週中には質問を締め切らせて頂きます。

関連するQ&A

  • 2つの群の2値の平均値が最小となる組み合わせを

    いつもお世話になっております。 少しややこしい内容なので説明が分かりにくくなってしまうと思うので忖度に期待して質問させていただきます。 図のように1群、2群にA、BのデータがNo1から順に最大30個(2群は4~15個)のデータの 1)A(1)列の2値の平均値と2群のA(2)列の2値の平均値の差が最小になる2つを見つける。 2)同様にB(1)列の2値の平均値とB(2)列の2値の平均値の差が最小になる組み合わせを見つける。 3)1)と2)の合計が最小になる組み合わせのデータNoを知りたいのです。 例えばイメージ(入力数値は無視)として1群からデータNo4とNo8を選んだ時に、2群のNo20とNo27を組み合わせるとA、Bの2値の平均値の誤差が最小値になる組み合わせを知りたいのです。 現在は差の絶対値を行列数式でA(1)のデータNo1とA(2)のNo16からNo30までの総当たりで、同様にB1についても総当たりで求めて、両方の差の和の一番小さくなるケースを探しているのですが精度(やり方)が悪いのでお知恵拝借したく、わかりにくくお手数ですが宜しくお願いします。

  • 列の数値群の数値の抽出方法(VBA)

    エクセルVBAでお願いします。 今、B列にRange(Cells(3,2),Cells(I.2))の範囲にランダムな実数値が 格納されているとします。(Iは変数) この数値群から、正の実数で最小値、または負の実数で最大値を抽出したいのですが、どのようなコードを組めばよいでしょうか。 数値群は大小順ではなくランダムに並んでいるとします。お願いいたします。数値群の数は約20000個あります。

  • 群数列です

    1から順に自然数を並べて次のように群にわける。 1/2,3/4,5,6,7/8,9,…/…… ただし第n群が含む数の個数は2のn-1乗個である。 第n群に含まれる数の総和が10000を超えない最大のnを求めよ。 という問題なんですが、わかる方解答お願いします。

  • n次対称群の要素を互換で表すときの最大個数

    n次対称群(置換群)の要素を、隣接互換で表すときの最大個数は、転倒数が最大のものあり、 C(n-1,2)=Σ[k=1,n-1]k=n(n-1)/2 ただし、Cは二項係数。 では、n次対称群(置換群)の要素を、(隣接とは限らない)互換で表すときの最大個数は何なのでしょうか。

  • 複数の数値を組み合わせ5000(少しオーバーでもよい)に纏める方法

    複数の数値を組み合わせ5000(少しオーバーでもよい)に纏める方法 ■使用機器 win7 Office2007 エクセル ■教えて戴きたい内容 ◎A列に通し番号(1~65)B列に10~1000台の数値がランダムに記載されています。例えば98  1245  3866・・・・と言うように。 ◎これ等65の内の何れかの複数の数値を組み合わせ「幾つかの5000」の数値に纏めたい。 5000ぴったりであれば理想的であるが、500を少しオーバーしても良い。(計算できる最小オーバー数値でよい)  ◎このような事ができる方法をご存知の方のご教示を御願いたします。 ■コメント ◎私の現状の力量はごく簡単な関数(SUM関数程度)です。あまり高等な関数は理解しかねます。比較的簡単な操作方法があれば幸甚です。

  • C♯の配列について

    C♯でプログラムを作っているのですが、配列の要素数の最大値と最小値の求め方がわかりません。配列の値の最大値の求め方は調べれば出てくるのですが、要素数の最大値等は調べてもわかりませんでした。 例えば下記のような配列があった場合 int[,,] a =new int[100,100,100] a[2,3,6]=1 a[4,5,9]=1 a[13,46,79]=1 a[8,15,45]=1 a[1,33,68]=1 それぞれの要素数の最小値1、3、6、最大値13、46、79は どのようにプログラムで求めればいいのでしょうか? よろしくお願いします。

  • 数値データの規格化

    数値データの規格化の方法を教えてください 最大値がXmax,最小値がXminであるN個のデータ群 Xn(n=1,2,3・・・)があります. このデータを最大値がA,最小値がBとなるように規格化したいです. 元のデータ群Xnで最大値を1,最小値を0となるような規格化は分かるのですが, そこから,最大値をA,最小値をBとなるように変換する方法が分かりません. よろしくお願い致します.

  • 算数パズルを教えてください

    算数パズルを教えてください 子供(小4)が持って帰ってきた問題です。 さっぱりわからないので解き方も含めて教えてください。 以下問題です・・・ 3×3=9マスの枠内に以下の27個の数字のうち、重複しない9つを入れ その9マスの各列(タテ、ヨコ、ナナメ)の合計を出し それぞれの合計のうち、最大値と最小値の差がもっとも小さくなる 組み合わせはどれか <数字> 13、16、17、21、25、 28、32、34、39、44、 45、47、53、55、59、 62、64、66、71、75、 79、82、84、87、93、 96、98

  • 複数列の組み合わせがユニークな行数をカウントしたい

    excelで、A列とB列の組み合わせがユニークな行数を数えたいと思っています。 COUNTA(UNIQUE(A2:B200))/2-1 複数列指定した時に返ってくるのが配列で、COUNTIFそのままだと A列とB列の数が合算されて返るようなので2で割り、頭になぜか 0、0がついているので-1として、とりあえずそれらしき値は出せたの ですが、もっとうまいやり方があれば教えていただけないでしょうか。

  • 要素数を最大化する組合せ最適化問題について

    要素数を最大化するような組合せ最適化問題(線形計画問題)を解こうとしていますが、 要素数を一度に計算したり、ソートしたりすることはできません。 (そのような関数を線形式で定義するのは難しいと思いますので。) 一方、2つの要素が同一かどうかのみの計算は簡単にできるので、 全ての2要素間で一致/不一致を判断し、不一致の数が最大となるように目的関数を設定して、この問題を解こうかと思っています。 この方法は正しいでしょうか。 例えば、 ある変数の組合せにおいて、 A1=X, A2=Y, A3=X といった結果になるとすると、 bin1=|A1-A2|(=1、不一致) bin2=|A1-A3|(=0、一致) bin3=|A2-A3|(=1、不一致) という風に要素の一致/不一致を計算し、 不一致数(=bin1+bin2+bin3)を最大化するという風に目的関数を定義しようかと思っています。 当然、不一致数と要素数は一致しないわけですが、 不一致数が最大のときに、必ず要素数が最大となるのであれば、 目的関数として問題ないと考えています。 なんとなく正しい気もしますが、本当に正しいのかよくわかりません。 よろしくお願いします。