コンピュータサイエンス

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

4
ニューラルネットワーク、深層学習システム、深層信念ネットワークの違いは何ですか?
ニューラルネットワーク、深層学習システム、深層信念ネットワークの違いは何ですか? 私が思い出したように、基本的なニューラルネットワークは3層のようなものであり、Deep Belief Systemsが互いに積み重ねられたニューラルネットワークであると説明しました。 最近、ディープラーニングシステムについて聞いたことがありませんが、Deep Belief Systemの同義語だと強く思います。誰でもこれを確認できますか?

4
プロット検査ヒューリスティックをだます方法は?
上ここで、デイブ・クラークは、漸近的な成長を比較するために、あなたが手で関数をプロットすべきであると提案しました。理論的に傾倒したコンピューター科学者として、私はこのブードゥーをプロットとして証明しません。考え直して、これは非常に有用なアプローチであり、時には十分に活用されていないことにも同意する必要があります。プロットは、最初のアイデアを得るための効率的な方法であり、時にはそれだけで十分です。 TCSを教えるとき、「常に機能するXだけを実行できる場合、正式な証明は何に必要ですか?」と尋ねる学生が常にいます。誤fallを指摘して説明するのは、彼の先生次第です。math.SEで最終的にフェールオーバーする見かけのパターンの素晴らしい例のセットがありますが、それらはかなり数学的なシナリオです。 それでは、どのようにプロット検査ヒューリスティックをだますのでしょうか?違いを見分けるのが難しい場合がいくつかあります。例えば [ ソース ] 推測してから、実際の関数のソースを確認してください。しかし、それらは私が期待するほど壮観ではありません。特に初心者にとっても、実際の関係は機能だけから簡単に見つけることができるからです。 関数定義と合理的なプロット検査から真実が明らかではない(相対的な)漸近的成長の例はありnnnますか?数学関数と実際のデータセット(特定のアルゴリズムの実行時間など)はどちらも歓迎です。ただし、区分的に定義された関数は控えてください。

1
EPALを認識する非一般的なCFG解析アルゴリズムはありますか?
EPALはパリンドロームの言語でもあり、次の明確なコンテキストフリーの文法によって生成される言語として定義されています。 S→aaS→aaS \rightarrow a a S→bbS→bbS \rightarrow b b S→aSaS→aSaS \rightarrow a S a S→bSbS→bSbS \rightarrow b S b EPALは、多くの解析アルゴリズムの「悩みの種」です。言語を記述する文法を解析できる明確なCFGの解析アルゴリズムにはまだ出会っていません。特定のパーサーでは解析できない明確なCFGがあることを示すためによく使用されます。これは私の質問に影響を与えました: EPALで動作する明確なCFGのみを受け入れる解析アルゴリズムはありますか? もちろん、言語を線形時間で解析するグラマー用のアドホック2パスパーサーを設計できます。EPALを念頭に置いて特別に設計されていない解析メソッドに興味があります。

