Questions tagged [アルゴリズム]

アルゴリズムとは、プログラミングにおける、問題の解決手段や計算手法、実現手法またはデータ構造の扱い方、操作などを定式化したものです。数式アルゴリズムの妥当性や証明は[数学]タグがあります。データ構造(型)についての質問は[データ構造]があります。

アルゴリズムとは、プログラミングにおける、問題の解決手段や計算手法、実現手法またはデータ構造の扱い方、操作などを定式化したものです。数式アルゴリズムの妥当性や証明はタグがあります。データ構造(型)についての質問はがあります。

322 questions
13
votes
4 answers

クイックソートの2種類の実装法で実行速度に顕著な違いが出る

(QuickSort:GeeksforGeeksを参照) QuickSortの大枠を、 /* low --> Starting index, high --> Ending index */ quickSort(arr[], low, high) { if (low < high) { pi = partition(arr, low, high) quickSort(arr, low, pi - 1) quickSort(arr,…
komatsuna
  • 133
  • 1
  • 8
8
votes
7 answers

数値からランダムに値を取り出す『軽い』方法

お世話になります。 かなり初歩的な質問になってしまいますが、お許し下さい。 0から19までの連続した値があるとし、そこから重複せずに 六つだけ取り出したいと思います。 やりたいことはたったこれだけなのですが、下記の条件を満たす方法で 実現したいと思っています。 1.コレクションなどの機能は使用しない 2.forやifなどといった、基本的な処理だけで実現したい 3.取得した後も、昇順に並んでいること 4.簡単なことだけに、極力コードを少なくしたい これでできればと思うのですが、なかなか良い方法が見…
たたぱた
  • 1,205
  • 5
  • 37
  • 88
7
votes
2 answers

初速・最終速度・移動時間・移動距離が決まっている状況で、速度をスムーズに変化させる

オブジェクトを座標Aから座標Bへ、以下の条件に基づいて移動させようとしています。 ・座標Aでの速度は定数Va ・座標Bでの速度は定数Vb ・AからBまで移動するのにかかる時間は定数T ・AからBまでの距離は定数D この条件下で、速度をVaからVbへスムーズに変化させながら移動させたいのですが、どうすれば特定時刻での速度を求めることができるでしょうか? (座標Bに到着する前に速度がVbに達していても構いません)
Murlock
  • 75
  • 5
5
votes
1 answer

ランダムに複数引いた通路の幅が同じになるように整形する方法

ランダムでダンジョンのマップを作成しようとしています。 上の画像のように2つの部屋があり、その間を、2マスの幅がある通路でつなぎます。 通路の始点、終点や折れ曲がる地点はランダムで決まります。 さらに通路を追加します。 二度目以降に通路を追加する際、以前に引いた通路を気にせずに引くので、以前に引いた通路と一部が重なったり、隣り合ったりする場合があります。 こうして2、3回通路を引いた後で、通路の幅がどの場所でも2マスになるように、自動的に通路を整形したいです。 具体的には、以下の2つの条件…
noprops
  • 423
  • 3
  • 14
5
votes
2 answers

負の重みを含んだ最長経路の求め方

皆様のアイデアを頂戴したいです。 仕事上の目的で、下のような有向グラフの最長経路を求めたい と考えております。①から⑤までです。 実際のグラフはもっと複雑です。ですので総当たりは難しいです。 最初ダイクストラ法を用いようと考えましたが ①ダイクストラ法は最小経路を求めるので、そのままでは最長経路 が求められない。 ②負の重みがある。 ため断念しました。 上手くこの問題をダイクストラ法で解く方法、あるいはダイクストラ法 に限らず解く方法はないでしょうか。
涼子津雲
  • 51
  • 1
  • 3
5
votes
2 answers

ビット演算子だけで整数の割り算(余あり)をする方法

掛け算の場合は 5 * 10 = 0b101 * 0b1010 = 0b101 * (2^3 + 2^1) = (0b101 << 3) + (0b101 << 1) = 0b110010 = 50 で計算できるのは分かるのですが、5/3などを計算する場合どうすればいいのか思い当たらないので説明いただければと思います。 そのまま割る方法でも、1/3をバイナリで表現する方法でも大丈夫です(5 * 1/3 と出来るので)。
packet0
  • 2,439
  • 2
  • 15
  • 32
4
votes
0 answers

R木系(特に PR 木)のアルゴリズムを理解したい

位置情報などを効率的にインデックスするための手法として、R木があります。 質問 R木(特に、 PR 木)をどうやって実装するのか、とくに、そのアルゴリズムを知りたいと思っています。当たれる書籍などはありますか?
Yuki Inoue
  • 16,805
  • 19
  • 80
  • 196
4
votes
1 answer

カウンタの値が被らないことの確認方法

任意の値からループするカウンタ間の値が被らないことを確認したいのですが、その条件を出しかねています。 数学的にアプローチできると良いのですが、ネタも知識も不足しており、どのようにアプローチすれば良いのかも判断ついておりません。 どのように考えれば良いのかヒントとなる何かでも良いのでご教示いただけたら幸いです。 255までの数値を1~10個格納できる配列がある。格納した個数を格納数とする。 格納数分だけカウンタを用意する。 1回目の処理で各カウンタは1から順に値を与えられて初期化される。 このカ…
豚吐露
  • 1,968
  • 2
  • 20
  • 37
4
votes
2 answers

グラフの折れ線100本をそれぞれ異なる色にしたい場合、何か良いアルゴリズムはありますか?

やりたいこと 下図のようなグラフを、作成したいです。 生徒のテストの点数の推移を折れ線グラフで表示する グラフに表示する生徒は、ユーザが指定できる 生徒は最大100人いるので、折れ線の数は最大100本まで表示できるようにする(100本表示して、意味のあるグラフになるかどうかは気にしない) 生徒ごとに折れ線の色は変える(折れ線の色に、意味があるかは気にしない) 質問 100本の線をそれぞれ異なる色にする場合、何か良いアルゴリズムはありますか? たとえば色相環を、渦を巻くように外側から内側に色…
yuji38kwmt
  • 2,010
  • 1
  • 21
  • 50
4
votes
2 answers

画像を比率を保ったまま端数なく縮小するパーセンテージの求め方

ヘタすると小学生レベルの計算なのかもしれないのですが、 例えば 128x80 の画像があったとして、 これが丁度縦横端数なく縮小できるパーセンテージを求める公式のようなモノはありますでしょうか? Google…
shingo.nakanishi
  • 6,307
  • 6
  • 56
  • 95
4
votes
1 answer

無限ループはどのようにして検出しているのですか?

windowsなどでプログラムが応答しないという記述が表示されることがありますが、 このような応答の応答がないプログラムを検出するプログラムはどのようになっているのですか? 毎回毎回プログラム以前の無知な質問ですみません 【追記】 「イベントが一定時間以上の間処理されない」 C++/cliかC#の入門で一番最初にウインドウだけを作るプログラム(いわゆるhello…
todo
  • 710
  • 3
  • 9
  • 29
4
votes
1 answer

完全二分木は森に分類されますか?

どういった場合が森に分類されるのですか?
4
votes
1 answer

スーパーコンピュータはなぜ高速に計算ができるのですか?

スーパーコンピュータはなぜ高速に計算ができるのですか? スーパーコンピュータは多くのCPUを並列にして速度を稼いでいると認識しています しかしなぜ高速に計算できるかわかりません 理由はアムダールの法則です 複数のプロセッサを使って並列計算してプログラムの高速化を図る場合、そのプログラムの逐次的部分に制限を受ける。例えばプログラムの95%を並列化できたとしても、どれだけプロセッサ数を増やしても図で示したように20倍以上には高速化しない。 この法則を無視しないといけないことになるのですがどんな原理な…
もっち
  • 89
  • 3
  • 5
4
votes
4 answers

2からNまでを、素因数分解したときの素因数の最小値が小さい順に並べるには?

2 = 2^1 3 = 2^0 * 3^1 4 = 2^2 5 = 2^0 * 3^0 * 5^1 6 = 2^1 * 3^1 7 = 2^0 * 3^0 * 5^0 * 7^1 8 = 2^3 9 = 2^0 * 3^1 10 = 2^1 * 3^0 * 5^1 となるので、 2から10までを 素因数分解したときに含まれる素因数の最小値が小さい順に (ただし、  m, n の最小の素因数が同じ場合、  その次数が小さい方が先とする。  また、m, n…
TOM
  • 1,582
  • 1
  • 14
  • 36
3
votes
3 answers

セット商品の最適な内訳を選択するアルゴリズムを知りたい

顧客から商品の購入依頼があります。 その商品を最適なセット商品の購入に変更して、最安の値段で購入したいです。 よいアルゴリズムがあれば教えていただきたいです。 例) 顧客からの購入依頼  商品A 20個 単価200円 合計金額4000円  商品B 10個 単価300円 合計金額3000円 セット商品  商品ABセット 金額 450円 内訳    商品A 1個    商品B 1個 上記の場合、顧客が購入するものとして商品ABセットを10個購入して、商品Aを単品で10個購入するのが最適です。 このよ…
M.T
  • 41
  • 3
1
2 3 4 5