タグ付けされた質問 「computation-models」

計算に使用される一連の許容される操作の定義とそれぞれのコスト。モデルの例としては、チューリングマシン、再帰関数、ラムダ計算、生産システムなどがあります。


6
チューリングマシンが計算の一般的なモデルであるのはなぜですか?
私はCS学部です。Turingがどのようにして彼の抽象的なマシン(計算を行う人をモデル化する)を思いついたのかは理解していますが、私にとっては扱いにくい、洗練されていない抽象化のようです。なぜ「テープ」、マシンヘッドが記号を書いたり、状態を変えたり、テープを前後に動かしたりするのか、と考えるのはなぜですか。 根本的な意味は何ですか?DFAはエレガントです。通常の言語を認識するために必要なものを正確にキャプチャしているようです。しかし、チューリングマシンは、私の初心者の判断では、単なる不器用な抽象的な仕掛けです。 それについて考えた後、最も理想的な計算モデルは、入力文字列に対応するいくつかの物理システムが、動きに設定された後、静的平衡に達すると言うことだと思います。元の文字列からのシステムは、正しい出力文字列に対応します。これは、システムが元の状態のみに基づいて決定論的に変化するため、「自動化」の概念を捉えています。 編集: いくつかの回答を読んだ後、チューリングマシンについて私を混乱させるのは、それが最小限に思えないことであることに気付きました。計算の標準モデルは明らかに計算可能性の本質を伝えるべきではないでしょうか? また、明確でない場合は、DFAが計算の完全なモデルではないことを知っています。 返信いただきありがとうございます。

7
チューリングマシンは「定義上」最も強力なマシンですか?
チューリングマシンが「可能なすべての数学的問題」を実行できることに同意します。しかし、それはアルゴリズムの単なるマシン表現であるためです。最初にこれを行い、次にそれを行い、最後にそれを出力します。 解けるものはすべてアルゴリズムで表すことができるということです(正確には「解ける」の定義だからです)。それは単なるトートロジーです。ここで新しいことは何も言わなかった。 また、アルゴリズムのマシン表現を作成することにより、すべての可能な問題を解決することも新しいことではありません。これも単なるトートロジーです。基本的に、チューリングマシンが最も強力なマシンであると言われるとき、それが効果的に意味するのは、最も強力なマシンが最も強力なマシンであることです! 「最も強力な」の定義:任意の言語を受け入れることができるもの。 「アルゴリズム」の定義:何でもするためのプロセス。「アルゴリズム」のマシン表現:​​何でもできるマシン。 したがって、アルゴリズムのマシン表現が最も強力なマシンになることは論理的です。アラン・チューリングが私たちに与えた新しいものは何ですか?


7
マルチコアCPUで実行しなければならないことはありますか?
プログラムがどのようにマルチスレッドに対応する必要があるかを考えると、私のチームは、シングルコアCPUでは絶対にできないことはないかと困惑しました。グラフィック処理には大規模な並列処理が必要であると仮定しましたが、DOOMなどの処理はGPUのないシングルコアCPUで行われたと主張しています。 マルチコアプロセッサで実行する必要があるものはありますか? 開発と実行の両方に無限の時間があると仮定します。

3
関数型言語のアルゴリズムの複雑さはどのようにモデル化されますか?
アルゴリズムの複雑さは、下位レベルの詳細に依存しないように設計されていますが、命令型モデルに基づいています。たとえば、ツリー内のノードへの配列アクセスや変更にはO(1)時間かかります。これは、純粋な関数型言語では当てはまりません。Haskellリストへのアクセスには直線的な時間がかかります。ツリー内のノードを変更するには、ツリーの新しいコピーを作成する必要があります。 次に、関数型言語のアルゴリズムの複雑さの代替モデリングが必要ですか?

2
量子ラムダ計算
古典的に、計算について考える一般的な方法は3つあります。チューリングマシン、回路、およびラムダ計算(ほとんどの機能ビューのすべてをキャッチとして使用します)。3つすべては、さまざまなタイプの問題について考えるための実り多い方法であり、このため、さまざまな分野でさまざまな定式化が使用されています。 ただし、量子コンピューティングを扱うときは、回路モデルについてしか考えません。もともと、QCは量子チューリングマシンの観点から定義されていましたが、私が理解している限り、この定義は(両方とも慎重に定式化された場合の量子回路に相当しますが)あまり実りがありませんでした。第3の定式化(ラムダ計算または同様の機能設定に関して)私は完全に不慣れです。したがって、私の質問: 量子ラムダ計算(または他の機能的パラダイム)の有用な定義は何ですか? QIPのどのサブフィールドが、回路モデルの代わりにこの定式化を使用することでより深い洞察を得ますか? ノート 私は、セルオートマトン、RAMモデルなど、他の多くの一般的な形式を無視していることを認識しています。これらを除外するのは、これらのモデルに関して古典的に考える経験がなく、量子的だからです。 また、測定ベース、トポロジカル、断熱など、量子環境には一般的な選択肢があることも認識しています。私は古典的な対応物に精通していないので、それらについて議論しません。

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

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

2
Cのvoid型がempty / bottom型と類似していないのはなぜですか?
ウィキペディアと私が見つけた他のソースはvoid、空のタイプではなくユニットタイプとしてリストCのタイプを見つけました。void空の/下の型の定義によりよく適合するように思えるので、この混乱を見つけます。 void私が知る限り、値は存在しません。 戻り値の型がvoidの関数は、関数が何も返さないため、何らかの副作用しか実行できないことを指定します。 タイプのポインターvoid*は、他のすべてのポインタータイプのサブタイプです。また、void*C との間の変換は暗黙的です。 最後の点voidに、空の型であることの引数としてのメリットがあるかどうかはわかりvoid*ませんvoid。 一方、voidそれ自体は他のすべてのタイプのサブタイプではありません。これは、タイプがボトムタイプであるための要件であると言えます。
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

