コンピュータサイエンス

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

2
2進数で書かれた平方数は通常の言語ですか?
バイナリ形式(1、100、1001、...)で記述されたすべての平方数(1、4、9、16、...)が通常の言語であるかどうかを判断しようとして問題が発生しています。 これらの数値の一般的なパターンを見つけるためにいくつかの試みを行った後、正方形番号n2n2n^2場合、n2mod4n2mod4n^2 mod 4は0または1に等しいため、4つの状態のDFAグラフを描画して、この言語を認識します。しかし、どうやら、私が描いたDFAは、実際には問題の平方数言語のスーパーセットを認識しています。ここで行き詰まっています。 誰もがこの問題についていくつかの手がかりを与えることができますか?通常の言語ではない場合、どうすれば証明できますか? 私はまた、この種の質問に将来どのように最善の方法でアプローチすべきかを知ることにも非常に興味があります。多くの場合、オートマトンがすでに見たもの(ようなaibiaibia^i b^i)を追跡しなければならないという直感がある場合、オートマトンが計算するために必要な未確定の状態があり、したがって有限ではありません。または定期的。次に、Pumping補題を使用して、それが規則的でないことを証明できます。ただし、この言語がまだ一般的であるかどうかはわかりません。そのため、次に何をすればよいのか本当にわかりません。 ありがとう!

2
再帰
注:これは、5ページの反復に関するJeffEのアルゴリズムのメモにあります。 (1)。したがって、基本ケースなしで、繰り返しを定義します。今、私はほとんどの再発について、漸近的な境界を探しているので、基本的なケースは問題にならないことを理解しています。しかし、この場合、基本ケースをどこに定義できるかさえわかりません。私達は私達がちょうど定義してください任意の整数から始まる平方根を取っておくよう、私たちはヒットに保証している任意の数が存在し、T(n)を=のためのn &lt;Bいくつかの実数のため、、bが?T(n)=an&lt;babT(n)=n−−√T(n−−√)+nT(n)=nT(n)+nT(n) = \sqrt{n}T(\sqrt{n})+nT(n)=aT(n)=aT(n) = an&lt;bn&lt;bn<baaabbb (2)。7ページ目で、エリクソンは、再帰ツリーLの層の数がn ^ {{2} ^ {-L}} = 2を満たすことを理解しますn2−L=2n2−L=2n^{{2}^{-L}} = 2。これはどこから来たのですか?何も思いつきません。ツリーの葉の数の合計は(√n)(√n)=n(n)(n)=n\sqrt(n)\sqrt(n) = nになるはずですが、そこからどこに行くべきかわかりません。 どんな助けでもありがたいです! 私が見ているメモ:http : //jeffe.cs.illinois.edu/teaching/algorithms/notes/99-recurrences.pdf

3
線形方程式系を解くための最速の方法
私は、10000までの未知数を含む最大10000の方程式のシステムをできるだけ速く(できれば数秒以内に)解かなければなりません。ガウスの消去はそのためには遅すぎることを知っているので、どのアルゴリズムがこのタスクに適していますか? すべての係数と定数は、pを法とする非負の整数です(pは素数)。ソリューションは1つだけであることが保証されています。pを法とする解が必要です。

1
ダミーのキュービカル型理論?
キュービカル型理論に関するこれらの人気のある論文の1つを読みましたが、まったく認識できずに数式と図しか表示できなかったのも不思議ではありません。 だからここに私が欲しいものがあります。カンの充填と接着がホモトピー型理論とどのように関係しているのか、十分に深く説明してほしい。ELI (年齢を挿入)があるとは思いませんが、代わりにタイトルでダミーの単語をHoTTとカテゴリー理論の基本的な理解を持っている人として定義します(おそらく、必ずしも必要ではありませんが)。

2
一対の製品のGCD
私には2つの数値があり、それぞれが私が知っている多数の小さい数値の積です。これら2つの数値のGCD(最大公約数)を見つけたい。プロセスを高速化するために必要な部分分解を利用する方法はありますか? 特に、大きい数値はそれぞれ小さい数値の積であり、それぞれの数値は2 ^ {4000}のオーダーです。小さい数の因数分解については何も知りません。2152152^{15}24000240002^{4000} 編集:入力数は約120,000,000ビットですが、GCDは約500,000ビットです。数字の要素は特に順番に並んでいます。それらはすべて連続した範囲の整数です。 私が見たすべてのGCDアルゴリズムは、部分的に因数分解された形式などではなく、直接数値を使用します。この情報を組み込んでスピードアップできるアルゴリズムはありますか?

