コンピュータサイエンス

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


6
特定の入力/仮定に対して計算可能な停止問題
プログラムxが停止するかどうかを計算するプログラムP(x)がある場合、Pを入力としてPを与えるとパラドックスが発生するため、停止問題は計算可能ではないという証明の理解から、この問題は計算できません。同じP、P:P(P)、Pが停止するか、P自体を使用しないかを決定しようとする だから私の質問は:P自体以外の入力として使用される他のすべてのプログラムについて、プログラムPによって停止問題を計算できますか?言い換えると、停止の問題はこの特別な場合にのみ計算できないのですか、それとも証明がより一般的で、何かが足りないのですか?

1
なぜ関数型プログラミングは動的ツリーを研究していないのですか?
動的ツリーは、ネットワークフロー、動的グラフ、組み合わせの問題(TarjanおよびWerneckによる「Dynamic Trees in Practice」)や最近の辞書のマージ(Adam Karczmarzによる「A Simple Mergeable Dictionary」)などの問題の解決に重要な役割を果たします。 動的ツリーについては、1983年のSleator&Tarjanの論文「動的ツリーのデータ構造」に記載されている定義を参照します。 Edward Kmettは、主にC ++の対応物の翻訳として、STツリーのバージョンを実装しました。リンクカットツリーを参照してください。 クリス・オカサキは、著名な著書「純粋に機能的なデータ構造」に、スプレイツリーの限定的な実装を書いています。 Ralf HinzeとRoss Patersonは、2〜3本のフィンガーツリーと呼ばれる機能的なデータ構造を導入しましたが、動的ツリーの元の定義とは多少異なる目的があります。 動的ツリーの実装(およびパフォーマンス)は、次の3つのアプローチに従って分割されます。 ETツリー(オイラーツアー)が重要な役割を果たす線形化。純粋に機能的な研究は見つかりませんでした。 STツリーが主力であるパス分解では、Kmettのバージョンが見つかりました。 ツリーの収縮。トップツリー、トポロジツリー、およびRCツリーがプレーヤーです。純粋に機能的な研究は見つかりませんでした。 純粋に機能的な分析と実装は、Splay、AVL、赤黒木で見つけることができますが、それらは動的な木ではありません。前者は後者のシャドウ(仮想または補助とも呼ばれる)データ構造と見なされます。 だから、私の質問は: 関数型プログラミング研究コミュニティが動的ツリーデータ構造に参加しない理由(欠点、弱点)は何ですか?

1
線形文脈自由文法の言語平等は決定可能ですか?
2つの文脈自由文法とG 2を考えて、次の質問をしてみましょう:L (G 1)= L (G 2)、つまり、2つの文法は同等ですか?G1G1G_1G2G2G_2L (G1)= L (G2)L(G1)=L(G2)L(G_1) = L(G_2) 一般に、この問題は決定不能です。ただし、とG 2の両方が左線形(または右線形)文法である場合、両方の文法が通常の言語を記述するため、問題は決定可能です。G1G1G_1G2G2G_2 私の質問は、両方の文法が線形であるときに同じ問題が決定可能かどうかです。また、誰かが関連する文献を参照できる場合、それは非常に高く評価されます!


