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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
บทที่ 2 รหัสควบคุมและการคำนวณ
Advertisements

โครงสร้างโปรแกรมภาษา C
Appendix A2 จัดทำโดย นางสาว อารยา จำปัน
ลิมิตและความต่อเนื่อง
โครงสร้างทางคณิตศาสตร์และการให้เหตุผล (Mathematical Structure and Reasoning) Chanon Chuntra.
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
สับเซตและเพาเวอร์เซต
ประเภทของข้อมูล Excel 2007
BC320 Introduction to Computer Programming
สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)
การบ้าน ข้อ 1 จงพิสูจน์ว่า
Type Judgments และ Type Rules. คำศัพท์ที่จะใช้ Type judgment: การตัดสินความถูกต้องของ type สำหรับ expression หรือ statement ใน โปรแกรม – เป็นบทสรุป (conclusion)
Functional programming part II
CS Assembly Language Programming
ชนิดของข้อมูลและตัวดำเนินการ
บทเรียนคอมพิวเตอร์ช่วยสอน (CAI)
ทฤษฎีจำนวนเบื้องต้น โดย ครูภรเลิศ เนตรสว่าง โรงเรียนเทพศิรินทร์
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
REGULAR EXPRESSION การบรรยายแบบสม่ำเสมอ
ภาควิชาวิศวกรรมคอมพิวเตอร์ มิถุนายน ๒๕๕๒
Week 6 ประกาศค่าตัวแปร.
รับและแสดงผลข้อมูล.
PHP LANGUAGE.
การเขียนโปรแกรม ASP การประกาศตัวแปร
เรื่อง ประเภทของข้อมูล
เทคนิคทางคณิตศาสตร์ในการวิเคราะห์เชิงปริมาณ
ฟังก์ชันของ PHP ฟังก์ชันคือ โปรแกรมย่อยที่สามารถประมวลผล และ คืนผลลัพธ์จาการประมวลผลนั้นสู่โปรแกรมหลักได้ ซึ่งจำเป็นในการเขียนโปรแกรมเพื่อช่วยให้การทำงานมีประสิทธิภาพที่สูงขึ้น.
เมื่อนักคณิตศาสตร์เขียน 4! เครื่องหมายตกใจ
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
CS Assembly Language Programming Period 30.
ระบบจำนวนเต็ม โดย นางสาวบุณฑริกา สูนานนท์
บทที่ 11 การเขียนโปรแกรมภาษาซี
ข้อมูลพื้นฐานและตัวดำเนินการ
อาร์เรย์และข้อความสตริง
ตัวแปร (variable) ตัวแปร เป็นชื่อที่เราตั้งขึ้น เพื่อให้คอมพิวเตอร์เตรียมที่ใน หน่วยความจำไว้สำหรับเก็บข้อมูลที่นำไปประมวลผล การตั้งชื่อตัวแปร ชื่อตัวแปรในภาษา.
ไวยากรณ์ของภาษาการทำโปรแกรม (1) (Syntax of programming languages)
ตัวแปร (Variable) คือ ชื่อที่ตั้งขึ้นเพื่อเก็บข้อมูลในหน่วยความจำ สามารถเก็บข้อมูลชนิดใดก็ ได้ ลักษณะที่สำคัญ ค่าที่จัดเก็บ เมื่อปิดโปรแกรมข้อมูลจะหายไป.
ชนิดของข้อมูล ตัวแปร และตัวดำเนินการ
ตัวแปรกับชนิดของข้อมูล
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ค33212 คณิตศาสตร์คอมพิวเตอร์ 6
นิยาม, ทฤษฎี สับเซตและพาวเวอร์เซต
การดำเนินการบนเมทริกซ์
ค33212 คณิตศาสตร์คอมพิวเตอร์ 6
ค33211 คณิตศาสตร์สำหรับ คอมพิวเตอร์ 5
ค33212 คณิตศาสตร์คอมพิวเตอร์ 6
ค31212 คณิตศาสตร์สำหรับ คอมพิวเตอร์ 2
บทเรียนสาระการเรียนรู้คณิตศาสตร์ โดยใช้โปรแกรม Microsoft Multipoint
ตัวแปรกับชนิดของข้อมูล
เครื่องหมายและการดำเนินการ ในภาษา C
Week 12 Engineering Problem 2
การประมวลผลสายอักขระ
Week 12 Engineering Problem 2
z  1 ( mod 2 ) ก็ต่อเมื่อ z2  1 ( mod 2 )
หลักการเขียนโปรแกรม ( )
การให้เหตุผล การให้เหตุผลทางคณิตศาสตร์ที่สำคัญ มี 2 วิธี ได้แก่
ตัวดำเนินการ และนิพจน์คณิตศาสตร์
ตัวประกอบ (Factor) 2 หาร 8 ลงตัว 3 หาร 8 ไม่ลงตัว 4 หาร 8 ลงตัว
การเรียงสับเปลี่ยนเชิงวงกลม
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
Java Programming Java Structure and Datatype,Variable
หลักการเขียนโปรแกรม ( )
Set Operations การกระทำระหว่างเซต
หลักการเขียนโปรแกรม ( )
การกระทำทางคณิตศาสตร์
ตัวแปร และชนิดข้อมูล.
มนุษย์รู้จักใช้การให้เหตุผล เพื่อสนับสนุนความเชื่อ หรือเพื่อหาความจริง
การรับและแสดงผลข้อมูล (Input/Output)
Summations and Mathematical Induction Benchaporn Jantarakongkul
หลักการทั่วไปเกี่ยวกับการเขียนโปรแกรม
ใบสำเนางานนำเสนอ:

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

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

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

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

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

กฎพื้นฐานของ คณิตศาสตร์ 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

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

ตัวอย่าง 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

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

ตัวอย่าง 1. 6. 2 ใช้คณิตศาสตร์ Induction พิสูจน์ว่า n ตัวอย่าง 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 12/09/47 Formal Languages

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

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

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

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

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

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

นิยาม 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

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

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

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

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

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

นิยาม 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

ทฤษฎี 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