「チューリング完全」を含む日記 RSS

はてなキーワード: チューリング完全とは

2024-11-08

[][]量子コンピュータについて彼らがあなたに語らない事

漫画家エナガの複雑社会を超定義」の「量子コンピューター」の回がこの後1:20からNHK総合再放送するようなので、本放送を見たとき自分感想を改めてここにまとめる。

 一般メディアにおける「量子コンピューター」の取り上げ方はいつも、専門知識を持っている人間から見たらとんでもない誇張と飛躍で充ちている。もはやSTAP細胞詐欺か何かに近い危険性を感じるので、こういう話に接する時の注意点、「ここを省略していることに気づくべき」要点を解説する。

 

 メディアにおける「量子コンピューター」の説明は、大体いつもストーリーが似通っている。

  1. 量子ビットは重ね合わせの並列計算が出来る
  2. 量子チューリングマシンには素数暗号を高速に解けてしまアルゴリズム存在する
  3. Googleなどが量子コンピュータを開発した(と称している)
  4. 量子コンピュータは我々の未来を一変させるかも知れない

 件の軽い調子番組だけでなく、ニュートンだろうと日経サイエンスだろうと、まあおおよそ複素関数論の「ふ」の字も紙面に出したら読者がついてこれなくなる程度のメディアではほとんど同じ構成である

 これはこの20年ほど変わらない一種パターンになっているが、実はこのそれなりに繋がっているように見える一行一行の行間すべてに論理的問題を孕んでいる。

 この行間に実は存在する論理の省略、あるいは嘘と言っても良い誤摩化しをひとつひとつ指摘していこうと思う。

 

行間1→2:量子コンピュータは「並列計算が出来る」わけではない

 量子ビットには重ね合わせの状態が保持できる。これに対して計算処理をすれば、重ね合わせたすべての状態に並列に計算を実行できる。ように見える。

 しかし、これも一般的に聞いたことがあるはずなので思い出して欲しいが、「量子力学の重ね合わせの状態は、『観測』により収束する」。

 つまりどういうことか? 量子ビットに対する処理が並列に実行出来たとしても、量子コンピュータの出力はそれをすべて利用できるわけではない。

 量子コンピュータの出力とは、量子ビットに対する並列処理の結果の、確率的な観測に過ぎない。

 なので、手法的な話をすれば、量子アルゴリズムとはこの「確率確率振幅という量子状態パラメータ)」を操作して、望む入力に対する結果が観測されやすくする、というちょっとひとひねりした考え方のものになる。

 単に並列処理ができるから凄いんだという説明は、増田自身一般向けの説明に何度も繰り返したことがあるが、まあ基本的には素人相手の誤摩化しである

 ここさえ踏まえれば、知識がなくともある程度論理的ものを考えられる人には、量子コンピュータに対する色々な期待も「そう簡単な話ではない」となんとなく感じられると思う。

 

行間2→3:暗号解読のできる量子チューリングマシンは開発されていない

 量子コンピュータキラーアプリとされている暗号解読は「ショアのアルゴリズム」という非常に巧妙な計算を通して得られる。

 上で説明したように、量子コンピュータは単に「並列計算から」なんでも高速な処理ができる訳ではない。暗号解読については、この「ショアのアルゴリズム」という自明でない計算手法高速フーリエ変換の応用)が見つかってしまたからこそ問題になっているのであって、このアルゴリズムの実行が出来なければ暗号解読ができるとは言えない。

 さてここから量子力学というより計算機科学の話になるが、あるチューリングマシン上のアルゴリズムが別の計算モデルで実行可能かどうかは、その計算モデルチューリング完全であるかどうかによるというのはプログラマには常識である

 これは量子コンピュータにおいても変わらない。量子コンピュータ一般に知られる多くのアルゴリズムはドイチュの量子チューリングマシンを前提に作られており、チューリング完全でないアーキテクチャでは実行できない。できるはずがない。ショアのアルゴリズムも当然そうだ。

 しかしながら、この20年弱、D-Wave社が最初の「自称量子コンピュータ」を開発したと発表して以来、さまざまな企業が「開発に成功した」と発表した「量子コンピューター」の中で、このチューリング完全ものは何一つ存在しない。

 これらでは、今後どれだけ「性能」が伸びようとも、暗号解読の役には立たないのである

 

