コンピュータサイエンス

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

1
なぜラムダ抽象化が型なしラムダ計算の値である唯一の項なのですか?
「型なしラムダ計算の唯一の値はラムダ抽象化である」と私は混乱しています。 他の用語が値ではないのはなぜですか?ラムダ抽象化が値であることはどういう意味ですか?最初に頭に浮かんだのは、おそらくラムダ抽象化が唯一可能な正規形であるということでしたが、これはもちろん本当ではありません。例えば(λ X 。x )y→ y(λバツ。バツ)y→y(\lambda x.\; x)\;y \to y。 誰かが私を啓発できますか?

2
キャスタビリティとコンベクシティの関係
凸型ポリゴンとキャスタブルオブジェクトの間に何か関係があるのでしょうか。オブジェクトが凸多角形であることがわかっている場合、またはその逆であることがわかっている場合、オブジェクトのキャスト可能性についてどのように言えますか。 知っておくべき基本的なことをいくつか集めましょう。 型から取り外し可能な場合、オブジェクトはキャスタブルです。 多面体Pは、方向に平行移動することでモールドから削除できます d⃗ d→\vec{d} もしそうなら d⃗ d→\vec{d} 少なくとも角度を作る 90∘90∘90^{\circ} Pのすべての通常のファセットの外向きの法線。 任意のオブジェクトの場合、キャスタビリティーのテストには時間がかかります O(n2)O(n2)O(n^2)。私の意見では、凸状ポリゴンの場合、線形時間に改善できる場合、すべての新しいトップファセットについて、ベクトルがd⃗ d→\vec{d} 少なくとも角度を作る 90∘90∘90^{\circ} すべての外向き法線ではなく、Pの2つの隣接する通常のファセットのみ これが本当なら、少なくとも凸多角形の場合のキャスタビリティのテストで改善があります。 他に、キャスタビリティと凸性について述べることができます。キャスタビリティが凸性について何かを教えてくれるなら、特に興味深いことです。

1
KMPプレフィックス関数と文字列照合オートマトンの間の接続
LET文字列照合オートマトンパターンのための、ありますAP=(Q,Σ,δ,0,{m})AP=(Q,Σ,δ,0,{m})A_P = (Q,\Sigma,\delta,0,\{m\})P∈ΣmP∈ΣmP \in \Sigma^m Q={0,1,…,m}Q={0,1,…,m}Q = \{0,1,\dots,m\} δ(q,a)=σP(P0,q⋅a)δ(q,a)=σP(P0,q⋅a)\delta(q,a) = \sigma_P(P_{0,q}\cdot a) for all and a \ in \ Sigmaq∈Qq∈Qq\in Qa∈Σa∈Σa\in \Sigma σP(w)σP(w)\sigma_P(w)の最長プレフィックスの長さPPPの接尾辞であるwwwであり、 σP(w)=max{k∈N0∣P0,k⊐w}σP(w)=max{k∈N0∣P0,k⊐w}\qquad \displaystyle \sigma_P(w) = \max \left\{k \in \mathbb{N}_0 \mid P_{0,k} \sqsupset w \right\}。 さて、聞かせて\パイプレフィックス機能からクヌース-モリス-プラット法であるが、ππ\pi πP(q)=max{k∣k&lt;q∧P0,k⊐P0,q}πP(q)=最高{k|k&lt;q∧P0、k⊐P0、q}\qquad \displaystyle \pi_P(q)= \max \{k \mid k < q \wedge P_{0,k} \sqsupset P_{0,q}\}。 …

1
有向グラフの間に停止がある単純なパス
有向グラフのパスに関連する2つの問題があります。LETソースと有向グラフであると目標。ましょう内の別の頂点である。G=(V,E)G=(V,E)G=(V,E)s∈Vs∈Vs \in Vt∈Vt∈Vt \in Vv∈V∖{s,t}v∈V∖{s,t}v \in V \setminus \{s,t\}GGG からからまで単純な有向パス¹を見つけます。ssstttvvv 2つの固定エッジを通るからへの単純な有向パスを見つけます。ssstttGGG それらに多項式時間アルゴリズムがあるかどうかはわかりません。誰かがそれらの解決策や参照を持っていますか? 単純な有向パスでは、頂点が複数回出現することはありません。

