コンピュータサイエンス

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

3
複雑性理論で言語を使用する理由
私は計算理論に取り掛かり始めたばかりです。計算理論は、何を計算できるか、どれだけ速く、どれだけのメモリを使用して、どの計算モデルを使用するかを研究しています。 私はかなり基本的な質問がありますが、皆さんの何人かがその背後にある概念を理解するのを助けてくれることを本当に望んでいます: なぜすべてが言語の概念と定義(つまり、通常の言語と文脈自由言語)に集中しているのですか?そして、これらはアルゴリズムの複雑さとそれらを解決するための可能な計算モデルをどのように関連付けて説明しますか? 私はこれらの種類の関連する質問を読みます: /cstheory/14811/what-is-the-enlightenment-im-supposed-to-attain-after-studying-finite-automata /cstheory/8539/how-practical-is-automata-theory しかし、それらがなぜ重要であるか(私は理解しています)の実用的な正当化を提供しますが、複雑性理論がそれらに基づいている理由を理解するのに役立ちませんので、それでも私の疑問に対する答えはありません。

1
このアルゴリズムが最終的に終了することを証明する簡単な方法
導入と表記: (私の実験によれば)終了するように見える私のアルゴリズムの新しくてシンプルなバージョンがここにあります、そして今私はそれを証明したいと思います。 表記ましょを参照して、P次元データ点(ベクトル)。A、B、Cの3つのセットがあります。A | = n、| B | = m、| C | = l: A = { x i | 私は= 1 、。。、n } B = { x j | j = n + 1xi∈Rpxi∈Rpx_i \in \mathbb{R}^pppp|A|=n|A|=n|A| = n|B|=m|B|=m|B| = m|C|=l|C|=l|C| = lA={xi|i=1,..,n}A={xi|i=1,..,n}A = \{x_i | i = 1, .., …

9
精度を失わずに実数を表す
現在の浮動小数点(ANSI C float、double)では、実数の近似値を表すことができます。エラーなしで実数 を表す方法はありますか? ここに私が持っているアイデアがあります、それは完璧ではありません。 たとえば、1/3は0.33333333 ...(base 10)またはo.01010101 ...(base 2)ですが、0.1(base 3)でもあり ます。この「構造」を実装するのは良い考えです。 base, mantissa, exponent したがって、1/3は3 ^ -1になる可能性があります {[11] = base 3, [1.0] mantissa, [-1] exponent} 他のアイデアは?

2
言語がチューリング競争であることの明確で完全な証明?
HTML5 + CSSが完全なチューリングであることを「証明」することを目的とするWebサイトを見たことがあります。 SQLが完全なチューリングであることを「証明」することを目的とするWebサイトを見たことがあります。 チューリングコンプリートとは何を意味するのかを「説明」するつもりのウェブサイトをたくさん見ました。 足りる! 「この言語XYZは同じ計算能力を持つ計算機を記述することができます。チューリングマシンとして?」


2
ラムダ計算を研究に関連させるものは何ですか?
私は来年の秋にコンピュータサイエンスの学部課程を始めていますが、関数型プログラミングのコンテキストでのλ計算については本当に理解できません。私はこれを完全に誤解しているかもしれませんが、スタンフォード哲学百科事典のこの定義に基づくと、これは関数のもう1つの表記法です。 それは場合であることだけで、なぜそれが計算アルゴリズムの実行時に通常の関数表記上λ計算を使用するのが有利ですか?

3
場合、その証明
次のことを証明するために、本当にあなたの助けをお願いします。 場合、次にP = N Pを。NTime(n100)⊆DTime(n1000)NTime(n100)⊆DTime(n1000)\mathrm{NTime}(n^{100}) \subseteq \mathrm{DTime}(n^{1000})P=NPP=NP\mathrm{P}=\mathrm{NP} ここで、はすべての言語のクラスであり、O (n 100)の多項式時間で非決定性チューリングマシンによって決定でき、D T i m e(n 1000) はすべての言語のクラスです。これは、O (n 1000)の多項式時間で決定論的チューリングマシンによって決定できます。NTime(n100)NTime(n100)\mathrm{NTime}(n^{100})O(n100)O(n100)O(n^{100})DTime(n1000)DTime(n1000)\mathrm{DTime}(n^{1000})O(n1000)O(n1000)O(n^{1000}) ヘルプ/提案はありますか?

3
プログラム分析の開始
プログラム分析を始めるためのリソースを探しています。 私がこのトピックについて見つけた唯一の本は、ニールソンとニールソンの本です。 それ以外には、「プログラム分析」が章か何かに沿った「コンパイラ」本だけがあるようです。 人々は他のリソースを知っていますか?

3
範囲から描画されるエッジの重みに対するダイクストラのアルゴリズムを変更する
範囲からエッジの重みが描画された有向グラフがあるとします。ここで、は定数です。ダイクストラのアルゴリズムを使用して最短経路を見つけようとしている場合、アルゴリズム/データ構造を変更して、時間の複雑さを改善するにはどうすればよいですか?[1,…,K][1,…,K][1,\dots, K]KKKO(|V|+|E|)O(|V|+|E|)O(|V|+|E|)

1
RAMマシンによってT(n)で計算可能なブール関数がDTIME(T(n)^ 2)にあることを証明します
問題は、Arora-Barakの著書「Computational Complexity — Modern Approach:」の演習1.9 です。 RAMチューリングマシンを、ランダムアクセスメモリを持つチューリングマシンとして定義します。これを次のように形式化します。マシンには、すべての空白に初期化される無限配列Aがあります。次のようにこの配列にアクセスします。マシンのワークテープの1つがアドレステープとして指定されています。また、マシンには、RとWで示される2つの特別なアルファベット記号と、q_accessで示される追加の状態があります。マシンがq_accessに入るときは常に、そのアドレステープに 'i'R(' i 'はiのバイナリ表現を表す)が含まれている場合、値A [i]がRシンボルの隣のセルに書き込まれます。そのテープに 'i'Wa(aはマシンのアルファベットの記号)が含まれている場合、A [i]は値aに設定されます。 ブール関数がRAM Tによって時間T (n )(ある時間構成可能なTの場合)内で計算可能である場合、はD T I M E(T (n )2)にあることを示します。fffT(n)T(n)T(n)TTTDTIME(T(n)2)DTIME(T(n)2)\mathrm{DTIME}(T(n)^2) (アドレス値)追加のテープ記録のペアを使用して、自明な解は、であることが判明そのテープは、大きさのものとすることができるので、O (T (N )2)とO (T (n ))ペア、各ペアのアドレスはサイズO (T (n ))にすることができます。DTIME(T(n)3)DTIME(T(n)3)\mathrm{DTIME}(T(n)^3)O(T(n)2)O(T(n)2)O(T(n)^2)O(T(n))O(T(n))O(T(n))O(T(n))O(T(n))O(T(n))


3
ポンツーンで島を接続することはNP完全ですか?
私の心には問題があります。NPCの問題だと思いますが、それを証明する方法がわかりません。 ここに問題があります: 非常に大きな湖にはk個の島があり、 扇形のポンツーンはn個あります。これらのポンツーンは同じサイズですが、最初の方向が異なり、湖の元の位置が異なります。ポンツーンはその重心を中心に自由に回転でき、回転に関連するコストはかかりません。 次に、これらのポンツーンを移動して、湖のすべての島を接続できるようにする必要があります。私たちはポンツーンの数がすべての島を結ぶのに十分であることを保証できます。 【ご注意】ポンツーンは再利用できません!! タスクは、すべての島を接続するために、移動するポンツーンの最小合計距離を持つ解を見つけることです。1つのポンツーンの移動距離は、重心の元の位置とその展開位置との間の距離として計算できます。 分かりやすくするために、こんな図を描いてみました。A、B、Cの3つの島があるとします。これらは湖のどこかにあります。そして、私はいくつかの扇形のパントンを持っています。これで解決策は、図の下部に示されているA、B、Cを接続するための最小移動距離の合計を見つけることです。問題の理解に役立つことを願っています。:) 問題はNPCの問題のようですが、それを証明できるかわかりません。誰もがこれを手伝ってくれる?

2
最適な近視迷路ソルバー
私はGoogle BlockyのMazeデモをいじり回していましたが、迷路を解決したい場合は左手を壁に向けるという古いルールを思い出しました。これは、単純な接続の迷路で機能し、有限変換器で実装できます。 私たちのロボットを、以下のアクションとオブザーバブルを備えたトランスデューサーで表現してみましょう: アクション:前進()、左折(←)、右折(→)↑↑\uparrow←←\leftarrow→→\rightarrow 観測可能:前方の壁()、前方の壁なし(⊤)⊥⊥\bot⊤⊤\top 次に、左側の迷路ソルバーを次のように構築できます(私の怠惰な描画を許してください)。 BBB AAA BBB BBB 私の2つの質問: 上に描かれたものよりも優れた有限オートマトンはありますか?確率的トランスデューサを許可するとどうなりますか? 必ずしも単純に接続されていない迷路を解くための有限オートマトンはありますか?

3
ランダウ用語の和の再訪
私は以前にランダウ項の合計について(シード)質問をしました。算術における漸近表記を乱用することの危険性を測定しようとして、混合成功しました。 さて、ここで私たちの再発の達人JeffEは本質的にこれを行います: ∑i=1nΘ(1i)=Θ(Hn)∑i=1nΘ(1i)=Θ(Hn)\qquad \displaystyle \sum_{i=1}^n \Theta\left(\frac{1}{i}\right) = \Theta(H_n) 最終結果は正しいですが、これは間違っていると思います。どうして?暗黙の定数(上限のみ)の存在をすべて追加すると、 。∑i=1nci⋅1i≤c⋅Hn∑i=1nci⋅1i≤c⋅Hn\qquad \displaystyle \sum_{i=1}^n c_i \cdot \frac{1}{i} \leq c \cdot H_n 今、どのように計算を行うからC 1、... 、C nは?答えは、私たちは不可能だと私は信じています。cはすべてのnにバインドする必要がありますが、nが大きくなるにつれてc iが増えます。それらについては何も知りません。C 私は非常によくに依存してもよいI有限:我々はバウンド負いかねますので、cが存在しない場合があります。cccc1,…,cnc1,…,cnc_1, \dots, c_ncccnnn cicic_innncicic_iiiiccc さらに、左側にある変数が無限大になるこの微妙な問題がありますまたはn?どちらも?場合のn(互換性のため)、の意味するものであるΘ (1 /私が)ことを知って、1 ≤ I ≤ nは?Θ (1 )を意味するだけではありませんか?もしそうなら、合計をΘ (n )より上に制限することはできません。iiinnnnnnΘ(1/i)Θ(1/i)\Theta(1/i)1≤i≤n1≤i≤n1 \leq i \leq nΘ(1)Θ(1)\Theta(1)Θ(n)Θ(n)\Theta(n) それで、それはどこに私たちを残すのでしょうか?それは露骨な間違いですか?微妙なもの?それとも、表記のいつもの乱用であり、我々は見てはならないコンテキストのうち、このような兆し?ランダウ項の(特定の)合計を評価するための(厳密な)正しいルールを作成できますか?=== 主な質問は:は何ですか?我々は(それはそれとしては、一定の考慮した場合である和の範囲内で)我々は簡単に反例を構築することができます。一定でないと、どう読むかわかりません。iii

1
リテラルが1回しか出現できない3SATの制約バージョンが多項式時間で解けることを証明するにはどうすればよいですか?
私は課題(「アルゴリズム -S . Dasgupta、CH Papadimitriou、およびUV Vaziraniによる第8章、問題8.6a」から引用)を作成しようとしていますが、それを言い換えています。 3SATは、各リテラルが最大2回出現する数式に制限されている場合でもNP完全のままであることを考えると、各リテラルが最大1回出現する場合、問題は多項式時間で解決可能であることを示します。 私は条項を複数のグループに分けることでこれを解決しようとしました: 他の条項と共通の変数を持たない条項 共通する変数が1つだけの句 2つの変数が共通する句 3つの変数すべてに共通する句 私の推論は、そのようなグループの#が有限であるというリテラルに沿って試行されました(リテラルが2回以上存在しないという制限が課せられたため)、最初に最も制限されたグループ(グループ4)を満たしてから、制限の少ないグループ(3、2、次に1)になりますが、これは、各リテラルが出現する可能性がある3SATの制限されたバージョンの場合とあまり変わらないので、どこにも行き着くわけではないことに気付きましたNP完全であることが証明されている最大2回。 ヒント/解決策をオンラインで検索してみましたが、入手できるのはこのリンクだけでした。ここで、示されたヒントでは十分な意味がありませんでした。 xixix_iCjCjC_jxixix_ixi¯¯¯¯¯xi¯\overline{x_i}CkCkC_kCj∨Ck¯¯¯¯¯¯Cj∨Ck¯C_j \lor \overline{C_k} CjCjC_jCkCkC_kCj∨Ck¯¯¯¯¯¯Cj∨Ck¯C_j \lor \overline{C_k}Cj∨Ck¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯Cj∨Ck¯\overline{C_j \lor C_k} ヒントを解読するか、私が探求できるパスを提供することの助けがあれば、本当に感謝しています。

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