3
型システムの分類(強い/弱い、動的/静的)
要するに、型システムは学術的文脈でどのように分類されるのか。特に、異なる種類の型システム間の区別を明確にする信頼できるソースをどこで見つけることができますか? ある意味で、この質問の難しさは、答えを見つけることができないということではなく、むしろあまりにも多く見つけることができ、どれも正しいと際立っていないことです。背景は、Haskell wikiのタイピングに関する記事を改善しようとしていることです。現在、次の区別を主張しています: 型なし:言語には型の概念がない、または型付きの観点から:言語には型が1つだけあります。アセンブリ言語のタイプは「ビットパターン」のみ、RexxとTkのタイプは「テキスト」のみ、コアMatLabのタイプは「複素数値行列」のみです。 弱い型付け:識別型はほとんどなく、いくつかの型の同義語もあります。たとえば、Cはブール値、整数、文字、ビットセット、および列挙に整数を使用します。 強い型付け:Ada、Wirthian言語(Pascal、Modula-2)、Eiffelのようなきめ細かい型のセット これは、私の個人的な認識とはまったく反対です。 弱い型付け:オブジェクトには型がありますが、コンテキストが要求すると、暗黙的に他の型に変換されます。たとえば、Perl、PHP、およびJavaScriptはすべて、"1"、多かれ少なかれ可能なコンテキストで使用できる1です。 強い型付け:オブジェクトには型があり、暗黙的な変換はありません(ただし、シミュレートするためにオーバーロードが使用される場合があります)ので、間違ったコンテキストでオブジェクトを使用するとエラーになります。Pythonでは、文字列または浮動小数点で配列のインデックスを作成すると、TypeError例外がスローされます。Haskellでは、コンパイル時に失敗します。 私は、私よりもこの分野で経験のある他の人々にこのことについて意見を求めました。 弱いタイピング:データに対する無効な操作の実行は制御または拒否されませんが、無効/任意の結果を生成するだけです。 厳密な型指定:データの操作は、データが操作と互換性がある場合にのみ許可されます。 私が理解するように、最初と最後の特性化はCを弱く型付けし、2番目はCを強く型付けしたと呼びます。最初と2番目は弱い型のPerlとPHPを呼び出し、3番目は強い型のPerlとPHPを呼び出します。3つすべてがPythonを厳密に型指定されていると説明します。 ほとんどの人は「まあ、コンセンサスはなく、用語の受け入れられた意味はない」と言うだろうと思う。それらの人々が間違っている場合、私はそれについて聞いてうれしいですが、彼らが正しい場合、どのようにか CSの研究者が説明し、タイプのシステムを比較しますか?問題の少ない用語を使用できますか? 関連する質問として、私は動的/静的な区別が「コンパイル時間」と「実行時間」の観点からしばしば与えられると感じます。言語がコンパイルされるかどうかはその言語の特性ではないので不満足だと思いますその実装として。動的タイピングと静的タイピングの純粋に意味論的な記述があるべきだと思います。「静的言語とは、すべての部分式を入力できるもの」の行に沿ったものです。この概念を明確にする考え、特に参考文献をいただければ幸いです。

5
P完全性と並列計算
私は最近、二相性をチェックするアルゴリズムについて読んでいて、問題がP-completeであることを読みました。さらに、これの結果は、この問題、または任意のP-complete問題が効率的な並列アルゴリズムを持つ可能性が低いことです。 この最後の声明の背後にある直感は何ですか?

6
チューリングの「ハルティング問題‍」を解決するアルゴリズム
この質問は、コンピューターサイエンススタック交換で回答できるため、理論的なコンピューターサイエンススタック交換から移行されました。 7年前に移行され ました。 「アランチューリングは、1936年に、考えられるすべてのプログラム入力ペアの停止問題を解決する一般的なアルゴリズムが存在できないことを証明しました。」 私はのために停止問題を解決するための一般的なアルゴリズムを見つけることができますいくつかの可能なプログラム入力ペアを? プログラミング言語(複数の言語)を見つけることができます。この言語のすべての種類のプログラムに対して、プログラムが終了するか永久に実行されるかを決定できますか?

