Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
チューリング完全とは
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
まりも
September 24, 2024
Programming
880
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
チューリング完全とは
チューリング完全という概念があり、プログラミングの常識の大前提になるものですが、あまり理解はされず、意識もされていません。少し言語化してみます。
まりも
September 24, 2024
More Decks by まりも
See All by まりも
オブジェクトモデルと関係モデルの設計
hrmstrsmgs
0
18
メンタルモデルから見るオブジェクト設計
hrmstrsmgs
0
330
技術的負債
hrmstrsmgs
1
350
よい設計のプログラムを作るには
hrmstrsmgs
0
110
歴史から理解するJavaScript
hrmstrsmgs
0
92
論理的な考え方
hrmstrsmgs
0
96
論理的な話し合いはなぜ必要か
hrmstrsmgs
0
67
腕のある技術者はなぜ
hrmstrsmgs
0
130
疑似乱数の生成
hrmstrsmgs
0
64
Other Decks in Programming
See All in Programming
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
240
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
250
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
630
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
260
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
2
680
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.1k
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
540
Claspは野良GASの夢をみるか
takter00
0
190
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
250
New "Type" system on PicoRuby
pocke
1
930
JavaDoc 再入門
nagise
1
350
Featured
See All Featured
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
190
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
590
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
Statistics for Hackers
jakevdp
799
230k
Navigating Team Friction
lara
192
16k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
470
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Transcript
チューリング完全とは
チューリング完全 ある計算のメカニズムが万能チュー リングマシンと同じ計算能力をもつこ と。 •出典:Wikipedia
完全チューリングマシン 1936年にアラン・チューリングが提示した計算機械。 現在のノイマン型コンピュータとは別設計。 あるプログラムが無限ループするかどうかを判定するプログラムが書けないことが数 学的に証明されたことで有名。
コンピューターの歴史 最初のコンピューターが稼 働したのは1946年
何のために考案されたのか 数学の重要な問 題を解くため
計算可能とは? 同じ計算可能性を持つ • 帰納的関数 • ラムダ計算 • チューリングマシン • ノイマン型コンピュータ
• 他いろいろ
ゲーデルの不完全性定理 • 初等的な自然数論を含むω無矛盾な公理的理論{¥displaystyle T}Tは不完全で ある,つまりそこで証明も反証もされない命題(決定不能命題(undecidable proposition),あるいは独立命題)が存在する 第一不完全性定理 • 初等的な自然数論を含む理論{¥displaystyle T}Tが無矛盾ならば,{¥displaystyle
T}Tの無矛盾性を表す命題 Con({¥displaystyle T}T) がその体系で証明できない 第二不完全性定理
停止性問題とは 自然数論と同等の計算可能性 を持つ万能チューリンググマシ ンでの、不完全性定理の別解
計算可能とは? 同じ計算可能性を持つ • 帰納的関数 • ラムダ計算 • チューリングマシン • ノイマン型コンピュータ
• 他いろいろ
計算可能性が考慮しないこと 以下は考慮しない • 入力 • 出力 • 計算時間 • メモリ量など
• 可読性 • 開発エコシステム
計算可能性が同じであることは数学的に証明される • 言語2でできることはすべて言語1で書き換えられることが証明さ れている。 言語1 • 言語1でできることがすべて言語2で書き換えられることが証明さ れている。 言語2
数学的証明の例 C言語 C言語から whileだけ 使えなくし たプログラ ム言語 whileをすべてif とgotoで書き換 えれば、すべて
のプログラムは 書ける whileを使わなけ ればよい
チューリング完全 ある計算のメカニズムが万能チュー リングマシンと同じ計算能力をもつこ と。 •出典:Wikipedia
チャーチ・チューリングのテーゼ •「計算できる関数」という直観的な概念を、 帰納的関数と呼ばれる数論的関数のク ラスと同一視しようという主張である。 チャーチ・チューリングのテーゼ
チューリング完全なもの 自然数論 ラムダ演算 万能チューリン グマシン ほとんどのプロ グラミング言語 C Java SQL
アセンブ リ言語 他 ほかいろいろ C++テン プレート X86の mov命令 HTML + CSS 解析機関
C++テンプレートはチューリング完全 こんなことが可能なライ ブラリが実装可能である ことが証明されている •コンパイル時に演算 •実行時の計算量は0 #include <fstream> using namespace
std; int main() { // 中心(10,10,10)で半径5の球、 // 頂点(20,20,20)を持ち一辺10を持つ立方体を、 // レイトレーシングした画像を出力する。 ofstream("image.jpg") << Calculate< Sphere<10, 10, 10, 5>, Cube<20, 20, 20, 10>>::DATA; }
最新のSQLはチューリング完全 PL/SQLとかじゃなくてSQLのみの話 レイトレーシングでも物理演算でもなんでも可能 人間に書けるとは言ってない 実行時間やメモリ量が現実的で済むとも言ってない
意味 あるプログラミング言語で計算 できることは、他のプログラミン グ言語でも必ず計算できる。
ただし 以下は考慮しない • 入力 • 出力 • 計算時間 • メモリ量など
• 可読性 • 開発エコシステム