行間3→4:量子コンピュータ可能性は、あるとしても非常に限られたものである

 以上の議論から総合すればわかると思うが、量子コンピュータ世界が一変するなんてヴィジョンははっきり言ってSF以下のファンタジーというレベルしかない。

 第一に、量子コンピュータの利用できるドメインは非常に限られたものであるし、第二に、その中の最も宣伝されているものである暗号解読の可能な量子チューリングマシンの開発の目処などまったく立っていない。どころか、業界ほとんど誰も挑戦することすら本気では考えていない。

 現状の「自称量子コンピュータ」(量子情報システム、とでも言おうか)にも利用の可能性はある。何より量子状態のものが作れるので、物理学化学領域の量子システムシミュレーションするのに適しているのは言うまでもないだろう。しかし、まあ、現状あり得る比較現実味のある用途というのは、それくらいではないか

 

 このように、メディア量子コンピュータについて語るとき、そこには非常に多くの誤摩化しや飛躍が含まれる。これは結構業界の根幹に関わる問題なのではと思うが、時間が来たので総括は後述にでもすることにする。

 何か質問があればどうぞ。

2024-08-17

コンピュータサイエンスとは何か

コンピュータサイエンスで取り組まれている問題の一覧を紹介しよう。

計算複雑性

特定アルゴリズム問題における多項式時間と非決定性多項式時間

その他のアルゴリズム問題

プログラミング言語理論

  • POPLmark
  • バレンドレヒト・ギューヴァース・クロップ予想

その他の問題

2024-03-15

anond:20240315121258

一部が速くなったらそれはスーパークソ速コンピューターじゃないか

現代において「コンピューター」という概念一般チューリング完全性くらいは満たすものを指すと思うが。

2023-07-30

Python普遍的言語になった。

いやぁ、長かったですね。Python業界デファクトスタンダードになり、シェル言語システム記述言語となる可能性が潰えて久しくなるまでが。具体的にいうと Ansible のようなクラウドの構築はTerraformになったし、Linuxブートには systemd が後継となったいま、PythonRuby と同じく「Perl のような何か」に落ちてしまった。唯一無二の人工知能の為の言語としても、高度化した人工知能の開発で新規参入者にとってはハードルが高く、API操作するぐらいだったら JavaScriptJSONコネコネする API操作するほうが賢い時代となってしまったのだ。よって Python新規採用する絶対的メリットは消えてしまった。これで「Pythonを使えます」という奴に見下される必要はなくなったのだ。これで、ここ数年間も続いた「Pythonを使えるのを凄いと勘違いしている間抜け、または人工知能の開発で Python必須なのとかぬかす馬鹿、それに Python を使えば他言語を学ぶ必要はないというキチガイ」を排除できるようになった。だってPython は数多の言語のようにチューリング完全を満たした言語の一つになったのたから。これを普遍的と言わずになんていうのだろうか。

2022-07-22

ブロックチェーンOSを作るwww

twitterグーグルエンジニアが笑ってる

ブロックチェーン界隈は邪悪人間が多いためか、ブロックチェーン否定的ITエンジニアが多いのだけど、とてももったいないことだと思う

邪悪人間は嫌いになってもいいけど、ブロックチェーンのことは嫌いにならないでほしい


ちなみにブロックチェーンOSは作れます

イーサリアムを作ったヴィタリックさんは、イーサリアムのことを「ワールドコンピュータ」と呼んでいます

コンピュータというのは、記憶領域と入出力装置を兼ね備えた演算装置のことです

ブロックチェーンはこれらを持っています

記憶領域ブロックチェーンブロックの部分が担っており、演算装置マイニングマシンが担っています

入出力の出力の部分は、演算装置計算して記憶領域に格納した結果をこちから読み取り行くことで実現でき、

入力の部分は「オラクル」と言われることもあるけれど、データブロックチェーンに流しこむことで実現できます

ブロックチェーン同士をつなぐブリッジ一種の入出力と言えるでしょう

まり、これら記憶領域演算装置を持つブロックチェーンは、コンピュータなのです

比喩ではなく、定義上、コンピューターなのです

コンピュータやらせたいことはスマートコントラクトというプログラムコードに書きます

チューリング完全だそうです

そのコンピュータを操る基本ソフトであるOSは、ブロックチェーンに組み込まれているので、ブロックチェーンを作るということはOSを作るということなのです


普通コンピュータ場合フォルダの中身を見るのにエクスプローラーを使いますが、ブロックチェーンにもエクスプローラーはあります

イーサリアム場合はイーサスキャンというものが有名です

ブロックの中身を見たり、スマートコントラクトコード(ソースコードが公開されていない場合バイトコード)を見たりすることができます

このエクスプローラーブロックチェーン自体が備える機能ではないけれど、ブロックチェーンコンピュータっぽいことが分かるのではないでしょうか

ちなみに、スマートコントラクトコンピュータインストールするアプリに相当するでしょう


しかしこのコンピュータには大きな欠点があります

処理スピードものすごく遅いのです。記憶領域も貧弱です

個人的には、20年前のパソコンより遅いと思っています

それでも、コンピュータコンピュータです