1
この頂点サイクルカバー問題に効率的なアルゴリズムはありますか?
この質問は、Computer Science Stack Exchangeで回答できるため、Mathematics Stack Exchangeから移行されました。 3年前に移行され ました。 私は、有向グラフ最大頂点サイクルカバーを見つけるためのアルゴリズムを見つけようとしてきました。つまり、可能な限り多くのサイクルを持つすべての頂点を含む、互いに素なサイクルのセットです。ここでは個々の頂点が循環します)。最小の頂点サイクルカバーを見つける問題と、正確にサイクルの頂点サイクルカバーを見つける問題は、NP完全であることを知っています。しかし、最大のケースはどうですか?G kGGGGGGkkk 私はこの一般的な興味深い答えを見つけますが、私がこれを使用したいグラフは実際にはその構造によってかなり制約されています。 整数のリスト、要素あり、、要素を使用して、ソート後にを参照します。例として:L I S S I LLLLl私lil_iSSSs私sis_iLLL L = (1 、3 、2 、5 、0 、7 、4 、2 、6 、0 、8 、1 )S= (0 、0 、1 、1 、2 、2 、3 、4 、5 、6 、7 、8 )L=(1,3,2,5,0,7,4,2,6,0,8,1)S=(0,0,1,1,2,2,3,4,5,6,7,8) L = (1, 3, 2, …

1
システムクロックおよびCPUクロックとは何ですか。そしてその機能は何ですか?
本を読んでいると、次の段落に出会いました。 コンピューターのすべての操作を同期するために、システムクロック(マザーボードにある小さな水晶振動子)が使用されます。システムクロックは、他のすべてのコンピューターコンポーネントに定期的に信号を送信します。 そして別の段落: 今日の多くのパーソナルコンピューターには200 MHzで実行されるシステムクロックがあり、これらのシステムクロックと同期されるすべてのデバイス(CPUなど)は、システムクロック速度、またはシステムクロック速度の倍数または数分の1で実行されます。 誰でも親切に言うことができます: システムクロックの機能は何ですか?そして、最初の段落の「同期」とはどういう意味ですか? 「システムクロック」と「CPUクロック」に違いはありますか?はいの場合、CPUクロックの機能は何ですか?

1
kクリーク問題はNP完全ですか?
この質問は、コンピューターサイエンススタック交換で回答できるため、理論的なコンピューターサイエンススタック交換から移行されました。 7年前に移行され ました。 グラフ理論のクリーク問題に関するこのウィキペディアの記事では、グラフGでサイズKのクリークを見つける問題はNP完全であると最初に述べています。 クリークはコンピューターサイエンスでも研究されています。グラフに特定のサイズのクリークがあるかどうかを調べること(クリーク問題)はNP完全ですが、この困難な結果にもかかわらず、クリークを見つけるための多くのアルゴリズムが研究されています。 しかし、CSのClique問題に関するこの他のWikipediaの記事 では、固定サイズkの問題はPの問題であり、多項式時間でブルートフォースされる可能性があると述べています。 グラフGにk頂点クリークが含まれているかどうかをテストし、それが含むクリークを見つけるには、少なくともk個の頂点を持つ各サブグラフを調べて、クリークを形成するかどうかを確認します。このアルゴリズムには時間がかかりますO(n ^ kk ^ 2):チェックするO(n ^ k)サブグラフがあり、それぞれにGの存在をチェックする必要があるO(k ^ 2)エッジがあります。したがって、kが固定定数である場合は常に、多項式時間で問題を解決できます。ただし、kが問題への入力の一部である場合、時間は指数関数的です。 ここに足りないものはありますか?たぶん問題の文言に違いはありますか?そして、最後の文は何を意味しますか、「kが問題への入力の一部であるとき、しかし、時間は指数関数的です。」?kが問題への入力の一部であるのに、なぜ違いがあるのですか? 私の考えは、グラフGでサイズkのクリークを見つけるには、最初にGからノードのサイズkのサブセットを選択し、それらがすべて他のkノードに関連しているかどうかをテストすることです。時間。そして、サイズkのクリークができるまでこれを繰り返します。Gから選択できるkノードのセットの数はnです!/ k!*(nk)!.

2
Perl互換の正規表現はどの言語を認識しますか?
タイトルが示すように、私は先週末、Perl互換の正規表現に一致する言語のクラスについて思いを巡らせて、パターン内の任意のコードを実行できるマッチング演算子を除外しようとして数時間を費やしました。 あなたはPCREsが何であるかわからない場合は、お読みください。このとこれを。 問題は、インターネットで利用可能なリソースがコンテキストフリー言語でほとんど停止し、PCREがそれらよりも多く一致する可能性があることです(以下を参照)。しかし、この種のことに関する定理や論文をどこで見つけることができるのか、本当にわかりません。 特に、PCREは明らかに通常の言語のスーパーセットです(PCRE構文にはすべての通常の言語演算子があるため)。 任意のCFGをGreibachの標準形式にすることができます。これにより、左再帰が削除されます。私はこれを(?(DEFINE)...)グループによって使用して、文法を一致するサブルーチンに「翻訳」し、翻訳することによって左再帰でのチョークを回避することができると思います: 各制作の先頭にある非終端記号はサブルーチンになります (?<HEAD>...) 各プロダクションの本体はサブルーチンに入れられます。端末はそのまま残され、非端末はプロシージャ呼び出し(つまり(?&NONTERMINAL))になります。 headと同じ非終端記号を持つすべてのプロダクションは、|演算子を使用してORで結合されます((?:...)必要に応じて、との追加のグループ化) パターンは、(?(DEFINE)...)すべての「翻訳された」プロダクションを含むグループになり、文字列全体に一致する開始シンボルのプロシージャの呼び出し、つまり^(?(DEFINE)...)(?&START)$ これは、すべてのCFGに対処する必要があります。したがって、PCREは任意のCFLと一致できる必要があります。 さらにあります:単純な言語 つまり、文字列の言語を二回繰り返し。この言語はCFLではありません-CFLのポンピング補題は失敗します。(ペイ特に注意することを | VのX ワット| ≤ pが 保持しなければならない、ので、あなただけの始まりまたは2つの繰り返し文字列の端をポンプすることはできません。)L={ww|w∈Λ∗}L={ww|w∈Λ∗}L = \{ ww | w \in \Lambda^* \} |vxw|≤p|vxw|≤p |vxw| \leq p ただし、この言語はPCRE:によって簡単に一致します^(.*)\1$。したがって、厳密にCFLを上回っています。 どれくらいですか?さて、私が言ったように、私にはわからない。CSLやその間の他のすべてのクラスに関するリソースを見つけることができませんでした。これについて議論したい専門家はいますか? 補遺: PCRE構文のどのサブセットを許可する必要があるかを正確に指定するように求められました。投稿の冒頭で書いたように、パターン内の任意のコードの実行を許可する演算子(など)を除外したかったの??{}です。 引数のために、pcresyntax(3)のマニュアルページで定義されている構文に固執できると思います。これは、Perl 5.10-5.12が提供するものの合理的なサブセットで、コールアウト(パターン内にないため)を除きます。バックトラッキング制御動詞を追加または削除しても、認識できる言語が変わるかどうかはわかりません。もしそうなら、どのクラスを取得するか、取得しないかを把握しておくとよいでしょう。

2
スパニングツリー問題のNP完全性証明
講師からの質問にヒントを探しています。 したがって、この決定問題はことがわかりました。NP-completeNP-complete\sf{NP\text{-}complete} グラフには、正確なセットを葉として含むスパニングツリーがあります。この決定問題へのハミルトニアン経路を減らすことで、ことを証明できることがわかりました。GGGGGGS={x1,x2,…,xn}S={x1,x2,…,xn}S=\{x_1, x_2,\ldots, x_n\}NP-completeNP-complete\sf{NP\text{-}complete} しかし、私のインストラクターもクラスで私たちに尋ねました: それはまた、だろうではなく「の正確なセットの場合」、我々が行いますNP-completeNP-complete\sf{NP\text{-}complete}SSS 「セット全体とその他のリーフを含む」または「サブセット」SSSSSS 「Sのサブセット」はになると思いますが、それを証明することはできません。どの問題をこれに還元できるかわかりません。「のセットを含める...」については、多項式時間で解決できると思います。NP-completeNP-complete\sf{NP\text{-}complete}SSS

3
基数ソート
基数ソートでは、最初に最下位桁でソートし、次に2番目に下位桁でソートします。その後、ソート済みリストになります。 数字のリストがある場合、これらの数字を区別するためにビットが必要です。したがって、作成する基数ソートパスの数はなり。各パスは時間かかるため、基数ソートの実行時間はnnnログnlog⁡n\log nログnlog⁡n\log nO (n )O(n)O(n)O (n ログn )O(nlog⁡n)O(n \log n) しかし、線形時間アルゴリズムであることはよく知られています。どうして?

1
漸近的な時間の複雑さを使用した最初のコンピューターサイエンスペーパーは何ですか?
ビッグOがコンピューターサイエンスで最初に使用されたのはいつで、いつ標準になりましたか?このウィキペディアのページには、クヌース、ビッグオミクロン、ビッグオメガ、ビッグシータ、SIGACT 1976年4〜6月が引用されていますが、その論文の冒頭には 私たちのほとんどは、表記の使用の考え方に慣れて頂いております その大きさは定数倍で上位囲まれているすべての機能を表すために全ての大型のため、。O(f(n))O(f(n))O(f(n))f(n)f(n)f(n)nnn この引用は、アイデアと表記法がすでに一般的に使用されていたことを示しています。 ウィキペディアのページには、1800年代後半から1900年代初頭の数学の論文も引用されていますが、それは質問にまったく答えていません。特に、当時(1800年代後半ではなく60年代と70年代)の研究者が、漸近解析が最初に使用されたとき、壁時計時間がより良い測定基準であると言った人がいると言うのを聞いたことがあります。しかし、私が話をした誰も、このように押し戻された特定の論文を引用することはできず、これらの物語を確認または否定できる証拠を見つけたいと思います。

1
チューリング完全性にはdo-whileループで十分ですか?
命令型プログラミング言語では、言語をチューリング完全にするための制御フロー構造としてwhile-doループで十分であることを知っています(制御フローに関する限り-もちろん、無制限のメモリと特定の演算子も必要です...) 。私の質問の要点は、do-whileループはwhile-doループと同じ計算能力を持っていますか?言い換えれば、命令を完全にスキップすることが不可能な場合、言語をチューリング完全にすることができます。 ここでのセマンティクスの一部は少し曖昧かもしれないことを理解しているので、具体的な例で実際の質問を言いましょう。 Brainfuck(BF)は、Turingターピットであり、唯一の制御フローはwhile-doループです[...](Brainfuckに慣れていない場合に備えて、質問の下部に完全な言語仕様があります)。さんはどこ、*新しい言語BFを定義してみましょう,.+-<>BFと同じ意味を持っていますが、代わりに[]私たちが持ってい{}たdo-whileループを示しています。つまり、BFとの唯一の違いは、すべてのループが少なくとも1回実行されてから、さらに反復がスキップされることです。 BF *チューリング完全ですか?もしそうなら、BFをBF *に変換する方法に興味があります。そうでない場合、どうすればそれを証明できますか? 私自身のいくつかの観察: すべてのBFプログラムをBF *に翻訳できるわけではありません。たとえば、BF *で値を読み取ったり印刷したりするプログラムを書くことは不可能です。プログラムが1つ以上の値を印刷する可能性がある場合、常に少なくとも1つを印刷します。ただし、BF *に変換できるBFのチューリング完全サブセットがある場合があります。 [f](最初の反復の効果をキャンセルしようとして)に(最初の反復の効果をキャンセルするために)単純に変換することはできません(a fのみで構成されるBrainfuckプログラム)。すべての計算可能な関数に計算可能な逆関数とb)がある場合でも、ループが必ずしも少ないとは限らないため、このステップを再帰的に適用しても、最初に終了することは保証されません。+-[]<>f-1{f}f-1f Brainfuck言語の簡単な概要を次に示します。Brainfuckは、各セルに最初はゼロのバイト値が含まれる無限テープで動作します。オーバーフローはラップアラウンドするため、255をインクリメントすると0になり、逆も同様です。言語は8つの命令で構成されています。 + Increment the current cell. - Decrement the current cell. > Move tape head to the right. < Move tape head to the left. , Input a character from STDIN into the current cell. . …

11
なぜですか?
これを証明するルールがあるかどうか知りたいです。たとえば、分配法則を使用すると、のみが得られます。(A ∨ A )∧ (A ∨ ¬ B )(A∨A)∧(A∨¬B)(A \lor A) \land (A \lor \neg B)

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