可计算性研讨第二部分

671
-1

Published on

可计算性研讨第二部分

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
671
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

可计算性研讨第二部分

  1. 1. 集智俱乐部 可计算性 研讨班
  2. 2. ⽇日程 • 第⼀一次:2⽉月23⽇日 苑明理 • • 第四次:4⽉月6⽇日 第⼀一部分:基本概念的初步探讨 • • • • 第九部分:希尔伯特第⼗十问题 第⼆二部分:While 语⾔言 第⼆二次:3⽉月9⽇日 苑明理 • 第三部分:可计算性的基本理论 • • 第⼋八部分:不可解问题 • 第四部分:元编程、⾃自应⽤用、编译器⽣生成 第三次:3⽉月23⽇日 ⽼老⻥鱼 • 第五次:4⽉月20⽇日 张江 • • 第⼗十部分:哥德尔不完备定理 第六次:5⽉月4⽇日 第五部分:其他顺序计算模型 • • • 第⼗十⼀一部分:基于数的可计算性理论 • 第⼗十⼆二部分:更抽象的可计算性途径 第六部分:邱奇-图灵论题 第七部分:函数式语⾔言的可计算性
  3. 3. 第⼆二部分 • 数据:认识 While 语⾔言⾥里的对象 • 语⾔言:初步会说 While 语⾔言 • 语义:理解 While 语⾔言的含义 • ⾃自解释*:探索 While 语⾔言的表达能⼒力
  4. 4. 数据 • 表⽰示⼆二叉树 • 表⽰示列表 • 表⽰示⼀一般的树 • 编码布尔值 • 编码数值 • 基本操作
  5. 5. ⼆二叉树的表⽰示 ((a.b).((c.d).e)) nil
  6. 6. 列表表⽰示 (a.(b.(c.(d.(e.nil))))) (a b c d e)
  7. 7. ⼀一般的树表⽰示 (a (b c d) e) (a.((b.(c.(d.nil))).(e.nil)))
  8. 8. 编码布尔值 • false = nil • true =(nil.nil) • ⾮非 nil 的都是真值
  9. 9. 编码数值 • 0 = nil • 1 = (nil.nil) • 2 = (nil.(nil.nil)) • 3 =(nil.(nil.(nil.nil))) • 4 = (nil.(nil.(nil.(nil.nil)))) • ……
  10. 10. 基本操作 cons head tail 整体相等与原⼦子相等
  11. 11. 语⾔言 • 语法规定 • 程序⽰示例 • ⼀一些语法糖
  12. 12. 字⾯面值与变量 • 原⼦子:包括元素 nil 和其他 • 字⾯面值 ::= 原⼦子 | (字⾯面值 . 字⾯面值) • 变量:对⼀一个存储单元的指称,约定⽤用⼤大写字⺟母表⽰示
  13. 13. 表达式 表达式 ::= 字⾯面值 | 变量 | cons 表达式 表达式 | hd 表达式 | tl 表达式 | =? 表达式
  14. 14. 命令与程序 命令 ::= 变量 := 表达式 | 命令;命令 | while 表达式 do { 命令 } ! 程序 ::= read 变量; 命令; write 变量
  15. 15. 程序⽰示例 程序 reverse ! read X; Y := nil; while X do { Y := cons (hd X) Y; X := tl X; }; write Y 程序 succ ! read X; Y := cons nil X; write Y 程序 pred ! read X; Y := tl X; write Y
  16. 16. 模拟条件语句 程序 if E then C ! 程序 if E then C1 else C2 ! Z := E; 
 while Z do { Z := E; Z := false; C }; ! W := true;
 while Z do { Z := false; W := false; C1 }; while W do { W := false; C2 };
  17. 17. 引⽤用其他程序 程序 reverse ! read X; Y := nil; while X do { Y := cons (hd X) Y; X := tl X; }; write Y 程序 append ! read X; A := hd X; Y := tl X; B := reverse A; while B do { Y := cons (hd B) Y; B := tl B; }; write Y 展开 reverse 后的程序 ! read X; A := hd X; Y := tl X; ! ! B := nil; while A do { B := cons (hd A) B; A := tl A; }; while B do { Y := cons (hd B) Y; B := tl B; }; write Y
  18. 18. 模拟模式匹配 read X; ! GO := true; Y := false; while GO do { rewrite [D, E] by ! [((D11.D12).D2), ((E11.E12).E2)] ⇒ [(D11.(D12.D2)), (E11.(E12.E2))] [ ((D11.D12).D2), (nil.E2) ] ⇒ GO := false; [ ((D11.D12).D2), nil ] ⇒ GO := false; ! }; ! write Y;
  19. 19. 模拟分⽀支语句 case E of pat1 ⇒ C1; ...
 patn ⇒ Cn;
  20. 20. 语义 • 表达式的语义 • 命令的语义 • 程序的语义
  21. 21. 表达式的语义
  22. 22. 命令的语义 是⼀一个最⼩小关系,⽽而⾮非函数 R1 < R2 如果 a R1 b a R2 b
  23. 23. 程序的语义
  24. 24. ⾃自解释 • 编译、解释、特化 • 程序作为数据 • While 的⾃自解释*
  25. 25. 编译、解释、特化
  26. 26. 程序作为数据 http://en.wikipedia.org/wiki/S-expression http://en.wikipedia.org/wiki/M-expression
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×