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

数学とコンピュータサイエンスでは、アルゴリズムは、関数を計算するための明確に定義された命令の有限リストとして表現される効果的な方法です。アルゴリズムは、計算、データ処理、および自動推論に使用されます。

4
アルゴリズム入門(CLRS)ブックの必須数学スキル[終了]
私はすでに基本的なアルゴリズムについての知識を持っています。今、私はより高度なアルゴリズムを研究することを計画しており、アルゴリズムの紹介に進むことにしました。 この本を読む前に数学のスキルを更新する必要があるかどうかはわかりませんか?(高校や大学で学んだ数学のほとんどを忘れています)この本に強力な数学の知識が必要な場合は、有益な科目を提案してください。 アルゴリズムの実装、設計、分析について学びたいです。

7
Webのコンテンツを保護して、私がそれを最初に作成したことを保証するアルゴリズムパターンはありますか?
数年前、特定のシステムの脆弱性を完全に開示したハッカーがいた(彼が誰であったか覚えていない)が、誰も信用していないことを確認するために、彼は何らかのPGPキーを作成した。 当時私が理解していたのは、彼がそれを発見した人であることを保証するためのキーを作成したが、実際に誰であるかを開示せず、彼が開示を作成した人であることを証明できるメカニズムを作成したことです。 OK。アルゴリズムと暗号化の仕組みを理解しています。しかし、ウェブで公開された特定のコンテンツを保護するためのキーを作成して、それが最初に作成されたものであることを証明する方法をまだ理解していません!言葉だけです! 本当に可能ですか?経験的に証明できるようにするためのプロセスは何ですか?私はそれを正しく理解しましたか、またはおそらくこのケースに関する何かを見逃しましたか? この質問が十分具体的であることを願っています。基本的には、Webで作成したコンテンツ(段落、コード、単語など)を保護する方法であり、与えられたコンテキスト。 私の知る限り、それがどのように可能かはわかりませんが、実用的な方法があれば興味をそそられます。ある?

