タグ付けされた質問 「algorithm」

アルゴリズムは、問題に対する抽象的な解決策を定義する明確に定義された一連のステップです。このタグは、問題がアルゴリズム設計に関連している場合に使用します。

5
円周率の計算が正確であるかどうかをどのように判断しますか?
私はさまざまな方法で、piの桁を順番に与えるプログラムを実装しようとしました。テイラー級数法を試しましたが、収束が非常に遅いことがわかりました(しばらくしてから結果をオンラインの値と比較すると)。とにかく、私はより良いアルゴリズムを試みています。 したがって、プログラムを作成しているときに、すべてのアルゴリズムと同様に、問題が発生しnました。計算した桁が正確であることをどのようにして知ることができますか?

30
1 MBのRAMで100万の8桁の数字を並べ替える
1 MBのRAMを搭載し、他にローカルストレージを搭載していないコンピューターを使用しています。私はそれを使用して、TCP接続で100万の8桁の10進数を受け入れ、それらを並べ替えてから、並べ替えたリストを別のTCP接続で送信する必要があります。 番号のリストに重複が含まれている可能性がありますが、これは破棄しないでください。コードはROMに配置されるため、1 MBからコードのサイズを減算する必要はありません。イーサネットポートを駆動してTCP / IP接続を処理するコードが既にあり、コードがデータを読み書きするための1 KBバッファを含め、状態データには2 KBが必要です。この問題の解決策はありますか? 質問と回答のソース: slashdot.org cleaton.net

30
1〜5から1〜7のランダムな範囲を拡大します
1から5の範囲のランダムな整数を生成する関数を指定して、1から7の範囲のランダムな整数を生成する関数を記述します。 シンプルなソリューションとは何ですか? メモリ使用量を減らす、またはより遅いCPUで実行するための効果的なソリューションは何ですか?
692 algorithm  random  puzzle 