3
チューリング還元性はマッピング還元性を意味します
問題は、次の説明が正しいか間違っているかです。 あ≤TB⟹あ≤メートルBA≤TB⟹A≤mBA \leq_T B \implies A \leq_m B であれば、に対してAを決定できるオラクルがあることを知っています。これは、AからBへの計算可能な関数があり、削減を満足できると言うには十分ではないことを知っています。あ≤TBA≤TBA \leq_T B これを適切に表現する方法、または私が言っていることがステートメントが誤っていると言うのに十分であるかどうかはわかりません。これをどのように表示しますか? 編集:これはそれ自体宿題の問題ではありません、私はテストのために見直しています。ここで、はチューリング還元性であり、はマッピング還元性です。≤T≤T\leq_T≤メートル≤m\leq_m

2
Aの補数への削減のマッピング
マッピングの削減について一般的な質問があります。私は関数をいくつかの例に見ましたATMATMA_{TM} どこ ATM={⟨M,w⟩: For M is a turing machine which accepts string w}ATM={⟨M,w⟩: For M is a turing machine which accepts string w}A_{TM} = \{\langle M, w \rangle : \text{ For } M \text{ is a turing machine which accepts string } w\} これは決定不能性を証明するのに最適です。しかし、代わりに認識できないことを証明したいと言います。つまり、与えられた結果を使用したいA≤mBA≤mBA \le_{m} B、 AAA 認識できません BBB 認識できません。 …

1
線形方程式に正の解があるかどうかをチェックする複雑さ
線形方程式システムを考えます。ここで、は有理数のエントリを持つ行列です。のランクがであると仮定します。それが解決したかどうかを確認するためにcomplexiy何である、すべてのエントリが、そのようなことを(すなわち、0よりも大きいstricly正のベクトルである)は?もちろん、ガウスの消去法を使用できますが、これは最適ではないようです。Ax=0Ax=0Ax=0AAAn×nn×nn\times nAAA&lt;n&lt;n<nxxxxxxxxx

2
正方配列の「重複しない」数値の合計を最大化-証明に役立ちます
質問はスタックオーバーフローに掲載されたこの問題を解決するためのアルゴリズムを求めて: nxnの行列(Aと呼びます)があります。行列Aからポイントのサブセット(Bと呼びます)を選択します。サブセットはn個の要素で構成され、Aの各行と各列から1つだけの要素が取得されます。出力はソリューション( B)これらの制約を考慮して、Bを構成する要素の合計が可能な最大値になるようにします(たとえば、以下の例では25)。Bの複数のインスタンスが見つかった場合(つまり、同じ最大合計を与える異なるソリューション)、最大の最小要素を持つBのソリューションを選択する必要があります。 Bは、nxnの選択行列にすることもできますが、n個の目的の要素のみが非ゼロです。 例:A = |5 4 3 2 1| |4 3 2 1 5| |3 2 1 5 4| |2 1 5 4 3| |1 5 4 3 2| =&gt; Bは |5 5 5 5 5| 私は動的プログラミングソリューションを提案しましたが、これは他のソリューションと同じくらい効率的だと思います。以下の提案されたアルゴリズムをコピーして貼り付けました。 してみましょうの正方形アレイもでの数字。ああAんんnんんn LETの要素示しにおける行と列目を。あ私、jあ私、jA_{i,j}ああAij LETはの正方形サブアレイの数値非重複の最適和を表す行の交点を含むがにと列がに。S(私1:私2、j1:j2)S(私1:私2、j1:j2)S( i_1:i_2, j_1:j_2 )ああA私1私1i_1私2私2i_2j1j1j_1j2j2j_2 次に、重複しない数値の最適な合計が示さS( 1:n , 1:n )れ、次のように与えられます。 …

