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
940
13
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
62
メンタルモデルから見るオブジェクト設計
hrmstrsmgs
0
420
技術的負債
hrmstrsmgs
1
450
よい設計のプログラムを作るには
hrmstrsmgs
0
140
歴史から理解するJavaScript
hrmstrsmgs
0
100
論理的な考え方
hrmstrsmgs
0
120
論理的な話し合いはなぜ必要か
hrmstrsmgs
0
83
腕のある技術者はなぜ
hrmstrsmgs
0
160
疑似乱数の生成
hrmstrsmgs
0
80
Other Decks in Programming
See All in Programming
iOSDCのペンライトを自動制御したい!
akkeylab
0
330
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.2k
AHC070解法紹介
eijirou
0
150
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.2k
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
200
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
150
すこし踏み込む CancellationToken
htkym
2
1.5k
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
420
App Intentsのビルドプロセスを支える技術
kntkymt
0
490
Are APIs Still Relevant in the AI Era?
soyuka
0
390
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
260
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
570
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
350
Product Roadmaps are Hard
iamctodd
55
13k
Bash Introduction
62gerente
615
220k
RailsConf 2023
tenderlove
30
1.6k
Mobile First: as difficult as doing things right
swwweet
225
10k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
550
A designer walks into a library…
pauljervisheath
211
25k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
600
Making the Leap to Tech Lead
cromwellryan
135
10k
From π to Pie charts
rasagy
1
380
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
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のみの話 レイトレーシングでも物理演算でもなんでも可能 人間に書けるとは言ってない 実行時間やメモリ量が現実的で済むとも言ってない
意味 あるプログラミング言語で計算 できることは、他のプログラミン グ言語でも必ず計算できる。
ただし 以下は考慮しない • 入力 • 出力 • 計算時間 • メモリ量など
• 可読性 • 開発エコシステム