コンピュータサイエンス

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


2
問題がNP完全である可能性があるかどうかを知るための経験則
この質問はStackOverflowに関するコメントに触発されました。 Garey Johnsonの本や他の多くのNP完全問題を知っていることは別として、問題がNP完全な問題のように見えるかどうかを知るための経験則はありますか? 厳密なものを探しているのではなく、ほとんどの場合に機能するものを探しています。 もちろん、問題がNP完全であること、またはNP完全問題のわずかな変形であることを証明する必要があるたびに。しかし、証明に急いで行く前に、証明の肯定的な結果に一定の自信を持つことは素晴らしいことです。

2
言語がコンテキストフリーであることを証明する方法は?
あります多くの技術言語であることを証明するためではない文脈自由は、しかし、どのように私は言語があることを証明んです文脈自由? これを証明するためのテクニックは何ですか?明らかに、1つの方法は、言語の文脈自由文法を示すことです。特定の言語の文脈自由文法を見つけるための体系的な手法はありますか? 通常の言語では、そこにある 体系的な方法正規文法/有限状態オートマトンを導出するには:例えば、マイヒル-ネローデの定理は、1つの方法を提供します。コンテキストフリー言語に対応する技術はありますか? ここでの私の動機は、(願わくば)与えられた言語が文脈自由であることを証明しようとするとき、しばしば役立つテクニックのリストを含む参照質問を構築することです。この特別なケースである多くの質問がここにあるので、この種の問題に直面したときに使用できる一般的なアプローチまたは一般的なテクニックを文書化できればいいでしょう。

1
型付きのSKI計算はありますか?
私たちのほとんどは、組み合わせ論理とラムダ計算の間の対応を知っています。しかし、単純に型付けされたラムダ計算に対応する「型付きコンビネーター」に相当するものを見たことはありません(おそらく十分に深く見ていないかもしれません)。そのようなものは存在しますか?それに関する情報はどこにありますか?

4
型と種類の違いは何ですか?
私はプログラミング言語のHaskellを学んでおり、a typeとaの違いが何であるかについて頭を包み込もうとしてkindいます。 私が理解しているように、a kind is a type of type。例えば、a ford is a type of carそしてa car is a kind of vehicle。 これはこれについて考える良い方法ですか? 私の脳は、現在配線されている方法で、そのためford is a **type** of car、しかしまたcar is a **type** of vehicle一方で、同時にaのcar is a **kind** of vehicle。すなわち用語typeとkind交換可能です。 誰もこれに光を当てることができますか?

5
再帰を使用する場合
ループではなく再帰を使用する(比較的)基本的な(大学1年生のCSレベルの学生と考えてください)インスタンスはいつですか?

3
ハミング距離が2以上の等しい長さの単語のペアの言語はコンテキストフリーですか?
次の言語コンテキストは無料ですか? L={uxvy∣u,v,x,y∈{0,1}+,|u|=|v|,u≠v,|x|=|y|,x≠y}L={uxvy∣u,v,x,y∈{0,1}+,|u|=|v|,u≠v,|x|=|y|,x≠y}L = \{ uxvy \mid u,v,x,y \in \{ 0,1 \}^+, |u| = |v|, u \neq v, |x| = |y|, x \neq y\} sdcvvcで指摘されているように、この言語の単語は、ハミング距離が2以上の同じ長さの2つの単語の連結として説明することもできます。 私はそれが文脈自由ではないと思いますが、私はそれを証明するのに苦労しています。この言語を通常の言語(たとえば、など)と交差させてから 、ポンピング補題および\または準同型を使用しようとしましたが、特徴付けて記述するには複雑すぎる言語が常に得られますダウン。 0∗1∗0∗1∗ 0∗1∗0∗1∗ \ 0^*1^*0^*1^*

