コンピュータサイエンス

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

2
メンバーが他のセットの最大数に含まれている固定サイズのセットを見つける
ゲーテインスティトゥートで初心者レベルの外国語教授と出会い、できるだけ多くの学生とコミュニケーションをとるために学生が話す最も一般的な5つの言語を学んだことから、私は問題について考えていました。 有限数の人々がいて、それぞれがいくつもの言語を話しているとします。問題の目的のために、実際の言語を複雑にするいくつかのことを無視します(たとえば、人々は複数の言語を話しますが、異なるレベルでは、1つの言語を理解する人々は密接に関連する言語を理解できるかもしれません)言語など)。 したがって、たとえば: P 1が話す{English, German}。 P 2が話す{Spanish, Italian, French}。 P 3が話す{Mandarin, English}。 P 10000が話す{Afrikaans, Swahili, English}、など。 できるだけ多くの人に理解していただけるように翻訳したい文書を書いています。残念ながら、私の予算は限られているため、N言語にしか翻訳できません。 与えられたNの値に対して、意図した母集団から最大数の人々に到達するためのN言語の最適セットをどのように計算しますか? この問題は、集合論/組み合わせ論の問題として簡単に一般化できるように聞こえるので、誰かが以前にそのような何かに取り組んだことがあると私は確信しています。既存の文献を見てみたいのですが、それを見つける方法がわかりません。 このタイプの問題に名前はありますか?そうでない場合は、別の既知の問題に削減できますか?



1
二分根ツリー同型
私の木は根が張られており、すべての頂点に最大で2つの子があります。以下の質問の一部またはすべてを解決するのに役立つリファレンスが必要です。 n個の頂点を持つツリーの同型クラスはいくつありますか? 与えられた2つのツリーが同型であるかどうかを判断するための古典的なアルゴリズムは何ですか? 素敵な(計算可能な?)同型不変量はありますか? もちろん、答えは木を定義するために使用された構造に依存するかもしれませんが、構造の正しい選択は私が求めている答えの一部だと思います。

2
ゼロ知識証明:抽象例
だから私はウィキペディアでZKPについて読んでいました、要約の抽象的な例は次のようになります: ペギーはビクターに秘密の言葉をビクターに明かさずにAとBを接続する洞窟内部のドアの秘密を知っていることをビクターに証明したいと考えています(図を参照)。 ペギーはビクターに知られていないランダムなエントリを取ります ビクターはペギーに叫び、パスAまたはBから出ます(ランダムに選択) そのため、ビクターに秘密の言葉を明かさずに、ビクターが選択した経路から抜け出すには、彼女が秘密の言葉を知っている必要があります。これが行われる回数が増えるほど、ビクターは信頼を築きます。 しかし、なぜビクターはペギーがどの道から入ってくるかを見ることができないのですか?これは秘密の言葉が何であるかについての追加情報を明らかにしないので。 どうしてビクターは彼女がどのように入るのかわからず、彼女に4つの可能性を示すように頼むことができません。 Aから入り、Aを出る Aから入り、Bを出る Bから入り、Aから出る Bから入り、Bを出る

2
非決定性チューリングマシンは一般的な関数問題をどのように計算しますか?
(これは以前に尋ねられたことがないといいのですが、何も見つかりませんでした。) 私の理解では、受け入れ可能パスの存在が必要であるため、非決定性は決定問題にのみ適用されます。ウィキペディアでは、クラス -easyは、NPの決定問題のオラクルにアクセスして、決定論的ポルタイムで解けるように定義されています。だからこれは私の仮定を裏付けているようです。NPNPNP 私の質問は次のとおりです。一般的な関数の問題を計算するために非決定性のチューリングマシンを定義するための認められた方法はありますか?(そして、それは常に決定問題のための神託を迂回することによってですか?)


1
ゴールデンチケットのように、古いSATソルバーを使用して新しいソルバーを発見する方法
ランスフォートナウの著書『ゴールデンチケット』では、NP完全問題の多項式時間アルゴリズムが得られたら、それを使用してより高速なアルゴリズムを見つけることができると述べています。それがどのように行われるか教えていただけますか?そして、それが完了すると、新しいアルゴリズムを使用して、固定小数点まで、さらに高速な1つの広告を検出できます。以下は本からの正確な引用です: 「では、1つの願いだけを叶えてくれる魔神に何を求めますか?」とアドバイザーは言った。 「わからない」とスティーブは答えた。 「あなたはすべての願いを叶える精霊を求めます。」 ことわざの電球がスティーブの頭から消えた。彼はクリーク問題をどこかに解決するためのより良いアルゴリズムがあるはずだと知っていましたが、彼自身でそれを理解することはできませんでした。しかし、彼は精巧な清華コードを持っていました。そこで彼は、清華ルーチンを使用してNP問題のより良いアルゴリズムを検索するプログラムを作成しました。 イリノイ大学を拠点とする全米スーパーコンピューティングアプリケーションセンター(NCSA)のコンピューティングリソースを使用する許可を得た。数週間の処理時間の後、彼の作業は少し成果を上げ、清華コードより5%改善された新しいアルゴリズムを見つけました。研究論文には十分ですが、実際の影響を与えるには不十分です。 彼の顧問は単に「新しいコードを使ってもう一度やり直してください」と言った。 そこでスティーブは新しいコードを使用して、NP問題のさらに高速なアルゴリズムを見つけました。数週間後、彼は20パーセント改善しました。 しかし、彼の顧問は感銘を受けませんでした。"もう一回やってみよう。" スティーブは、「見つけた新しいコードを自動的に試し続けるようにコンピューターをセットアップしないのはなぜですか?」 顧問はその見た目、彼が悟りを達成した、または少なくとも明白なことに気付いた学生に言った見た目を与えました。 スティーブはオフィスに戻り、より高速なコードを検索するコードを書くというトリッキーなプロセスを開始し、このより高速なコードを使用してさらに高速なコードを見つけ、それ以上の改善が見られなくなるまでこのプロセスを続けました。 次にSATに焦点を当てます。MiniSATは高速SATソルバーですが、多項式時間ほどではありません。 MiniSATを使用して新しいSATソルバーを機械的に検出する方法