30
与えられたものに40億でない整数を生成する
私はこのインタビューの質問を与えられました: 入力ファイルに40億の整数が含まれている場合、ファイルに含まれていない整数を生成するアルゴリズムを提供します。1 GBのメモリがあるとします。メモリが10 MBしかない場合の対処方法をフォローアップします。 私の分析: ファイルのサイズは4×10 9 ×4バイト= 16 GBです。 外部ソートを実行して、整数の範囲を知らせることができます。 私の質問は、ソートされた大きな整数セットで欠落している整数を検出する最良の方法は何ですか? 私の理解(すべての回答を読んだ後): 32ビット整数について話していると仮定すると、2 32 = 4 * 10 9個の異なる整数があります。 ケース1:1 GB = 1 * 10 9 * 8ビット= 80億ビットのメモリがあります。 解決: 1つの異なる整数を表す1ビットを使用すれば十分です。ソートは必要ありません。 実装: int radix = 8; byte[] bitfield = new byte[0xffffffff/radix]; void F() throws FileNotFoundException{ Scanner in = new …

30
URL短縮サービスを作成するにはどうすればよいですか?
入力フィールドに長いURLを書き込むことができ、サービスがURLを「http://www.example.org/abcdef」に短縮するURL短縮サービスを作成したいと考えています。 「abcdef」の代わりに、を含む6文字の文字列がありa-z, A-Z and 0-9ます。これにより、560〜570億の文字列が可能になります。 私のアプローチ: 3つの列を持つデータベーステーブルがあります。 id、整数、自動インクリメント long、string、ユーザーが入力した長いURL 短い、文字列、短縮されたURL(または6文字のみ) 次に、長いURLをテーブルに挿入します。次に、「id」の自動インクリメント値を選択して、そのハッシュを作成します。このハッシュは「short」として挿入する必要があります。しかし、どのようなハッシュを作成する必要がありますか?MD5のようなハッシュアルゴリズムでは、文字列が長すぎます。私はこれらのアルゴリズムを使用しないと思います。自作のアルゴリズムも動作します。 私の考え: 「http://www.google.de/」の場合、自動インクリメントIDを取得します239472。次に、次の手順を実行します。 short = ''; if divisible by 2, add "a"+the result to short if divisible by 3, add "b"+the result to short ... until I have divisors for a-z and A-Z. これは、数値が割り切れなくなるまで繰り返すことができます。これは良いアプローチだと思いますか?もっと良いアイデアはありますか? このトピックへの関心が継続しているため、JavaScript、PHP、Python、Javaの実装を使用して、GitHubの効率的なソリューションを公開しました。必要に応じてソリューションを追加してください:)
667 algorithm  url 



24
数値が2の累乗であるかどうかを確認する方法
今日、数値が2のべき乗であるかどうかをチェックするための単純なアルゴリズムが必要でした。 アルゴリズムは: シンプルな ulong値を修正します。 私はこの簡単なアルゴリズムを思いつきました: private bool IsPowerOfTwo(ulong number) { if (number == 0) return false; for (ulong power = 1; power > 0; power = power << 1) { // This for loop used shifting for powers of 2, meaning // that the value will become 0 after the …
585 c#  algorithm  math 

30
nからk要素のすべての組み合わせを返すアルゴリズム
文字の配列を引数として取り、それらの文字の数を選択する関数を記述したいと思います。 たとえば、8文字の配列を提供し、その中から3文字を選択するとします。それからあなたは得るべきです: 8! / ((8 - 3)! * 3!) = 56 それぞれ3文字で構成される配列(または単語)。

5
単純ベイズ分類の簡単な説明
私はナイーブベイズのプロセスを理解するのが難しいと感じており、誰かが英語で簡単な段階的なプロセスでそれを説明できるかどうか疑問に思っていました。時間による比較を確率として比較することは理解していますが、トレーニングデータが実際のデータセットとどのように関連しているかはわかりません。 トレーニングセットの役割を教えてください。ここでは、果物の非常に簡単な例を示します。 training set--- round-red round-orange oblong-yellow round-red dataset---- round-red round-orange round-red round-orange oblong-yellow round-red round-orange oblong-yellow oblong-yellow round-red

18
マップ上のポイントAからポイントBへの方向を計算するアルゴリズムは何ですか?
マッププロバイダー(GoogleやYahoo!マップなど)はどのように方向を提案しますか? つまり、確かに距離だけでなく、車の速度、歩道の存在、列車のスケジュールなど、実際のデータが何らかの形で含まれている可能性があります。距離を反映するエッジウェイトを使用します。任意のポイントから別のポイントへの方向をすばやく計算できるようにしたいと考えています。これらのポイントは(1つの都市内で)互いに接近している場合もあれば、遠く離れている(国をまたがる)場合もあります。 ダイクストラのアルゴリズムのようなグラフアルゴリズムは、グラフが巨大であるため機能しません。幸い、A *のようなヒューリスティックアルゴリズムはおそらく機能します。しかし、私たちのデータは非常に構造化されており、おそらく何らかの階層化アプローチが機能する可能性がありますか?(たとえば、離れた特定の「キー」ポイント間の事前計算された方向といくつかのローカル方向を保存します。2つの遠く離れたポイントの方向には、キーポイントへのローカル方向、別のキーポイントへのグローバル方向、ローカル再び方向。) 実際に使用されているアルゴリズムは何ですか? PS。この質問は、オンラインマッピングの方向に癖を見つけることによって動機付けられました。三角形の不等式とは対照的に、Googleマップでは、XZの方がXYZのように中間点を使用するよりも時間がかかり、遠いと見なされることがあります。しかし、おそらく彼らの歩行方向も別のパラメータに最適化されていますか? PPS。ここでは、三角形の不等式に対する別の違反があり、XZとXYZのような階層型アプローチを使用していることが(私には)示唆されています。前者は少し遠く離れていますが、有名なセバストポル通りを使用しているようです。 編集:これらの例はどちらももう機能していないようですが、どちらも元の投稿の時点では機能していました。

30
浮動小数点と二重比較の最も効果的な方法は何ですか?
2つdoubleまたは2つのfloat値を比較する最も効率的な方法は何でしょうか? これを行うだけでは正しくありません。 bool CompareDoubles1 (double A, double B) { return A == B; } しかし、次のようなもの: bool CompareDoubles2 (double A, double B) { diff = A - B; return (diff < EPSILON) && (-diff < EPSILON); } 処理を無駄にしているようです。 誰かがよりスマートなフロート比較器を知っていますか?

14
フラットテーブルをツリーに解析する最も効率的でエレガントな方法は何ですか?
順序付けられたツリー階層を格納するフラットテーブルがあるとします。 Id Name ParentId Order 1 'Node 1' 0 10 2 'Node 1.1' 1 10 3 'Node 2' 0 20 4 'Node 1.1.1' 2 10 5 'Node 2.1' 3 10 6 'Node 1.2' 1 20 これが図[id] Nameです。ルートノード0は架空のものです。 [0]ルート / \ [1]ノード1 [3]ノード2 / \ \ [2]ノード1.1 [6]ノード1.2 [5]ノード2.1 / [4]ノード1.1.1 …


17
ヒープの構築はどのようにしてO(n)時間の複雑さになりますか?
誰かがどのようにしてヒープを構築することがO(n)複雑になるかを説明するのを手伝ってくれる? アイテムをヒープに挿入することはO(log n)であり、挿入はn / 2回繰り返されます(残りはリーフであり、ヒーププロパティに違反することはできません)。つまり、これは複雑さがであることを意味しO(n log n)ます。 つまり、「ヒープ化」する各アイテムについて、これまでのヒープの各レベル(log nレベル)に対して1回フィルターをかける必要がある可能性があります。 何が欠けていますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.