コンピュータサイエンス

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

3
数独パズルの解決策を見つけることと、その解決策が独自の解決策であることを証明することとの間に、どれほど複雑な違いがありますか?
したがって、通常、数独はですが、この質問はパズルに拡張されます。数独パズルの解決策を見つけるのを進めることができる多くの多項式時間演rules規則があります。ただし、セルの値またはセルの値の組み合わせを削除するには、値を推測して一連の結論に従うことが必要な場合があります。ただし、有効なソリューションが見つかると、ソリューションが一意であることを保証しません。有効な数独パズルには有効なソリューションが1つしかありませんが、ランダムパズルを生成する場合、検証に余分な計算が必要になる場合があります。9 × 99×99 \times 9n2× n2n2×n2n^2 \times n^2n > 3n>3n > 3 したがって、私の質問は、特定の多項式時間演rules規則のセット(たとえば、数独戦略で説明されている最も一般的なセット)を許可し、値を推測し、結論に従うことである場合、それを決定するのがどれほど難しいかです与えられたパズルのユニークなソリューションと、ユニークではないソリューションの数という点で、たった1つのソリューションを見つけるのか?特定のクラスのパズルに漸近的な違いはありますか?

3
Haskellよりも強力なタイプシステムを持つ研究言語はどれですか?
ここで私はそれを読みました: Haskellには間違いなく最先端の型システムはありません(研究言語を数えたとしても近いものではありません)が、実稼働で実際に使用されるすべての言語のうちHaskellがおそらくトップです。 だから私は2つのことを求めています: どの研究言語がHaskellより強力な型システムを持っているか。 彼らは何を改善しますか。 私は単なるプログラマーなので、型理論で使用される多くの数学的なオブジェクトを知りません。できれば穏やかな説明を提供してください。

1
シェイファーの定理とマハニーの定理がP = NPを意味しないのはなぜですか?
私は誰かがこれについて以前に考えたことがあるか、すぐに却下したと確信していますが、なぜシェーファーの二分法理論とスパース集合に関するマハニーの定理はP = NPを意味しないのですか? 私の推論は次のとおりです。無限の決定可能なスパースセットと交差するSATに等しい言語を作成します。その場合、もスパースでなければなりません。は自明ではなく、アフィン、2飽和、ホーン飽和ではないため、シェーファーの定理によりNP完全でなければなりません。しかし、マハニーの定理P = NPによって、NP完全集合がまばらになっています。LLLLLLLLL 私はここでどこに間違っていますか?シェイファーの定理を誤解/誤用しているのではないかと疑っていますが、その理由はわかりません。

7
プログラムはCPUレベルでどのように実行されますか?
これはよくある質問です。しかし、私は心の中で異なる角度を持っています。ここで明確にしようとします。 私が知っていることから、CPUが実行するすべての命令は機械語であり、CPUができることはすべて、ALUとそのトランジスタのおかげで何らかの算術演算を行うことです(ハードウェアレベルの場合)。 ただし、これは理解するよりも入力する方が簡単です。すべてのCPUが加算、減算などを行うのであれば、これらの算術演算で実行されるプログラム、たとえば、印刷Hello WorldというJAVAプログラムはどうでしょうか。 つまり、このプログラムは、CPUに追加するだけのものにどのように変換されるのでしょうか。 PSこの質問がこのウェブサイトに当てはまらない場合は、おpoび申し上げます。 - - -二部 - - - はい。これに迅速かつ熱意を持って答えてくれたすべての人に感謝します。質問に少し手を加えて、すべての回答にコメントしてからもう一度質問するよりも良いと思いました。 ここにあります。 まず、全員がHello Worldの例について具体的に回答しています。これは私のせいだ。私はこれをジェネリックのままにしておくべきでした。Hello worldの例では、出力デバイスと、その処理がCPUだけに限定されるわけではないことを疑問視しています。 また、多くの人がCPUが単なる追加以上のことを行うことに気付きました。私はそれに同意します。私はただそれを書いておらず、ずっとそれを想定していました。私が理解していることから、これはプロセスです: メモリから命令を読み取る(データおよびアドレスバスとプログラムカウンタースタッフを使用) CPU内のレジスタにデータを保存する ALUはもちろん、命令をデコードした後、算術演算を行うか、ifのような命令の場合はジャンプします そして、出力デバイスなどのように、必要に応じて他のリソースと通信します。これ以上のプロセスは今のところ簡単です。 CPUが命令をデコードし、算術演算を実行することを決定するステップ3で(ここでは、現在の命令をジャンプするなど、他に実行すべき演算がないと仮定しています。 )ここで私の視覚化が終了します。プログラムからの命令がCPUの単なる算術演算である方法。それはその算術演算を行い、その命令はその目的を果たします。 今回は明確にしたいと思います。 PSここでは、ALUはプログラムで行う実際の算術演算に限定されず、バイナリ形式のすべての命令を実行するなど、それらを意味する結果を得るために加算または減算することで大きな仮定を取っています得た。ここで間違っている場合は、以下の回答が私の質問に正しく答えています。


