งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

ภาษาที่เป็นรูปแบบ (Formal Languages)

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "ภาษาที่เป็นรูปแบบ (Formal Languages)"— ใบสำเนางานนำเสนอ:

1 ภาษาที่เป็นรูปแบบ (Formal Languages)
บทที่ 6 ภาษาที่เป็นรูปแบบ (Formal Languages) 12/09/47 Formal Languages

2 Recursive Definition นิยาม Recursive ของเซ็ท X หมายถึงวิธีการสร้างอีลีเมนท์ของเซ็ท ด้วยการทวนซ้ำ แบ่งออกเป็นองค์ประกอบคือ 2 คือ ฐานเริ่มต้น (Basis) ประกอบด้วยอีลีเมนท์ของเซ็ท X เซ็ทก่อผล (Set of Operation) ใช้สำหรับสร้างอีลีเมนท์ตัวใหม่ จากอีลีเมนท์ หรือสมาชิกที่มีอยู่ก่อน 12/09/47 Formal Languages

3 นิยาม 1.5.1 นิยาม Recursive ของ N (เซ็ทของเลข 0,1,2,..) สร้างจากฟังค์ชั่นคืนค่าตำแหน่งหลังของมัน (Successor) ชื่อ S i) Basis: 0  N ii) Recursive step: ถ้า n  N ดังนั้น s(n)  N iii) Closure: n  N มันประกอบด้วยค่าเริ่มต้น 0 และเพิ่มอีลีเมนท์ของมันด้วย ด้วยเซ็ทก่อผลในขั้นตอนที่ (ii) Closure เป็นการรับรองว่า เซ็ทที่เกิดใหม่ เกิดจากฐานเริ่มต้นใน (i) และเพิ่มอีลีเมนท์ของมันด้วยเซ็ทก่อผลในขั้นตอนที่ (ii) ปกติอาจจะไม่แสดง 12/09/47 Formal Languages

4 บวก ลบ คูณ หาร นิยาม แสดงให้เห็นการสร้างตัวเลข 0,1,2,3,… โดยการสร้างจากการนิยามแบบ Recursive หัวข้อถัดไป เราจะแสดงให้เห็นว่า เราสามารถ บวก ลบ คูณ หาร ฯลฯ จากนิยามแบบ Recursive 12/09/47 Formal Languages

5 นิยาม 1.5.2 นิยาม Recursive ของผลบวก m และ n ต่อไปนี้ การ Recursive ของมันกระทำบน n ดังนั้นผลบวก (sum) ตัวถัดไปของมัน จะเป็นดังนี้ Basis: ถ้า n = 0 ดังนั้น m + n = m Recursive step: m + s(n) = s(m + n) 12/09/47 Formal Languages