2
コンビネータ計算の基底セット
SおよびKコンビネータは、他のすべてのコンビネータをそれらの観点から表現できるという意味で、コンビネータ計算の基底セットを形成することはよく知られています。同じ特性を持つカレーのB、C、K、Wベースもあります。そのようなベースは無数にあるに違いありませんが、他のベースは知りません。 Iotaコンビネーターや、Fokkerによって構築/レビューされた他のさまざまなコンビネーターなど、単一のコンビネーターベースが多数あることを認識しています。ただし、これらは「不適切な」コンビネータです。つまり、純粋な抽象化ではなく、他のコンビネータに関して表現されます。1 この質問の目的のために、私は適切なコンビネータで構成される基底セットにのみ興味があります。 他の可能な基底系の研究もありますか?理想は、さまざまな組み合わせが体系的に研究される、他のさまざまな計算モデルに関する Wolframの研究に沿ったものです。特に、次の事柄の簡単な例が知られているかどうかに興味があります。 Iコンビネーターを含む最小基底セット。(私は「最小」を使用して、メンバーを削除すると、それが基礎になるのをやめるので、SKIの基礎は考慮されません。) Yコンビネーターまたはコンビネーター(別名mockingbird)を含む最小基底セットωω\omega S、K、およびB、C、K、W以外の組み合わせロジックの他の可能なベースに関するその他の情報は、本当に役立ちます。 より広い点として、私は純粋に機械的なシステムとしての組み合わせ計算の研究に興味があります。つまり、特定のセマンティックな解釈を与える必要のないラベル付きノードを持つ二分木の変換ルールのセットとして。このアプローチを取るリソースへのポインタは大歓迎です。(Mockingbirdをモックするには、このアプローチを使用しますが、プレゼンテーションは不完全です。一方、BarendregtのLambda Calculusはセマンティクスと非常に結びついているため、興味のある純粋に機械的な側面を抽出することは困難です。) 図1は、正確には:適切なコンビネータフォームの式で計算ラムダに、のみを有する、などを自由変数として使用します。抽象化は含まれません。たとえば、は適切なコンビですが、はそうではありません。ラムダ項に適用されるが含まれているためです。(λ 。X1バツ2… P(x1、x2、… )))(λ。バツ1バツ2…P(バツ1、バツ2、…))(\lambda.x_1x_2\dots P(x_1,x_2,\dots))P(x1、x2、… )P(バツ1、バツ2、…)P(x_1,x_2,\dots)バツ1バツ1x_1バツ2バツ2x_2(λ X 、Yz。x (zz))(λバツyz。バツ(zz))(\lambda x y z. x(z z))(λ X 。X (λ Y。y))(λバツ。バツ(λy。y))(\lambda x. x(\lambda y.y) )バツバツx

4
排除された中間の法則がなくても、矛盾による証明は機能しますか?
私は最近、矛盾による証明の有効性について考えていました。直観主義の論理とゲーデルの定理に関する過去数日間の記事を読んで、質問に対する答えが得られるかどうかを確認しました。今はまだ質問が残っており(おそらく私が読んだ新しい資料に関連する)、いくつかの答えが得られることを望んでいた (警告:あなたは論理の非常に混乱した基盤でコンテンツを読みに行こうとしている、すべてを一粒の塩で取り、それは答えではなく質問であると仮定し、それに多くの誤解があります)。 私の主な質問は、Aが何らかの矛盾につながることを示したら、Aが偽であってはならないことを示したら、Aが真でなければならないと結論付けることだと思います。その部分は理にかなっています(特に、除外された中間の法則を理にかなっているものとして受け入れる場合)が、気になるのは、矛盾による証明が実際にどのように発生するかです。まずAではなくAから始めて、公理と推論の規則を(機械的に言うと)適用し、それが私たちをどこに導くかを見てみましょう。通常、矛盾に達します(たとえば、Aがtrueまたはおよびがtrue)。私たちは、Aが偽であってはならないと結論付け、Aは真です。それはいいです。しかし、私の質問は、正式なシステムにはどのような保証がありますか¬φ¬φ\neg \varphiϕϕ\phi同じプロセスを適用したが、Aで開始した場合、矛盾も生じないでしょうか?Aの同じプロセスが同様に行われた場合、矛盾に到達しないという矛盾によって、いくつかの隠れた仮定が行われていると思います。不可能な証拠はありますか?言い換えれば、ターニングマシン(TM)(またはスーパーTM)が永遠に続き、おそらく公理からのすべての論理的ステップを、本当のステートメントAから始めて試行した場合AAA、矛盾を見つけるために停止しないことが保証されます? その後、私は過去の質問と、ゲーデルの次のような不完全性定理との関係を作りました。 算術を表現する形式システムFは、(F内で)独自の一貫性を証明できません。 これは基本的に、それが本当なら一貫性、つまりAではなくAが起こらないことを保証することは不可能であることを私に明確にした。したがって、矛盾による証明は、一貫性が何らかの形で保証されていると暗黙的に仮定するだけであるように思われました(そうでなければ、なぜその一貫性をまだ知らなかった場合、Aが可能でないことを証明することによってAが真であると結論付けますか?そして、A)ではなくA)のステートメントのペアについては、矛盾はありませんか?これは間違っていますか、何か見落としましたか? 次に、除外された中間のルールを公理に含めるだけで、すべての問題が解決されると考えました。しかし、気が付いたのは、それをやるのであれば、それを処理するのではなく、単に問題を定義するだけだということです。定義によってシステムの整合性を強要しただけでは、必ずしも実際に整合性があるとは限りません...そうでしょうか?私はこれらのアイデアを理解しようとしているだけで、何をすべきかはよくわかりませんが、これらの概念、矛盾、排他的ミドルのほぼすべての側面で何かを読んでビデオを見た後、これが実現しています直観主義論理、ゲーデルの完全性および不完全性定理… これに関連して、除外された中間(または矛盾)のルールなしに何かが偽であることを実際に直接証明することは本質的に不可能であると思われます。証明システムは真の陳述を証明するのに優れているようですが、私の理解では、物事が偽であることを直接示すことはできません。おそらく、彼らがそれを行う方法は、矛盾(間接的に何かが間違っているか悪いことが起こるはずだと示す)、または除外された中間(一方のAのみの真理値を知っているかAが他の真実を私たちに与える場合)または反例を提供します(基本的に反対のことが当てはまるので、除外された中間の法則を間接的に使用します)。何かが間違っているという建設的な証拠が本当に欲しいのでしょうか? Aが偽ではないことを証明すれば(矛盾を受け入れると)本当に大丈夫であり、Aにすべての推論規則と公理を無限に適用する必要はなく、Aが勝ったことが保証されていることを知っていると思います矛盾に到達しないでください。それが本当なら、矛盾による証明をもっと簡単に受け入れることができると思います。これは本当ですか、またはゲーデルの2番目の不完全性は、私がこれを所有できないことを保証しますか?私がこれを持てなければ、私が困惑するのは、長年の数学者が私たちが矛盾を発見していない数学をすることで、それがどのように可能かということです。一貫性の経験的証拠に頼る必要がありますか?または、たとえば、FがFであると証明することでF教授は一貫していますが、実際にはSuperFとFだけは必要ないので、本当に機能するコンテンツにはなれませんか? 私は自分の苦情が直接的な証拠にも一般化されていることに気づきました。わかりましたので、Aの直接証明を行った場合、Aが真であることがわかります...しかし、A以外の直接証明を行った場合、正しい証明も得られないことをどのように確認できますか?同じ質問を強調しているように見えます。