1
コンビナトリアルILPアルゴリズムの既知の最速の複雑さ?
整数線形計画法を解くための、Big表記法で最もよく知られているアルゴリズムは何ですか?OOO 私は問題が完全であることを知っているので、多項式を期待していません。そして、CPLEXのような実際のアプリケーションで使用される多くのヒューリスティックとそのようなものがあることは知っていますが、厳密なアルゴリズムの形式的な最悪の場合の複雑さにもっと興味があります。NPNPNP 一部の完全問題には、時間アルゴリズムがありますおよびは多項式です。頂点カバー、独立セット、および3SATはこのカテゴリに分類されますが、一般的なSATおよびTSPは(私たちが知る限り)分類されません。O (b n p (n ))1 &lt; b &lt; 2 pNPNPNPO (bnp (n ))O(bnp(n))O(b^n p(n))1 &lt; b &lt; 21&lt;b&lt;21 < b < 2ppp 整数プログラミング、または特定のサブインスタンスについて、そのようなステートメントを作成できますか? Quantifier Free Presburger Arithmeticに関連する問題の参照先があれば、それにも非常に興味があります。

1
カープリプトンの定理の証明
本「計算の複雑さ:現代のアプローチ」(2009)で述べられているカープ-リプトンの定理の証明を理解しようとしています。 特に、この本は次のことを述べています。 カープリプトンの定理 もしNP 次に、PH。⊆⊆\subseteq P∖polyP∖polyP_{\backslash poly} = Σ P 2 =Σp2=Σ2p= \Sigma^p_2 証明: 定理5.4により、PH を示すには、を示すだけで十分です。特に、に -complete が含まれていることを示すだけで十分です。言語 SAT。 Π P 2 ⊆ Σ P 2 Σ P 2 Π P 2 Π 2=Σp2=Σ2p= \Sigma^p_2Πp2⊆Σp2Π2p⊆Σ2p\Pi^p_2\subseteq \Sigma^p_2Σp2Σ2p\Sigma^p_2Πp2Π2p\Pi^p_2Π2Π2\Pi_2 定理5.4では、 すべてのについて、場合、PH =です。つまり、階層はi番目のレベルに崩壊します。Σ P I = Π P Ii≥1i≥1i \geq 1Σpi=ΠpiΣip=Πip\Sigma_i^p = \Pi_i^pΣpiΣip\Sigma_i^p が暗示していることを理解できていません。 …

