コンピュータサイエンス

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

1
時間通りに動くチューリングマシンはありますか
時間で実行される(確定的、シングルテープ)チューリングマシンは、通常の言語を決定することが知られています(たとえば、このリンクを参照)。したがって、時間で実行される同等のチューリングマシンが存在します。つまり、o(nlogn)o(nlog⁡n)o(n\log n)O(n)O(n)O(n)t(n)=o(nlogn)t(n)=o(nlog⁡n)t(n)=o(n\log n)場合DTIME(t(n))∖DTIME(n)=∅.DTIME(t(n))∖DTIME(n)=∅.\mathsf{DTIME}\left(t\left(n\right)\right)\backslash\mathsf{DTIME}\left(n\right)=\emptyset. 元のチューリングマシンがまだ間に合わなかった例があるのだろうかと思っていました O(n)O(n)O(n)。 まとめると、時間通りに動くチューリングマシンはありますか o(nlogn)o(nlog⁡n)o(n\log n)、 だがしかし O(n)O(n)O(n)?

2
範囲内の文字列内の異なる部分文字列の数
文字列の長さが、LCP配列を使用すると、個別の部分文字列の数を線形時間で見つけることができます。文字列全体で一意の部分文字列の数を求める代わりに、インデックスを含むクエリ、が、文字列指定されたクエリ範囲内の異なる部分文字列の数を求めます。。SSSnnnSSSqqq(i,j)(i,j)(i,j)0≤i≤j&lt;n0≤i≤j&lt;n0 \le i \le j < nS[i..j]S[i..j]S[i..j] 私のアプローチは、LCP配列の線形時間構築を各クエリに適用することです。複雑さを与えます。クエリの数はオーダーに増加する可能性があるため、すべてのクエリに応答するとます。O(|q|n)O(|q|n)O(|q|n)nnnO(n2)O(n2)O(n^2) すべてのクエリの線形時間よりも、それを行うことができますか? 一般に、サフィックス配列、サフィックスツリー、lcp配列がすでにある文字列の1つのプロセスサブ文字列がそれらの構造に関連しなくなった場合、もう一度最初から構築する必要がありますか?

1
ビザンチン将軍問題の不可能性
ウィキ:https : //en.wikipedia.org/wiki/Byzantine_fault_tolerance 論文「障害の存在下でのリーチング合意」では、M。Pease et al。問題を解決するための(ある種の)プロトコルがないことを証明しました。ここで、は将軍の数を表し、は裏切り者の数を表します。彼らの証明の鍵は、この場合の不可能性です。しかし、彼らが使用した方法は、情報理論的な証明のようには見えません。したがって、彼らの結果は「任意のプロトコルの不可能性」ではないようです。n≤3mn≤3mn \leq 3mnnnmmmn=3,m=1n=3,m=1n=3,m=1 私の質問:場合の情報理論ベースの証明はありますか?より正式には、「ビザンチンの一般的な問題を解決するプロトコルは存在しない」という命題の証明または反例はありますか?n=3,m=1n=3,m=1n=3,m=1n=3,m=1n=3,m=1n=3,m=1 注:L. Lamportらによって提案された典型的なプロトコル(任意の)。裏切り者が無限の計算リソースを持っていると仮定すると、情報理論の意味で完全に信頼できるものではない署名メカニズムが必要になるため、これは適切な反例ではありません。SM(m)SM(m)\mathrm{SM}(m)n,mn,mn,m

