1 / 30

บทที่ 6

บทที่ 6. ภาษาที่เป็นรูปแบบ ( Formal Languages). Recursive Definition. นิยาม Recursive ของเซ็ท X หมายถึงวิธีการสร้างอีลีเมนท์ของเซ็ท ด้วยการทวนซ้ำ แบ่งออกเป็นองค์ประกอบคือ 2 คือ ฐานเริ่มต้น ( Basis) ประกอบด้วยอีลีเมนท์ของเซ็ท X

gerry
Download Presentation

บทที่ 6

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Recursive Definition • นิยาม Recursive ของเซ็ท X หมายถึงวิธีการสร้างอีลีเมนท์ของเซ็ท ด้วยการทวนซ้ำ • แบ่งออกเป็นองค์ประกอบคือ 2 คือ • ฐานเริ่มต้น (Basis) ประกอบด้วยอีลีเมนท์ของเซ็ท X • เซ็ทก่อผล (Set of Operation) ใช้สำหรับสร้างอีลีเมนท์ตัวใหม่ จากอีลีเมนท์ หรือสมาชิกที่มีอยู่ก่อน 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) ปกติอาจจะไม่แสดง Formal Languages

  4. บวก ลบ คูณ หาร • นิยาม 1.5.1 แสดงให้เห็นการสร้างตัวเลข 0,1,2,3,… โดยการสร้างจากการนิยามแบบ Recursive • หัวข้อถัดไป เราจะแสดงให้เห็นว่า เราสามารถ บวก ลบ คูณ หาร ฯลฯ จากนิยามแบบ Recursive 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) 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))) Formal Languages

  7. การเพิ่มของ X X0X1 X2…… Xn Formal Languages

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

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

  10. กฎพื้นฐานของ คณิตศาสตร์ Induction X0X1 X2…… Xn Formal Languages

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

  12. พิสูจน์ • Basis:กำหนดให้ n=0 ดังนั้น n i = n(n+1)/2 i=0 จะได้ 0 i = 0 = 0(0+1)/2 i=0 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 i=0 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 Formal Languages

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

  16. พิสูจน์ (n+1)! = n!(n+1) > 2n(n+1) (inductive hypothesis) > 2n2 (เพราะว่า n+1 > 2) > 2n+1 Formal Languages

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

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

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

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

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

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

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

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

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

  27. ข้อควรรู้ 0เขียนใหม่ได้เป็น  1เขียนใหม่ได้เป็น  2เขียนใหม่ได้เป็น  3เขียนใหม่ได้เป็น  : ถ้า  = ab ดังนั้น 2 = abab ซึ่งไม่ใช่ aabb เพราะมันเท่ากับ a2b2 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 =  Formal Languages

  29. นิยาม 2.1.5 กำหนดให้  ป็นสตริงใน * ดังนั้น ตัวกลับ (Reversal) ของ R นิยามได้ดังนี้ • Basis: Length() = 0 ดังนั้น = และ R=  • Recursive step: ถ้า Length() = n > 0 ดังนั้น = wa สำหรับสตริง ω ที่ Lengthn – 1, a ,และ R= aωR (ก็คือ (ωa)R= aωR) 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:เราต้องพิสูจน์ว่า ที่ทุกสตริง  ของ Lengthn + 1 ว่า ()R= RR โดยกำหนดให้ =ωa โดยที่ ω เป็นสตริงของ Lengthn และ a , Formal Languages

More Related