コンピュータサイエンス

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

7
対角化よりも停止する問題の決定不能性のより直感的な証拠はありますか?
対角化に基づいて、停止問題の決定不能性の証拠を理解します(たとえば、Papadimitriouの教科書で与えられます)。 証明は説得力がありますが(各ステップを理解しています)、問題だけから始めて誰かがそれを導き出す方法がわからないという意味で、私には直感的ではありません。 本の中で、証拠はこのように書きます:「仮定入力上の停止問題解決、つまり、チューリングマシンかどうかを決定し入力のための停止。チューリングマシンの構築チューリングマシンとる入力としての、を実行し、出力を逆にします。」次に、が満足のいく出力を生成できないことを示します。 M ; x M x D M M H(M ; M )D (D )MHMHM_HM; バツM;xM;xMMMバツxxDDDMMMMH(M; M)MH(M;M)M_H(M;M)D (D )D(D)D(D) 一見arbitrary意的な構成、特にを自分自身に送り、次にを自分自身に送り込むという考えが、直観を持ちたいと思っています。そもそもなぜこれらの構成要素と手順を定義するようになったのですか?M DDDDMMMDDD そもそもそのタイプの議論を知らなかった場合、誰かが対角化議論(または他の証拠)にどのように推論するかについての説明はありますか? 回答の最初のラウンドを与えられた補遺: したがって、最初の答えは、停止問題の決定不能性を証明することは、カンターとラッセルの以前の仕事と対角化問題の開発に基づくものであり、「ゼロから」開始することは単にその議論を再発見することを意味することを指摘しています。 けっこうだ。しかし、対角化の議論を十分に理解されているものとして受け入れたとしても、それから停止する問題への「直観のギャップ」があることがわかります。実数の数え難さのカンターの証明私は実際にかなり直感的だと思う。ラッセルの逆説はさらにそうです。 私がまだ見ていないのは、誰かがの「自己適用」に基づいてを定義し、それからを自分自身に適用する動機付けになることです。これは対角化とはあまり関係がないようです(Cantorの議論にはそのようなものがなかったという意味で)。M M ; M DD (M)D(M)D(M)MMMM; MM;MM;MDDD PS @babouは、自分よりも私を悩ませていることを要約しました。「証明の多くのバージョンの問題は、構造が魔法の帽子から引っ張られているように見えることです。」

7
ランダム化アルゴリズムと非決定的アルゴリズムの違いと関係
ランダム化アルゴリズムと非決定的アルゴリズムの違いと関係は何ですか? ウィキペディアから ランダム化されたアルゴリズムは、そのロジックの一部として、ランダムの程度を採用するアルゴリズムです。アルゴリズムは通常、ランダムビットのすべての可能な選択に対して「平均的なケース」で良好なパフォーマンスを達成することを期待して、その動作を導く補助入力として均一にランダムなビットを使用します。正式には、アルゴリズムのパフォーマンスは、ランダムビットによって決定されるランダム変数になります。したがって、実行時間または出力(あるいは両方)はランダム変数です。 非決定的アルゴリズムは決定論的アルゴリズムとは反対に、異なる実行に異なる動作を示すことができるアルゴリズムです。アルゴリズムが実行ごとに異なる動作をする可能性があるいくつかの方法があります。同時アルゴリズムは、競合状態のために異なる実行で異なる実行することができます。確率的アルゴリズムの振る舞いは、乱数ジェネレータによって異なります。非決定的な多項式時間の問題を解決するアルゴリズムは、実行中の選択に応じて、多項式時間または指数時間で実行できます。 ランダム化アルゴリズムと確率的アルゴリズムは同じ概念ですか? はいの場合、ランダム化アルゴリズムは一種の非決定的アルゴリズムですか?

