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

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

1
ランダムな幾何学的グラフのアルゴリズム
ランダムな幾何学的グラフ(https://en.wikipedia.org/wiki/Random_geometric_graph)は、点を分布に従ってランダムに選択し、場合にを設定することで作成されます、一部のパラメータr。幾何学的なグラフは、実際のネットワークのモデリングに使用されます。nnnRdRd\mathbb{R}^dpi∼pjpi∼pjp_i \sim p_j∥pi−pj∥&lt;r‖pi−pj‖&lt;r\|p_i - p_j\|<rrrr たとえば、[0,1] ^ 2の一様分布を使用して交通マップをモデル化でき[0,1]2[0,1]2[0,1]^2ます。 これらのグラフを処理するための優れたグラフ理論アルゴリズムがあるかどうかに興味があります。たとえば、2つの頂点間の最短パスを見つけるためのアルゴリズムはありますか?明らかに、このようなアルゴリズムはGPSメーカーにとって有用です。 このような研究はありますか?

1
Rabin-Karpは本当にローリングハッシュにmod Q操作を適用することに注意する必要がありますか?
私はRabin Karpアルゴリズムについて読んでいて、値Qによって制限されたローリングハッシュ値を維持することの大事なことは何だろうとずっと思い続けました。 一般的なコンピューターでの整数表現は2の補数であるため、実際には、ローリングハッシュに対するすべての操作を2 ^ 31で制限するのとまったく同じであると考えました。つまり、気にしないでください。さらに、バインドまたはハッシュする値が小さいほど、衝突が増えるため、Qが大きいほどパフォーマンスが向上します。 簡単な(Java)実装をコーディングしてみました。 public static int rabinKarp(String text, String pattern) { if (text.length() &lt; pattern.length()) { return -1; } else { int patternHash = 0; int textHash = 0; int pow = 1; // preprocessing the pattern and the first characters of the text string for (int …

2
Map-Reduceモデルの時間複雑度分析
Hadoop / MapReduceパラダイムで実行するようにアルゴリズムを再設計しようとしています。ビッグデータプラットフォームのアルゴリズムの時間の複雑さを測定するための全体的なアプローチがあるかどうか疑問に思っていました。 簡単な例として、n(= 10億)の数の平均を取ることは、O(n)+ Cで実行できます(除算が一定時間演算であると仮定)。Map Reduceのこの大規模な並列化可能なアルゴリズムを壊すと、データをk個のノードに分割することで、時間の複雑さは単にO(n / k)+ C + C 'になります。ここで、C 'は、開始ジョブの計画時間のオーバーヘッドとして想定できます。関与するシャッフルはなく、レデューサーの仕事はほとんど取るに足らないことに注意してください。 データに対する反復ループを使用したアルゴリズムのより完全な分析に興味があり、重いシャッフルとリデューサー操作を含みます。可能であれば、I / O操作とデータのネットワーク転送を組み込みたいです。

2
MSTの更新
無向、接続、加重グラフが与えられた場合 G=(V、E、w)G=(V,E,w)G = (V,E,w) どこ www 重み関数です w:E→Rw:E→Rw: E \to \mathbb{R}そして最小スパニングツリー(MST)の。 今、私たちは減少によって重量をエッジのんではないに属し。 TTTGGGkkkeeeTTT を効率的に更新してMST(と表記)にする方法TTTT』T′T')の G』=(V、E、w』)G′=(V,E,w′)G'=(V,E,w')、 どこ w』w′w' と同じです www それ以外で w』(e)=w(e)−kw′(e)=w(e)−kw'(e) = w(e) - k? 更新のアルゴリズムTTT に T』T′T' 簡単です:追加 eee に TTT サイクルを作成します CCC に TTT。しましょうe』e′e' サイクルの最大加重エッジになる CCC。もしw(e』)&gt;w』(e)w(e′)&gt;w′(e)w(e') > w’(e)、その後 T』=T∪{e}−{e』}T′=T∪{e}−{e′}T' = T \cup \{e\} - \{e'\}必要に応じてMSTを指定します。さもないと、T』=TT′=TT' = T。 私は矛盾によってその正しさを証明するのが難しい。と思いますT″T′′T'' …

10
コンピュータプログラムとアルゴリズム
プログラムにはアルゴリズムが含まれていると言われていますが、その定義を参照すると、アルゴリズムは特定のタスクを実行するために記述された一連の命令であり、コンピュータープログラムはコンピューターで(一部の)タスクを実行するための一連の命令でもあります。 では、プログラムとアルゴリズムの違いは何ですか?これも一種のアルゴリズムですか? 実際、私はアルゴリズムとコンピュータープログラムの正式な定義を探しているので、それらを互いに区別したり、プログラム内でアルゴリズムを識別したりできます。 更新:私はウィキペディアで非公式な定義(少なくとも構文的には)によってプログラムがアルゴリズムであることに気付きました。 非公式の定義は、「一連の操作を正確に定義する一連のルール」とすることができます。これには、数値計算を実行しないプログラムを含むすべてのコンピュータプログラムが含まれます。一般に、プログラムは最終的に停止する場合のアルゴリズムにすぎません。

3
コストを過小評価している場合でも、A *検索ヒューリスティックが最適なのはなぜですか?
A *検索は、ヒューリスティックが許容可能である限り、問題の最適な解決策を見つけます。つまり、特定のノードからへのパスのコストを過大評価することは決してありません(そして、一貫性がありますが、現時点では許容可能であることに焦点を当てましょう)。 しかし、ヒューリスティックが過小評価している場合、なぜ最適なソリューションが常に見つかるのでしょうか。たとえば、最適な経路を過小評価するよりも、非最適な経路を過小評価する場合、それは過大推定と同等ではありませんか?

3
TSPの3-optアルゴリズムはどのように機能しますか?
巡回セールスマン問題を解決するための3-Optヒューリスティックは、グラフから3つのエッジを削除し、さらに3つ追加してツアーを再完了することを理解しています。ただし、3つのエッジが削除された場合、ツアーを再結合する方法は2つしか残っていないことを指摘する多くの論文を見てきました。これは私には意味がありません。 たとえば、次のような論文[1]を見つけました。 3-optアルゴリズムも同様に機能しますが、2つのエッジを削除する代わりに、3つのエッジを削除します。つまり、3つのパスを有効なツアー1に再接続する方法は2つあります(図2と図3)。3 optの移動は、実際には2つまたは3つの2 optの移動と見なすことができます。 ただし、ツアーを再接続するには3つの方法があります。ここで何が欠けていますか? また、誰かが可能であれば3 optのアルゴリズムにリンクしてもらえますか?私はそれを理解しようとしているだけですが、まだ明確なアルゴリズムに遭遇していません。見つけたすべてのリソースは、「3つのエッジを削除し、それらを再接続する」と言うだけです。それだけで、あいまいです。 これは、3つのエッジを削除した後、3つのオプトムーブであるように思える3つのツアーです。 C.ニルソンによる巡回セールスマン問題のヒューリスティック

1
いくつかのノード間の有向グラフで指定された長さ未満のすべてのパス
有向グラフまたは無向グラフ内のいくつかのノード間のすべての可能なパス、または指定された長さのすべての可能なパスをカウントすることは、古典的な問題です。可能性のサイクルにより、すべての意味に注意を払う必要があります。 この質問は少し異なる、または少なくとも私は思います。 INPUT: してG有向グラフ。Gは、サイクルと自己接続ノードを持つことができます。してみましょうA(G)はの隣接行列もG(中1とG I、J Iからjに行くリンクとそうでない場合は0があります場合)。Gのノードの2つのサブセットであるTとBを定義します。 結果:Tの 1つのノードからBの 1 つのノードに向かう、最大で k のすべてのパスのリスト。パスは、ソースノードからターゲットノードに厳密にk + 1ステップ未満で進む限り、同じエッジを複数回含むことができます。 質問:このタスクで最適なアルゴリズムを知りたいのですが。隣接行列のn乗がシンボリックに計算された場合(1の代わりに各エントリに異なる変数を使用)、このすべてのパス(およびエントリに1を使用して数値で計算された場合、パスのカウントに減少します)。しかし、これがタスクを実行する最も速い方法であるかどうかは本当にわかりません(おそらくそうではありません)。 警告:私はカウントの問題や最短のパスを求めているのではありません。パスの長さは、使用されるエッジの数として定義されています(繰り返しをカウントしています)。私はRを使用していますが、他の言語で考えたい場合は、質問がすでに提起され、解決されていたら本当に申し訳ありません。親切に助けてくれてありがとう! 追加情報:行列べき級数アプローチ(A ^ 3は3つの長いパスをすべて提供します...)とdfs / bfsを試しました。後者の2つは、ソースとターゲットのセットで作業していることを考慮に入れておらず、したがって多くの冗長な作業を行うため、最適性には程遠いと思います...

3
最小限の違いで数字を分離する
正の整数整数 nnn、および整数 a1,b1,…,an,bna1,b1,…,an,bna_1,b_1,\dots,a_n,b_nそれぞれについて、。整数が存在するかどうかを決めるの複雑さは何であるその結果、すべてのためのとすべてのための?ai≤biai≤bi a_i\leq b_iiiic1,…,cnc1,…,cnc_1,\dots,c_nai≤ci≤biai≤ci≤bia_i\leq c_i\leq b_iiii|ci−cj|≥2|ci−cj|≥2|c_i-c_j|\geq 2i,ji,ji,j 観察できるのは、と想定し、この順序に従ってを選択する貪欲アルゴリズムが必ずしも機能しないことです。たとえば、ます。置く(それがの余地残さない動作しません)が、どのような作品は入れていると。問題はおそらくNP難しいですか?a1≤⋯≤ana1≤⋯≤ana_1\leq\dots\leq a_ncicic_ia1=1,b1=4,a2=b2=2a1=1,b1=4,a2=b2=2a_1=1, b_1=4, a_2=b_2=2c1=1c1=1c_1=1c2c2c_2c1=4c1=4c_1=4c2=2c2=2c_2=2


2
最大セグメントで共有されるポイントを見つける
与えられた: NNN 順序付けられた整数のセグメント(配列)、整数は −K−K-K に KKK。 例: Segment 1: [-2,-1,0,1,2,3] Segment 2: [1,2,3,4,5] Segment 3: [-3,-2,-1,0,1] それらを[min、max] ---として表すことができます---同等です: Segment 1: [-2,3] Segment 2: [1,5] Segment 3: [-3,1] セグメントの最大数に属する整数を見つけるにはどうすればよいですか?この例では、1です。 私は最も効率的なアルゴリズムを探します。

2
単一リンクリストで実装されたキューのエンキューおよびデキューの時間の複雑さはどれくらいですか?
リンクリストデータ構造で実装されたキューの時間の複雑さを理解しようとしています。私の本では、次の方法でO(1)時間でキューを実装できると述べています。 奥に入れる 先頭でデキュー そしてそれはまた言います 要素を尾に追加するのは一定の時間ですが、新しい尾を見つける必要があるため、要素を尾から削除することはO(n)であることに注意してください 新しいノードをキューの先頭(エンキュー)に追加するには、ヘッドポインターがあるためO(1)がかかることを知っています。同様に、先頭のノードを削除すると(デキュー)、O(1)も使用されます。しかし、要素を後ろ(エンキュー)に追加するとO(1)がかかり、削除(デキュー)するとO(n)になる理由がわかりません。どちらの場合も(後ろでの追加/削除)はテールポインターを見つける必要があるため、トラバースする必要があるため、後ろでのキューへの登録がO(1)ではなくO(n)である場合、私にはより理にかなっています。リスト全体。

1
主流のスピーチモデルで、パーソナライズされたトレーニングステップが不要になるのはなぜですか?
Windows XP時代に戻って、Windows OSに組み込まれた音声/ディクテーションをセットアップするとき、音声プロファイルをカスタマイズするために、プログラムされた一連のテキストサンプルを音声文字変換エンジンに話さなければなりませんでした。 今日、SiriやCortanaなどのネットワーク化された音声テキスト変換エンジンを使用して、口述筆記を始めることができます。 テキストからスピーチへの変換の品質は同等に見えますが、私の記憶はその点で不完全かもしれません。 スピーチモデルは、トレーニングデータのパーソナライズの必要性を超えて進んでいますか?または、明示的なトレーニングウィザードを使用せずに、カバーの下でパーソナライズを行うだけですか?あるいは、たとえそれがまだ有益であるとしても(例えば、それが不便だから)、彼らは訓練をしませんか?

5
指数化のためのFLOP(浮動小数点演算)の数
べき乗(べき乗)を実行するために必要な浮動小数点演算の数はいくつですか? 1 FLOP、演算の数は、2つの浮動小数点数の乗算を使用すると仮定するためのになり。しかし、これを行うためのより速い方法はありますか?が整数でない場合、どのように機能しますか?バツんバツんx^nn − 1ん−1n-1んんn

5
長い文字列で連続する繰り返される一連の行を識別するアルゴリズムを探しています
次のようなビッグスタックトレースの繰り返し部分を特定できるアルゴリズムが必要です。 java.lang.StackOverflowError at transform.Erasure$Eraser.typed1(Erasure.scala:789) at typechecker.Typers$Typer.runTyper$1(Typers.scala:5640) at typechecker.Typers$Typer.typedInternal(Typers.scala:5672) at typechecker.Typers$Typer.body$2(Typers.scala:5613) at typechecker.Typers$Typer.typed(Typers.scala:5618) at typechecker.Typers$Typer.$anonfun$typed1$38(Typers.scala:4752) at typechecker.Typers$Typer.silent(Typers.scala:700) at typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4754) at typechecker.Typers$Typer.typedApply$1(Typers.scala:4801) at typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5586) at typechecker.Typers$Typer.typed1(Typers.scala:5603) at transform.Erasure$Eraser.typed1(Erasure.scala:789) at typechecker.Typers$Typer.runTyper$1(Typers.scala:5640) at typechecker.Typers$Typer.typedInternal(Typers.scala:5672) at typechecker.Typers$Typer.body$2(Typers.scala:5613) at typechecker.Typers$Typer.typed(Typers.scala:5618) at typechecker.Typers$Typer.typedQualifier(Typers.scala:5723) at typechecker.Typers$Typer.typedQualifier(Typers.scala:5731) at transform.Erasure$Eraser.adaptMember(Erasure.scala:714) at transform.Erasure$Eraser.typed1(Erasure.scala:789) at typechecker.Typers$Typer.runTyper$1(Typers.scala:5640) at typechecker.Typers$Typer.typedInternal(Typers.scala:5672) at typechecker.Typers$Typer.body$2(Typers.scala:5613) at typechecker.Typers$Typer.typed(Typers.scala:5618) …

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