• ベストアンサー

最も計算量の少ない最小値発見について

uwiの回答

  • uwi
  • ベストアンサー率74% (55/74)
回答No.6

回答番号:No.3で示したのは最速の例です。現実的にはデータの分布などにあわせて変換を考えることになると思います。 例えば最上位だけ残して a1 = 4 = 0100 変換-> 0111 a2 = 1 = 0001 変換-> 0001 a3 = 2 = 0010 変換-> 0011 a4 = 7 = 0111 変換-> 0111 とします。このやり方だと大きい数値ばかり(最悪条件)だと問題なのですが、そういうパターンが起こりえないデータであれば利用できます。上位はNo.3で下位は上のやり方とか他にもいろいろ考えられると思います。 あと、データがまばら(0~10^10の中から100個とか)の場合は単純に比較する方が殆どの場合に速くなります。 結局のところNo.3に書いたようにデータによってなので、データ分布が想定できないならトーナメント方式で数値比較が安定すると思います。

tyamoroneu
質問者

お礼

>データがまばら(0~10^10) データ値が大きくなると,用意するビットが増える方法なので実装は難しそうです。 良いやり方ではありますが、確実に(最速で)最小値を求めるためには,まだまだ改良が考えられそうです。 また、データにによっては,こちらの方がいい場合もあるかもしれません。 総当り,二分木、クイック、マージetc 以外の新しいやり方だと思います。 回答ありがとうございます。

関連するQ&A

  • エクセル最大値最小値の計算

    あるデータの集まりから最大値最小値を引きたいのですが、一つ一つ計算式を入力するのは大変なので、自動に最大最小を見つけ出して計算させるにはどうしたらよいのでしょう =sum(a2+b2-最大-最小)という風な感じにしたいのですが・・・

  • 最小化したプログラムのメモリ使用量について

    最小化したプログラムのメモリ使用量について タスクマネージャーのプロセスタブを開き、各プロセスが使用しているメモリ量を確認します。 たとえば、IE(当方、社内規定によりIE6利用中)が100MBメモリを使用しているとします。 これを最小化ボタンでタスクバーに納めると、メモリー使用量が激減します(場合によっては2MB程度まで)。 これは、どういう意味なのでしょうか? PFの使用量が変化しないということは、仮想メモリーにデータを退避させ、物理メモリ上の空き領域を増やしているとみていいのでしょうか? 過去の質問の中で、UI部分のメモリーが必要なくなったために少なくなるという回答を見ましたが それは違うのではないかと思っています(キャッシュなどを考えると2M程度で収まるとは到底思えない)。 そもそもIE6はメモリーリークを起こすので、その分が開放された、という話を聞いたことがあります。 これは正しいのでしょうか? 取り立てて困っているわけではありませんが、好奇心というか知りたがりというか・・・。 ご教授のほど、よろしくお願いします。

  • エクセルでの最小二乗法の計算

    化学実験で得られたデータをエクセルを使って計算したいと思っているのですが、 使い方がよく分かりません。 最小二乗法の計算方法。 また、エクセルの使い方が詳しく載っているサイトなどがあれば教えて欲しいです。

  • データ量の計算について

    データ量の計算についての質問です。 一画面30万画素の画面で、256色を同時に表示できるパソコン一画面のデータ量は何Mバイトになるか。 バイトの求め方がいまいちわかりません。 256色は1バイトになるのはわかるのですが、その先の計算方式についてよくわかりません。 答えられる方、詳しく説明できる方いたらお願いします。

  • 標準偏差の計算方法

    最大値と最小値だけが分かっている状態で標準偏差って計算できるでしょうか? たとえば最大値が130で最小値が90と想定したとき、平均は(130+90)/2=110と想定計算できますが、標準偏差はどう計算すればよいでしょうか? 教えてください。

  • 最小二乗法 エクセルと手計算の違いを教えてください。

    最小二乗法をおなじデータで手計算とエクセルそれぞれでやったところ、違う式が求まりました。 どちらかの計算ミスではないとしたら違ってしまったことについてどんな理由が考えられますか?

  • 金型の歪み量の計算

    本当に基本的なことで申し訳ないですが、アドバイスお願い致します。 鋳造による金型の歪み量を計算したいのですが、どのように計算したらよいのでしょうか。 必要なデータ等、計算の考え方等どんなことでも助かります。 よろしくお願い致します。

  • CPUの計算量、計算速度について

    いくつかのゲームやパソコンのCPUは64bitなどのようですが、 64bitというのは、約1844京です。 このデータを約2GHzのスピードで処理する。 すると、2GHzは20億ぐらいなので、 1844京÷20億=92億秒 92億秒、約10万日かかってしまいます。 これはもしかして割るのではなく、かけるのでしょうか? 1844京のデータを1秒間に20億回取り扱える。 1844京×20億が、1秒間に取り扱える限界のデータ量ということでしょうか? ただ、スパコンの京が1秒に計算できる量が「1京」と聞いています。 私の認識はどこが誤っているのでしょうか?

  • Excelで最大値最小値の検出

    皆さん こんばんは。  データのExcel配列は下記のようになっています。空白セル(数は不定)を境目に異なるグループに分け、各グループの最大値あるいは最小値を(グループごとに計算すればできますが、データの量が多いので手間かかります)一遍で検出したいですが、何かいい方法はないでしょうか。皆さん教えてください。宜しくお願い致します。 A列     B列        C列      D列     (時間)  (データ)     (最大値)   〈最小値) 0:00   7.316784186 0:05   7.178492184 0:10   7.031467139 0:15 0:20 0:25 0:30   4.878174647 0:35   3.402687629 0:40   2.051343872 0:45   0.420805671 0:50 0:55   2.175188612 1:00   2.849337126 1:05   3.256652642 1:10 1:15   4.427495186 1:20 1:25 1:30 1:35   6.008051928 1:40   6.773041277  ・    ・  ・    ・  ・    ・  ・    ・

  • 法則を発見したいです。

    お知恵をお貸し下さい。 「1~9までのマスがある。マスにはA・Bが入る。 1つのマスにはA・Bのどちらかのみは入れる。 A・Bをいれると○か×の結果が表示される。 同じ組み合わせでも必ず同じ結果が表示されるわけではない。 結果はある法則に基づき表示される。」 この法則を発見する為に、どのようなデータを取って どのような検討をすればよいでしょうか? データ量はそれほど取れないので(300サンプルほど) 少ないデータ量で発見できれば良いと思っております。