コンピュータサイエンス

コンピュータサイエンスの学生、研究者、実務家のためのQ&A

3
文字列が回文の連結であるかどうかをチェックするアルゴリズムはありますか?
文字のシーケンスが回文の連結であることを確認する線形時間アルゴリズムはありますか?私の頭に浮かぶのは、単純な解決策だけです。 1. k = 1 2. Split string into k substrings (all possibilities) and check 3. k++ 4. repeat 注:長さ1の文字列が回文であると定義されている場合、答えは自明です。これはそうではないと仮定しましょう。

3
サイクルキャンセルアルゴリズムの負のサイクルを見つける
最小コストのフロー問題の最適なソリューションを見つけるために、サイクルキャンセリングアルゴリズムを実装しています。残余ネットワークで負のコストサイクルを見つけて削除することにより、各ラウンドの総コストが削減されます。負のサイクルを見つけるために、私はベルマンフォードアルゴリズムを使用しています。 私の問題は、Bellman-fordはソースから到達可能なサイクルのみを検出しますが、到達不可能なサイクルも検出する必要があります。 例:次のネットワークでは、すでに最大フローを適用しています。エッジ(A,B)(A,B)(A, B)は非常に高価になります。残余ネットワークでは、容量負のコストサイクルがあります111。これを削除すると、エッジとを使用した安価なソリューションが得られますが、ソースからは到達できません。(C 、T )S(A 、C)(あ、C)(A, C)(C、T)(C、T)(C, T)SSS ラベル:フロー/容量、コスト もちろん、各ノードをソースとしてベルマンフォードを繰り返し実行することもできますが、それは良い解決策のようには思えません。私が読んだすべての論文がこのステップをスキップしているように見えるので、私は少し混乱しています。 ベルマンフォードを使用して、すべての負のサイクル(到達可能かどうか)を見つける方法を教えていただけますか?そしてそれが不可能な場合、他にどのアルゴリズムを提案しますか?

1
複数のパスの重みが同じである場合、エッジの数が最も少ないソリューションを優先するダイクストラ
したがって、ダイクストラが最小のエッジ数で解を見つけるように、任意のグラフを変更できます。GGG すべてのエッジの重みに数値を掛け、重みにを加算して、ソリューションの追加の各エッジにペナルティを課します。aaa111 w′(u,v)=a∗w(u,v)+1w′(u,v)=a∗w(u,v)+1w'(u,v)=a*w(u,v)+1 これは、すべての値では動作しません。が機能するには、少なくともで必要があります。場合は、この最小数ではありません、それは最短パスを選択しない場合があります。この最小値を見つけるにはどうすればよいですか?aaaaaaxxxaaaxxx Ps。これはレクリエーションで行われました、私はずっと前に宿題を終えました。

1
サブセット合計はマルチセットを許可しますか?
サブセット和問題では、指定された数値が同じになる可能性がありますか?例えば、我々が持っているかもしれない[ 1 、1 、1 、2 、3 、4 ]及び標的である5?私は数字で特定のソリューションがあると仮定することができます2と3と1 、1 、1と2がないのですか?a1、a2、a3、… 、aんa1,a2,a3,…,ana_1,a_2,a_3,\dots,a_n[ 1 、1 、1 、2 、3 、4 ][1,1,1,2,3,4][1,1,1,2,3,4]5552223331,1,11,1,11,1,1222

2
任意の言語のために
私は以下の証拠を考え出そうとしています: 任意の言語のために、言語が存在するBのようにA ≤ T Bが、B ≰ T A。あAABBBA ≤TBA≤TBA \le_{\mathrm{T}} B≰Tあ≰TA\nleq_{\mathrm{T}} A 私はさせることを考えていた可能A T Mが、私はすべての言語がに還元性チューリングされているわけではないことを実感A T MBBBあT MATMA_{\mathrm{TM}}あT MATMA_{\mathrm{TM}}ので、保持していないでしょう。何の他に選択肢B私はそれは私がするためにOracleを使用していますTM書くことができるようになるしているんB決定するAを?A ≤TBA≤TBA \le _T BBBBBBBAAA ありがとう!

