Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

可计算性研讨第二部分

888 views

Published on

可计算性研讨第二部分

Published in: Education
  • Be the first to comment

  • Be the first to like this

可计算性研讨第二部分

  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

×