問題タブ [dynamic-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 電話のキーパッドを使用して 10 桁の番号を生成する
以下に示すような電話のキーパッドがあるとします。
1 から始まる 10 桁の数は何通りできますか? 制約は、1 つの数字から次の数字への動きがチェス ゲームのナイトの動きに似ていることです。
たとえば。1 の場合、次の桁は 6 または 8 のいずれかになり、6 の場合、次の桁は 1、7、または 0 になります。
数字の繰り返しが許可されています - 1616161616 は有効な数字です。
この問題を解決する多項式時間アルゴリズムはありますか? この問題では、10 桁の数を数えるだけでよく、必ずしも数をリストする必要はありません。
編集:これを、各桁が2桁または3桁の隣接するグラフとしてモデル化してみました。次に、DFS を使用して 10 ノードの深さまでナビゲートし、10 の深さに達するたびに数値のカウントを増やしました。これは明らかに多項式時間ではありません。各数字に隣接する数字が 2 つだけであると仮定すると、これには少なくとも 2^10 の反復が必要になります。
ここでの変数は桁数です。私は例を取った。10桁の数字。n桁でも構いません。
scheme - スキーム内の配列 / メモ化
スキームで配列を使用するにはどうすればよいですか?
特に、メモ化を使用して再帰的なフィボナッチ プロシージャを実装しようとしています。配列はSchemeにも存在しますか?
そうでない場合、メモ化をどのように実装できますか?
time-complexity - 最長共通部分列
2つのシーケンスX[1..m]とY[1..n]を考えてみましょう。メモ化アルゴリズムは、時間O(m * n)でLCSを計算します。LCS wrt timeを見つけるためのより良いアルゴリズムはありますか?斜めにメモ化すると、O(min(m、n))の時間計算量が得られると思います。
java - おおよその文字列マッチング用のサンプル Java コードまたはおおよその文字列マッチング用に拡張された boyer-moore
1.不一致 (誤って演奏された音符)、2.挿入 (追加で演奏された音符)、および 3.削除 (失われた音符) を参照に対して楽曲 (たとえば、テーブルに保存された音符ピッチ [文字列値]) で見つける必要があります。音楽作品。
これは、正確な文字列一致アルゴリズムまたは動的プログラミング/近似文字列一致アルゴリズムによって可能です。ただし、メモの不一致、挿入、削除を識別するため、おおよその文字列一致が問題に適していることに気付きました。または、約をサポートするための Boyer-moore の拡張バージョン。文字列マッチング。
おおよその文字列一致を試すことができるサンプル Java コードへのリンクはありますか? 複雑な説明や方程式を見つけましたが、いくつかのサンプル コードと簡単な説明でうまくいくことを願っています。または、boyer-moore でサンプルの Java コードを見つけることができますか? 文字列一致?ボイヤームーアの概念は理解できますが、約 1000 をサポートするように調整するのに苦労しています。文字列の一致 (つまり、不一致、挿入、削除をサポートするため)。
また、最も効率的なものは約です。文字列マッチング アルゴリズム (正確な文字列マッチング アルゴリズムのボイヤー ムーアのような)?
洞察/提案をいただければ幸いです。よろしくお願いします
.net - 自動実装された c# get body を実行時またはコンパイル時に置き換える方法は?
私は一晩中これを理解しようとしてきましたが、.Net Framework に関する私の知識はそれほど深くなく、問題は正確に Google にうまく当てはまらないと思いますが、正しい方向にうなずくことができれば、私は何らかの方法で実装できると確信しています。
カスタム属性で装飾されたプロパティを次のように宣言できるようにしたいと思います。
そして、どういうわけか-これは私が理解するのに苦労している部分です-そのゲッターの自動生成された実装を、次のようなカスタムコードに置き換えます。
どのようにすればよいかわからない主なことは、get の自動実装を置き換えることです。
最初に頭に浮かんだのはPostSharp でしたが、それは私が気にかけているよりも複雑な依存関係です。私は、ビルドに添付された後処理を使用せずにコーディングする方法をはるかに好みます (とにかく、PostSharp がそのフックをシンクする方法の要点だと思います)。
この他の部分は、ReplaceWithExpressionFrom 属性の特定のインスタンス化に渡された型パラメーターを取得する方法です (ここで、本体を置き換えたいプロパティを装飾します。つまり、typeof を取得するにはどうすればよいですか)。 (SomeOtherClass) get body 置換をコーディングしている場所)。IExpressionHolder の具体的なインスタンスからコンパイル済みの式をキャッシュする予定です。プロパティが取得されるたびにキャッシュするのは避けたいからです。
私はこれが可能でなければならないと考えています。少なくとも、属性で装飾されたメソッドのアセンブリを検索し、何らかの方法でクラスをプロキシするか、単に IL または .. 何かを置き換えることができるはずだと思いますか? そして、統合をできるだけスムーズにしたいので、どこかで登録または初期化メソッドを明示的に呼び出すことなくこれを行うことができれば、それは非常に素晴らしいことです.
ありがとう!
c# - 実行時にメソッドの実装を置き換えるにはどうすればよいですか?
私は、独自のカスタム属性で装飾できるプロパティ ゲッターとメソッドを持ち、その属性の存在に基づいて、メソッド本体を別の実装に置き換えたいと考えています。また、その別の実装では、メソッドを装飾するカスタム属性に指定されたコンストラクター引数を知る必要があります。
これは明らかに、PostSharp や LinFu などの AOP で実行できますが、ビルド後の処理ステップを必要としない方法があるかどうか疑問に思っています。
algorithm - k個の最小全域木を計算する動的計画法の方法はありますか?
先生からその問題の動的計画法の解決策を教えてもらいましたが、グーグルで見つけられなかったので存在しないと思います。
とにかく、グラフとak、たとえば3が与えられた場合、そこから3つの最良のMSTを見つける必要があります。グラフがk個のサブツリーを持たないようなものである場合、同じツリーを複数回返すか、次善のツリーを返すことができます。
私はそれに対する解決策を本当に考えることができません。
algorithm - Trieをトラバースしてスペルの提案をチェックするための優れたアルゴリズムは何ですか?
辞書の単語の一般的なトライが構築されていると仮定すると、スペルミスの4つのケース(トラバーサル中の置換、削除、転置、挿入)をチェックするための最良の方法は何でしょうか?
1つの方法は、特定の単語のn個の編集距離内にあるすべての単語を把握し、Trieでそれらをチェックすることです。これは悪いオプションではありませんが、ここでのより良い直感は、トラバーサル中に単語を変更した後、動的計画法(または再帰的な同等の方法)を使用して最適なサブトライを決定することです。
どんなアイデアでも大歓迎です!
PS、回答のリンクだけでなく、実際の入力をいただければ幸いです。
c++ - 動的計画問題
私はdpのコツをつかむことができません。私は自分が何をしなければならないかを知っていますが、それを実装することができません。たとえば、「Codechef」からのこの練習問題
http://www.codechef.com/problems/MIXTURES/
混合物iからjの最小煙をm[i、j]と見なす場合
それから
これは正しいです?また、diff kの混合物の色を更新し続けてから、次のkの元に戻すにはどうすればよいですか?
nlp - ドメイン名を構成単語に分割する (可能であれば)?
ドメイン名を構成単語と数字に分割したい
iamadomain11.com = ['i', 'am', 'a', 'domain', '11']
どうすればいいですか?複数のセットが可能である可能性があることは承知していますが、現在でも問題はなく、1 セットの可能性しかありません。