2
A *グラフ検索時間の複雑さ
時間の複雑さとA *に関する混乱。 A * Wikiによると 、時間の複雑さは解の深さで指数関数的です(最短経路): A *の時間の複雑さはヒューリスティックに依存します。無制限の探索空間の最悪の場合、展開されたノードの数は、解の深さ(最短経路)dで指数関数になります。O (bd)O(bd)O(b^d)、 どこ bbb 分岐因数(州ごとの平均の後継者数)です。 この受け入れられた回答へのコメントは、グラフのサイズの観点から複雑さを与える方が理にかなっていることを指摘しているため、O ((| V| + | E| )⋅LOG| V| )O((|V|+|E|)⋅log|V|)O((|V| + |E|) \cdot log |V|) 明らかに、ヒューリスティックがすべてのノードに0の値を割り当てる場合、A *はダイクストラのアルゴリズムになり、均一コストのヒューリスティックは本質的にヒューリスティックを無効にします。 ヒューリスティックを O (1 )O(1)O(1) (そして一貫性のある)、最悪のケースは本質的にA *を複雑度のあるダイクストラのアルゴリズムに劣化させていることは理にかなっています O (| E| + | V| ログ| V| )O(|E|+|V|log⁡|V|)O(|E|+|V|\log|V|) 最小優先度のキューの実装(フィボナッチヒープ)。 私が間違っている? 私がこれまで見てきた本などは、ソリューションの深さに関して複雑さを与えます


3
この最適化問題の効率的なアルゴリズム?動的プログラミング?
私が達成しようとしていることを表す図を作成しました。 フルサイズの画像 入力シーケンスでは、ノードは可能な限り互いに接近しています。しかし、私は白いノードをそれぞれの黒いノードにできるだけ近づけたいと思っています。ノード間のエッジを長くすると、このエラーを最小限に抑えることができます。短縮することはできません。したがって、1 -> 2たとえば4以上にすることができます。 可能な解決策を含めました。長くなったエッジにはラベルが付いています。エッジを長くすると、すべてのノードが右に移動することに注意してください。 この軸は連続ですが、それが役立つ場合、私はおそらくそれを離散化することができます。 私は動的プログラミングのアプローチがうまくいくと考えていますが、よくわかりません-私はDPがあまり得意ではありませんでした。 これを解決できる最速の実行アルゴリズムは何ですか?これは、よく知られている問題として分類/再構成できますか?