1
頂点加重グラフで頂点のサブセットを見つけることのNP硬度
これはドイツのITコンテスト( "Bundeswettbewerb Informatik")からのタスクですが、締め切りが過ぎているため、この質問をすることは不正行為ではありません。 頂点加重有向グラフ所与と値が、ノードのサブセットを見つけるその最大化対象 この問題はNP困難ですか?G=(V,E)G=(V,E)G=(V, E)cvcvc_vVres⊆VVres⊆VV_{res}\subseteq V∑v∈Vrescv∑v∈Vrescv\sum_{v \in V_{res}} c_v∀(u,v)∈E:u∈Vres⟹v∈Vres∀(u,v)∈E:u∈Vres⟹v∈Vres\forall (u,v) \in E: u \in V_{res} \implies v \in V_{res} この場合、2部グラフのVertex Coverで解決できることを示すことで、すべてのノードに親も子もない場合、問題がPであることを証明できますが、NP硬度を証明する削減を見つけることができませんでした。元の問題の。 誰かが私にこれを行う方法のヒントを与えることができますか? PS:コンテストでは、タスクはこの問題を解決するアルゴリズムを見つけることだけでした。元の(ドイツ語)定義は、このドキュメントのタスク1です。http://www.bundeswettbewerb-informatik.de/fileadmin/templates/bwinf/ aufgaben / bwinf35 / aufgaben352.pdf

2
量子コンピュータは、古典的なコンピュータよりも線形代数を速く実行できますか?
十分な数の量子ビットを備えた量子コンピューターがあったとしたら、それを使用して、古典的コンピューターよりも高速に線形代数を実行できますか?どのようなスピードアップが期待できますか?だれかが線形代数の量子アルゴリズムを作成しましたか?それは実行時間ですか?理論的には、行列と行列の乗算などの演算は高度に並列化できますが、実際には、高速に実行される並列行列と行列の乗算を実装するには多くの作業が必要です。量子コンピューターは実用的な利点を提供しますか?

1
私はビー玉を動力源とする機械式コンピュータを作りました。その理論上の制限は何ですか?
ここ数年、私はビー玉で動く機械式コンピューターを作り、それからゲームを作りました。これは、2つの重要な違いを除いて、古いDigi-Comp IIに似ています。 部品はボード上で再配置可能です。 ギアを使用して複数の「ビット」を接続できます。これらのビットの1つが反転すると、それに接続されている他のビットが反転します。 上記のリンクは、それがどのように機能するかを説明しています。私の質問は、その理論的な限界は何ですか?私の理論的なコンピューティングの背景は弱いので、ELI5をお試しください。 編集:私は明らかな制限には興味がありません:速度(そこでレースに勝つことはありません...)、ボードサイズ、またはビー玉の数。私はその理論的な限界にもっと興味があります。多分それはそれを2つの質問に分けるのに役立つでしょう: チューリング完全であることをどのように証明(または反証)できますか? 3つ以上のギアビットが接続されている場合、摩擦が大きくなり、大理石が一度にすべてを回転させることができません。追加の制限はありますか? ありがとうございます-回答を読んで本当に興奮しています!私はこれについて長い間考えてきました。