6 ตัวอย่างที่ 1.5.1 เลข 3 และ 2 เขียนได้เป็น s(s(s(0))) และ s(s(0)) ดังนั้น ผลบวกของมันสามารถคำนวณแบบ Recursive ได้ดังนี้ s(s(s(0))) + s(s(0)) = s(s(s(s(0))) + s(0)) = s(s(s(s(s(0))) + 0)) = s(s(s(s(s(0))) 12/09/47 Formal Languages

7 การเพิ่มของ X X0 X1 X2 …… Xn 12/09/47 Formal Languages

8 คณิตศาสตร์ Induction การพิสูจน์ โดยเอากรณีเฉพาะรายมาอ้าง 12/09/47
Formal Languages

9 กฎพื้นฐานของ คณิตศาสตร์ Induction
กำหนดให้ X เป็นเซ็ทที่เกิดจากฐานเริ่มต้น Basis เป็น X0 และกำหนดให้ X0 X1 X2 … Xi … เป็นลำดับของเซ็ทที่เกิดจากการ Recursive ของเซ็ทก่อผล กำหนดให้ P เป็นนิยามคุณสมบัติอีลีเมนท์ของเซ็ท X ดังนั้นเราจะได้ อีลีเมนท์ใน X0 มีคุณสมบัติของ P ถ้า X0 X1 X2 … Xi มีคุณสมบัติของ P ดังนั้น ที่ Xi+1 ก็มีคุณสมบัติของ P ด้วย 12/09/47 Formal Languages

10 กฎพื้นฐานของ คณิตศาสตร์ Induction
X0 X1 X2 …… Xn 12/09/47 Formal Languages

11 ตัวอย่าง 1.6.1 ใช้คณิตศาสตร์ Induction พิสูจน์ว่า 0+1+…+n = n(n+1)/2
โดยการใช้เครื่องหมาย Summation เราสามารถเขียนใหม่ได้เป็น n  i = n(n+1)/2 i=0 12/09/47 Formal Languages

12 พิสูจน์ Basis: กำหนดให้ n=0 ดังนั้น n  i = n(n+1)/2 i=0 จะได้ 0
จะได้ 0  i = 0 = 0(0+1)/2 12/09/47 Formal Languages

13 พิสูจน์ (ต่อ) Inductive Hypothesis: (ข้อสมมติโดยไม่ต้องพิสูจน์)
สมมติฐานว่า k เป็นเลขตั้งแต่ 1,2,…,n เราจะได้ k  i = k(k+1)/2 i=0 Inductive step: ดังนั้น เราต้องพิสูจน์ว่า n+1  i = (n+1)(n+1+1)/2 = (n+1)(n+2)/2 12/09/47 Formal Languages

14 พิสูจน์ (ต่อ) n+1 n  i =  i +(n+1) (associativity of +) i=0 i=0
= n(n+1)/2 + (n+1) (inductive hypothesis) = (n+1)(n/2+1) (distributive property) = (n+1)(n+2)/2 12/09/47 Formal Languages

15 ตัวอย่าง 1. 6. 2 ใช้คณิตศาสตร์ Induction พิสูจน์ว่า n
ตัวอย่าง ใช้คณิตศาสตร์ Induction พิสูจน์ว่า n! > 2n, ที่ n  4 Basis: n = ! = 24 > 16 = 2n Inductive hypothesis: (ข้อสมมติโดยไม่ต้องพิสูจน์) สมมติฐานว่า k! > 2k ตลอดของค่า k = 4,5,6…..,n Inductive step: ดังนั้น เราต้องพิสูจน์ว่า (n+1)! > 2n+1 12/09/47 Formal Languages

16 พิสูจน์ (n+1)! = n!(n+1) > 2n(n+1) (inductive hypothesis)
12/09/47 Formal Languages

17 ตัวอักขระ (Alphabet) ประกอบด้วย ตัวอักษร ตัวเลข และอักขระพิเศษต่างๆ
เช่น A – Z, a – z, 1 – 9, # $ % ก – ฮ เป็นต้น เป็นเซ็ทที่นับจำนวนได้ (Finite Set) 12/09/47 Formal Languages

18 สตริง (String) สตริง (String) คือ เซ็ทของตัวอักขระเรียงต่อกัน
เช่น HELLO, สวัสดี, Program, For, While, คำต่างๆ ในภาษาอังกฤษ เป็นต้น Null string (  ) สตริงที่ไม่มีอักขระ หรือ Elements ภายใน เช่น strcpy(A, “ ”) เก็บช่องว่างลง A strcpy(A, “”) เก็บ NULL ลง A หรือ ‘\0’ ในภาษา C 12/09/47 Formal Languages

19 ภาษา (Languages) ภาษา (Languages) คือ เซ็ทของสตริงที่เรียงต่อกัน (A set of strings over an alphabet) เช่น ประโยคต่างๆ ในภาษาอังกฤษ, Source code ของโปรแกรมในภาษาต่างๆ เช่น C C++ หรือ Pascal เป็นต้น 12/09/47 Formal Languages

20 นิยามที่ 2.1.1 กำหนดให้  เป็นอักขระ 1 ตัว ดังนั้น * (ซึ่งเป็นเซ็ทของสตริงที่ประกอบด้วยตัวอักขระเรียงต่อกัน) สามารถนิยามแบบ Recursive ได้ดังนี้ Basis:   * Recursive step: ถ้า w  * และ a   ดังนั้น aw  * Closure: w  * ก็เฉพาะต่อเมื่อมันเริ่มจาก  และอีลีเมนท์ของมันเพิ่มขึ้นตามนิยาม recursive ในข้อ 2. 12/09/47 Formal Languages

21 ตัวอย่างที่ 2.1.1 กำหนดให้  = {a,b,c} ดังนั้น อีลีเมนท์ของ * จะประกอบด้วย Length 0:  Length 1: a b c Length 2: aa ab ac ba bb bc ca cb cc Length 3: aaa aab aac aba abb abc aca acb acc baa bab bac bba bbb bbc bca bcb bcc caa cab cac cba cbb cbc cca ccb ccc 12/09/47 Formal Languages

22 นิยาม 2.1.2 ภาษา (Language) ภายใต้อักขระ  เป็น Subset ของ * 12/09/47
Formal Languages

23 นิยาม 2.1.3 กำหนดให้ ,   * ดังนั้นการต่อสตริง (Concatenation) ของ  และ  (เขียนได้เป็น ) เป็น Binary operation ของสตริงใน * ซึ่งนิยามได้ดังนี้ Basis: ถ้า Length() = 0 ดังนั้น  =  และ  =  Recursive step: กำหนดให้  เป็นสตริงที่ความยาว Length() = n > 0 ดังนั้น  = ωa ที่สตริง ω ความยาว Length n – 1 และ a   และ  = (ω)a 12/09/47 Formal Languages

24 ตัวอย่าง 2.1.2 กำหนดให้  = ab ,  = ca และ ω = bb ดังนั้น
 = abca ω = cabb ()ω = abcabb (ω) = abcabb 12/09/47 Formal Languages

25 ทฤษฎี 2.1.4 กำหนดให้ , , ω  * ดังนั้น ()ω = (ω)
พิสูจน์ Basis: Length(ω) = 0 ดังนั้น ω =  และ ()ω = () โดยนิยามของ Concatenation หรืออาจกล่าวใหม่ได้ว่า ()ω = () =  Inductive hypothesis: (ข้อสมมติโดยไม่ต้องพิสูจน์) สมมติฐานว่า ()ω = (ω) สำหรับทุกสตริง ω ที่ Length  n Inductive step: ดังนั้น เราต้องพิสูจน์ว่า ()ω = (ω) สำหรับทุกสตริง ω ที่ Length n + 1 12/09/47 Formal Languages

26 พิสูจน์ ()ω = ()(xa) แทน ω ด้วย xa = (()x)a) นิยาม Cocatenation
= ((x)a) Inductive hypothesis = ((x)a) นิยาม Cocatenation = ((xa)) นิยาม Cocatenation = (ω) แทน xa ด้วย ω 12/09/47 Formal Languages

27 ข้อควรรู้ 0 เขียนใหม่ได้เป็น  1 เขียนใหม่ได้เป็น 
0 เขียนใหม่ได้เป็น  1 เขียนใหม่ได้เป็น  2 เขียนใหม่ได้เป็น  3 เขียนใหม่ได้เป็น  : ถ้า  = ab ดังนั้น 2 = abab ซึ่งไม่ใช่ aabb เพราะมันเท่ากับ a2b2 12/09/47 Formal Languages

28 Substring, Prefix, และ Suffix
แบบ Unformal อาจกล่าวได้ว่า เป็น Substring ของ  ถ้า  ปรากฏอยู่ภายใน  แบบ Formal  เป็น Substring ของ  ถ้ามีสตริง x และ y โดยที่  = xy เป็น Prefix ของ  ถ้ามีสตริง x และ y โดยที่  = xy และ x =  เป็น suffix ของ  ถ้ามีสตริง x และ y โดยที่  = xy และ y =  12/09/47 Formal Languages

29 นิยาม 2.1.5 กำหนดให้  ป็นสตริงใน * ดังนั้น ตัวกลับ (Reversal) ของ R นิยามได้ดังนี้ Basis: Length() = 0 ดังนั้น  =  และ R =  Recursive step: ถ้า Length() = n > 0 ดังนั้น  = wa สำหรับสตริง ω ที่ Length n – 1, a  , และ R = aωR (ก็คือ (ωa)R = aωR) 12/09/47 Formal Languages

30 ทฤษฎี 2.1.6 กำหนดให้ ,   * ดังนั้น ()R = RR
Basis: Length() = 0 ดังนั้น  =  และ ()R = R ในทำนองเดียวกัน RR = RR = R Inductive Hypothesis: สมมติฐาน ()R = RR ที่ทุกสตริง  ของ Length  n Inductive Hypothesis: เราต้องพิสูจน์ว่า ที่ทุกสตริง  ของ Length n + 1 ว่า ()R = RR โดยกำหนดให้  = ωa โดยที่ ω เป็นสตริงของ Length n และ a  , 12/09/47 Formal Languages


ดาวน์โหลด ppt ภาษาที่เป็นรูปแบบ (Formal Languages)

งานนำเสนอที่คล้ายกัน


Ads by Google