1
Hoareロジック-ループの正確性
次の形式のwhileループについて考えてみます。 while (C) {S}while (C) {S}\texttt{while (C) {S}} 条件とループの本体。CC\texttt{C}SS\texttt{S} ましょうと、それぞれ不変とこのループの変異体です。whileループの完全な正確さに関する規則は、私の教科書で次のように示されています。II\texttt{I}VV\texttt{V} もしI⇒V≥0I⇒V≥0\texttt{I} \Rightarrow \texttt{V} \geq 0 そして、[I∧C∧V=v0]S[I∧V&lt;v0][I∧C∧V=v0]S[I∧V&lt;v0][\texttt{I} \land \texttt{C} \land \texttt{V} = v_0] \,\texttt{S} \, [\texttt{I} \land \texttt{V} < v_0] 次に[I]while (C) {S}[I∧¬C][I]while (C) {S}[I∧¬C][\texttt{I}] \, \texttt{while (C) {S}} \, [\texttt{I} \land \neg \texttt{C}] 私が理解していると思うことから、ループが終了するためには、バリアントが厳密に減少しなければならず、それもゼロによって制限されている必要があります。しかし、それを数学的に翻訳すると、教科書とは異なる命題が得られます。 VV\texttt{V} [V≥0∧V=v0]S[V≥0∧V&lt;v0][V≥0∧V=v0]S[V≥0∧V&lt;v0][\texttt{V} \geq 0 \land \texttt{V} …

1
作業証明は確率論的にチェック可能ですか?
私はしばらく潜んでいます。これは私の最初の投稿です。質問の形式や形式が適切でない場合は、申し訳ありません。この質問は、姉妹サイトからの別の質問のアイデアから生まれました。 質問 ブロックチェーンの性質上、公に同意できる多数のコインフリップが生成される可能性があります。つまり、以前のブロックのハッシュは、ネットワークによってからランダムに引き出されることに同意する場合があります。{ 0 、1 }{0,1}\{0,1\} したがって、誰かがブロックチェーンのビザンチン将軍の問題の解決策を作成しようとしましたが、作業証明はまたはでの決定問題であり、証明は、以前のブロックのハッシュをパブリックコインとして使用して確率論的にチェックされます。反転?NEXPNEXPNEXPPSPACEPSPACEPSPACE 動機 たとえば、問題の目撃者を見つけることによって、暗号通貨の作業証明を「より良く」しようとするオンラインでの議論を見てきました。 NPNPNP 問題の目撃者を見つけた証明者は、彼女が仕事をしたことを証明するために目撃者を公に発表することができます。 NPNPNP 一般的な静的な問題のプールがあった場合、たとえば地球上で最大のの都市のサブセットのと言った、ブロックを保護するために証人を発表すると、誰もが同じ証人を使用して作業を別のチェーンにアタッチでき、チェーンを固定しないでください。NPNPNPTSPsTSPsTSPsnnniii 検証が知識ゼロの証明である場合、世界(証明者は別として)は、証人が実際に何であったかを知る必要はありません。 ただし、他の人が指摘しているように、暗号通貨は信頼できないピアツーピアシステムであるため、そのような証人のゼロ知識を維持しようとすることは、信頼できないピアツーピアシステムでは困難な場合があります。 たとえば、証明者がいずれかの解決策を見つけた場合 TSPTSPTSP 静的プールからの問題、および ZKPZKPZKP証拠として、価格が正しければ、彼女は依然として証人を詐欺師に売ろうとするかもしれません。その詐欺師は、別の詐欺チェーンに作品を添付する可能性があります。 の証人 NPNPNP 問題は、証明の目的の1つであるブロックチェーンを保護しない可能性があります。 同様の提案 の静的プールから問題空間を変換する NPNPNP問題の動的プールへの問題が役立つ可能性があり、私は作業証明としてサブグラフ同型問題を動的に生成するという提案を見てきました。しかし、私が知る限り、上記の提案は証人を決定論的に検証します。 また、PCPを使用してアウトソーシングされた計算を検証しようとする試みも見ましたが、アウトソーシングされた作業が暗号通貨ブロックチェーンに接続されているとは思いません。たぶんその仕事は近づいています。 歴史 で[GMR85] 、著者は、対話型証明系を紹介します。で[GS86] 、著者らは、グラフnonisomorphismのパブリックコインプロトコルを示します。で[Sha91] 、著者は証明していますIP=PSPACEIP=PSPACEIP=PSPACE。 で[BFL91] 、筆者はあることを証明しますMIP=NEXPMIP=NEXPMIP=NEXP。で[BFLS91] 、作者はに正式な証明を変換するこれらのアイデアを拡張する構想透明な証明対数多項式時間でチェック可能。 で[AS92] 、著者は、数学的な文だけ読んで対数多項式時間で確認することができることを意味しているとして、上記の作品を特徴づけpoly(logn)poly(logん)poly(logn) ペアノ算術の定理の証明のビット、サイズの証明 nんn (それらはビットのサブ対数の数に減少し、同時に O(1)O(1)O(1) 神聖なPCP定理のクエリ)。 たとえば、[AS92]から引用して、彼らはステートメントを想定しています: {(T,1n):TisatheoremofPeanoarithmeticwithaproofofsize≤n}{(T、1ん):T私satheoreメートルofPeaんoar私thメートルet私cw私thaproofofs私ze≤ん}\{(T,1^n):T\:is\:a\:theorem\:of\:Peano\:arithmetic\:with\:a\:proof\:of\:size\:\leq n\} 言語として NPNPNP、ビットの対数以下の数で確率論的にチェックできる証人。 の間の簡単な関係を見つけることは決定できないことに注意してください |T||T||T|、定理の長さが証明され、 |π|=n|π|=ん|\pi|=n、証明のサイズ。単純な証明可能なステートメントには長い証明があるか、長い証明可能なステートメントには短い証明がある場合があります。 つまり、不完全性定理により、 …

2
明示的なアプリケーションまたはサブタイプなしの上位の多態性?
したがって、言語でより高いランクのポリモーフィズムを持つ2つの主な戦略に精通しています。 System-Fスタイルのポリモーフィズム。関数は明示的に型指定され、インスタンス化は型アプリケーションを通じて明示的に行われます。これらのシステムは命令的である場合があります。 サブタイピングベースのポリモーフィズム。ポリモーフィックタイプは、そのすべてのインスタンス化のサブタイプです。決定可能なサブタイピングを行うには、ポリモーフィズムが予測的でなければなりません。このペーパーでは、そのようなシステムの例を示します。 ただし、Haskellのような一部の言語では、明示的な型アプリケーションを使用せずに、命令的に高いランクの多態性を持っています。 これはどのようにして可能ですか?明示的なインスタンス化またはキャストなしで、サブタイプの概念なしで型をインスタンス化する場合、型チェックは「知る」ことができますか? または、そのようなシステムではタイプチェックは決定可能ですか?これは、Haskellのような言語が、ほとんどの人のユースケースでうまく機能する決定不能なものを実装するケースですか? 編集: 明確にするために、私は多態的に型付けされた値の定義ではなく使用に興味があります。 たとえば、次のように仮定します。 f : forall a . a -&gt; a g : (forall a . a -&gt; a) -&gt; Int val = (g f, f True, f 'a') f引数として与えられたときではなく、それが適用されたときにインスタンス化する必要があることをどのようにして知ることができますか? または、関数型から自分自身を分離するには: f : forall a . a g : (forall a . a) -&gt; …

2
心は有限のオートマトンであり、それでもチューリングマシンを発明することができますか?
チューリング機械は人間の心によって発明されました。おそらく、チューリングマシンほど強力なものはチューリングマシンを発明できません。 ただし、チューリングマシンには無限のテープがありますが、マインドは有限の宇宙にあるため、有限のテープを持つTMにしかできません。有限のテープを持つTMは有限のオートマトンによってシミュレートでき、チューリングマシンよりも強力ではありません。これは、チューリングマシンがチューリングマシンよりも強力ではないオートマトンによって発明されたことを意味しているようで、当初の前提と矛盾しています。 これは問題ですか?または、最初の前提は間違っていますか?有限オートマトンが、より強力なマシン、つまりブートストラップのようなマシンを「発明」することは可能ですか? 「発明」を正式に定義することは困難ですが、有限オートマトンが有限TMを効果的に表すことさえできないようです。たとえば、ウィキペディアのページでは、DFAは数百の状態を持つTMを表すために4千の状態を必要とすると述べています。したがって、停止するTMの有用なサブセットを表すだけでも、DFAの表現はおそらく私たちの計算能力を超えると思います。DFAとTMの間には大きな隔たりがあるように見えます。そのため、一方からもう一方に移動するためのもっともらしいブートストラップを想像することは困難です。 有限オートマトンがTMの停止問題をどのように証明できるかという関連する問題もあります。

1
ツリー幅の2つの定義の同等性
ツリー幅: 1)和音グラフ:グラフ和音完成における最大クリーク -1のサイズ。(ω(G))(ω(G))(\omega (G))GGG 2) ツリー分解により: のツリー分解は、ツリー(は異なるノードセット上)と、各ノードに関連付けられたサブセットで構成されます。(これらのサブセットツリー分解の「断片」と呼びます。)これを時ペアと書くこともあります。ツリーTとピースのコレクションは、次の3つのプロパティを満たしている必要がありますG=(V,E)G=(V,E)G = (V , E)TTTGGGVt⊆VVt⊆VV_t ⊆ VtttTTTVtVtV_t(T,Vt:t∈T)(T,Vt:t∈T)(T , {V_t : t ∈ T }){Vt:t∈T}{Vt:t∈T}\{V_t : t ∈ T \} (ノードカバレッジ)すべてのノードは、少なくとも1つのピース属します。GGGVtVtV_t (エッジカバレッジ)は、すべてのエッジについての、いくつかの部分があるの両端を含む。eeeGGGVtVtV_teee (コヒーレンス)う及びの3つのノードであるようからの経路上にあるに。次に、ノードがと両方に属している場合、それはも属していt1,t2,t1,t2,t_1, t_2,t3t3t_3TTTt2t2t_2t1t1t_1t3t3t_3vvvGGGVt1Vt1V_{t_{1}}Vt3Vt3V_{t_{3}}Vt2Vt2V_{t_2} したがって、ツリー分解の幅を、すべてのピース(すべての)の最大サイズよりも1つ小さくなるように定義します。 (T,Vt)(T,Vt)(T , {V_t })VtVtV_ttttwidth(T,Vt)=max|Vt|−1width(T,Vt)=max|Vt|−1width (T , {V_t}) = max |V_t| − 1 主張1:グラフの和音分解における最大のクリークのサイズが場合、ツリー分解によってツリー幅が得られます。kkkkkk 証明:コードの完了グラフの最大クリークサイズがであると仮定します。したがって、(エッジカバレッジのため)クリークを含むバッグ(グラフの頂点のサブセット)が存在します。これで完了です。kkk クレーム2:ツリー分解法によってツリー幅が場合、弦の完了法によってもkkkkkk 質問:クレーム2の証明方法は?高レベルの証明を歓迎します。