1
チューリング決定可能問題のクラスに完全な問題はありますか?
などの言語は、多対一の削減ではです。も完全な問題があることは簡単です。S. Schmitz [1]は、といくつかのクラスを考慮し。これらは、特別に細工された削減の下で、これらのクラスに完全な問題を提示します。 RE-complete co-REHALTTMHALTTM\text{HALT}_{TM}RE-completeRE-complete\textsf{RE-complete}co-REco-RE\text{co-RE}RECELEMELEM\text{ELEM}RECREC\text{REC} (別名)には、より弱いリダクションに関連する完全な問題がありますか?チューリングの削減は、すべての作業を実行できるため不適切です。そのような削減は人為的であるかそうでないと期待すべきでしょうか(例えば、原始再帰に制限される多対一の削減)。RECR=RE∩co-RER=RE∩co-RE\textsf{R} = \textsf{RE} \cap \textsf{co-RE}RECREC\textsf{REC} [1] Sylvain Schmitz Complexity Hierarchies Beyond Elementary 2013 http://arxiv.org/abs/1312.5686

2
式の等価性のための効率的なアルゴリズムはありますか?
例:?xy+x+y=x+y(x+1)xy+x+y=x+y(x+1)xy+x+y=x+y(x+1) 式は普通の高校の代数からのものですが、逆数、減算、除算のない算術加算と乗算(例)に制限されています。文字は変数です。2+2=4;2.3=62+2=4;2.3=62+2=4; 2.3=6 役立つ場合は、以外の数値で表現可能な式を禁止できます。すなわち、でもでもでもない:111x2x2x^23x3x3x444 multilinear、以外の累乗:はOKですが、ではなく、aのように表現できるものではありません積和への完全展開。 111x+xy≡x1+x1y1x+xy≡x1+x1y1x+xy \equiv x^1+x^1y^1x2+x3y4x2+x3y4x^2+x^3y^4x(x+y)≡x2+yx(x+y)≡x2+yx(x+y) \equiv x^2+y all one、以外の係数はありません:はOKですが、ではなく、そのように表現できるものはありません -of-製品例 ; そして X + X Y ≡ 1 、X + 1 、X 、Y 2 、X + 3 、X 、Y 、A (X + Y )+ X (+のB )≡ 2 A X + Y + B X111x+xy≡1.x+1.xyx+xy≡1.x+1.xyx+xy \equiv 1.x+1.xy2x+3xy2x+3xy2x+3xya(x+y)+x(a+b)≡2ax+ay+bxa(x+y)+x(a+b)≡2ax+ay+bxa(x+y)+x(a+b) …

2
実数で確立された複雑度クラスはありますか?
最近、ある学生が私に彼らのためにNP硬度証明をチェックするように頼みました。彼らは以下の方針に沿って削減を行いました。 NP完全であることが知られているこの問題を私の問題(ポリタイム多対1削減)に還元するので、はNP困難です。P′P′P'PPPPPP 私の答えは基本的に: 以来からの値を持つインスタンスがある使用すると、削減をスキップすることができますので、それは自明チューリング計算可能ではありません。PPPRR\mathbb{R} 正式には真実ですが、このアプローチは洞察力があるとは思いません。実際に対処する際に直面する制限を無視して、実際に価値のある決定(または最適化)問題の「固有の複雑さ」をキャプチャできるようにしたい数字; これらの問題を調査するのはまた別の日です。 もちろん、「Subset Sumの個別バージョンはNP完全であるため、連続バージョンも「NP困難」である」と言うほど簡単ではありません。この場合、削減は簡単ですが、連続バージョンの方が有名な場合があります。たとえば、線形プログラミングと整数プログラミングの場合です。 RAMモデルは自然に実数に拡張されることが私には思いつきました。すべてのレジスタに実数を格納させ、それに応じて基本操作を拡張します。いずれにせよ、均一コストモデルは依然として理にかなっていますが、とにかく離散ケースの場合と同様に、対数モデルはそうではありません。 したがって、私の質問は次のように要約されます。現実価値の問題の複雑さの確立された概念はありますか?それらは「標準」離散クラスとどのように関係していますか? Google検索では、たとえばthisなどの結果が得られますが、何が確立されているか、有用であるか、および何がそうでないかを伝える方法はありません。

