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

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

1
重み付きユニパシーグラフで最短経路を見つける
有向グラフは、グラフ任意の2つの頂点とに対して、からへの単純なパスが最大1つである場合、ユニパシーであると言われます。uuuvvvG=(V,E)G=(V,E)G=(V,E)uuuvvv 各エッジに正または負の重みがあり、負の重みサイクルが含まれていないような、ユニパスグラフが与えられたとします。GGG これから、ソースノードからすべてのノードへのすべての最短パスを見つけるアルゴリズムを見つけたいです。O(|V|)O(|V|)O(|V|)sss 私はこの問題にどのように取り組むのか分かりません。負のウェイトサイクルが含まれていないという事実と、もちろんノードからまでの最大1つの単純なパスをどのように使用できるかを確認しようとしています。uuuvvv

1
線形計画法は強力な多項式時間アルゴリズムを許可しますか?
線形計画問題:与えられた行列A∈Rm×nおよびb∈Rmに対して、Ax≥bのx∈Rnが存在するかどうかを決定する、強多項式時間アルゴリズムを見つけます。 Steve Smaleが数学の未解決の問題をいくつか挙げていることは知っています。しかし、そのような線形計画問題は、今まで解決できないのでしょうか?

3
「漸近的に効率的」とはどういう意味ですか?
アルゴリズムがより漸近的に効率的であると言うとき、それはどういう意味ですか?XXXYYY XXXはすべての入力に適しています。 XXXは、小さな入力を除くすべての入力に適しています。 XXXは、大きな入力を除くすべての入力に適しています。 YYYは、小さな入力にはより良い選択です。 この質問のリンクはこちらです。 http://quiz.geeksforgeeks.org/algorithms-analysis-of-algorithms-question-16/ より漸近的に効率的なアルゴリズムはすべての入力で機能するはずだと思いましたが、「小さいものを除くすべての入力で機能する」の理由がわかりません。