4
特定のサイズのすべての非同型グラフを列挙する
サイズすべての無向グラフを列挙したいのですが、各同型クラスのインスタンスが1つだけ必要です。言い換えると、個の頂点上のすべての非同型(無向)グラフを列挙したいのです。これどうやってするの?nnnnnnn より正確には、次のプロパティを持つ一連の無向グラフを生成するアルゴリズムが必要です:個の頂点上の無向グラフごとに、がと同型であるようなインデックスが存在します。アルゴリズムが可能な限り効率的であることを望みます。言い換えれば、私が気にするメトリックは、このグラフのリストを生成して反復する実行時間です。第二の目標は、アルゴリズムが実装するのに複雑すぎないのが良いことです。G1,G2,…,GkG1,G2,…,GkG_1,G_2,\dots,G_kGGGnnniiiGGGGiGiG_i 各同型クラスから少なくとも1つのグラフが必要であることに注意してください。ただし、アルゴリズムが複数のインスタンスを生成する場合は問題ありません。特に、すべての可能なグラフをカバーしている限り、出力シーケンスに2つの同形グラフが含まれていれば、そのようなアルゴリズムを見つけやすくしたり、より効率的なアルゴリズムを有効にしたりすることができます。 私のアプリケーションは次のとおりです。サイズすべてのグラフでテストしたいプログラムがあります。2つのグラフが同型である場合、私のプログラムは両方で同じ動作をすることを知っています(両方で正しいか、両方で間違っています)ので、各同型クラスから少なくとも1つの代表を列挙し、次にテストするだけで十分ですそれらの入力に関するプログラム。私のアプリケーションでは、はかなり小さいです。nnnnnnn 私が検討したいくつかの候補アルゴリズム: 考えられるすべての隣接行列、つまり、対角線上にすべて0がある対称 0-or-1行列をすべて列挙できます。ただし、これには行列の列挙が必要です。これらの行列の多くは同型グラフを表すため、これは多くの労力を浪費しているようです。2 n (n − 1 )/ 2n×nn×nn\times n2n(n−1)/22n(n−1)/22^{n(n-1)/2} 考えられるすべての隣接行列を列挙し、それぞれについて、以前に出力したグラフのいずれかと同型かどうかをテストできました。以前に出力されたものと同型でない場合は、出力します。これにより、出力リストが大幅に短縮されますが、少なくともステップの計算が必要になります(グラフの同型チェックが超高速であると仮定した場合でも)。私のメトリック。2n(n−1)/22n(n−1)/22^{n(n-1)/2} 隣接行列のサブセットを列挙することは可能です。特に、が個の頂点グラフである、一般性を失うことなく、なるように頂点が配置されていると仮定できます。。言い換えれば、すべてのグラフは、頂点が非減少度の順に配置されているグラフと同型です。そのため、このプロパティを持つ隣接行列のみを列挙すれば十分です。そのような隣接行列がいくつあるのか正確にはわかりませんが、よりもはるかに少なく、GGGnnnV={v1,…,vn}V={v1,…,vn}V=\{v_1,\dots,v_n\}degv1≤degv2≤⋯≤degvndeg⁡v1≤deg⁡v2≤⋯≤deg⁡vn\deg v_1 \le \deg v_2 \le \cdots \le \deg v_n2n(n−1)/22n(n−1)/22^{n(n-1)/2}2n(n−1)/22n(n−1)/22^{n(n-1)/2}計算のステップ。ただし、これによって多くの冗長性が残ります。多くの同型クラスが何度もカバーされるため、これが最適であるとは思えません。 もっと良くできますか?正しく理解すれば、約非同型グラフの等価クラス。上記のアルゴリズムより実行時間が良いアルゴリズムを見つけることができますか?どれだけ近づくことができますか下限?私は主に小さな扱いやすさ(たとえば、または程度;そのようなアルゴリズムを完了までもっともらしく実行できるほど小さい)を気にし、大きな漸近性についてはあまり気にしません。2n(n−1)/2/n!2n(n−1)/2/n!2^{n(n-1)/2}/n!∼2n(n−1)/2/n!∼2n(n−1)/2/n!\sim 2^{n(n-1)/2}/n!nnnn=5n=5n=5n=8n=8n=8nnn 関連:等価でないバイナリ行列を構築します(残念ながら、有効な答えを受け取っていないようです)。

2
チャーチチューリングテーゼとニューラルネットワークの計算能力
Church-Turing論文では、物理的に計算できるすべてのものをチューリングマシンで計算できると述べています。論文「ニューラルネットワークによるアナログ計算」(Siegelmannn and Sontag、Theoretical Computer Science、131:331–360、1994; PDF)は、特定の形式のニューラルネット(設定は論文で提示されている)がより強力であると主張しています。著者は、指数関数的な時間で、彼らのモデルがチューリング機械モデルで計算できない言語を認識することができると言います。 これは教会とチューリングのテーゼと矛盾しないのですか?