3
最も効率的な定数空間ソートアルゴリズムは何ですか?
私は配列のサイズ以外のバイトを割り当てず、2つの命令に制限されているint配列のソートアルゴリズムを探しています: SWAP:次のインデックスを現在のインデックスと交換します。 MOVE:カーソルを+1または-1インデックスに移動します。 つまり、indexを交換した100だけでは、隣接していないインデックスを交換したり、インデックスを交換したりすることはできません10。最も効率的なアルゴリズムは何ですか?つまり、総移動量が少ないアルゴリズムですか?

6
コミットされていないトランザクションを逆順に元に戻す必要があるのはなぜですか?
いくつかのトランザクションが勝つ(クラッシュの前にコミットされる)、いくつかのトランザクションが失われる(まだコミットされていない)データベースログがあります。授業で、敗者の行動は元に戻す必要があることを学びました。 これを逆方向に行う理由はありますか?誰でも前方への取り消しが間違った結果をもたらすログの簡単な例を与えることができますか?

3
クラスNP-CompleteがNP-hardと比較して重要なのはなぜですか?
私は計算の複雑さを研究していますが、NP-Complete(NPC)問題がなぜ重要なクラスなのか疑問に思っていました。特定のNP問題がNP困難であることを示すことに興味があるのは明らかです。 また、NPCの定義も理解しています。また、特定の決定問題を示すことはNP困難であり、NPにあることを知っていることはまさにNPCの意味でした。 しかし、私が理解していないのは、なぜこの概念がそれほど重要なのかということです。確かに、時間P(NPにあるかどうかに関係なく)で実行されるNPハードアルゴリズムが見つかった場合、であることを示しました。NP= PNP=PNP = P なぜこの概念がそんなに重要なのですか?