1
メンバーシップのクエリのすべてのサブセットをテストするためのデータ構造
次の操作を効率的にサポートするデータ構造はありますか? セットを追加 セットのサブセットが追加されたかどうかを照会します。 これは、すべてのクエリ中にすべての追加セットをテストすることにより、線形オーバーヘッドで実装できます。より効率的に実装できますか?偽陽性/陰性の小さな確率は許容されます(ブルームフィルタースタイルなど)。


1
行多態性と有界多態性の違いは?
私は最近、Brian McKennaが行のポリモーフィズムを説明しているこのブログ投稿を見つけました。これは私にとっては素晴らしいアイデアのように見えましたが、その後、制限付きパラメトリック多態性のようなひどいにおいがすることに気付きました。 行ポリモーフィズムの場合: sum: {x: int, y: int | rho} -&gt; int function sum r = r.x + r.y 制限付きパラメトリック多態性: sum: forall a &lt;: {x: int, y: int}. a -&gt; int function sum r = r.x + r.y 誰かがこれらの2つのアプローチの多型性の違いを明確にできますか?


1
通常の言語のクローズは、特定のカット操作の下でクローズされます
ましょう整数関数です。言語場合、次を定義しますf:N→Nf:N→Nf : \mathbb{N} \to \mathbb{N}LLL f(L)={w∣∃x:|x|=f(|w|) and wx∈L}f(L)={w∣∃x:|x|=f(|w|) and wx∈L}f(L) = \{w \mid \exists x : |x| = f(|w|) \text{ and } wx \in L\} たとえば、これは「半分」の演算であり、通常の言語はこの下で閉じられることがよく知られています-前方と後方を同時に歩くだけです(後方に歩くと、可能なすべてのパスが試行されます。サブセットの構築)。f(n)=nf(n)=nf(n) = n HMUによると、通常の言語も関数を使用してクローズされます。、またはそのことについての任意の線形関数については、簡単に確認できます。速度に関係なく、後ろに歩いただけです。これはまたはどのように実行できますか?これまでのステップ数を覚えておく必要があるため、速度を上げるだけでは実現不可能と思われます。2n,n2,2n2n,n2,2n2n, n^2, 2^n2n2n2nん2n2n^22ん2n2^n また、がこの特性を持つ一般的な十分な条件を取得するために、ソリューションを適応できますか?(私は必要十分な条件があるとは思いませんが、間違って証明されたいと思います)fff