2
P⊆NPの1文の証明
最近、私はドキュメント[1]を読んでいます。このドキュメントでは、クック教授が簡単な証明を提供しています。P⊆NPP⊆NP\mathbf{P} \subseteq \mathbf{NP} であることを示すのは簡単ですが超える各言語では、場合、多項式時間チェック関係定義できるからです。 by for all。P⊆NPP⊆NP\mathbf{P} \subseteq \mathbf{NP}LLLΣΣ\SigmaL∈PL∈PL \in \mathbf{P}R⊆Σ∗∪Σ∗R⊆Σ∗∪Σ∗R \subseteq \Sigma^* \cup \Sigma^*R(w,y)⟺w∈LR(w,y)⟺w∈LR(w, y) \Longleftrightarrow w \in Lw,y∈Σ∗w,y∈Σ∗w, y \in \Sigma^* [1]のように、との定義を知っていますが、それでもこの証明を理解できません。誰かが証拠を私に説明できますか?一文でもいいです。PP\mathbf{P}NPNP\mathbf{NP} ちなみに、はすべきだと思います。私は正しいですか?Σ∗∪Σ∗Σ∗∪Σ∗\Sigma^* \cup \Sigma^*Σ∗×Σ∗Σ∗×Σ∗\Sigma^* \times \Sigma^* 参照 [1] S.クック、P対NP問題、[オンライン] http://www.claymath.org/sites/default/files/pvsnp.pdf。

2
指定された高さのすべてのバイナリツリーをリストするアルゴリズム
私は与えられた高さのすべての二分木をリストするアルゴリズムを見つけようとしました hhh。 私はそれらを数えようとしているわけではないことに注意してください:そのような木の数はOEIS(A001699)で与えられています。 私が見ることができたすべてのアルゴリズムは、指定された数のノードのすべてのバイナリツリーをリストします。問題を解決する非常に非効率的な方法は、間にいくつかのノードを持つすべてのツリーをチェックすることによって続行されますh + 1h+1h+1 そして 2h + 1− 12h+1−12^{h+1}-1、しかしこれはまったく素晴らしいことではありません。 ポインタや参照は大歓迎です。

2
プログラムを逆方向に実行する
プログラムを逆方向に実行できるデバッガーを使用したことはありませんが、使用したいと思います。さて、逆方向実行可能プログラミングについて多くの証拠と理論があるのか​​、いつ、なぜプログラムを逆方向に実行できるのか、いつ、なぜそうしないのか? 直感的には、プログラムが逆方向に実行されることがわかっているため、プログラムが逆方向に実行されると、コンピューターがプログラムを逆方向に実行できるはずです。 デバッグは実際の例にすぎません。私はまた、可逆性の理論のためにそれに興味があります。プログラムを逆方向に実行できる場合、プログラムが行うことは可逆的ですよね。

1
戦艦パズルNPコンプリートの解決策があるかどうかを判断するのはなぜですか?
このペーパーhttp://www.mountainvistasoft.com/docs/BattleshipsAsDecidabilityProblem.pdfは、「特定のパズルを考えれば、解決策はありますか?」という決定の問題について述べています。NP-Completeです。これが多項式時間で実行できない理由がわかりません。2つの船が直交または斜めに隣接できないという制約がある場合、「船」の2倍の列があり、すべての船の間に「セパレーター」を配置するのに十分な行があるグリッドを作成しないのはなぜですか。還元がこのように示されるのを見てきましたが、多項式時間で行うことができるようです。

2
最も表現力豊かな、終了言語は何ですか?
私はほとんど何でも書くことができる言語にはあまり興味がありませんが、あなたが書いたものが終了するという付随する証拠を書く必要があります。 私は本質的に、構造によって特定の複雑さのクラスに本質的に制限されている言語のデザインスペースに興味があります。 サブチューリング完全言語には何らかの理論階層がありますか?

1
GHC以外のスパインレスタグレスGマシンの実装はありますか?
サイモンペイトンジョーンズ(最近の王立協会会員)から、「ストックハードウェアに遅延関数型言語を実装する:Spineless Tagless G-Machine」というペーパーを読みました。 現在、このペーパーは、Haskellを実装するときにHaskellを遅延言語にして、当時抱えていたいくつかの問題を解決した方法の一部です。 比較可能な唯一の論文は次のようです。Java仮想マシン用のスパインレスタグレスGマシンに基づく遅延関数型プログラムのコンパイルが利用可能な実装がないようです。 接線的に関連しているのは、HaskellをJavaにコンパイルすることです。ただし、このアプローチでは、スパインレスタグレスGマシンの実装をGHCに残し、出力を読み取ります。 私の質問は、GHC以外にスパインレスタグレスGマシンの実装はありますか?
7 compilers 

3
意志
意志 L={a∗b∗}L={a∗b∗}L = \{a^* b^*\} 通常の言語として分類されますか? 私はそれを知っているので混乱しています L={anbn}L={anbn}L = \{a^n b^n\}定期的ではありません。クリーネスターはどのような違いがありますか?

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