タグ付けされた質問 「reference-request」

特定の狭い問題に関する文献の論文を要求する質問。

3
さまざまなトピックに関するアルゴリズムの本
この投稿を改善したいですか?引用や回答が正しい理由の説明など、この質問に対する詳細な回答を提供します。十分な詳細がない回答は、編集または削除できます。 私は私たちの小さな会社(約15人)のためのアルゴリズムに関する本のライブラリを構築する任務を負っています。予算は5kを超えていますが、確かに10k未満なので、かなりの数の本を購入できます。ここにいるすべての人は、CSまたは密接に関連する分野で少なくとも学士号を取得しているため、Cormenのような基本的な教科書を入手しますが、より高度なトピックに関する優れた本に興味があります。(ちなみに、Knuthの4巻を入手します。) トピックのリストは次のとおりです。 並べ替えアルゴリズム グラフアルゴリズム 文字列アルゴリズム ランダム化されたアルゴリズム 分散アルゴリズム 組み合わせアルゴリズム 等 本質的に私は、アルゴリズムとデータ構造に関連するCS内の主要なトピックに関する本の良い推薦を探しています。特に、良い学校の学士号の一部として、アルゴリズムとデータ構造のクラスで通常カバーされているものを超えるもの。一般的に有用な資料を探しているので、質問はかなりあいまいです。私たちが開発するソフトウェアは、主に大量のデータを処理するシステムレベルのものです。 理想はまた、ほとんどの人が聞いたことがないかもしれないかなり最近のクールなデータ構造とアルゴリズムをカバーするものを見つけることです。 編集:ここに私が入手する必要があると思う予備的な本があります: コーメン他によるアルゴリズムの紹介。 クラインバーグ、タルドスによるアルゴリズム設計 Art of Computer Programming Vol 1-4、Knuth著 Vaziraniによる近似アルゴリズム ウィリアムソン、Shmoysによる近似アルゴリズムの設計 Motwani、Raghavanによるランダム化アルゴリズム Sipserによる計算理論の紹介 アローラ、バラクによる計算の複雑さ ギャリーとジョンソンによるコンピュータと扱いにくさ Schrijverによる組み合わせ最適化 言語設計、コンパイラ、および形式的手法の技法とアルゴリズムを扱う、同僚が欲しかった他のいくつかの本は次のとおりです。 Pierceによる型とプログラミング言語 加藤園バイエルによるモデル検査の原則 コンパイラ:Aho、Lam、Sethi、Ullmanによる原則、テクニック、ツール コンパイラー設計ハンドブック:最適化と機械コードの生成、Srikant、Shankarによる第2版 ガーベッジコレクションハンドブック:ジョーンズ、ホスキング、モスによる自動メモリ管理のアート

5
OOPでのオブジェクトの状態の定義
オブジェクト指向プログラミング(論文用)における「オブジェクトの状態」の簡潔な定義が必要です。 約半日、このトピックについて引用できる論文を探しましたが、見つかりませんでした。私が見つけたすべての論文は、ほとんどがオブジェクト指向プログラミングに関する一般的な論文であり、オブジェクトの状態を定義していませんでした。 私にはわかりませんが、私の推測では次のようなもの があります。オブジェクトの状態は、オブジェクトのインスタンス変数の状態によって定義されます。 オブジェクトの状態の定義やトピックに関する参照を検索しています。 (ところで、この概念を「オブジェクトの状態」と呼んでもいいですか、それとも珍しいのですか?)


1
絞り込みタイプの推測
職場では、動的言語に関する型情報を推論する必要があります。次のように、ステートメントのシーケンスをネストされたlet式に書き換えます。 return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 一般的なタイプ情報から始めて、より具体的なタイプを推測しようとしているので、自然な選択は絞り込みタイプです。たとえば、条件演算子は、trueブランチとfalseブランチの型の和集合を返します。単純なケースでは、非常にうまく機能します。 ただし、次のタイプを推測しようとしたときに、思わぬ障害に遭遇しました。 function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

