コンピュータサイエンス

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

1
異なる通常言語の数
アルファベット与えΣ = { a 、b }Σ={a,b}\Sigma = \{ a,b \}られた場合、nnn非決定的有限オートマトンで受け入れられる正規言語はいくつありますか? 例として、考えてみましょうn = 3n=3n=3。次に、2182182^{18}異なる遷移構成と23232^3異なる開始状態および終了状態の構成があるため、2242242^{24}異なる言語の上限があります。 ただし、これらの多くは同等であり、そのテストはPSPACE-Completeであるため、各設定をテストすることはおそらく実行不可能です。 特定のリソースで受け入れられるさまざまな言語の数を制限する他の手段または組み合わせの引数はありますか?

1
Hindley-Milnerアルゴリズムがt1-> t2のような型を生成しないのはなぜですか?
私が読んだヒンドリー-ミルナータイピングアルゴリズムの実装を書いている間、あなたは常に引数は、最終的なタイプを決定する原子の種類やタイプのいずれかを取得します、限り、すべての変数がバインドされると、それを見る、などt1 -> t1か(t1 -> t2) -> (t1 -> t2)ここでt1およびt2は型変数です。 私はあなたのような何かを取得したい方法を考えることはできませんt1 -> t2か、単にt1私が表現の実際の型を判別する方法がないので、アルゴリズムが壊れている意味するであろう理解し、。すべての変数がバインドされている限り、これらの「壊れた」タイプのような型を決して取得しないことをどのように確認しますか? 私はアルゴリズムが変数を持つ型を生成することを知っていますが、関数に引数を渡すと、これらは常に解決されますが、typeを持つ関数ではそうではありませんt1 -> t2。これが、アルゴリズムがそのような型を決して生成しないことを確認する方法を知りたい理由です。 (MLでこれらの「壊れた」型を取得できるようですが、ラムダ計算について質問しています。)

3
子猫の養子縁組問題の複雑さ
これは、配線長の最小化に関するこの質問に答えようとしているときに出てきました 。私はこれを「一夫多妻結婚」の問題と呼びましたが、インターネットは子猫です。わーい! 人が採用する必要がある子猫があるとします。各子猫、、および各人には、コストます。すべての子猫を養子にするための総費用を最小限に抑えたいと思います。制約のセットもあります:各人は、子猫をまでしか採用できません。N M > N i j c i j j u jMMMNNNM>NM>NM > Niiijjjcijcijc_{ij}jjjujuju_j 制約がなければ、問題は簡単です。各子猫人で行くれる最小です。制約があるため、この問題に対して効率的なアルゴリズムがありますか、それともNP困難ですか?j c i jiiijjjcijcijc_{ij}