12
文字列間の違いをすばやく見つけるためのデータ構造またはアルゴリズム
私はすべて長さの100,000文字列の配列を持っています。各文字列を他のすべての文字列と比較して、2つの文字列が1文字異なるかどうかを確認します。現時点では、各文字列を配列に追加するときに、配列内の既存のすべての文字列に対してチェックしています。これは、時間の複雑さを持っています。kkkn (n − 1 )2kn(n−1)2k\frac{n(n-1)}{2} k 私がすでにやっていることよりも速く文字列を互いに比較できるデータ構造またはアルゴリズムはありますか? 追加情報: 注文事項は:abcdeとxbcdeしながら、1つの文字によって異なるabcdeとedcba4つの文字で異なります。 1文字異なる文字列のペアごとに、それらの文字列の1つを配列から削除します。 現在、私は1文字だけ異なる文字列を探していますが、その1文字の差を、たとえば2、3、または4文字に増やすことができればいいと思います。ただし、この場合、文字差の制限を大きくする能力よりも効率のほうが重要だと思います。 kkkは通常20〜40の範囲です。

1
「機械学習」という用語を生み出したのは誰ですか?
「機械学習」という用語を生み出したのは誰かを把握しようとしています。補助的な質問は、アーサー・サミュエルが1959年の「機械学習」の分野を次のように定義しているとして引用されている場所からです。 コンピューターが明示的にプログラムされなくても学習できるようにする研究分野 ? この定義への多くの参照はインターネットで見つけることができますが、ソースを追跡することができませんでした。チェッカーに関する1959年の論文としてそれを挙げている人もいますが、そのような定義はありません。

3
1つの配列が他の配列のソートバージョンかどうかを確認する決定論的線形時間アルゴリズム
次の問題を考慮してください。 入力:長さnの 2つの配列AAAおよびここで、Bはソート順です。BBBnnnBBB クエリは:ないAAAとBBB(その多重度)と同じ項目が含まれていますか? この問題の最速の決定論的アルゴリズムは何ですか? それらをソートするよりも速く解決できますか?この問題は確定的な線形時間で解決できますか?

5
Collat​​z再帰の実行時間
次のPythonコードがあります。 def collatz(n): if n <= 1: return True elif (n%2==0): return collatz(n/2) else: return collatz(3*n+1) このアルゴリズムの実行時間は? 試してください: 場合関数の実行時間を示します。そして、私は T(n)T(n)T(n)collatz(n)⎧⎩⎨T(n)=1 for n≤1T(n)=T(n/2) for n evenT(n)=T(3n+1) for n odd{T(n)=1 for n≤1T(n)=T(n/2) for n evenT(n)=T(3n+1) for n odd\begin{cases} T(n)=1 \text{ for } n\le 1\\ T(n)=T(n/2) \text{ for } n\text{ even}\\ T(n)=T(3n+1) \text{ …

1
数に等しい二項係数を見つけることの複雑さ
バイナリエンコーディングでビットを使用して)数値取得していると仮定します。O (log m )mmmO(logm)O(log⁡m)O(\log m) どれだけ速く見つけることができますか(またはそのようなものが存在しないと判断しますn,k∈N,1&lt;k≤n2:(nk)=mn,k∈N,1&lt;k≤n2:(nk)=mn,k\in \mathbb N, 1<k\leq\frac{n}{2}:{n \choose k}=m か)? たとえば、入力m = 8436285が与えられた場合、n = 27、k = 10をm=8436285m=8436285m=8436285出力できます。n=27,k=10n=27,k=10n=27, k=10 問題の単純なアルゴリズムは、nのすべての可能な値を調べ、プロパティを満たすkのnnn値を検索します。kkk 簡単な観察は、\ log mより小さいまたはO(\ sqrt m)より大きいnの値をチェックする必要がないということです。ただし(n値ごとにO(1)可能なk値のみをチェックできたとしても)これは、入力サイズが指数関数的である非効率的なアルゴリズムになります。nnnlogmlog⁡m\log mO(m−−√)O(m)O(\sqrt m)O(1)O(1)O(1)kkknnn 別のアプローチは、kの可能な値kkkを調べて(\ {2,3、\ ldots、2 \ log m \}をチェックするのに十分です{2,3,…,2logm}{2,3,…,2log⁡m}\{2,3,\ldots,2\log m\})、nnn値をチェックするたびに行います。その後、次を使用できます: (nk)k&lt;(nk)&lt;nkk!(nk)k&lt;(nk)&lt;nkk!\left(\frac{n}{k}\right)^k<{n\choose k}< \frac{n^k}{k!} したがって、与えられたkに対して、範囲[\ sqrt [\ leftroot {-2} \ uproot {2} k] {m \ …

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