まだ登場して間もないのだから、遅いのはしょうがないです

web1.0が登場したころ、そのあまりの遅さゆwwwのことを「world wide wait」と揶揄する人もいたそうです

webはその後劇的に速くなったので、ブロックチェーンも速くなるかもしれません


話が長くなりましたが、言いたいことは、ブロックチェーン詐欺ツールではなく、ただの技術です、ということです

現状、詐欺を支える技術となってしまっている部分もありますが、技術自体ニュートラルです

テストネットであればお金をかけることなトークン使ったりコントラクト書いたりできるので時間がある人は遊んでみてください

2022-03-31

anond:20220330184123

ブロックチェーンは、プライベート、コンソーシアム、パブリックに分けて考えた方がいいかも。

プライベートチェーンは管理者いるか簡単改竄できちゃうので、ブロックチェーンの良さである改竄性はあまり発揮されない。なのでわざわざブロックチェーンを導入するよりかは、普通データベースを使ったほうがいいと思われる。ただ、上の増田が書いているように、中央銀行デジタル通貨の基盤として使うのには相性いい気がする。

コンソーシアムチェーンは耐改竄性が求められるのでブロックチェーンと相性がいいと思う。貿易事務領域で導入されて「業務効率化されました」って記事最近見たけど、このケースではデータベースとして使うというよりはEDI的な使い方をしているのかも? 他の活用例はあんまり見ない。業界協調して動かないと意味いから導入が難しいのかも?

パブリックチェーンは暗号通貨領域。この領域投機的な話だらけで確かに面白くない。ただ、パブリックチェーンをスマートコントラクトプラットフォームだと考えると話は変わってくる。スマートコントラクトにはチューリング完全プログラムが書けるので、パブリックチェーンはデータベースというよりも巨大な一つのコンピュータと考えることができる。プライベートチェーンでもコントラクトは書けるけど、パブクリックチェーンの場合は誰でも参加できるというプラットフォーム性を備えていることが利点。管理者すなわちスーパーユーザがいないという点も大きなメリット

今の所はポンジースキームプロダクト、あるいはステーブルコインを使ったペイメントぐらいの活用しか見ないんだけど、パブリックチェーンが一番ポテンシャル高いと思う。

上みたいな話をあまり聞かない気がするのは俺が知らないだけなのか、それとも技術的、国際的倫理的問題があるのか?

日本メディアが取り上げないから?

2022-02-08

anond:20220208154426

10ななしのよっしん

2014/10/26(日) 15:21:18 ID: ikmBut/shV

具体例を考えてみようか。

暇人A「歯車コンピュータ再現しました!画面あってブロック崩しも遊べるよ!」

暇人B「粘菌計算機作りました!経路探索できるよ!」

誰か「AとBの仕組みよーく見てみたら、一方でもう一方の動き再現できるわ。だからどっちもパソコンと実質同じで、

ちなみにパソコン計算機としてベスト手法だわ」

例が合ってるかわかんないけど、このとき歯車粘菌パソコンチューリング完全マシン

いうまでもなく、歯車=粘菌思考しませんw

anond:20211001170339

粘菌計算しているのではなく、計算機として解釈可能な動きをしているに過ぎないのだが、これらが区別できないやつが得意げに何か言っててもな

マリオメーカーは「計算」ひいては「思考」してるんか?チューリング完全とそのもの自体計算しているということの区別ぐらいできるようになりなさい。

2021-10-14

anond:20211007092638

マリオメーカーすらもチューリング完全演算可能だと証明されてるが高度な「演算可能」ということに話を持ち込んでるのはずれてる

2021-10-05

anond:20211005195044

たいていのプログラミング言語チューリング完全なんだからダメってこたぁなかろう、その言語の得意とするプログラミングパラダイムに合わないと書きづらいとかはあるが。

2021-08-08

プログラミング言語関数型言語ってOOPを含めた命令言語に劣る理由

Scala や Elm と Lisp やら HaskellOCamlSML関数型のプログラミング言語勉強したけど、これらが命令言語に劣る理由解説しよう。

解釈自由関数言語アセンブリレベル最適化ができない

これは、SQL も同じ問題を持っているが、関数言語は「こういうふうに動いてね」という解釈インタープリターやコンパイラが「推測する」必要があるのだ。つまり、書いているときパフォーマンスプログラマー想像できない。

ハイパフォーマンスを出す関数言語コンパイラを作れば良いじゃん?

それが、現実的に厳しいのだよ。マジでコンパイラ関連は金にならない領域になってきたので、関数言語のための独自コンパイラを作る持続可能組織が無い。確かにLLVM を使えば x64arm といった最新のアーキテクチャ対応できるかもしれないけど、フロントエンドレベルすら応対が辛い。よって、関数言語C言語にてチューリング完全な同等なコードだと「いくら最速に書いても」遅いのである