4
「機械は驚きを引き起こすことができない」と言ったとき、チューリングは何を意味したのですか?
私はここでアラン・M・チューリング による以下の声明に遭遇しました: 「機械が驚きを引き起こすことはできないという見方は、哲学者や数学者が特に受けやすい誤acyによるものだと思います。これは、事実が心に提示されるとすぐに、その事実のすべての結果が生じるという仮定ですそれと同時に心。それは多くの状況で非常に有用な仮定ですが、それが間違っていることを簡単に忘れてしまいます。」 私は英語のネイティブスピーカーではありません。誰もがそれを平易な英語で説明できますか?

5
ブール検索の説明
母は、ある種の司書になるためにオンラインコースを受講しています。このコースでは、ブール検索を扱っているため、データベースを効率的に検索できますが、次のような質問がありました。 「x OR y」を検索すると、105 000ヒットになりますが、xのみを検索すると80 000ヒットになり、yのみを検索すると35 000ヒットになります。個々の検索を組み合わせて115 000ヒットするのに、なぜ検索 "x OR y"は105 000ヒットするのですか? 私にとってこれは奇妙に聞こえたので、baconとsandwichという言葉を使って自分でテストしました。 ベーコンのみが179 000 000の結果をもたらしました 312 000 000の結果が得られたのはサンドイッチのみ ベーコンORサンドイッチの結果は491 000 000でした しかし、私にとっては、合計:179 000 000(ベーコン)+ 312 000 000(サンドイッチ)= 491 000 000(ベーコンまたはサンドイッチ) ORクエリの結果、個々のクエリを両方組み合わせた場合よりもヒットが少ないのはなぜですか
29 sets  counting 

2
ラムダ計算は純粋に構文ですか?
私はラムダ計算について数週間読んでいますが、既存の数学関数と実質的に異なるものはまだ見ていません。それは単なる表記の問題なのか、新しいものがあるのか​​を知りたいですすべての数学関数に適用されるわけではない、ラムダ計算の公理によって作成されたプロパティまたはルール。だから、例えば、私はそれを読んだ: 「匿名関数が存在する可能性があります」:Lambda関数は匿名ではなく、すべてラムダと呼ばれます。名前が重要でない場合、異なる関数に同じ変数を使用することは数学表記で許容されます。たとえば、ガロア接続の2つの関数は両方とも*と呼ばれることがよくあります。 「関数は関数を入力として受け入れることができます」:これは新しくなく、通常の関数でこれを行うことができます。 「関数はブラックボックスです」:入力と出力だけが数学関数の有効な説明でもあります... これは議論や意見の質問のように思えるかもしれませんが、この質問には「正しい」答えがあるはずです。ラムダ計算が単なる数学関数であるか、またはラムダと通常の関数の間に実質的または意味的な違いがあるかどうかを知るために、表記法、構文規則のいずれかを知りたいです。

2
トポロジに制限が設定されているため、ニューラルネットワークのパフォーマンスが向上するように見えるのはなぜですか?
完全に接続された(少なくとも2つ以上の隠れ層がある層から層へ)バックプロップネットワークは、普遍的な学習者です。残念ながら、彼らはしばしば学習が遅く、過度に適合したり、扱いにくい一般化を持つ傾向があります。 これらのネットワークにだまされてから、エッジの一部を枝刈りすることで(重みがゼロで変更できないように)、ネットワークの学習が速くなり、一般化が促進される傾向があることを確認しました。これには理由がありますか?それは、ウェイト検索スペースの次元の減少のためだけですか、それとももっと微妙な理由がありますか? また、より良い一般化は、私が見ている「自然な」問題の成果物ですか?

