300 likes | 498 Views
บทที่ 6. ภาษาที่เป็นรูปแบบ ( Formal Languages). Recursive Definition. นิยาม Recursive ของเซ็ท X หมายถึงวิธีการสร้างอีลีเมนท์ของเซ็ท ด้วยการทวนซ้ำ แบ่งออกเป็นองค์ประกอบคือ 2 คือ ฐานเริ่มต้น ( Basis) ประกอบด้วยอีลีเมนท์ของเซ็ท X
E N D
บทที่ 6 ภาษาที่เป็นรูปแบบ (Formal Languages) Formal Languages
Recursive Definition • นิยาม Recursive ของเซ็ท X หมายถึงวิธีการสร้างอีลีเมนท์ของเซ็ท ด้วยการทวนซ้ำ • แบ่งออกเป็นองค์ประกอบคือ 2 คือ • ฐานเริ่มต้น (Basis) ประกอบด้วยอีลีเมนท์ของเซ็ท X • เซ็ทก่อผล (Set of Operation) ใช้สำหรับสร้างอีลีเมนท์ตัวใหม่ จากอีลีเมนท์ หรือสมาชิกที่มีอยู่ก่อน Formal Languages
นิยาม 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
บวก ลบ คูณ หาร • นิยาม 1.5.1 แสดงให้เห็นการสร้างตัวเลข 0,1,2,3,… โดยการสร้างจากการนิยามแบบ Recursive • หัวข้อถัดไป เราจะแสดงให้เห็นว่า เราสามารถ บวก ลบ คูณ หาร ฯลฯ จากนิยามแบบ Recursive Formal Languages
นิยาม 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
ตัวอย่างที่ 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
การเพิ่มของ X X0X1 X2…… Xn Formal Languages
คณิตศาสตร์ Induction • การพิสูจน์ โดยเอากรณีเฉพาะรายมาอ้าง Formal Languages
กฎพื้นฐานของ คณิตศาสตร์ Induction • กำหนดให้ X เป็นเซ็ทที่เกิดจากฐานเริ่มต้น Basis เป็น X0และกำหนดให้ X0 X1 X2… Xi … เป็นลำดับของเซ็ทที่เกิดจากการ Recursive ของเซ็ทก่อผล กำหนดให้ P เป็นนิยามคุณสมบัติอีลีเมนท์ของเซ็ท X ดังนั้นเราจะได้ • อีลีเมนท์ใน X0มีคุณสมบัติของ P • ถ้า X0 X1 X2… Xi มีคุณสมบัติของ P ดังนั้น ที่ Xi+1 ก็มีคุณสมบัติของ P ด้วย Formal Languages
กฎพื้นฐานของ คณิตศาสตร์ Induction X0X1 X2…… Xn Formal Languages
ตัวอย่าง 1.6.1 ใช้คณิตศาสตร์ Induction พิสูจน์ว่า 0+1+…+n = n(n+1)/2 โดยการใช้เครื่องหมาย Summation เราสามารถเขียนใหม่ได้เป็น n i = n(n+1)/2 i=0 Formal Languages
พิสูจน์ • Basis:กำหนดให้ n=0 ดังนั้น n i = n(n+1)/2 i=0 จะได้ 0 i = 0 = 0(0+1)/2 i=0 Formal Languages
พิสูจน์ (ต่อ) 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
พิสูจน์ (ต่อ) 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
ตัวอย่าง 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
พิสูจน์ (n+1)! = n!(n+1) > 2n(n+1) (inductive hypothesis) > 2n2 (เพราะว่า n+1 > 2) > 2n+1 Formal Languages
ตัวอักขระ (Alphabet) • ประกอบด้วย ตัวอักษร ตัวเลข และอักขระพิเศษต่างๆ • เช่น A – Z, a – z, 1 – 9, ! @ # $ % ก – ฮ เป็นต้น • เป็นเซ็ทที่นับจำนวนได้ (Finite Set) Formal Languages
สตริง (String) • สตริง (String) คือ เซ็ทของตัวอักขระเรียงต่อกัน • เช่น HELLO, สวัสดี,Program, For, While, คำต่างๆ ในภาษาอังกฤษเป็นต้น • Null string ( ) สตริงที่ไม่มีอักขระ หรือ Elements ภายใน • เช่น strcpy(A, “ ”) เก็บช่องว่างลง A • strcpy(A, “”) เก็บ NULL ลง A • หรือ ‘\0’ ในภาษา C Formal Languages
ภาษา(Languages) • ภาษา (Languages) คือ เซ็ทของสตริงที่เรียงต่อกัน (A set of strings over an alphabet) • เช่น ประโยคต่างๆ ในภาษาอังกฤษ, Source code ของโปรแกรมในภาษาต่างๆ เช่น C C++ หรือ Pascal เป็นต้น Formal Languages
นิยามที่ 2.1.1 • กำหนดให้ เป็นอักขระ 1 ตัว ดังนั้น * (ซึ่งเป็นเซ็ทของสตริงที่ประกอบด้วยตัวอักขระเรียงต่อกัน) สามารถนิยามแบบ Recursive ได้ดังนี้ • Basis: * • Recursive step: ถ้า w * และ a ดังนั้น aw * • Closure: w * ก็เฉพาะต่อเมื่อมันเริ่มจาก และอีลีเมนท์ของมันเพิ่มขึ้นตามนิยาม recursive ในข้อ 2. Formal Languages
ตัวอย่างที่ 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
นิยาม 2.1.2 • ภาษา (Language) ภายใต้อักขระ เป็น Subset ของ * Formal Languages
นิยาม 2.1.3 กำหนดให้ , * ดังนั้นการต่อสตริง (Concatenation) ของ และ (เขียนได้เป็น ) เป็น Binary operation ของสตริงใน * ซึ่งนิยามได้ดังนี้ • Basis: ถ้า Length() = 0 ดังนั้น = และ = • Recursive step: กำหนดให้ เป็นสตริงที่ความยาว Length() = n > 0 ดังนั้น = ωa ที่สตริง ω ความยาว Length n – 1 และ a และ = (ω)a Formal Languages
ตัวอย่าง 2.1.2 กำหนดให้ = ab , = ca และ ω = bb ดังนั้น = abca ω = cabb ()ω = abcabb (ω) = abcabb Formal Languages
ทฤษฎี 2.1.4กำหนดให้ , , ω * ดังนั้น ()ω= (ω) พิสูจน์ Basis: Length(ω) = 0 ดังนั้น ω= และ ()ω = () โดยนิยามของ Concatenation หรืออาจกล่าวใหม่ได้ว่า ()ω= ()= Inductive hypothesis:(ข้อสมมติโดยไม่ต้องพิสูจน์) สมมติฐานว่า ()ω= (ω) สำหรับทุกสตริง ω ที่ Length n Inductive step: ดังนั้น เราต้องพิสูจน์ว่า ()ω= (ω) สำหรับทุกสตริง ω ที่ Length n + 1 Formal Languages
พิสูจน์ ()ω = ()(xa) แทน ω ด้วย xa = (()x)a) นิยาม Cocatenation = ((x)a) Inductive hypothesis = ((x)a) นิยาม Cocatenation = ((xa)) นิยาม Cocatenation = (ω) แทน xa ด้วย ω Formal Languages
ข้อควรรู้ 0เขียนใหม่ได้เป็น 1เขียนใหม่ได้เป็น 2เขียนใหม่ได้เป็น 3เขียนใหม่ได้เป็น : ถ้า = ab ดังนั้น 2 = abab ซึ่งไม่ใช่ aabb เพราะมันเท่ากับ a2b2 Formal Languages
Substring, Prefix, และ Suffix แบบ Unformal อาจกล่าวได้ว่า • เป็น Substring ของ ถ้า ปรากฏอยู่ภายใน แบบ Formal เป็นSubstringของ ถ้ามีสตริง x และ y โดยที่ = xy • เป็นPrefixของ ถ้ามีสตริง x และ y โดยที่ = xy และ x = • เป็นsuffixของ ถ้ามีสตริง x และ y โดยที่ = xy และ y = Formal Languages
นิยาม 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
ทฤษฎี 2.1.6กำหนดให้ , * ดังนั้น ()R= RR Basis: Length() = 0 ดังนั้น = และ ()R= R ในทำนองเดียวกัน RR = RR= R Inductive Hypothesis:สมมติฐาน ()R= RR ที่ทุกสตริง ของ Length n Inductive Hypothesis:เราต้องพิสูจน์ว่า ที่ทุกสตริง ของ Lengthn + 1 ว่า ()R= RR โดยกำหนดให้ =ωa โดยที่ ω เป็นสตริงของ Lengthn และ a , Formal Languages