6
チューリングマシンに物理的な類似性はありますか?
最近、CSクラスでチューリングマシンを紹介しました。 授業の後、テープとマシンの関係を理解し​​ようと2時間以上費やしました。 今日まで、コンピューターテープの存在や、テープとマシンがどのように相互作用しているかについてはまったく知りませんでした。マシンがテープを読み取る理由はまだわかりませんが、スキャナーはおそらくチューリングマシンに近い概念であり、紙はテープと見なされ、スキャナーの内部に入るものはチューリングマシンが行うものです。 しかし、いずれにせよ、チューリングマシンのアイデアは非常に古風ではありませんか?オフィスやリビングルームには、チューリングマシンの機能を果たしていると思われる物理的(仮想的ではなく)デバイスが数多くあります。 この仮想的な概念の本質的な機能が捕捉されるように、誰かが現実からより良い例を描くことができますか?

8
すべての表現が意味をなすプログラミング言語
推奨に従って、私はこれをStack Overflowから再投稿しています。 最近、次の問題を考えています。 標準の「Hello world!」のコードを検討してください。プログラム: main() { printf("Hello World"); } これで、このコードのほとんどすべての変更は完全に役に立たなくなり、実際、ほとんどすべての変更はコードのコンパイルを妨げます。例えば: main(5 { printf("Hello World"); } さて、実際の質問に。シンボルのあらゆる可能な組み合わせ、つまりすべての表現が意味をなすプログラミング言語はありますか?私はある種の解決策について考えてみましたが、2つ考えました 限られた数の変数を持つPostfix。基本的に、コードを記述する前にすべての変数が既に定義されているので、それらを操作する必要があります。理論的には、多くの単純なプログラムのチェーンを形成して、それぞれが他の人に結果を供給することにより、任意の数の操作を実行できます。コードは、後置記法の一連の文字として書くことができます。 変数のスタックを持つ「Postfix」。変数はスタックに保存されます。すべての操作は、上から2つの変数を取り、その場所に結果を置きます。プログラムは、最後の操作または変数に到達すると終了します。 個人的に私はこれらの両方が嫌いです。それらは限られているだけでなく、優雅でもありません。これらは回避策のような実際のソリューションではなく、本質的に外部プロセスへの一部の作業の「オフショアリング」です。 この問題を解決する方法は他にありますか?

5
計算のより高いレベルの説明に逃げることにより、停止問題を「解決」できますか?
最近、停止問題の決定不能性に関するチューリングの証明がラッセルの理髪師のパラドックスに非常に似ているという興味深い類推を聞いたことがあります。 だから私は不思議に思いました:数学者は最終的に、Cantorの素朴な定式化からより複雑な公理系(ZFC集合論)に移行し、重要な除外(制限)と途中での追加を行うことで、集合論を一貫させることに成功しました。 したがって、チューリングマシンよりも強力で表現力のある一般的な計算の抽象的な記述を試してみて、それを使用して、実存的証明または場合によっては停止問題を解決するためのアルゴリズムを取得することもできます任意のチューリングマシン?

3
計算の2つのモデルが同等であることを示す方法は?
計算の2つのモデルが同等であることを証明する方法について説明を求めています。同等性の証明が省略されていることを除いて、私は主題に関する本を読んでいます。計算の2つのモデルが同等であることの意味についての基本的な考えがあります(オートマトンビュー:同じ言語を受け入れる場合)。同等性について他に考える方法はありますか?チューリングマシンモデルがラムダ計算と同等であることを証明する方法を理解できれば、それで十分です。

1
非決定性から余分な力を獲得しないコンテキストフリー言語用のマシン
計算のマシンモデルを検討する場合、通常、チョムスキー階層は(順番に)、有限オートマトン、プッシュダウンオートマトン、線形境界オートマトン、およびチューリングマシンによって特徴付けられます。 最初と最後のレベルでは1(正規言語と帰納的可算言語)、それは我々が決定論的または非決定的なマシンを考慮するかどうかのモデルのパワーに違いはない、すなわちのDFAは、NFAのに相当し、DTMのは非関税措置と同等である2。 ただし、PDAとLBAの場合、状況は異なります。決定論的PDAは、非決定論的PDAよりも厳密に小さい言語セットを認識します。また、決定論的LBAが非決定論的LBAと同程度に強力であるかどうかも重要な未解決の問題です[1]。 これは私の質問を促します: 文脈自由言語を特徴付けるが、非決定論が余計な力を加えない機械モデルはありますか?(そうでない場合、この理由を示唆するCFLのプロパティがありますか?) (私には)文脈自由言語が何らかの形で非決定性を必要とすることは証明できないと思われますが、決定論的なマシンで十分な(既知の)マシンモデルはないようです。 拡張の質問は同じですが、状況依存言語の場合です。 参照資料 S.-Y. 黒田、「言語のクラスと線形境界オートマトン」、情報と制御、7:207-223、1964。 脚注 コメントに対する補足的な質問ですが、チョムスキー階層のレベル(セットを含めることで順序付けされている)が0から3ではなく、3から0になっている理由はありますか? 明確にするために、私は認識のみできる言語について話している。明らかに、複雑さの問題は、このような変更によって根本的な影響を受けます。

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