1
BFGS対L-BFGS —実際にはどのように違うのですか?
PythonでBFGSとL-BFGSを使用してPythonで最適化手順を実装しようとしていますが、2つのケースで驚くほど異なる結果が得られます。L-BFGSは適切な最小値に超高速で収束しますが、BFGSは非常にゆっくりと収束し、それも無意味な最小値に収束します。 質問:私の測定値から、BFGSとL-BFGSは基本的にアルゴリズム(準ニュートン法)であるように見えますが、後者はメモリ使用量が少ないため高速です。本当?そうでなければ、それらがより異なっている場合、どのようにしてそうでしょうか? 最終的に、パフォーマンスの違いが実際のアルゴリズムの違いによるものなのか、それともPython SciPyモジュールでの実装によるものなのかを把握したいと思います。 編集: 2つのアルゴリズムからの逸脱した動作の私の主張をサポートするためにいくつかのデータを追加しています。 RUNNING THE L-BFGS-B CODE * * * Machine precision = 2.220D-16 N = 147 M = 10 This problem is unconstrained. At X0 0 variables are exactly at the bounds At iterate 0 f= 2.56421D+04 |proj g|= 1.19078D+03 At iterate 1 f= 2.12904D+04 |proj …

4
なぜ文章の量が限られているのですか?
私は現在、正式な言語を勉強しています。私の講義では、言語の単語は有限ですが、基礎となる文法で構築された文は有限ではないと述べています。しかし、これが一般的に真実であるべき理由はわかりません。文法に限りがある文章を思い浮かべます。 文章が無限にある言語を作成できることには同意しますが、それが一般的であるべき理由がわかりません。

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