2
計算可能な関数よりも計算できない関数の方が多いのはなぜですか?
現在、アルゴリズムと複雑さに関する本を読んでいます。現時点では、計算可能および計算不可能な機能について読んでおり、私の本は、計算可能よりも計算不可能な機能がはるかに多いと述べています。実際、大半は計算不可能です。ある意味では、私はそれを直感的に受け入れることができますが、この本は正式な証拠を与えておらず、トピックについて詳しく説明していません。 ここで誰かがそれについて詳しく説明したり、計算可能な関数よりも計算できない関数が多い理由をより厳密に理解したりすることを望みました。

4
一般化された3SUM(k-SUM)問題?
3SUMの問題は、3つの整数を識別しようとし、B 、CセットからSサイズをNよう+ B + C = 0。a 、b 、ca,b,ca,b,cSSSnnna + b + c = 0a+b+c=0a + b + c = 0 二次、すなわちよりも良い解はないことが推測されます。または、別の言い方をすると:o(n log (n )+ n 2)。o( n2)o(n2)\mathcal{o}(n^2)o(nログ(n )+ n2)o(nlog⁡(n)+n2)\mathcal{o}(n \log(n) + n^2) これが一般化問題に適用される場合、私は思っていたので:整数を探す私のためのI ∈ [ 1 ... K ]集合でSサイズのNようにΣ I ∈ [ 1 .. kの] A I = 0。a私aia_iI …

7
アルゴリズム(および一般的な効率)の重要性は低下していますか?
計算能力の購入は過去よりはるかに手頃であるため、アルゴリズムの知識と効率性はそれほど重要ではなくなりますか?無限ループを避けたいことは明らかです。そのため、すべてがうまくいくわけではありません。しかし、より良いハードウェアを持っているなら、どういうわけかもっと悪いソフトウェアを持っているでしょうか?
29 efficiency 

2
検索アルゴリズムをテストするためのグラフはどこで入手できますか?
ダイクストラ、深さ優先などの一連のパス検索アルゴリズムを実装しています。 最初はいくつかの自作グラフを使用していましたが、今はもう少し挑戦してみたいので、どちらかを探しています ベンチマークで使用されるグラフ。 現実世界の都市のグラフ(または、Googleマップ、または可能であれば他の種類のソースからそのような情報をダウンロードする方法)。 可能であれば、さまざまなサイズのグラフのセットに対してアルゴリズムを試すことができるように、それらのソースにフロンティアを簡単に作成または許可してもらいたいと思います。 私は主要な目標から転用されないようにシンプルなソリューションを探しています(異なるアルゴリズムのセットを比較します)。そのため、グラフデータを独自の形式(基本的には、接続された(x, y)ポイントのセット)。 具体的には、2D巡回グラフを探しています。それらのグラフが現実世界の都市通りを反映している場合(一方通行の通り、双方向の通りなどを考慮に入れて、さらに良い!)

1
有向グラフの2つのノード間の単純なパスの数を数えるのはどれくらい難しいですか?
有向グラフの2つのノード間にパスがあるかどうかを判断するための簡単な多項式アルゴリズムがあります(たとえば、深さ優先探索でルーチングラフトラバーサルを実行します)。 しかし、驚くべきことに、存在をテストする代わりにパスの数をカウントしたい場合、問題はさらに難しくなるようです。 パスが頂点を再利用できるようにする場合、sからtまでのパスの数をn個のエッジで見つける動的プログラミングソリューションがあります。ただし、頂点を再利用しない単純なパスのみを許可する場合、考えられる唯一の解決策は、パスのブルートフォース列挙です。これは、指数関数的な時間の複雑さを伴います。 お願いします 2つの頂点間の単純なパスの数を数えるのは難しいですか? もしそうなら、それは一種のNP完全ですか?(私はそれが技術的に意思決定の問題ではないという理由で言っています...) そのようなハードカウントバージョンを持っているPの他の問題はありますか?**

2
合計関数が列挙できないのはなぜですか?
関数の列挙の概念について学びました。実際には、プログラミング言語に対応しています。 教授は、発言の中で、すべての合計関数(つまり、すべての入力に対して常に終了する関数)のクラスは列挙できないと述べました。つまり、すべての全機能を記述できるプログラミング言語を考案することはできませんが、他の機能は一切実現できません。 それで、まともな計算能力が必要な場合、どうやら(明らかに)非終了の可能性を受け入れなければならないのでしょうか?

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