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

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

8
LR、SLR、およびLALRパーサーの違いは何ですか?
LR、SLR、およびLALRパーサーの実際の違いは何ですか?SLRとLALRはLRパーサーのタイプであることを知っていますが、それらの解析テーブルに関する限り、実際の違いは何ですか? また、文法がLR、SLR、またはLALRであるかどうかを示す方法は?LL文法の場合、解析テーブルのセルに複数のプロダクションルールが含まれていてはならないことを示す必要があります。LALR、SLR、およびLRに同様のルールはありますか? たとえば、どのように文法を示すことができますか S --> Aa | bAc | dc | bda A --> d LALR(1)ではなくSLR(1)ですか? 編集(ybungalobill):LALRとLRの違いは何なのか、満足のいく答えが得られませんでした。したがって、LALRのテーブルはサイズが小さくなりますが、認識できるのはLR文法のサブセットのみです。誰かがLALRとLRの違いについて詳しく説明できますか?LALR(1)とLR(1)で回答できます。どちらも1トークンの先読みを使用し、どちらもテーブル駆動型です。それらはどのように違うのですか?

26
フロートを人間が読める分数に変換する方法は?
持っているとしましょう。0.33出力する必要があります1/3。 もしあれば0.4、出力する必要があります2/5。 データを理解するためのより良い方法として、ユーザーに「xからyの部分」を理解させることは、人間が読めるようにするという考え方です。 パーセンテージが良い代替品であることは知っていますが、これを行う簡単な方法があるかどうか疑問に思っていましたか?


22
優先順位のある式(式)パーサー?
バイナリ(+、-、|、&、*、/など)演算子、単項(!)演算子、および括弧を処理する単純なスタックアルゴリズムを使用して、方程式パーサーを開発しました。 ただし、この方法を使用すると、すべてに同じ優先順位が残ります。演算子に関係なく左から右に評価されますが、括弧を使用して優先順位を強制できます。 そのため、現在のところ、「1 + 11 * 5」は56でなく、60を返します。 これは現在のプロジェクトに適していますが、後のプロジェクトで使用できる汎用ルーチンが欲しいです。 明確にするために編集: 優先順位のある方程式を解析するための良いアルゴリズムは何ですか? 私は実装が簡単なものに興味があり、利用可能なコードのライセンス問題を回避するために自分でコーディングできることを理解しています。 文法: 文法の質問が理解できません-これを手で書きました。YACCやBisonの必要性がわからないほど簡単です。「2 + 3 *(42/13)」のような方程式で文字列を計算するだけです。 言語: 私はCでこれを行っていますが、言語固有のソリューションではなく、アルゴリズムに興味があります。Cは十分に低いレベルなので、必要に応じて別の言語に簡単に変換できます。 コード例 上記で説明した単純式パーサーのテストコードを投稿しました。プロジェクトの要件が変更されたため、コードがプロジェクトに組み込まれていなかったため、パフォーマンスやスペースを最適化する必要がありませんでした。元の詳細形式であり、すぐに理解できるはずです。演算子の優先順位の観点からそれをさらに行う場合は、マクロハックを選択することになります。マクロハックは、プログラムの他の部分と簡単に一致するためです。ただし、これを実際のプロジェクトで使用する場合は、よりコンパクトで高速なパーサーを使用します。 関連する質問 数学パーサーのスマートなデザイン? -アダム

16
JavaScriptでの高速で安定したソートアルゴリズムの実装
特定のキーと特定の順序(asc / desc)で並べ替えて、約200〜300のオブジェクトの配列を並べ替えようとしています。結果の順序は一貫していて安定している必要があります。 使用するのに最適なアルゴリズムは何ですか?また、JavaScriptでの実装の例を提供できますか? ありがとう!

26
2つのリンクリストが結合するかどうかを確認します。もしそうなら、どこ?
この質問は古いかもしれませんが、私は答えを考えることができませんでした。 たとえば、長さが異なる2つのリストがあり、ある時点でマージされます。マージポイントがどこにあるかをどのように知ることができますか? 条件: 長さがわからない 各リストを一度だけ解析する必要があります。


7
三角関数はどのように機能しますか?
したがって、高校の数学、そしておそらく大学では、トリガー関数の使用方法、その機能、およびそれらが解決する問題の種類を教えられています。しかし、それらは常にブラックボックスとして提示されてきました。何かのサインまたはコサインが必要な場合は、電卓のsinまたはcosボタンを押すと、設定が完了します。それは結構です。 私が疑問に思っているのは、三角関数が通常どのように実装されているかです。