1
状態遷移システムについて学ぶための良い参考資料は何ですか?
私は、連続動的システムを使用した計算の定義に関するさまざまなアプローチを研究しています。私は「状態遷移システム」の理論への素晴らしい入門書を見つけようとしてきましたが、それはできませんでした。 誰かがトピックの現代的な紹介を知っていますか?特に興味深いのは、計算可能性を扱うものです。

3
最大のものを見つけることの複雑さ
以下は、私がそうであると信じるものでこれを行うための私のアルゴリズムです O(n)O(n)O(n)時間、そしてそれに対する私の証拠。私の教授はそれが実行されることに同意しませんO(n)O(n)O(n) 代わりにそれが実行されると考えています Ω(n2)Ω(n2)\Omega(n^2)時間。証明自体またはスタイルに関するコメント(つまり、私のアイデアは明確かもしれませんが、プレゼンテーションは明確ではありません)。 元の質問: 与えられた nnn 数、最大を見つける m≤nm≤nm \leq n そのうちに o(nlogn)o(nlog⁡n)o(n \log n)。あなたは他に何も想定しないmmm。 私の答え: 最初に並べ替え mmm配列の要素。これにはO(1)O(1)O(1) 時間、これは完全に依存しているため mmmではなく nnn。 それらをリンクされたリストに格納します(ソートされた順序を維持します)。これもかかりますO(1)O(1)O(1) 時間と同じ理由で。 配列内の他のすべての要素について、リンクリストの最小要素より大きいかどうかをテストします。これにはO(n)O(n)O(n) 時間として nnn 比較を行う必要があります。 数値が実際に大きい場合は、リンクされたリストの最初の要素(最小のもの)を削除し、リストを並べ替えられた順序で保持する場所に新しい数値を挿入します。これにはO(1)O(1)O(1) それは定数(mmm)上記のリストは拡大しません。 したがって、アルゴリズムの全体的な複雑さは O(n)O(n)O(n)。 リンクされたリストとは対照的に赤黒ツリーを使用すると、定数の点でより効率的であることを知っています(定数の上限が O(m⋅log2(m))O(m⋅log2⁡(m))O(m\cdot \log_2(m)) とは対照的に mmm (比較を容易にするために)ツリーの最下部の要素へのポインタを保持するという問題は非常に実行可能ですが、そのときは私には起こりませんでした。 私の証拠は何ですか?それを提示するより標準的な方法はありますか?

2
特殊なケースの問題の複雑さ
計算の複雑さに関するテキストを読んでいるとき、私はしばしばこのような文章を見ます: "この特殊な "またはTSPTSP\text{TSP} 「これは特殊なケースです」またはSATSAT\text{SAT} 「 -、以下の特別な場合である」またはkkkPARTITIONPARTITION\text{PARTITION}BIN PACKINGBIN PACKING\text{BIN PACKING} 「は」の特別なケースです。SUBSET SUMSUBSET SUM\text{SUBSET SUM}KNAPSACKKNAPSACK\text{KNAPSACK} 私が見落としているのは、ある問題が別の問題の特別なケースであると主張するための基準です。 ある問題を別の問題の特殊なケースとして分類する必要性は何ですか?特別なケースは常に複雑さのクラスを「特別でない」ケースとして扱いますか? 多くの場合、これは単純に述べられており、これらの問題間の関係の証拠はありません。 問題が別の特別なケースになるためには、どのような要件を満たす必要がありますか? 問題の新しい言語が既存の問題の特殊なケースであることをどのように証明できますか?

2
再発関係の解決 'Chip&Conquer'
私はいくつかの反復関係の解決を任されており、いわゆる「チップと征服」関係で問題に直面しています。 問題の例をいくつか示します。 T(n)=T(n−5)+cn2T(n)=T(n−5)+cn2T(n) = T(n-5) + cn^2 そして T(n)=T(n−2)+lognT(n)=T(n−2)+log⁡nT(n) = T(n-2) + \log{n} 私は答えを出すことになっています ΘΘ\Theta表記。このような関係を回避して解決するにはどうすればよいですか?

1
ウィンドウが表示されている画面を表すための効率的なクエリ可能なデータ構造
(これは私の他の質問に関連しています、ここを参照してください) 3つのウィンドウがある画面を想像してください。 これらをサポートしながら、これを表す効率的なデータ構造を見つけたいのですが。 特定のウィンドウを他のウィンドウと重複せずに配置できる座標のリストを返します 上記の例で、サイズ2x2のウィンドウを挿入する場合、可能な位置は(8、6)、(8、7)、..になります。 アスペクト比を維持しながら、他のウィンドウと重ならないように画面上のウィンドウのサイズを変更する x、yの位置にウィンドウを挿入します(ウィンドウが重ならない場合) 今の私の素朴なアプローチは、ウィンドウの配列を維持し、画面上のすべてのポイントを調べて、ウィンドウのいずれかにあるかどうかをチェックすることです。これは、ここで、画面の幅、高さであり、それにウィンドウの数です。一般に、各ウィンドウが多くのスペースをとる場合、は小さくなります(たとえば、&lt;10)。O (N ⋅ M ⋅ W )O(ん⋅メートル⋅w)O(n\cdot m\cdot w)n 、mん、メートルn, mwwwwww

1
ショットガンヒルクライミングの詳細を実装して効果的にするにはどうすればよいですか?
私は現在、(少しの調査の後)ヒルクライミングの使用、より具体的にはショットガン(またはランダムリスタート)ヒルクライミングアルゴリズムのアイデアが最適であるように見える問題の解決策に取り組んでいます。最適な開始値を見つける方法を知る手がかりはありません。 しかし、このタイプのアルゴリズムについては、その背後にある基本的な考え方を除いて、多くの情報はありません。 [Shotgun]ヒルクライミングは、ヒルクライミングアルゴリズムの上に構築されたメタアルゴリズムです。ランダムな初期条件で、毎回山登りを繰り返します。最高のが維持されます。山登りの新しいランが保存された状態よりも優れた生成する場合、保存された状態を置き換えます。x0x0x_0xmxmx_mxmxmx_m 私がこれを正しく理解している場合、これは次のようなものを意味します(最大化を想定): x = -infinity; for ( i = 1 .. N ) { x = max(x, hill_climbing(random_solution())); } return x; しかし、これを本当に効果的にするにはどうすればよいですか?これは通常の山登りよりも優れていますか?ランダムな開始値を使用すると、特に巨大な検索スペースで多くの効果があるとは信じがたいです。より正確には、私は疑問に思います: (つまりを実装)を選択するための、特に以前の反復の(中間)結果を知るための優れた戦略はありますか?x0x0x_0random_solution どのようにを選択するか、それは、完全な解が(かなり)見逃されないことを非常に確実にするために必要な反復回数です。NNN

2
パターン認識のための分類子の比較に関する問題
私はジェスチャーを認識し、常に任意のカテゴリに分類する分類子Mを設計しました。ジェスチャーは、サンプル時系列yとトレーニング時系列xの間のハミング距離に基づいて分類されます。分類子の結果は確率値です。A、B、Cの3つのクラス/カテゴリがあり、ハンドジェスチャを分類します。分類するクラスごとに100個のサンプルがあります(単一の機能とデータの長さ= 100)。データは異なる時系列です(x座標vs時間)。トレーニングセットは、どのジェスチャが何回発生したかを示す確率を割り当てるために使用されます。したがって、10個のトレーニングサンプルのうち、ジェスチャAが6回出現した場合、ジェスチャがカテゴリAに該当する確率は P(A)= 0.6同様にP(B)= 0.3 そして P(C)= 0.1 現在、この分類器の性能をベイズ分類器、K-NN、主成分分析(PCA)およびニューラルネットワークと比較しようとしています。 分類子の特徴はROCプロットの確率値であるため、ROCまたは交差検証を検討する場合、パラメーターと方法をどのように実行すればよいですか?したがって、k-nn、ベイ分類およびPCAの特徴は何ですか? 便利なコードがありますか? 3つのクラスのジェスチャがある場合、kの値はどうあるべきですか? 助けてください。私は修正中です。

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