1
Martin-Löf依存型理論のどの断片がJavaのジェネリック型を使用して表現できますか?
私は最近、数年前にJavaでさまざまな数学的理論を実装しようとしていた 多く の 問題が、Javaの型付けシステムがすべてのMartin-Löf依存型理論をモデル化するほど強力ではないという事実に帰着したことに気づきました。 Java 5およびジェネリックの前は、クラスおよびインターフェースを介して型理論を実行することしかできませんでした。これにより、製品や関数の型を使用して、地上の型int、doubleなどから任意の型を構築できますchar。List統一された方法ではありませんが、s などの再帰型を構築することもできます。 ジェネリックを使用すると、もう少し多くを行うことができます。これでList&lt;T&gt;、関数として 定義できるタイプ→ タイプタイプ→タイプ \DeclareMathOperator{\Type}{Type}\Type\to\Type ようになり、より高次の型が得られます。 話はこれで終わりではありません。ジェネリックトリックを使用して、いくつかの依存製品タイプをモデル化できます。たとえば 、次の構文を使用して、という形式のタイプを定義でき ΠT:タイプf(T)ΠT:タイプf(T) \prod_{T\colon\Type}f(T) ます。 public interface f&lt;T extends f&lt;T&gt;&gt; { // We can now refer to T as much as we like // inside the class. T has type f&lt;T&gt;. } 例として、タイプ (つまり、指定された単位要素とに対する2項演算を持つセットです。Javaジェネリックを使用して、このタイプをモデル化できます。TTΠT:タイプT× (T→ T→ T)ΠT:タイプT×(T→T→T) \prod_{T\colon\Type}T\times …

2
有限オートマトンによって解決される問題はすべてPにあります
今日の私の理論の計算クラスの後、この質問が私の頭に浮かびました。問題が有限オートマトンによって解決できる場合、この問題はPに属します。 オートマトンは非常に単純な言語を認識するため、これらの言語はすべて、それらを解決するための多項式アルゴリズムを備えていると思います。したがって、有限オートマトンによって解決される問題がPにあることは本当ですか?

2
正確なGCがライブラリとして実装可能な言語はどのようなものでしょうか。
手動のメモリ管理を備えたプログラミング言語があるとします。正確なガベージコレクションを、基本的な言語構成要素としてではなく、ライブラリとして実装できるようにするために、この言語にはどのような機能が必要ですか? 正確なGCとは、ヒープへのポインタのみがトラバースされ、どの変数が有効であるかどうかを確認することを意味します。 その他の考慮事項: CとC ++にはBoehmガベージコレクターがありますが、正確なGCではないため、これはカウントしません。Boehmコレクターは、スタック上でポインターである可能性のあるものはすべて、純粋にメモリー調整要件に基づいているものをポインターであると想定しています。たとえば、ポインタは4バイト境界で整列する必要があるため、ポインタのようにビットレベルkで(k % 4) == 0見える整数。 カササギは、正確なガベージコレクターを使用するように既存のCコードを変換します。生成されたCコードには、ガベージコレクション用の多くのスタブがあります。つまり、コレクターを使用してスタックポインターをヒープに登録するためのものです。誰もそのようにコードを書くことは期待できないので、私はこれを数えません。これは、他の言語のコンパイルターゲットの詳細です。 そのような言語には次のものが必要だと思います。 マクロまたは何らかの形のメタプログラミング。GCルートの登録などを行うために必要なすべての追加コードをカプセル化します。 構造体または共用体を検査できる反射メカニズム。どのメンバーがポインターであるかを判別する必要があります。 スタックフレームのレイアウトを確認できる反射メカニズム。これは2よりもはるかに難しいようです。 これが漠然としたり、意見に基づくものではないことを願っていますが、しばらくの間、それについて疑問に思っていました。

2
型チェックの決定可能性、入力可能性の決定可能性、および強い正規化の関係
ヨ!これはおそらくばかげた質問ですが、たとえば、型チェックの決定可能性が強力な正規化プロパティと同等である場合、明示的に書き留められたことはありません。したがって、私はこの質問をして、型チェック、型付け可能性、および強力な正規化の間のすべての可能な関係を明らかにします。 やる気を説明させてください。型理論(私はここでは意図的に曖昧にしていますが、主に依存型理論に興味があります)では、強い正規化を使用して型チェックの決定可能性を証明しています。反対に、これらのプロパティの1つを持っていることがわかっている型指定されたシステムには、もう1つのタイプもあります。ただし、強い正規化が型チェックの決定可能性に相当することを明示的に述べたことはありません。 同様に、タイプ可能性を証明するために、通常(多分常に)、用語を正規形に減らします。しかし、型付け可能性は依存型の理論には当てはまらないことはわかっていますが、強い正規化が保持される場合があります。 型チェックの決定可能性とは、特定の型、コンテキストおよび型なし項、がtrueでかどうかを有限数のステップで決定できることを意味します。ああAA Γ ⊢ A :AΓΓ\GammaaaaΓ ⊢ :AΓ⊢a:あ\Gamma \vdash a: A タイプ可能性の決定可能性と、特定の型なし用語、がtrueになるようなコンテキストとタイプが存在するかどうかを有限数のステップで決定できることを意味します。Γ A Γ ⊢ :AaaaΓΓ\GammaああAΓ ⊢ :AΓ⊢a:あ\Gamma \vdash a: A 1)型チェックの決定可能性は、すべての項が強く正規化可能であることと同じですか? 2)より一般的には、型チェックの決定可能性、タイプ可能性、強力な正規化の関係は何ですか?どちらが他を意味するのですか? 前もって感謝します。 編集 私の質問の一般性のレベル(私は知らなかった)に関する不満を考慮して、純粋なタイプシステムのみに限定したいと思います。もちろん、他のタイプ理論に関する追加のコメントや反例は非常に有用です。

1
P = NPのこの条件付き証明の何が問題になっていますか?
私は最近、L = PがP = NPを意味するという次の証明を考えました。 L = Pとします。AをNPの問題とする。NPの検証者定義により、Aの各正の解には、多項式時間で検証できる証人があります。P = Lなので、同じ解を対数空間で検証できます。したがって、NP = NLです。ただし、NLはPに含まれています。つまり、NPはPに含まれているため、P = NPになります。 効率的な市場仮説では、この証明には欠陥があると思います。ただし、エラーの正確な性質を特定することはできません。誰かがそれを指摘できますか?

2
ループを使用して左再帰を処理する再帰降下パーサーの正しい名前は?
この文法は再帰的に残されています: Expression ::= AdditionExpression AdditionExpression ::= MultiplicationExpression | AdditionExpression '+' MultiplicationExpression | AdditionExpression '-' MultiplicationExpression MultiplicationExpression ::= Term | MultiplicationExpression '*' Term | MultiplicationExpression '/' Term Term ::= Number | '(' AdditionExpression ')' Number ::= [+-]?[0-9]+(\.[0-9]+)? したがって、理論的には、再帰的降下は機能しません。ただし、各左再帰ルールが特定の優先レベルに対応し、単一のトークンの先読みで正しい生成を選択するのに十分であるという文法のプロパティを利用することで、左再帰ルールをwhileループで個別に解析できます。 たとえば、AdditionExpression非終端を解析するには、次の疑似コードで十分です。 function parse_addition_expression() { num = parse_multiplication_expression() while (has_token()) { get_token() if (current_token …


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