コンピュータサイエンス

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

3
HALF CLIQUE-NP完全問題
これが宿題の問題であることに注意して始めましょう。アドバイスと関連する所見のみを提供してください。直接の回答はありません。とはいえ、ここに私が見ている問題があります: HALF-CLIQUE = { | は、少なくとも個のノードを持つ完全なサブグラフを持つ無向グラフです。ここで、nは } のノードの数です。HALF-CLIQUEがNP完全であることを示します。G N / 2 G⟨ G ⟩⟨G⟩\langle G \rangleGGGn / 2n/2n/2GGG また、私は次のことを知っています: この問題に関して、クリークは、入力グラフの無向サブグラフとして定義され、2つのノードごとにエッジで接続されます。 -cliqueが含まクリークであるノード。kkkkkk 私たちの教科書によると、Michael Sipserの「計算理論入門」、268ページ、問題CLIQUE = { | は -cliqueを持つ無向グラフですNPはNPですG K⟨ G 、K ⟩⟨G,k⟩\langle G,k\rangleGGGkkk さらに、同じソース(ページ283)によると、CLIQUEはNP-Complpeteにある(したがって、明らかにNPにもある)と述べています。 私はここに答えの核心があると思うが、私はそれの何が間違っているのか、答えに関連するかもしれない関連ポイントのいくつかの兆候を使用することができます。これは私がこれまでに持っている一般的な考え方です、 さて、証明書は単に HALF-QLIQUEであることに最初に注意し。これで、CLIQUE(NP-Completeであることがわかっている)からHALF-CLIQUEへの多項式時間短縮である検証ツールを作成する必要があります。私のアイデアは、HALF-CLIQUEの追加の制約を使用して、CLIQUEの本のチューリングマシン検証ツールを実行するチューリングマシンを作成することによってこれが行われるということです。サイズ≥ N / 2size≥n/2\text{size} \geq n/2 これは私には正しいように聞こえますが、私はこの主題についてはまだ自分を本当に信用していません。繰り返しになりますが、これは宿題ですので、質問には答えないようにしてください。これに満たないガイダンスは大歓迎です!

1
移動するターゲットを追跡するアルゴリズム
クエリとリセットが可能なブラックボックスfffあるとします。我々がリセットするとfff、状態fSfSf_Sのfff集合から一様にランダムに選択された要素に設定されている{0,1,...,n−1}{0,1,...,n−1}\{0, 1, ..., n - 1\}ここで、は固定され、指定された既知です。を照会するには、要素(推測)が提供され、返される値はです。また、状態F_SのF F X { 0 、1 、。。。、n − 1 } (f S − x )nnnffffffxxx{0,1,...,n−1}{0,1,...,n−1}\{0, 1, ..., n - 1\}f S f(fS−x)modn(fS−x)modn(f_S - x) \mod nfSfSf_Sfffは値f′S=fS±kfS′=fS±kf_S' = f_S \pm kに設定されます。ここで、kkkは\ {0、1、2、...、\ lfloor n / 2 \ rfloor-((f_S-x)\ modからランダムに選択され{0,1,2,...,⌊n/2⌋−((fS−x)modn)}{0,1,2,...,⌊n/2⌋−((fS−x)modn)}\{0, 1, 2, ..., \lfloor n/2 \rfloor - …

1
自動定理証明の種類
私は自動定理証明 / SMTソルバー / 証明アシスタントを自分で学んでおり、ここからプロセスに関する一連の質問を投稿しています。 関連する自動定理証明者はどれですか?定理証明のレビューを見つけました これはまだ最新ですか? どれがまだ非常にアクティブであるか、つまり、それを作成したグループ以外で現在使用されているのはどれですか? ここでシリーズの次の質問を見つけます。

2
自己順序付けバイナリツリーの作成
バイナリ検索ツリーを使用して自己アクセス順序に変更する必要がある割り当てがあり、最もアクセスされる(優先度が高い)アイテムがツリーの最上部にあり、ルートが最もアクセスされるノードです。 教授は私にBSTとノード構造体を提供してくれましたが、挿入中にツリーを更新するアルゴリズムに頭を悩ませようとすると混乱します。 挿入が発生すると、現在のノードのデータが現在のノードより少ないか大きいかをチェックし、nullポインターを見つけてそこに挿入するまで再帰的に正しい方向に進みます。挿入された後、優先度が1増加します。 template <class Type> void BinarySearchTree<Type> :: insert( const Type & x, BinaryNode<Type> * & t ) { if( t == NULL ) t = new BinaryNode<Type>( x, NULL, NULL ); else if( x < t->element ) insert( x, t->left ); else if( t->element < x ) insert( …

2
可能な限り多くのスペースをカバーするように画面上の(サイズ変更可能な)ウィンドウを配置するアルゴリズムを考案する方法は?
一連のウィンドウ(幅+高さ)と画面解像度を受け入れ、ウィンドウが最大のスペースを占めるように画面上のそれらのウィンドウの配置を出力する単純なプログラムを作成したいと思います。したがってoutput size >= initial size、アスペクト比を維持しながら、ウィンドウのサイズを変更できます 。したがって、ウィンドウiii場合、アルゴリズムがタプルを返すようにします(x,y,width,height)(x,y,width,height)(x, y, width, height)。 これは2Dナップザックのバリエーションかもしれません。私はウェブ上の結果を調べてみましたが、それらはほとんど私が従うことを困難にした多くのバックグラウンド(そして実装なし)を持っていました。 最速のアルゴリズムにはあまり興味がありませんが、特定のニーズに合った実用的なものに興味があります。

7
Unix / Cの不整合と不完全性の例は何ですか?
リチャードガブリエルの有名なエッセイThe Rise of Worse is Betterは、MIT / Stanford(Lisp)とNew Jersey(C / Unix)デザインの似顔絵バージョンを、シンプルさ、正確さ、一貫性、完全性の軸に沿って比較しています。彼は、「PC敗者問題」(Josh Habermanが別の場所で議論した)の例を挙げて、Unixがインターフェースの単純さよりも実装の単純さを優先していると主張します。 私が思いついたもう1つの例は、数値へのさまざまなアプローチです。Lispは任意の大きな数値(メモリのサイズまで)を表現できますが、Cは数値を固定ビット数(通常は32〜64)に制限します。これは正しさの軸を示していると思います。 一貫性と完全性の例は何ですか?ガブリエルのすべての説明は次のとおりです(彼は似顔絵だと認めています)。 MIT /スタンフォードのアプローチ シンプルさ-設計は、実装とインターフェースの両方においてシンプルでなければなりません。インターフェイスは実装よりも単純であることが重要です。 正確性-設計は、観察可能なすべての側面において正しいものでなければなりません。不正確さは単に許可されません。 一貫性-設計は一貫していてはいけません。一貫性を保つために、デザインの単純さや完成度を少し下げることができます。一貫性は正確さと同じくらい重要です。 完全性-設計は、実用的な限り多くの重要な状況をカバーする必要があります。合理的に予想されるすべてのケースをカバーする必要があります。シンプルさは、完全性を過度に低下させることは許されません。 ニュージャージーのアプローチ シンプルさ-設計は実装とインターフェースの両方でシンプルでなければなりません。実装がインターフェースよりも単純であることがより重要です。シンプルさは、設計において最も重要な考慮事項です。 正確性-設計は、観察可能なすべての側面において正しいものでなければなりません。正しいよりも単純である方がわずかに優れています。 一貫性-設計が過度に一貫していてはなりません。場合によっては一貫性を犠牲にして単純化することもできますが、実装の複雑さや不整合を導入するよりも、あまり一般的ではない状況に対処する設計の部分を削除する方が適切です。 完全性-設計は、実用的な限り多くの重要な状況をカバーする必要があります。合理的に予想されるすべてのケースをカバーする必要があります。他の品質を優先して、完全性を犠牲にすることができます。実際、実装の単純さが危険にさらされるたびに、完全性が犠牲になります。シンプルさを維持する場合、完全性を達成するために一貫性を犠牲にすることができます。特に価値がないのは、インターフェースの一貫性です。 Gabrielが正しいかどうかを尋ねているのではないことに注意してください(これはStackExchangeには不適切な質問です)。

3
正式なメソッドへのパス
数学とコンピューターサイエンスの正式な側面の限られたバックグラウンドのみで博士号を取得する学生を見るのは珍しいことではありません。明らかに、そのような学生が理論的なコンピューター科学者になることは非常に難しいでしょうが、正式な方法を使用し、正式な方法を含む論文を読むことに精通できれば良いでしょう。 正式な方法を含む論文を読んで、最終的にはそのような正式な方法を使用する論文を書くために必要な露出を得るために、博士課程の学生をたどる良い短期パスは何ですか? コンテキストの観点からは、理論Bと形式的検証の観点から、彼らが学ぶべきものとして考えていますが、オートマトン理論などの古典的なTCSトピックも考えています。

1
GSATアルゴリズムの実装-反転するリテラルの選択方法
GSATアルゴリズムは、ほとんどの場合、単純です:連言標準形式で式を取得し、式を満たす解が見つかるか、max_tries / max_flips制限に到達して解が見つからなくなるまで、句のリテラルを反転します。 次のアルゴリズムを実装しています。 procedure GSAT(A,Max_Tries,Max_Flips) A: is a CNF formula for i:=1 to Max_Tries do S <- instantiation of variables for j:=1 to Max_Iter do if A satisfiable by S then return S endif V <- the variable whose flip yield the most important raise in the number of …

5
同じワンタイムパッドでの暗号化がうまくいかないのはなぜですか?
ワンタイムキーメッセージを暗号化するには、 ます。 K E N C (M 1、K )= M 1 ⊕ Km1m1m_1kkkEn c (m1、k )= m1⊕ KEnc(m1,k)=m1⊕kEnc(m_1,k) = m_1 \oplus k あなたは同じ使用している場合は異なるメッセージを暗号化するためにあなたが得る 、あなたが2つの暗号文の排他的論理和を実行する場合は、あなたが得る M 2 E N C (M 2、K )= M 2 ⊕ K (M 1 ⊕ K )⊕ (M 2 ⊕ K )= M 1 ⊕ M …


3
今日の大規模な並列処理ユニットは、セルオートマトンを効率的に実行できますか?
最近のグラフィックカードで提供されている超並列計算ユニット(たとえばOpenCLでプログラム可能なもの)は、1Dセルラーオートマトン(または2Dセルラーオートマトン?) チップのメモリ内に収まる有限グリッドを選択した場合、このグリッドで定義されたセルオートマトンの1つの遷移が(準)一定時間で計算されることを期待できますか? 2Dセルラオートマトンは、1Dオートマトンよりもチップの異なる部分間の通信に必要な帯域幅が多いと思います。 FPGAプログラミングやカスタムチップの場合も同じ質問に興味があります。

3
任意の文脈自由文法の解析、ほとんどが短い断片
ユーザー定義のドメイン固有の言語を解析したい。これらの言語は通常、数学表記に近いものです(自然言語を解析していません)。ユーザーは次のようにBNF表記でDSLを定義します。 expr ::= LiteralInteger | ( expr ) | expr + expr | expr * expr 入力のようなもの1 + ( 2 * 3 )は受け入れられなければならず、入力のようなもの1 +は不正確であるとして拒否され、入力のようなもの1 + 2 * 3は曖昧なものとして拒否されなければなりません。 ここでの中心的な困難は、あいまいな文法をユーザーフレンドリーな方法で対処することです。文法を曖昧でないように制限することは選択肢ではありません。それが言語のやり方です。つまり、曖昧さを避けるために必要でない場合は、括弧を省略するほうが好ましいという考え方です。式が曖昧でない限り、解析する必要があり、そうでない場合は拒否する必要があります。 私のパーサーは、文脈に依存しない文法、あいまいなものでも動作し、すべての明確な入力を受け入れなければなりません。受け入れられたすべての入力に解析ツリーが必要です。無効またはあいまいな入力の場合、理想的には適切なエラーメッセージが必要ですが、最初に取得できるものを取り上げます。 私は通常、比較的短い入力でパーサーを呼び出しますが、入力は時々長くなります。したがって、漸近的に高速なアルゴリズムは最良の選択ではないかもしれません。入力が20シンボル未満の約80%、20〜50シンボルの19%、まれに1%のより長い入力の分布に最適化したいと思います。無効な入力の速度は大きな問題ではありません。さらに、DSLが1000〜100000入力ごとに変更されることを期待しています。数分ではなく、文法の前処理に数秒費やすことができます。 典型的な入力サイズを考慮して、どの解析アルゴリズムを調査する必要がありますか?エラー報告は私の選択の要因である必要がありますか、それとも明確な入力の解析に集中し、エラーフィードバックを提供するために完全に別個の低速なパーサーを実行する必要がありますか? (それが必要なプロジェクト(しばらく前)では、CYKを使用しました。これは実装するのにそれほど難しくなく、入力サイズに適切に機能しましたが、非常に良いエラーを生成しませんでした。)

3
2つのシミュレーションがバイシミュレーションではない場合
ラベル付き遷移システム 与えられた(S,Λ,→)(S,Λ,→)(S,\Lambda,\to)場合、SSSは状態のセット、はラベルのセット、は三項関係です。いつものように、書き込みため→ ⊆ S × Λ × S P α → Q (P 、α 、Q )∈ →ΛΛ\Lambda→⊆S×Λ×S→⊆S×Λ×S\to\subseteq S\times\Lambda\times Sp→αqp→αqp \stackrel\alpha\rightarrow q(p,α,q)∈→(p,α,q)∈→(p,\alpha,q)\in\to。ラベルされた移行p→αqp→αqp\stackrel\alpha\to q状態でシステムという意味pppに状態が変化するqqqラベルとαα\alphaということを意味し、αα\alpha状態の変化を引き起こすいくつかの観察可能なアクションです。 今、関係R⊆S×SR⊆S×SR \subseteq S \times S呼び出されたシミュレーション IFF ∀(p,q)∈R, if p→αp′ then ∃q′,q→αq′ and (p′,q′)∈R.∀(p,q)∈R, if p→αp′ then ∃q′,q→αq′ and (p′,q′)∈R. \forall (p,q)\in R, \text{ if } p \stackrel\alpha\rightarrow p' …

1
決定可能な問題の割合
何らかの「合理的な」正式な言葉で述べられた決定問題を考慮してください。1つの自由変数を参照フレームとする高次のPeano算術の式を考えてみましょう。しかし、私は他の計算モデルにも同様に興味を持っています。古典的な形式化は問題ありませんが、形式化の選択が答えにどの程度影響するかを知っている場合、それも興味深いでしょう。 長さが与えられた決定問題の文の、我々は数の定義することができます決定可能長さの文のと数の長さの決定不能文の。NNND (N)D(N)D(N)NNNうん(N)うん(N)U(N)NNN との相対的な成長について知られていることは何ですか?言い換えれば、整形式の決定問題をランダムに選択した場合、特定のステートメントの長さに対して決定可能になる確率はどのくらいですか?うん(N)うん(N)U(N)D (N)D(N)D(N) 「ほとんどの問題とアルゴリズムが決定可能かどうか」という質問に触発されました。さて、興味でフィルタリングしない場合、それらはありますか?

5
ラベルなしツリーの効率的な圧縮
ラベルのない、ルート付きのバイナリツリーを検討してください。私たちはできる圧縮サブツリーへのポインタがあるたび:そのような木をTTTとT′T′T'とT=T′T=T′T = T'(通訳===構造的平等など)、我々は保存(WLOG)TTTとのすべてのポインタ置き換えるT′T′T'へのポインタでTTT。例については、uliの回答を参照してください。 上記の意味でツリーを入力として使用し、圧縮後に残る(最小限の)ノード数を計算するアルゴリズムを提供します。このアルゴリズムは、入力のノード数nで、時間O(n log n )O(nlogn)O(nlog⁡n)\cal{O}(n\log n)(均一コストモデル)で実行する必要があります。nnn これは試験問題であり、良い解決策を思い付くことができず、見たこともありません。

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