2
マイクロカーネルとモノリシックカーネルのパフォーマンス
マイクロカーネルは、すべてのドライバーをユーザー空間プログラムとして実装し、カーネル自体にIPCなどのコア機能を実装します。ただし、モノリシックカーネルは、ドライバーをカーネルの一部として実装します(たとえば、カーネルモードで実行されます)。 マイクロカーネルはユーザー空間のドライバー間でメッセージの受け渡しを処理する必要があるため、モノリシックカーネルよりも遅いといういくつかの主張を読みました。これは本当ですか? 長い間、ほとんどのカーネルはモノリシックでした。これは、ハードウェアの速度が遅すぎてマイクロカーネルをすばやく実行できないためです。ただし、GNU / Hurd、Mac OS X、Windows NTラインなど、多くのマイクロカーネルとハイブリッドカーネルが存在するようになりました。 それで、マイクロカーネルのパフォーマンスについて何か変更はありましたか?このマイクロカーネルへの批判は今日でも有効ですか?

2
マネージコードを実行する最小限のカーネルを使用する場合の潜在的な落とし穴は何ですか?
マネージコードインタープリター/ランタイムとして機能する非常に小さなネイティブの下位カーネルと、非ネイティブマシン言語(Javaバイトコード、CILなど)にコンパイルされた上位の上位カーネルに基づいてオペレーティングシステムを構築するとします。同様のオペレーティングシステムの例は、SingularityとCosmosです。 純粋にネイティブなソリューションとは対照的に、この種のインフラストラクチャを備えたOSを作成する際に、どのような落とし穴と開発上の課題が存在しますか?

6
間隔内の2つの数値の最大XORを見つける:二次式よりも良いことはできますか?
lllrrr L ≤ I 、最大(I ⊕ J )最大(私⊕j)\max{(i\oplus j)}L ≤ I 、J ≤ Rl≤私、j≤rl\le i,\,j\le r ナイーブアルゴリズムは、考えられるすべてのペアを単純にチェックします。たとえば、ルビーでは次のようになります。 def max_xor(l, r) max = 0 (l..r).each do |i| (i..r).each do |j| if (i ^ j &gt; max) max = i ^ j end end end max end 私感私たちはより良い次より行うことができます。この問題のためのより良いアルゴリズムはありますか?

3
「非病理学的データ」とはどういう意味ですか?
Courseraでアルゴリズムクラスを受講しました。ハッシュテーブルに関するビデオの教授は、 真実は、非病理学的データの場合、適切に実装されたハッシュテーブルで一定時間の操作を取得するということです。 「非病理学的データ」とはどういう意味ですか?例を挙げていただけますか?

2
地球の連続地図上で経路探索を行うための最先端のアルゴリズムとは何ですか?
ノルウェーのフィヨルドのどこかに太陽電池式の自律水上船があり、かなり最近の地図セット、GPS受信機を備えていて、詳細なコマンドをダウンリンクする手段がないと仮定します。この船は、可能な限り早い時期に海南島に到達しなければなりません。 地球上の海上ルートを見つけるための決定論的なアルゴリズムは何ですか? 彼らの時間とメモリの複雑さは何ですか? たとえば、地球の地図を、接続されたポリゴン(つまり、球/楕円体のドローネ三角形分割)を含む図に変換した後、A *を使用できますか? 回答は、理想的には上記の質問の議論を伴う論文への参照を提供する必要があります。 Rob Langが指摘したように、アルゴリズムは通常の基準に適合しなければなりません。時間の制約がない場合、地球の海と海の任意の2点間の最短経路につながるか、そうでなければ経路探索の失敗を示します。 ここには興味深いサブトピックがあります(オンライン計算用の事前計算時間/ストレージのトレーディング、締め切りが始まる前にやや準最適なルートを提供するなど)が、これらは主な問題に付随しています。

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