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
まりも
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
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
170
OSもどきOS
arkw
0
560
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
5
1.1k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
690
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
500
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
350
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
110
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
130
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
160
net-httpのHTTP/2対応について
naruse
0
480
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
760
Featured
See All Featured
The browser strikes back
jonoalderson
0
1.2k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
160
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
400
The Cult of Friendly URLs
andyhume
79
6.9k
HDC tutorial
michielstock
2
710
Writing Fast Ruby
sferik
630
63k
Bash Introduction
62gerente
615
220k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
420
Scaling GitHub
holman
464
140k
Fireside Chat
paigeccino
42
4k
A Tale of Four Properties
chriscoyier
163
24k
Making Projects Easy
brettharned
120
6.7k
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のみの話 レイトレーシングでも物理演算でもなんでも可能 人間に書けるとは言ってない 実行時間やメモリ量が現実的で済むとも言ってない
意味 あるプログラミング言語で計算 できることは、他のプログラミン グ言語でも必ず計算できる。
ただし 以下は考慮しない • 入力 • 出力 • 計算時間 • メモリ量など
• 可読性 • 開発エコシステム