5
これは、アルゴリズムの「Big O」表記を識別するための適切な「ルール」ですか?
Big O Notationと、アルゴリズムの記述方法に基づいてBig O Notationを計算する方法についてもっと学びました。アルゴリズムのビッグO表記を計算するための興味深い「ルール」セットに出会い、正しい軌道に乗っているかどうかを確認したいと思いました。 ビッグO表記:N function(n) { For(var a = 0; i <= n; i++) { // It's N because it's just a single loop // Do stuff } } ビッグO表記:N 2 function(n, b) { For(var a = 0; a <= n; a++) { For(var c = 0; i …
29 algorithms  big-o 

7
データ構造とアルゴリズムに投資し続けるべきですか?[閉まっている]
最近では、データ構造とアルゴリズムに多額の投資をして、プログラミングのパズルを解こうとしています。 JavaとClojureを使用してコーディングと解決を試みています。 時間を無駄にしていますか?より深い知識(インとアウト)を獲得し、より迅速にそれらを使ってコーディングできるようにするために、既に知っているテクノロジーとフレームワークにもっと投資すべきですか? データ構造とアルゴリズムを研究することで、私はより良いプログラマーになるのでしょうか、それとも大学時代にのみ重要な科目になりますか?

9
カラースキームの生成-理論とアルゴリズム[終了]
チャートと図を作成し、配色とアルゴリズムの例に関する理論を探しています。 質問例: 補色または類似色を生成する方法は? パステル調、寒色、暖色を生成する方法は? ランダムではあるが異なる色をいくつでも生成する方法は? すべてを16進数のトリプレット(ウェブの色)に変換する方法は? 私の実装はAS3になりますが、擬似コードの例は大歓迎です。

3
エレベータは、移動階の注文への最短経路を見つけるためにどのアルゴリズムを使用していますか?
エレベータをシミュレートしようとしています。いつも一度に1つの注文のみを受け取ることで非常に簡単に始め、キューの形でエレベータにメモリを追加して、床が押された順に移動するようにしました。これは明らかに最善のアプローチではありません。 そのため、現時点では、非常にシンプルで「近視眼」のロジックを使用しています。つまり、現在のフロアで自分に最も近いフロアを見つけ、次の目的地として設定し、リストにフロアがなくなるまでループします。 しかし、これは常に機能するわけではありません。たとえば、エレベーターは5階の建物の3階にあり、注文4,5,2を取得しました。最短経路は2から4になります。コードに応じて、コストが5の4-> 5-> 2が選択される可能性は同じです。 最短経路を見つけてエレベーターをより効率的にするにはどうすればよいですか?

5
他の誰かが私のオープンソースアルゴリズムの特許を取得できますか?[閉まっている]
より効率的にレンダリングするために、ボクセルデータ構造の境界を見つけるための再帰的な検索アルゴリズムを作成しました。私は周りを見回しましたが、それは誰もそれを特許することを気に掛けないほど単純で明白な技術であるか、それは小説であり、誰もこの方法で以前にそれをしませんでした。 GitHubで公然と「公開」され、GPLで保護されています。しかし、それを改善できるかどうかを確認するために、他の人に見せたいです... 私はそれを書いて公開したが、誰かが同じアイデアを特許しようと試みるかもしれないことを恐れています。 オープンソースソフトウェアのバナーによって保護されているのは安全ですか、それとも大きな銃やパテントトロールのように自分自身を保護する必要がありますか? ソフトウェアの特許は悪であり、最高のソフトウェアを作成するためには、多くの人がそれを見る必要があるというのが私の信念です。しかし、これはソフトウェアがどのように書かれているかについてのかなり単純な視点かもしれないと心配しています。

3
どの文字列検索アルゴリズムが実際に最速ですか?
私は、これが最速の文字列検索アルゴリズムであり、多くの意見を聞いてきましたが、最終的にはわかりません。 最速のアルゴリズムはボイヤー・ムーアであると言う人もいれば、Knuth-Morris-Prattが実際に速いと言う人もいます。 私はそれらの両方の複雑さを調べましたが、それらはほとんど同じに見えますO(n+m)。最悪の場合、ボイヤー・ムーアO(nm)はO(m + 2 * n)を持つクヌース・モリス・プラットに比べて複雑であることがわかりました。ここで、nはテキストの長さ、mはパターンの長さです。 私が知る限り、ボイル・ムーアはガリル規則を使用する場合、線形最悪のケースタイムを持ちます。 私の質問、実際には最速の文字列検索アルゴリズムです(この質問には、ボイヤー・ムーアとクヌース・モリス・プラットだけでなく、考えられるすべてのスティングアルゴリズムが含まれています)。 編集:この答えのため 私がまさに探しているのは: テキストを考えるTと、パターンPIは、すべての外見見つけなければならないPでをT。 また、PとTの長さはfromで[1,2 000 000]あり、プログラムは0.15秒未満で実行する必要があります。 KMPとRabin-Karpは問題について100%のスコアを得るのに十分であることは知っていますが、ボイヤー・ムーアを試して実装したいと思っていました。このタイプのパターン検索に最適なのはどれですか?

5
なぜmergesort O(log n)なのですか?
Mergesortは分割統治アルゴリズムであり、入力が繰り返し半分になるためO(log n)です。しかし、入力がループごとに半分になったとしても、各半分の配列でスワッピングを行うために各入力項目を反復処理する必要があるため、O(n)であってはなりませんか?これは、本質的に漸近的にはO(n)です。可能であれば、例を提供し、操作を正しくカウントする方法を説明してください!まだ何もコーディングしていませんが、オンラインでアルゴリズムを調べています。また、ウィキペディアがmergesortの動作を視覚的に示すために使用しているもののgifを添付しました。
27 algorithms  big-o 

4
MapReduceは単なる分割統治のアプリケーション以上のものですか?
個々の問題が個別に解決できるまで問題を小さな問題に分割し、それらを組み合わせて元の質問に答えることを、分割統治アルゴリズム設計手法と呼びます。[参照:CLRによるアルゴリズムの概要] 最近、特に非常に大きなデータセットの領域で計算上の問題を解決するこのアプローチは、分割統治ではなくMapReduceと呼ばれています。 私の質問は次のとおりです。MapReduceは、分割統治アプローチに依存する独自のフレームワーク以上のものですか、それとも何らかの点でユニークにする詳細がありますか?
26 algorithms 

3
ワームホールノードで最短パスを見つける方法
これは、コードでやりたいことの例です。ジャンプポイント検索を使用して、緑のノードから赤のノードに問題なく、またはA *でも簡単に取得できることを知っています。しかし、これをワープでどのように計算しますか。 画像では、青のパスを取るときに緑のノードから赤のノードに到達するのに8回の移動しか必要ないことがわかります。青いパスは、紫色のノードから次のノードにすぐに移動します。中央に2移動するスペースは、移動する必要がある2つのワープゾーンの間のポイントです。 黄色のパスまで半分(大まかに)移動するだけでよいので、青いパスを取る方が明らかに高速ですが、プログラムでこれを行うにはどうすればよいですか? この問題を解決するために、使用可能なグラフの周りに複数の紫色の「ワープ」があり、各紫色のポイントがワープする場所とグラフ上のどこにあるかを正確に把握します。 紫色のワープには双方向のものとそうでないものがあります。つまり、片側からしかワープに入ることができず、ワープ後に戻ることができない場合があります。 私は解決策について考えましたが、各ワープポイントまでの距離(一方向のポイントを差し引いたもの)、それらのポイント間の差、およびそれらに近いポイントをチェックすることで問題を計算できると結論付けました。 プログラムは、最初のジャンプから歩くのではなく、2番目のワープを取る方がより有益であることを何らかの方法で把握する必要があります。したがって、6つのスポットを移動してからワープし、残りの8ステップを徒歩で移動する代わりに(ワープをまったく使用しない場合よりも高速です)、6つの動きを取り、2つの動きを2番目のワープに移動します。 編集:青のパスは実際には8回ではなく12回の動きをすることに気付きましたが、問題は同じままです。

4
このXOR値スワップアルゴリズムはまだ使用中または有用ですか
私が最初に働き始めたとき、メインフレームのアセンブラープログラマーは、以下の従来のアルゴリズムを使用せずに値にスワップする方法を示しました。 a = 0xBABE b = 0xFADE temp = a a = b b = temp 彼らが2つの値を交換するのに使用したもの-ビットから大きなバッファまで-は: a = 0xBABE b = 0xFADE a = a XOR b b = b XOR a a = a XOR b 今 b == 0xBABE a == 0xFADE 3番目の一時保持スペースを必要とせずに2つのオブジェクトの内容を交換しました。 私の質問は次のとおりです。このXORスワップアルゴリズムはまだ使用されており、どこに適用できるのでしょうか。
25 algorithms 

5
アルゴリズムがO(log n)であるかどうかの判別
CS理論を更新し、アルゴリズムO(log n)の複雑さを識別する方法を知りたいです。具体的には、それを識別する簡単な方法はありますか? 私はO(n)を知っています、あなたは通常単一のループを持っています。O(n ^ 2)は二重ループです。O(n ^ 3)はトリプルループなどです。O(log n)はどうですか。

4
擬似コードで:=はどういう意味ですか?
Algorithmic Implementationというタイトルのセクションには、次のコードがあります。 // Return RC low-pass filter output samples, given input samples, // time interval dt, and time constant RC function lowpass(real[0..n] x, real dt, real RC) var real[0..n] y var real α := dt / (RC + dt) y[0] := x[0] for i from 1 to n y[i] := …
25 algorithms 

9
アルゴリズムの質問は面接の質問に適していますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 最近、仲間のプログラマーと議論をしました。彼は新しいポジションのためにインタビューをしていて、この質問をされました: Xで始まりYで終わる数字のシーケンスを指定しますが、1つの要素が欠落しているため、NはYX-1であり、O(N)以上で欠落している要素を見つけます。 さて、答えはここでは無関係です(しかし興味深い)。これは、これがインタビュー中に尋ねるべき良い質問であるかどうかについての議論を始めました。 一方:アルゴリズムはプログラミングの継承部分であり、この質問に答える候補者の能力は、この候補者が優れたプログラマーであり、より大きな問題を解決でき、最終的に理解し答えるのが簡単なほとんどのプログラミングタスクを処理できることをサポートします。 反対側:ゼロからアルゴリズムを書くことは、現代のプログラミングではめったに使用されないため、その人が優れたプログラマになるかどうかという大きな疑問には無関係です。人はこの質問に首尾よく答えることができますが、より一般的なプログラミングタスクを行うことはできません。 あなたの考え?良い面接の質問かどうか?

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