6
GCDにとって最も効率的なものは何ですか?
ユークリッドのアルゴリズムは、正の整数のリストのGCD(最大公約数)を取得するための最適なアルゴリズムであることを知っています。しかし実際には、このアルゴリズムをさまざまな方法でコーディングできます。(私の場合、Javaを使用することにしましたが、C / C ++が別のオプションである可能性があります)。 プログラムで可能な限り最も効率的なコードを使用する必要があります。 再帰モードでは、次のように記述できます。 static long gcd (long a, long b){ a = Math.abs(a); b = Math.abs(b); return (b==0) ? a : gcd(b, a%b); } 反復モードでは、次のようになります。 static long gcd (long a, long b) { long r, i; while(b!=0){ r = a % b; a = b; b = …

10
「nの値が小さい場合、O(n)はあたかもO(1)であるかのように扱うことができます」
私は、nの十分に小さい値に対して、O(n)がO(1)であるかのように考えられたり、扱われたりすることを何度か聞いたことがあります。 例: そうする動機は、O(1)は常にO(lg n)よりも優れており、常にO(n)よりも優れているという誤った考えに基づいています。操作の漸近的順序は、現実的な条件下で問題のサイズが実際に大きくなる場合にのみ関係します。nが小さいままであれば、すべての問題はO(1)です! 十分に小さいのは何ですか?10?100?1,000?どの時点で「これをもはや無料の操作のように扱うことはできません」と言いますか?経験則はありますか? これはドメイン固有またはケース固有の可能性があるように見えますが、これについて考える方法に関する一般的な経験則はありますか?

2
意思決定問題の最適化バージョン
この質問は、Computer Science Stack Exchangeで回答できるため、Theoretical Computer Science Stack Exchangeから移行されました。 7年前に移行され ました。 各最適化/検索問題には同等の決定問題があることが知られています。たとえば、最短経路問題 最適化/検索バージョン: 無向無加重グラフと2つの頂点与えられた場合、と間の最短経路を見つけます。G=(V,E)G=(V,E)G = (V, E)v,u∈Vv,u∈Vv,u\in Vvvvuuu 決定版: 無向無加重グラフ、2つの頂点、および非負の整数与えられた場合、長さが最大でであると間にパスがありますか?G=(V,E)G=(V,E)G = (V, E)v,u∈Vv,u∈Vv,u\in VkkkGGGuuuvvvkkk 一般に、「 stを見つけてください!」「x \ in X st f(x)\ leq kがありますか?」になります。x∗∈Xx∗∈Xx^*\in XX ∈ X F (X )≤ Kf(x∗)=min{f(x)∣x∈X}f(x∗)=min{f(x)∣x∈X}f(x^*) = \min\{f(x)\mid x\in X\}x∈Xx∈Xx\in Xf(x)≤kf(x)≤kf(x) \leq k しかし、その逆も真です。つまり、すべての決定問題に対して同等の最適化問題がありますか?そうでない場合、同等の最適化問題がない決定問題の例は何ですか?

2
DominosaはNPハードですか?
この質問は、Computer Science Stack Exchangeで回答できるため、Mathematics Stack Exchangeから移行されました。 6年前に移行され ました。 Dominosaは比較的新しいパズルゲームです。(n+1)×(n+2)(n+1)×(n+2)(n+1)\times(n+2) グリッドで再生されます。ゲームが始まる前に、ドミノの骨 (0,0),(0,1),…,(n,n)(0,0),(0,1),…,(n,n)\left(0,0\right),\left(0,1\right),\ldots,\left(n,n\right) (完璧なタイリングを構成する)グリッド上に配置されています。次のステップでは、ドミノのボーンが非表示になり、数字のみが表示されます。ゲームの目的は、ドミノの骨の元の配置を回復することです。ここでゲームをプレイできます:http://www.puzzle-dominosa.com/: ルール: ルールは簡単です。グリッド上のすべてのドミノの場所を見つける必要があります。ドミノは数字のペアです。各ペアは1つしか持てません。 パズルの比較的小さな部分を解決する多項式アルゴリズムがいくつかあります。また、典型的なDominosaグリッドには少なくとも2n2+o(n)2n2+o(n)2^{\frac{n}{2}+o\left(n\right)}ソリューション。 DominosaはNPハードですか?

6
チューリングマシンへの入力は無限の長さにできますか?
アルファベットのみを考慮すると、チューリングマシンへの入力として指定できる文字列は、セットです。しかし、入力が無限のバイナリ文字列であることは理にかなっていますか?たとえば、チューリングマシンが0で始まるすべての文字列を受け入れる場合、無限ゼロのバイナリストリングもチューリングマシンが受け入れる言語に属しますか?Σ *Σ = { 0 、1 }Σ={0、1}\Sigma = \{0,1\}Σ∗Σ∗\Sigma^{*}


1
平衡二分木の2つの定義
バランスの取れたバイナリツリーの2つの定義を見てきましたが、それらは私には異なっています。 左のサブツリーの内部ノードの数と右のサブツリーの内部ノードの数が最大で1だけ異なるとノードが保持する場合、二分木はバランスが取れています。 任意の2つの葉の深さの差が最大で1である場合、二分木はバランスが取れています。 defを満たすすべてのツリーを実行します。1もdefを満たします。2?他の方法はどうですか?

4
有限状態オートマトンで後方参照、先読み、および後読みをシミュレートする方法は?
この質問は、Computer Science Stack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 単純な正規表現レクサーとパーサーを作成して、正規表現を取得し、その解析ツリーを生成しました。この解析ツリーから非決定性の有限状態オートマトンを作成することは、基本的な正規表現では比較的簡単です。ただし、後方参照、先読み、および後読みをシミュレートする方法について頭を悩ますことはできません。 私がシミュレートA先読みすることを私は理解紫龍の本で読んだことから、正規表現のどこ一致するものが正規表現の一致が続いている場合に限り、一致している、あなたは非決定性有限を作成/がεに置き換えられる状態オートマトン。同じことをする決定性有限状態オートマトンを作成することは可能ですか?r/sr/sr/srrrsss///εε\varepsilon ネガティブな先読みと後読みのシミュレーションはどうですか?これを行う方法を詳細に説明しているリソースにリンクしていただければ幸いです。

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