人間は「命令するほうが楽」なので、関数言語は負けます

例えば if と書いたら、関数言語は else が必須ですが、命令言語は else 無しでも動いちゃうのですね。文系の連中が数学的な背景を加味して要件定義できると思うか?違うだろ。毎回、上に else のことについて聞いたら、プログラマー生産性は下がるだろ。関数言語は、上が文系だとますますだが、分岐もきっちりとおさえる必要があるから生産性命令言語に劣るよ。

2021-07-20

anond:20210720202348

もと増田だけど、気分まぐれに書いた駄文なので気にしないといてくれ。

それはさておき、Python が好きってことはプログラミングが好きってことで良いね?だとすると、最終的には C 言語やることになるけど、今は Python をやろう。なんと言っても、Python は C 言語できているけど、C言語謎いので無視してオッケー!

そんでもって、Python の「公式ドキュメント」をきちんと読みこなせるようになろう。最初から全部は必要ないけど、最終的には読みこなせるようになろう。そんでもって、プログラミングをしたいってことは「何かを作りたい」のだろ?たとえば、増田を作りたかったら Python だと Django や Flask を、人工知能を作りたかったら PyTorch を使うことになるだろうけど、その手のフレームワークの「公式ドキュメント」を読みこなせるようになろう。プログラミングスクール(やめとけよ)や本は「公式ドキュメント」を読めるようにする手段だと思ってくれ。間違っても「本に書いてあったのに、動かない!」なんて、喚かないでね。洋書和書も「公式ドキュメント」以外のテキストは間違っていることがあるので。

次に「エラー友達」ということ。エラーあなた否定したのでなく、コード否定したのであって、エラーが出ても気にしないでください。そんでもって、エラー文を丁寧に解決していけば、すごくスキルが身につきます

最後に、Python 言語だけじゃ解決できないプログラミング問題は多々ありますデータベース操作するには SQL が、ウェブサイトを動かすには JavaScript が、ウェブサイトを作るには HTML/CSS が、サーバーを設置するにはシェル言語が、Python高速化するには C言語が、必要になる場合がありますPython を使いこなせると、おそらく習得は容易でしょう。なぜかというと「Python だとチョメチョメだったっよなー、これでいけないか?」という勘が形成されるので。

チューリング完全言語はどれも表現力は同じだから、「この言語から成功する」というのは無いよ。Pythoninterface が無くて、class が弱くて、動的型付けを用いているけど、これらがないと「制約」を課すことができないというフリーダム過ぎるから、嫌らわれることはあるけどね。制約が強い言語は、ハンターハンターふうに言うと「制約が念能力を強くする」みたいな要素はあるよ。

どうしても教育を受けたいという希望があるのなら、ハーバードの CS50 という講義無料で見れるから、推薦したいね。あれみると、我が国計算機科学は負けていると思った。

2021-04-08

anond:20210407234604

その考え方だとチューリング完全言語で書かれたプログラムってそれ単体では全てAIに入らない(=現在までのところAI存在しない)よね

2021-03-29

anond:20210328223121

プラレール論理演算チューリング完全ってできるのかなあ

冗談煽りではなくて、そもそも"hack"という単語起源MIT鉄道模型クラブという説もあるわけで、

ウィリアム・ギブスンブルース・スターリングの「ディファレンス・エンジン」というか、パスカルの手回し計算機というか、

歯車計算機とか論理演算とか、スチームパンクベースだったりもする技術なわけで、

半導体ではなく鉄道模型による巨大なコンピュータというのも面白いなあと純粋に思ったのでした

(もちろん、この手の話は永久機関と同じで、摩擦とかが蓄積されて実現は不可能だと思うわけですが…

2021-02-07

anond:20210207024915

いやScratchでも、複雑なアルゴリズムちゃん実装できるし、ちゃんとしたプログラミング言語だぞ。

...ちょっと調べてみて分かった。思い込みでいろいろと書いていたが、Scratchチューリング完全だし、ちゃん再帰なんかも書けるのね。

ただ、配列が基本データ型にないのはアルゴリズム学習観点からはかなりマイナスだと思う。

リスト配列はその振る舞いや扱いが大いに違うので、実装の詳細だから触れないでいいというわけにもいかないのではと思う。

そして、Chrome拡張を使えば競技プログラミングもできなくはないけれど、それだったら最初からC++書いたほうが早くね?とも思ってしまう。

たぶんエントリーはそこでもいいし、それでそれなりにアルゴリズム勉強できるけれど、それ以外の言語を知らないというのはかなりのマイナスポイントなのではないのだろうか。

ログイン ユーザー登録
ようこそ ゲスト さん