4
ソートアルゴリズムには推移性が必要ですか
非推移的比較でソートアルゴリズムを使用することは可能ですか?はいの場合、なぜコンパレーターをソートするための要件として推移性がリストされていますか? バックグラウンド: ソートアルゴリズムは、通常、コンパレータ関数C(x、y)に従ってリストの要素をソートします。 C(x 、y)= ⎧⎩⎨− 10+ 1もし X≺Y もし X〜Y もし X≻Y C(バツ、y)={−1もし バツ≺y0もし バツ〜y+1もし バツ≻y\begin{array}{ll} C(x,y) = \begin{cases} -1 & {\text{if}}\ x\prec y \\ 0 & {\text{if}}\ x\sim y \\ +1 & {\text{if}}\ x\succ y \\ \end{cases} \end{array} 私が理解している限り、このコンパレータの要件は次のとおりです。 再帰的: ∀ X :C(x 、x )= 0∀バツ:C(バツ、バツ)=0\forall x: C(x,x)=0 …

4
2つの大きなセット間のセットの差の計算
整数と 2つの大きなセットがあります。各セットには約100万のエントリがあり、各エントリは最大10桁の正の整数です。 BAAABBB およびを計算する最適なアルゴリズムは何ですか?つまり、ないのエントリのリストを効率的に計算するにはどうすればよいですか?これらの操作を効率的にするために、これら2つのセットを表すのに最適なデータ構造は何でしょうか?B ∖ A A BA ∖ BA∖BA\setminus BB ∖ AB∖AB\setminus AAAABBB 私が思いつく最良の方法は、これらの2つのセットをソート済みリストとして保存し、のすべての要素をすべての要素と線形に比較することです。もっと良くできますか?BAAABBB

2
最短
ましょうGはGGグラフであり、およびlet Sss及びTはttの2つの頂点であるGGG。sとtの間のすべての最短パスのセットからランダムに均一かつ独立して最短sss - tttパスを効率的にサンプリングできますか?簡単にするために、Gは単純で、方向付けられておらず、重み付けされていないと仮定できます。ssttGG 多くの制限されたグラフでさえ、sssとtの間の最短経路の数ttはGのサイズで指数関数的GGです。したがって、実際にはすべての最短sss - tttパスを実際に計算することは避けたいと思います。一般的なケースについては知りませんが、いくつかの特別なグラフクラスでこれを達成できるようです。 これは、誰かが以前に考慮したに違いないように感じます。これに関する既存の研究はありますか、または実際にこれは一般的なグラフに対しても簡単ですか?

1
実際のユニバーサルハッシュ
HHHh :U→ { 0 、… 、M− 1 }h:うん→{0、…、M−1}h: U \rightarrow \{0,\ldots,M-1\}∀ X 、Y∈ U、x ≠ y⇒ PrをH ∈ H[ h (x )= h (y)] ≤ 1M∀バツ、y∈うん、バツ≠y⇒Prh∈H[h(バツ)=h(y)]≤1M\forall x,y \in U, x \neq y \Rightarrow \Pr_{h \in H}[h(x) = h(y)] \leq \frac{1}{M} ユニバーサルハッシュの概念は、学部のデータ構造コースの標準的な部分になりました。産業用アプリケーションでのユニバーサルハッシュの重要性について学生を動機付けることができればうれしいです。だから私の質問は: ハッシュ関数のユニバーサルファミリーの構築は実際には重要ですか?答えが「はい」の場合、これまでに見た興味深い産業用アプリケーションをいくつか教えてください。


2
ユークリッド平面に埋め込まれたグラフの最短非交差パス(2D)
経路に自己交差が含まれないように、ユークリッド平面に埋め込まれたグラフの最短経路を見つけるためにどのアルゴリズムを使用しますか? たとえば、次のグラフでは、ます。通常、ダイクストラのアルゴリズムのようなアルゴリズムは、次のようなシーケンスを生成します。(0 、0 )→ (- 3 、2 )(0、0)→(−3、2)(0,0) \rightarrow (-3,2) [(0 、0 )→3(0 、3 )→2√(1 、2 )→4(- 3 、2 )] = 7 + 2–√。[(0、0)→3(0、3)→2(1、2)→4(−3、2)]=7+2。\left[ (0,0) \stackrel {3}{\rightarrow} (0,3) \stackrel{\sqrt{2}}{\rightarrow} (1,2) \stackrel{4}{\rightarrow} (-3,2) \right] = 7+\sqrt{2}. 完全なグラフ: 最短経路: 最短の非交差パス: しかし、ユークリッド平面上のこのパスが交差自体は、それゆえ私はしたい、この場合には、私の最短非交差シーケンスを与えるアルゴリズムを: [(0 、0 )→3(0 、3 )→3(0 、6 )→5(- 3 、2 )] = …



4
オートマトンを「推測」する-どういう意味ですか?
非決定的プッシュダウンオートマトンは、複数の状態間で「選択」でき、決定論的プッシュダウンでは受け入れられないコンテキストフリー言語がいくつかあるため、決定論的プッシュダウンオートマトンは改良型であると認識しています。 それでも、私は彼らがどのように「選択する」かを正確に理解していません。たとえば、パリンドロームについては、私が見つけたすべての情報源は、オートマトンが単語の真ん中を「推測する」とだけ言っています。どういう意味ですか? 考えられるいくつかの意味を考えることができます。 ランダムに1つの状態になるため、実際には言語にある単語を受け入れない可能性があります それはどういうわけか「あらゆる可能性」になりますので、最初のものが間違っている場合、他のどれかが正しいかどうかをテストします 私が知らないメカニズムがあり、それは単語の中間を選択し、したがってランダムではありませんが、オートマトンは常に正しい中間を見つけます。 これは単なる例です。私が知りたいのは、それ以前のまったく同じ状態に対していくつかの次の状態を持つオートマトンの仕組みです。

1
実行時の境界は、取るに足らないものに対して決定可能ですか?
問題入力長に関してランタイムがわかっている チューリングマシンが与えられた、のランタイムは?MMMO(g(n ))O(g(n)){O}(g(n))M ∈ O(F (N ))nnnM∈ O(F(n ))M∈O(f(n))M \in {O}(f(n)) 上記の問題はといくつかの非自明なペアに対して決定可能ですか?場合、解は自明です。F G (N )∈ O (F (N ))gggfffg(N )∈ O(F(n ))g(n)∈O(f(n))g(n) \in O(f(n)) これは、Pの実行時境界が決定可能かという問題に関連しています。(答え:いいえ)。一つは、から派生することができヴィオラの答えであればということと、問題は決定不能です。F (N )∉ O (G (N ))f(N )∉ O (N )f(n)∉o(n)f(n)\not \in o(n)f(N )∉ O ( G(n ))f(n)∉O(g(n))f(n)\not \in O(g(n)) という要件は、Violaの証明のが入力サイズを見つけるのに時間を必要とするためです。したがって、場合、Violaの証明は機能しません。M ' O (N )F (N …

3
DFAの最小化がそうでないのに、なぜNFAの最小化は難しい問題なのですか?
同等の状態を見つけてマージすることでDFAを最小化できることは知っていますが、なぜNFAでも同じことができないのですか?証拠が理解しやすい場合を除き、証拠などを探していません。DFAの最小化が難しいのに、なぜNFAの最小化が難しいのかを直感的に理解したいだけです。

2
通常のエキスパンダーグラフを実際に構築する方法は?
n個の頂点のいくつかの小さな固定d(3または4など)のd正規展開グラフを作成する必要があります。 これを実際に行う最も簡単な方法は何ですか?エキスパンダーとして証明されているランダムなd-regularグラフの作成? また、拡張子であるマルグリス構造とラマヌジャングラフ、およびジグザグ製品を使用した構造についても読みました。ウィキペディアでは、わかりやすいが非常に短い概要を示しています。http://en.wikipedia.org/wiki/Expander_graph#cite_note-10 しかし、実際にはどの方法を選択しますか 私にとって、これらの方法はすべて実装が非常に複雑で、特に理解が難しく、非常に具体的であると思われます。d-regularエキスパンダーグラフのシーケンスを実際に生成するための、おそらく置換などに基づいた簡単な方法はありませんか? d-regular二部展開エキスパンダーグラフを作成する方が簡単でしょうか? 別の質問もあります:不良なd-regularエキスパンダーのファミリーはどうですか?そのような概念は理にかなっていますか?エクスパンダの意味で可能な限り悪いd-regularグラフ(もちろん接続されている)のファミリを構築できますか? 前もって感謝します。

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