4
バイオインフォマティクスの背後にある自然科学の入門書
私の質問は、計算生物学のアルゴリズムに関心のある人に向けています。この秋、バイオインフォマティクスのコースを受講します。しかし問題は、私が生物学と化学のバックグラウンドが少なすぎて、その選択のサイクルに備える準備ができていないことです(私は学校のこれらの科目ではかなり弱かった)。 バイオインフォマティクスが焦点を当てている自然科学の質問への良い紹介を提供する本を勧めますか?

1
APXハード問題のコレクション
誰もが「Garey&Johnson」を知っています。これは、NP硬度の証明に変換するために問題を変換する必要があるときにいつでも参照できる私の参照です。しかし、最近、APX耐性の証明が必要であることに気づきました。APX耐性であることが示されている同様の(そして最新の..?)問題の集まりがあるのでしょうか。 誰かがこのようなことを知っていますか?そのような問題を体系的に収集しているウェブサイトがないとは思えませんが、Googleのスキルは不十分のようです。

2
アルゴリズムに関する優れた数学の本[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 私は数学的優雅さと厳格さの吸盤です、そして今、アルゴリズムとアルゴリズム分析に関するそのような文献を探しています。今では、どのアルゴリズムがカバーされているかは問題ではありませんが、それらがどのように提示および処理されるかは非常に重要です。使用するすべての概念を厳密かつ抽象的な方法で定義する非常に明確で正確な言語を最も重視しています。 私は、Cormen、Leiserson、Rivest、Steinによる古典的なアルゴリズムの紹介がかなり巧妙であるが、数学をうまく処理せず、その証明と定義については非公式です。Sipserの計算理論入門は、その点では優れているように見えますが、それでも数学からアルゴリズムへのシームレスな移行は提供していません。 誰かが何かをお勧めできますか? 注意:アルゴリズムは、グラフ、配列、セット、リスト、ツリーなどの古典的な非自明な抽象データ構造を使用して、必要なデータの管理に少なくとも侵入する必要があります。データ構造の使用と管理の問題を完全に無視したとしても、あまり興味はありません。しかし、私はそれらで解決された問題についてはあまり気にしません。

2
ランタイムを実験的に比較するための標準はありますか?
私の状況 私が開発したソフトウェアモジュールを紹介する論文を書いており、そのランタイムを同じタスクの他のモジュールと比較したいと思います。ランタイムテストの欠点を認識していますが、私の場合は回避策がないと考えてください。(私は理論的にいくつかの特性を推定することができますが、それだけでは十分ではありません。) ベンチマークに使用したい特定のシナリオには、2つのパラメーターがあります。問題の複雑度 と、詳細な問題を決定するランダムシード です。主に私はへの依存を示したいです 。予備調査と理論によると、ランタイムへのの影響は小さいか無視できます。1つのタスクが完了するまでに最大で10分かかります。んんnrrrんんnrrr 実際の質問 私は、そのような実験を実行する上で一般的に受け入れられているか公開されている手順、または少なくとも一般的な落とし穴のリスト(理想的には公開)を探しています。 これまでに見つけたもの 何もない。インターネット検索は、あらゆる種類の無関係な結果を表示しますが、その場合、正しい用語を使用していない可能性があります。私が良い基準であることがわかっているキーワードの最小値を含めること(下記を参照)も役に立ちませんでした。 どうやってやるの すべての実験を、GUIなどの干渉する可能性のあるソフトウェアを可能な限り無効にして、同じマシンで実行します。 すべてのモジュールに同じ選択シナリオ、つまり同じおよび ます。んんnrrr シナリオごとに、さまざまなモジュールをランダムな順序で直接続けてテストします。つまり、さまざまなモジュールのループが最も内側のループです。これにより、マシンのパフォーマンスのゆるやかな変動(温度変化など)によるさまざまなモジュールへのバイアスを回避できます。ランダムな順序は、キャッシュや、同じモジュールの後に常にテストされる1つのモジュールなどの影響によるバイアスを回避する必要があります。 各について、ベンチマークとして異なるシードを使用して、いくつかのシナリオで最小ランタイムを取得します。これにより、マシンのパフォーマンスが短時間変動して、個々の実行が非常に悪くなるため、さまざまなモジュールへのバイアスが回避されます。んんn

2
この並べ替え/並べ替えの問題の名前は?
長さ配列が与えられます。配列の各要素は、Kクラスの1つに属しています。あなたはそのようにスワップ操作の最小数を使用してアレイを再配置することになっているすべての要素から同じクラスは常に一緒にグループ化され、それらが隣接サブアレイを形成していること、。 例えば: んnnKKK 他に3つの有効な取り決めが残っています。[ 2 、1 、3 、3 、2 、2 ] ⟶ [ 2 、2 、2 、1 、3 、3 ] 、 又は[ 2 、1 、3 、3 、2 、2 ] ⟶ [ 1 、2 、2 、2 、3 、3 ] 、 又は[ 2 、1 、3 、3 、2 、2 ] ⟶ [ 3 …

1
隣接行列の多項式を検査することによるグラフ同型への素朴なアプローチに関する文献
私はおそらく偽陽性を持っているグラフ同型へのアプローチを説明し、それが機能しないことを示す文献があるかどうか知りたいです。 2つの隣接行列所与、同型のチェックの確か素朴な方法は、行ごとかどうかをチェックすることであるの、行が存在するの列の順列であるを付し、。もう少し厳密には、質問は"ローカル同型"があるれるすべての行の。ローカル同型の生成は、行列を作成することにより、多項式時間で実行できます。次にとG,HG,HG, HuuuGGGvvvGGGuuuG[u]∼H[v]G[u]∼H[v]G[u] \sim H[v]ππ\piG[u]∼H[π(u)]G[u]∼H[π(u)]G[u] \sim H[\pi(u)]n×nn×nn\times nAAAA[u,v]=(G[u]∼H[v])A[u,v]=(G[u]∼H[v])A[u,v] = (G[u]\sim H[v])GGGHHHは局所同型であり、はサイクルカバーを持ち、すべてのサイクルカバーは局所同型です。AAA すべての通常のグラフは明らかにこの方法をだますので、少し単純な方法は、行列のべき乗を計算し、ローカル同型性をチェックして、事実を利用することですあなたが設定することにより、複数の行列を持っているあなたが見つけたときにどのようにその力、とだけ最後にサイクルカバーのチェックを。さらに少ない単純なアプローチは、演算回路の組実際、多項式のセットを見つけることである、と設定A [U、V] = 0を我々が見つけたときに、任意の多項式PとP(G)[U] \ない\シムPを( H)[v]。G2,H2,G3,H3,…G2,H2,G3,H3,…G^2, H^2, G^3, H^3,\ldotsA[u,v]=0A[u,v]=0A[u,v] = 0Gk[u]≁Hk[v]Gk[u]≁Hk[v]G^k[u]\not\sim H^k[v]A[u,v]=0A[u,v]=0A[u,v]=0pppp(G)[u]≁p(H)[v]p(G)[u]≁p(H)[v]p(G)[u]\not\sim p(H)[v] これは私にグラフ同型への信じられないほど素朴なアプローチのように見えるので、誰かがすでにそれを調査して次のような定理を証明したと確信しています Thm無限に多くのnnn場合、非同型のn×nn×nn\times n行列G,HG,HG, Hと順列ππ\piがあり、すべての多項式ppp、p(G)p(G)p(G)とp(H)p(H)p(H)はその順列によって局所的に同型になります:p(G)∼πp(H)p(G)∼πp(H)p(G)\overset{\pi}{\sim}p(H)。 質問:そのような定理はありますか?文献を調べましたが、見つかりません。 2つの非同型行列ごとに、計算することでローカル同型が反論されるように、多項式である次数境界がある場合、または簡単に計算できる多項式、それぞれ長さが多項式で制限されているが指数関数的である場合、グラフ同型のPアルゴリズムがあります。そのような多項式(または算術回路)が推測しやすい場合は、coRPアルゴリズムがあります。非局所同型性を目撃する算術回路(のファミリ)が常に存在する場合、これはcoNPアルゴリズムを提供します。kkknnnG1,H1,…,Gpoly(n),Hpoly(n)G1,H1,…,Gpoly(n),Hpoly(n)G^1, H^1, \ldots, G^{poly(n)}, H^{poly(n)}p1,…,pkp1,…,pkp_1, \ldots ,p_k ハイパワー行列のエントリが小さいフィールドで多項式を計算することによって、たとえばそれらをモジュロ小さい素数で計算することによって大きくなりすぎるという問題を回避できることに注意してください。でCONPのアルゴリズム、証明者は、これらの素数を提供することができます。

2
純粋なデータフロースタイルで「増分更新」関数を構成するためのパラダイムはありますか?
この質問をするための正しい用語がわからないので、代わりにたくさんの言葉で説明します。 背景、同じページにいるだけです。プログラムにはキャッシュが含まれていることが多く、時間とメモリのトレードオフです。プログラマーのよくある間違いは、上流のソース/前例の1つを変更した後、キャッシュされた値を更新するのを忘れることです。しかし、データフローまたはFRPプログラミングパラダイムは、そのような間違いの影響を受けません。純粋な関数がいくつかあり、それらを有向ディペンデンシーグラフで接続している場合、ノードは出力値をキャッシュし、関数の入力が変更されるまで再利用できます。このシステムアーキテクチャは、Dataflowベースの環境でのキャッシングペーパーで説明されており、命令型言語では、メモ化とほぼ同じです。 問題:関数への入力の1つが変化しても、関数全体を実行し、キャッシュされた出力を破棄して、最初から再計算する必要があります。多くの場合、これは私にとって無駄に思えます。「トップ5なんでも」リストを生成する簡単な例を考えてみましょう。入力データは、何も並べ替えられていないリストです。ソートされたリストを出力する関数への入力として渡されます。これは、最初の5項目のみを受け取る関数に入力されます。疑似コード: input = [5, 20, 7, 2, 4, 9, 6, 13, 1, 45] intermediate = sort(input) final_output = substring(intermediate, 0, 5) ソート関数の複雑さはO(N log N)です。ただし、このフローは、1つの要素を追加することで、入力が一度に少しだけ変化するアプリケーションで使用されることを考慮してください。毎回最初から再ソートするよりも、実際にはO(N)の方が、新しい要素を正しい位置に挿入することにより、古いキャッシュソートリストを更新する関数を使用する方が高速です。これはほんの一例にすぎません-多くの「最初から」の関数には、そのような「増分更新」の対応物があります。また、新しく追加された要素は5番目の位置にあるため、final_outputにも表示されない場合があります。 私の直感は、このような「増分更新」関数を、既存の「最初から」関数と並べて、データフローシステムに何らかの方法で追加できる可能性があることを示唆しています。もちろん、すべてを最初から再計算すると、常に一連の増分更新を実行した場合と同じ結果が得られます。システムは、その性質を持っている必要がある場合は、個々のプリミティブFromScratch-インクリメンタルペアのそれぞれが常に同じ結果が得られ、その後、彼らから構築された大規模複合機能も自動的に同じ結果を与える必要があります。 質問:FromScratch関数とそのインクリメンタル関数の両方をサポートし、効率を高めるために協力し、大きなフローに構成できるシステム/アーキテクチャ/パラダイム/メタアルゴリズムを使用することは可能ですか?そうでない場合、なぜですか?誰かがこのパラダイムをすでに研究して公開している場合、それは何と呼ばれ、どのように機能するかの簡単な要約を入手できますか?

4
関数コードが正しいことを証明するための一般的な正式なテクニックは何ですか?
論文の一部として作成しているHaskellプログラムの一部の証明を提供したいと思います。しかし、これまでのところ、良い参考資料を見つけることができませんでした。 グラハムハットンの入門書 『Haskellでのプログラミング(Googleブックス)』は、Haskellの学習中に読んだものですが、次のようなプログラムについて推論するためのいくつかのテクニックに触れています。 等式推論 重複しないパターンを使用する リストの誘導 第13章で説明しますが、あまり詳細ではありません。 Haskell、またはその他の機能的なコードの正式な証明手法の詳細を提供する推奨できる本や記事はありますか?


2
NP問題間のクック削減からKarp削減を構築できますか?
私たちは持っていたクックやカープ削減の関係についていくつかの質問を。Cookの削減(多項式時間のTuring削減)が、通常使用されるKarp削減(多項式の時間多項削減)と同じNP完全性の概念を定義していないことは明らかです。特に、P ≠≠\neq NPであっても、Cook削減はNPをco-NPから分離できません。したがって、典型的な還元証明ではクック還元を使用すべきではありません。 現在、学生は問題がNP困難であることを示すためにCook-reductionを使用する査読済みの作品[1]を見つけました。私は彼らがそこから取った削減についてフルスコアを与えませんでしたが、私は不思議に思います。 クックの削減はカープの削減と同様の硬度の概念を定義しているので、PをNPC応答から分離できるはずだと感じています。共同NPC、P NPを想定。特に、(次のような)次のことが当てはまります。≠≠\neq L1∈NP,L2∈NPCKarp,L2≤CookL1⟹L1∈NPCKarpL1∈NP,L2∈NPCKarp,L2≤CookL1⟹L1∈NPCKarp\qquad\displaystyle L_1 \in \mathrm{NP}, L_2 \in \mathrm{NPC}_{\mathrm{Karp}}, L_2 \leq_{\mathrm{Cook}} L_1 \implies L_1 \in \mathrm{NPC}_{\mathrm{Karp}}。 重要なナゲットは、なので、上記の鈍感さは回避されます。ここで、NPCの定義により、 "認識"します。L 2 ≤ K のR のP L 1L1∈ N PL1∈NPL_1 \in \mathrm{NP}L2≤K A R PL1L2≤KarpL1L_2 \leq_{\mathrm{Karp}} L_1 Vorによって指摘されているように、これはそれほど簡単ではありません(表記法を変更)。 仮定し、その、そして定義することにより、すべての言語の我々持っている、上記の意味が当てはまる場合は、、つまりはまだ未解決の問題です。 L 2 ∈ N P C K RのP ⊆ N …

1
線形計画法の強力な双対定理の短くて滑らかな証明
線形計画を考える Primal:Ax⃗ ≤b⃗ maxc⃗ Tx⃗ Primal:Ax→≤b→maxc→Tx→\begin{array}{|ccc|} \hline Primal: & A\vec{x} \leq \vec{b} \hspace{.5cm} & \max \vec{c}^T\vec{x} \\ \hline \end{array} Dual:c⃗ ≤y⃗ TAminy⃗ Tb⃗ Dual:c→≤y→TAminy→Tb→\begin{array}{|ccc|} \hline Dual: & \vec{c} \leq \vec{y}^TA \hspace{.5cm} & \min \vec{y}^T\vec{b} \\ \hline \end{array} 弱い双対定理は、とが制約を満たす場合、 あると述べています。線形代数を使用した簡潔で洗練された証明があります: 。x⃗ x→\vec{x}y⃗ y→\vec{y}c⃗ Tx⃗ ≤y⃗ Tb⃗ c→Tx→≤y→Tb→\vec{c}^T\vec{x} \leq \vec{y}^T\vec{b}c⃗ Tx⃗ ≤y⃗ …

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