1
通常順と適用順の評価の違い
私が学んでいる言語はSchemeであり、これを行う演習に取り組んでいます: (define (p) (p) ) (define (test x y) (if (= x 0) 0 y)) 次に、質問は式(test 0(p))を評価し、通常の下で観察されるであろう動作(順序および適用順序の評価)についてコメントを求めます。 これらは私の考えです: 通常の順序では、プログラムは次に進む前に部分式を評価します。 したがって、次のように( test 0 (p) )なります。 (test 0 p) ( if (= x 0) 0 p)) 出力を返す 0 適用順序の唯一の違いは、プログラムが次のように実行されることです。 ( test 0 (p) ) になる: (test 0 (p)) ( if (= x …

1
Subset-Sumの負の数
セットがあるなら ああA 正と負の数、Cを見つけるための数 問題を正の数のみのセットに減らすことができます ああA? つまり、新しいセットを見つけることが可能です ああA そして新しい番号 CCC、 そう ああA 正の数だけでしたが、同じ問題?

3
すべてのエッジの重みが等しい場合、BFSを使用して最小のスパニングツリーを取得できますか?
グラフのすべてのエッジが与えられた場合 GGG 等しい重量です ccc、線形時間で最小のスパニングツリーを生成するために、幅優先検索(BFS)を使用できますか? BFSはノードを2回訪問せず、頂点からトラバースするだけなので、直感的にこれは正しいように聞こえます vvv 頂点へ あなたuu 訪れたことがない場合 あなたuu 以前は、サイクルが発生しないように、 GGG接続されている場合、最終的にすべてのノードにアクセスします。すべてのエッジの重みは等しいため、BFSが選択したエッジは関係ありません。 私の推論は意味がありますか?

2
最初のN個の整数に対するコルモゴロフ複雑度の推定値は何ですか?
一部のintはコルモゴロフ複雑度が高いまたは低いことを認識しています。たとえば、数値5.41126806512はで表すことができるため、複雑度は非常に低くなります17/pi。KCは式言語によって異なりますが、特定の定数までは常に同じであることも知っています。だから、私は尋ねます:最初のN intのKCの近似を計算する方法はありますか?

1
再帰挿入ソートの繰り返し
CLRSからこの問題を試しました(ページ39、2.3-4) 挿入ソートは次のように再帰的な手続きとして表現できます。ソートするA[1... n]には、再帰的にソートしてA[1... n-1]からA[n]、ソートされた配列に挿入しA[1... n-1]ます。この再帰バージョンの挿入ソートの実行時間の再帰を記述します。 私が形成した再発は T(n)={Θ(1)T(n−1)+Θ(n)if n=1,if n>1.T(n)={Θ(1)if n=1,T(n−1)+Θ(n)if n>1. T(n) = \begin{cases}\Theta(1) & \textrm{if } n = 1,\\ T(n-1) + \Theta(n) & \textrm{if } n > 1. \end{cases} 私の推論 の基本ケースでは、リストはソートされるため、作業は発生せず、時間が一定になります。n=1n=1n = 1 他のすべてのケースでは、時間はシーケンスのソートとそのシーケンスA[1...n-1]への挿入に依存します。したがって、それはそれらの合計、すなわちます。T(n−1)+Θ(n)T(n−1)+Θ(n)T(n-1) + \Theta(n) 再発関係が正しいか知りたい。そうでない場合、間違いは何ですか?どのようにして再発関係を正しく定式化するのですか?

1
LSTMのトレーニングの直感的な説明(ゲート/ピープホールを忘れた場合)?
私はCSの学部生です(ただし、AIについてはよく知りませんが、AIについてのコースを受講していません。最近までNNについてはまったく何もしていませんでした)。AIで学校のプロジェクトをやろうとしているので、ニューラルネットワークで強化学習を使用した(文脈自由言語およびおそらく文脈依存言語のサブセットの)文法誘導。私は以前に成功したアプローチを最初に研究してそれらを微調整できるかどうかを確認し始めましたが、今私は長期短期記憶による教師あり学習を使用してアプローチを理解しようとしています。私は「忘れる学習:LSTMによる継続的予測」を読んでいます。。私ものぞき穴に関する論文を読んでいますが、それはさらに複雑に思われ、単純なことを最初に試みています。私は、メモリセルとネットワークトポロジがどのように機能するかを正しく理解していると思います。現時点では取得できないのは、トレーニングアルゴリズムです。だから私は尋ねるいくつかの質問があります: 異なる入力はどの程度正確に区別されますか?どうやらネットワークは各入力の後にリセットされず、異なる入力を区切る特別な記号はありません。ネットワークは、入力の終わりと次の始まりがどこであるかについての手掛かりなしに、文字列の連続ストリームを受信するだけですか? 入力と対応するターゲット出力の間のタイムラグはどれくらいですか?確かにある程度のタイムラグが必要であるため、ネットワークは、処理するのに十分な時間がない入力からターゲット出力を取得するようにトレーニングすることはできません。使用されたのがReberの文法ではなく、より多くの情報を格納および取得する必要がある可能性のあるより複雑なものである場合、情報にアクセスするために必要な時間は、入力によって異なり、おそらく予測できないものです。トレーニングを行うためのタイムラグを決定している間。 トレーニングアルゴリズムのより直感的な説明はありますか?すべての複雑な数式の背後で何が行われているのかを理解するのは難しいと思います。後で強化学習アルゴリズムに微調整する必要があるため、理解する必要があります。 また、このペーパーでは、ノイズの多いトレーニングデータについては何も触れられていません。ネットワークが非常にノイズの多いテストデータを処理できることを他の場所で読んだことがあります。LSTMが、トレーニングデータが不要な情報で破損/上書きされる可能性がある状況を処理できるかどうかを知っていますか?

1
追加のベクトルを必要とせずにこの一般化されたxorを構築する方法は?
演算子-一般化された対称差 バイナリxorを取り、それを他の基数に一般化する場合、基数ベクトルの各要素の差の絶対値によってそれを行うことができます。ただし、これには、バイナリ対称ディフェンと同じ特性はありません。その理由は、差の「兆候」を捨てる場合、バイナリxorでできるように、結果とその他を指定すると、オペラを再構築することができないためです。だから私たちは素敵な財産を失う ABA = B ただし、次のような他の優れたプロパティを保持します A0 = A AA = 0 このプロパティを維持する方法があります。ただし、私が知る限り、結果には3つのベクトルを放出する必要があります。最初のベクトルは通常の対称差であり、他の2つのベクトルは、最初のオペランドと等しい長さのバイナリベクトルであり、結果の符号を記録します。このようにして、結果と他のオペランド、および他のオペランドの「符号」ベクトルを指定すると、元のオペランドを復元できます。 例えば ​​: 1137と9284に対応する2つの基底10ベクトルがあるとします。基底10のこれら2つの数値のxorは何ですか? 7 3 1 1 4 8 2 9 4 8 2 9 7 3 1 1 Signed Result 3 -5 -1 -8 -3 5 1 8 Sign Vector 0 1 1 1 1 0 …

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