15
JavaScriptのNumber.sign()
数の符号(signum関数)を見つけるための重要な方法があるのだろうか? 明白なものよりも短い/速い/よりエレガントなソリューションかもしれません var sign = number > 0 ? 1 : number < 0 ? -1 : 0; 短い答え! これを使用すると、安全で高速になります(ソース:moz) if (!Math.sign) Math.sign = function(x) { return ((x > 0) - (x < 0)) || +x; }; パフォーマンスと型強制の比較フィドルを見たいと思うかもしれません 長い時間が経ちました。さらに、主に歴史的な理由によるものです。 結果 今のところ、これらのソリューションがあります: 1.明白で速い function sign(x) { return x > 0 ? …

22
指定された文字列で最長の回文を返す関数を記述します
たとえば、文字列「abaccddccefe」の「ccddcc」 私は解決策を考えましたが、O(n ^ 2)時間で実行されます アルゴ1: 手順:そのブルートフォースメソッド i = 1からiまでのarray.length未満の2 forループがある j = i + 1からarray.length未満のjまでの -1 このようにして、配列から可能なすべての組み合わせの部分文字列を取得できます 文字列が回文かどうかをチェックする回文関数を持っている したがって、すべての部分文字列(i、j)についてこの関数を呼び出します。回文式の場合は、文字列変数に格納します。 次の回文の部分文字列が見つかり、それが現在のものよりも大きい場合は、現在のものと置き換えます。 最後に、文字列変数に答えがあります 問題:1.このアルゴはO(n ^ 2)時間で実行されます。 アルゴ2: 文字列を逆にして別の配列に格納します 次に、両方の配列の間で最大の一致する部分文字列を見つけます しかし、これもO(n ^ 2)時間で実行されます より良い時間に実行されるアルゴを想像できますか?可能であればO(n)時間


2
疑似多項式時間とは何ですか?多項式時間とどう違うのですか?
疑似多項式時間とは何ですか?多項式時間とどう違うのですか?疑似多項式時間で実行される一部のアルゴリズムには、O(nW)(0/1ナップザック問題の場合)またはO(√n)(試行除算の場合)などのランタイムがあります。なぜそれが多項式時間として数えられないのですか?

19
sinとcosを一緒に計算する最も速い方法は何ですか?
値の正弦と余弦の両方を一緒に計算したい(たとえば、回転行列を作成したい)。もちろん、のように次々に別々に計算することもできますa = cos(x); b = sin(x);が、両方の値が必要な場合により速い方法があるかどうか疑問に思います。 編集: これまでの答えを要約するには: Vladは、FSINCOS両方を計算するasmコマンドがある(FSIN一人での呼び出しとほぼ同時に)と述べた Chiが気づいたように、この最適化はコンパイラーによって既に行われていることがあります(最適化フラグを使用する場合)。 カフェは機能していること、を指摘sincosしてはsincosf、おそらく利用可能であり、ちょうど含めることによって直接呼び出すことができますmath.h ルックアップテーブルを使用する tanasciusのアプローチについては、議論の余地があります。(ただし、私のコンピューターとベンチマークシナリオではsincos、32ビット浮動小数点の場合とほぼ同じ精度の場合よりも3倍速く実行されます。) Joel Goodwinは、非常に優れた精度の非常に高速な近似手法の興味深いアプローチにリンクしています(私にとって、これはテーブルルックアップよりもさらに高速です)
100 c#  c++  c  algorithm  math 

16
アレイをテトリスする
次の配列について考えてみます。 /www/htdocs/1/sites/lib/abcdedd /www/htdocs/1/sites/conf/xyz /www/htdocs/1/sites/conf/abc/def /www/htdocs/1/sites/htdocs/xyz /www/htdocs/1/sites/lib2/abcdedd 共通のベースパスを検出する最も短くて最もエレガントな方法は何ですか -この場合 /www/htdocs/1/sites/ そしてそれを配列のすべての要素から削除しますか? lib/abcdedd conf/xyz conf/abc/def htdocs/xyz lib2/abcdedd
99 php  string  algorithm 

5
指定された範囲内のすべての数値のXORを見つける
広い範囲[a、b]が与えられます。「a」と「b」は通常、1〜4,000,000,000の範囲です。与えられた範囲内のすべての数値のXORを見つける必要があります。 この問題は、TopCoder SRMで使用されていました。試合で提出された解決策の1つを確認しましたが、その仕組みを理解できません。 誰かが勝利の解決策を説明するのを手伝ってくれませんか: long long f(long long a) { long long res[] = {a,1,a+1,0}; return res[a%4]; } long long getXor(long long a, long long b) { return f(b)^f(a-1); } ここでgetXor()は、渡された範囲[a、b]のすべての数値のxorを計算する実際の関数で、「f()」はヘルパー関数です。
99 algorithm 

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