3
番目のフィボナッチ数を計算する効率的なアルゴリズム
フィボナッチ数目は、次の再発を用いて線形時間で計算することができます。nnn def fib(n): i, j = 1, 1 for k in {1...n-1}: i, j = j, i+j return i フィボナッチ数番目はまた、計算することができる[ φ N / √nnn。ただし、これにはnが比較的小さい場合でも丸めの問題があります。おそらくこれを回避する方法はありますが、私はそれをやめたいです。[φn/5–√][φn/5]\left[\varphi^n / \sqrt{5}\right]nnn 浮動小数点演算に依存しないn番目のフィボナッチ数を計算するための効率的な(値以上の対数)アルゴリズムはありますか?整数演算(+、−、×、/)を一定の時間で実行できると仮定します。nnnnnn+++−−-××\times///

2
文字列内のすべての不均衡な括弧を一定のメモリで線形時間でどのように見つけることができますか?
インタビュー中に次の問題が発生しました。 かっこ(かっこや中かっこではなく、かっこのみ)と他の英数字の混合文字列を提供し、対応するかっこがないかっこをすべて識別します。 たとえば、文字列 ")(ab))"では、インデックス0および5に、一致する括弧がない括弧が含まれています。 私はO(n)メモリを使用し、スタックを使用してスタックに括弧を追加し、閉じ括弧とスタックの上部が含まれているときにスタックからそれらを削除してから文字列を調べて、O(n)ソリューションを実行しました開き括弧。 その後、インタビュアーは、問題が一定のメモリで線形時間で解決できることを指摘しました(たとえば、入力が何を使用するかを除いて、追加のメモリ使用はありません)。 私はどのように尋ねたか、彼女は左からすべての開いている括弧を識別し、次に右から2番目にすべての閉じている括弧を識別する文字列を通過することについて何か言いました...またはそれが逆だったかもしれません。私は本当に理解していなかったので、それを手で握ってくれるように彼女に頼んだくありませんでした。 彼女が提案した解決策を誰かが明確にできますか?
11 algorithms 

3
加算の時間の複雑さ
ウィキペディアは、加算の時間の複雑さをとしてリストしています。ここで、はビット数です。nnnnnn これは厳密な理論上の下限ですか?または、これは、現在最も高速な既知のアルゴリズムの複雑さだけです。加算が複雑であるため、他のすべての算術演算とそれらを使用するすべてのアルゴリズムが強調されているので、知りたいと思います。 o(n)で実行される追加アルゴリズムを取得することは理論的に不可能o(n)o(n)o(n)ですか?または、追加のために線形の複雑さに拘束されます。

2
2Dの2つのセット間で最も近いポイントのペア
2次元平面に2セットのポイントあります。私はポイントの最も近いペアを見つけるしたいなど、、との間のユークリッド距離極力小さくなります。これはどのくらい効率的に行うことができますか?時間で実行できますか、?、S 、T 、S ∈ S T ∈ T S 、T O (N ログN )N = | S | + | T |S,TS,TS,Ts,ts,ts,ts∈Ss∈Ss \in St∈Tt∈Tt \in Ts,ts,ts,tO(nlogn)O(nlog⁡n)O(n \log n)n=|S|+|T|n=|S|+|T|n = |S|+|T| 単一のセットが与えられた場合、標準の分割統治アルゴリズムを使用して時間で最も近い点ペアを見つけることが可能であることはわかっています。ただし、または内の最も近い2つのポイント間の距離と、これらのセット全体の最も近い2つのポイント間の距離との間には関係がないため、そのアルゴリズムは2つのセットの場合に一般化していないようです。、S 、S ' ∈ S O (N ログN )SSSs,s′∈Ss,s′∈Ss,s' \in SO(nlogn)O(nlog⁡n)O(n \log n)SSSTTT セットを -dツリーに格納し、次にについて、最近傍クエリを使用して最も近い点を見つけることを考えました。ただし、これの最悪の場合の実行時間は、時間と同じくらい悪い場合があります。点あればという結果がありますランダムに分布している場合、クエリごとに予想される実行している時間は私たちが期待ランニングタイムとアルゴリズム得ると思いますので、我々場合は、ポイントがランダムに分布していることが保証されていました-しかし、ポイントのコレクション(必ずしもランダムに分布しているとは限りません)で機能するアルゴリズムを探しています。TTTkkks∈Ss∈Ss \in STTTsssO(n2)O(n2)O(n^2)TTTO(logn)O(log⁡n)O(\log n)O(nlogn)O(nlog⁡n)O(n \log n) …

3
逐次乗算よりも効率的な並列行列指数アルゴリズムはありますか?
実数の行列の累乗(正の整数)を見つけるために1つ必要です。効率的な行列乗算アルゴリズムはたくさんありますが(たとえば、一部の並列アルゴリズムはCannonのDNSです)、行列の能力を正確に見つけることを目的としたアルゴリズムであり、行列乗算の逐次実行よりも効率的ですか?特に並列アルゴリズムに興味があります。

1
パターンデータベースへのインデックス作成-Korfの最適ルービックキューブソリューション
楽しいプロジェクトとして、Richard KorfのC#実装-パターンデータベースを使用したルービックキューブの最適解の検索に取り組んでいます。 https://www.cs.princeton.edu/courses/archive/fall06/cos402/papers/korfrubik.pdf 私は実際にそれを働いています、私は私のソリューションを改善しようとしています。 Korfが彼の論文で注目していることの1つは、パターンデータベースに格納してインデックスを付ける方法です。理想的には、ルービックキューブのインスタンスを使用して配列へのインデックスを生成したいと思います。 私の質問は、このインデックスを生成する最良の方法についてです。 私の解決策は、最小限の完全なハッシュを生成することです。これには、パターンデータベース全体が見つかるまですべてのキューブをメモリに保持し、それに基づいて最小限の完全なハッシュを生成することが含まれます。MPHの実行には、パターンデータベースのサイズに応じて数時間かかりますが、ディスクに保存するので、一度だけ実行する必要があります。結局、MPHだけを格納しているキューブ自体を捨てることができます。このようにして、ランダム化されたルービックキューブを取得し、パターンを適用してから、MPHで配列のインデックスを調べて、解の長さの見積もりを取得します。 KorfとShultzは、「Large Scale Breadth-First Search」と呼ばれる2005年の論文でキューブのインデックスを決定するためのより良い方法を説明していると思います。 https://www.aaai.org/Papers/AAAI/2005/AAAI05-219.pdf このペーパーでは、順列の辞書式順序に基づいてインデックスを生成するアルゴリズムについて説明します。基本的に、順列{1、2、3}を取得し、それがインデックス0で最小であることを計算できます。{1、3、2}は、次のインデックス1などです。 このアルゴリズムをルービックキューブに適用してパターンデータベース内のインデックスを取得できるように思えますが、実際にどのように機能するかを理解するのに苦労しています。 たとえば、コーナーのみのパターンデータベースには、エッジステッカーが外されたすべてのルービックキューブが含まれています。このセットには正確に88,179,840のキューブがあります。ルービックキューブのコーナーキューブは、24の異なる状態のいずれかになります。8番目のコーナーキューブの状態は他の7つに基づいて計算できるため、コーナーのみのパターンデータベースのキューブはそれぞれ0〜23の7つの値を持っています。 たとえば、{0、3、6、9、9、12、15、18、21}は、すべてのエッジステッカーが削除された「解決済み」キューブを定義します。 前面を90度回転すると、順列は{0、3、11、23、12、15、8、20}になります。 これらの種類の順列からインデックスを取得する方法はありますか?

3
量子コンピューターが古典的なコンピューターよりも効率的であるという証拠はありますか?
ショアーのアルゴリズムはしばしば引数として使用されます。因数分解の問題は、古典的なコンピューターの既知のアルゴリズムよりも速く解決できます。それでも、古典的なコンピューターが整数を効率的に因数分解できないことの証明はありません。 古典的なコンピュータよりも速くいくつかの問題を解決できる実際の証明量子コンピュータはありますか?

1
デカルト積による有限デカルト積のサブセットの最小カバーの検索
2つの有限集合のデカルト積のサブセットが与えられた場合、デカルト積そのものであるセットによる最小のカバーを見つけたいと思います。私× JI×JI \times J 例えば、との積所与およびJ = { 1 、2 、3 }、Iは、サブセット観察することができる{ (A 、2 )、(B 、3 )、(B 、2 )}そして、最小数のデカルト積でそれをカバーしようとします。私= { A 、B 、C}I={A,B,C}I=\{A,B,C\}J= { 1 、2 、3 }J={1,2,3}J=\{1,2,3\}{ (A 、2 )、(B 、3 )、(B 、2 )}{(A,2),(B,3),(B,2)}\{(A,2), (B,3), (B,2)\} そうするには、2つの方法があり及び{ A 、B } × { 2 } + { B } × { …

1
加重されていない二部グラフの最大マッチングのサイズをどれだけ速く計算できますか?
重み付けされていない2部グラフの最大マッチングのサイズを、最大マッチングの計算よりも効率的に(たとえば、より高速に)計算する方法はありますか? ロングショットですが、このような使い捨ての計算を回避することは、多くの場合興味深い問題です。 動機 私が解決しようとしている問題は 、2つのセットのサイズが異なるmatch-2です。小さいセットのすべての頂点をカバーするマッチングがあるかどうかを確認する必要があります。最大マッチングのサイズを知ることで、それが小さいセットのサイズ以下であるかどうかを確認できます(そのようなことが可能である場合、結果が「はい」の場合は常に、小さいセットをカバーするマッチングがあります「あなたはそのサイズが何であるかを効果的に知っていますが、その場合にのみです)、しかしそれは厳密に必要ではありません:サイズを計算せずに答えを計算する方法があるならば、それは私にとって良いことです。

1
量子コンピューターの方が高速なアルゴリズムの種類は何ですか?
私はCSの初心者で、アルゴリズムを学んでいます。量子コンピューターを使ったとしても、その一般的なソーティングアルゴリズムは時間を超えることはできないと聞きました。ただし、因数分解アルゴリズムがはるかに高速になることも知っています。一般的に言えば、どのようなアルゴリズムが量子コンピュータで大幅に高速になるでしょうか?nlognnlog⁡nn\log n

4
PIに基づく圧縮アルゴリズムはありますか?
私たちが知っていることは、πは無限であり、可能性のあるすべての有限の数字列(論理和シーケンス)を含む可能性が非常に高いことです。 私は最近、作成したすべてのファイル(または他の誰か)または作成することを想定しているπfsのプロトタイプをいくつか見ました。それはすでにそこにあるので、それを抽出するだけです。ファイルをpiメタデータに変換できるpiFileもあります。 piのn番目の2進数を計算できるBBPタイプの数式が(実験数学の一部として)すでにあります。したがって、データの開始位置と長さを格納することで、理論的に関心のあるデータを抽出できます。メタデータ(データへのオフセットなど)が抽出されたデータよりも大きくなる可能性があるといういくつかの議論があります。マトリックスシンボルとπは、より効率的にするために、256でエンコードできます(ジョークを参照)。 上記に基づいて、私の主な質問は: PIに基づく圧縮アルゴリズムはありますか? そうでない場合、それは意味がありますか?それともその分野での研究はありましたか? あるいは、πは適切ではないかもしれませんが、オイラー定数またはタウ(τ)はどうでしょうか?何か違いはありますか? 画像クレジット:恐竜コミック こちらもご覧ください: 有限のビット文字列は、妥当な時間内にpiで見つけることができますか?SOで インデックスをπに格納すると、元のデータと同じ大きさ(またはそれ以上)になりませんか?GitHubで

1
Barabasi-Albertを使用してべき乗次数分布を持つスケールフリーネットワークを生成する
一部の論文に記載されている合成ネットワーク(グラフ)を再現しようとしています。 Barabasi-Albertモデルが「べき乗則の次数分布を持つスケールフリーネットワーク」を作成するために使用されたと述べられています。PA(k)∝k−λPA(k)∝k−λP_A(k) ∝ k^{-λ} PAPAP_Aは、次数ノードの確率を返す確率分布です。たとえば、は、ネットワークからノードをランダムに選択し、2次のノードを取得する確率を示します。P A(2 )kkkPA(2)PA(2)P_A(2) 1つの論文での平均次数ストロークは4であるように見え、最小は2 です。最大についての言葉はありません。他の論文では指定されていません。ネットワークを定義することはそれほど重要ではないようです。k kkkkkkkkkk ノードの数と同様に、ラムダλ値が与えられます。組み合わせはnnn n = 50000、λ= 3、2.7、2.3、論文あり 他の論文では、n = 4000およびλ= 2.5、またはn = 6000およびλ= 3 Barabasi-Albertアルゴリズムを実装するライブラリを探しましたが、それらにはラムダや平均次数とは異なるパラメーターが必要なようです。1つはNetworkXで、もう1つはGraphStreamです(ここでの実装)。彼らは同様の方法で働き、次のことを求めます: n:int-ノードの数 m:int-新しいノードから既存のノードに接続するエッジの数。各ステップで追加されるエッジの数 設定mを計算して比較可能なグラフを生成するにはどうすればよいですか? ここにいくつかの参照があります: 相互に依存するネットワークにおける故障の破滅的なカスケード、Buldyrev等。2010、別途提供される補足情報 サイバーフィジカルシステムの小さなクラスター、Huang et al。2014 相互依存ネットワークにおける破局的な障害のカスケード、ハブリン等。2010年、これはArxivに関するものであり、最初の これらの論文は、これらのグラフのいくつかの特性を分析的に研究するために「生成関数」を使用したことに注意してください。ただし、これらのモデルでシミュレーションを実行するため、何らかの方法でこれらのネットワークを生成している必要があります。 ありがとう。

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