Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
チューリング完全とは
Search
まりも
September 24, 2024
Programming
960
14
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
64
メンタルモデルから見るオブジェクト設計
hrmstrsmgs
1
430
技術的負債
hrmstrsmgs
1
470
よい設計のプログラムを作るには
hrmstrsmgs
0
140
歴史から理解するJavaScript
hrmstrsmgs
0
110
論理的な考え方
hrmstrsmgs
0
120
論理的な話し合いはなぜ必要か
hrmstrsmgs
0
85
腕のある技術者はなぜ
hrmstrsmgs
0
160
疑似乱数の生成
hrmstrsmgs
0
82
Other Decks in Programming
See All in Programming
パスワード再設定メールのURLについて知っておこう
uyuki234
0
170
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
0
140
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
450
AWSに止められる覚悟してますか?
morizo_1984
2
540
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
1k
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
130
Simple Storage Service(S3) is not simple
iwatsukayura
0
310
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
600
ActionController meets Protocol Buffers
sorah
0
660
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
4
1.4k
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
2
1.2k
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
Featured
See All Featured
The Limits of Empathy - UXLibs8
cassininazir
2
730
Large-scale JavaScript Application Architecture
addyosmani
516
110k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Designing for Timeless Needs
cassininazir
1
530
Bash Introduction
62gerente
615
220k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
330
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
760
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
560
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
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のみの話 レイトレーシングでも物理演算でもなんでも可能 人間に書けるとは言ってない 実行時間やメモリ量が現実的で済むとも言ってない
意味 あるプログラミング言語で計算 できることは、他のプログラミン グ言語でも必ず計算できる。
ただし 以下は考慮しない • 入力 • 出力 • 計算時間 • メモリ量など
• 可読性 • 開発エコシステム