200 likes | 409 Views
ทฤษฎีคณนา. Theory of Computation. ภาควิชาวิศวกรรมคอมพิวเตอร์ มิถุนายน ๒๕๕๒. Athasit Surarerks. ภ าษา. หน่วยของภาษา อักขระ letters / คำ words / ประโยค sentences / ย่อหน้า paragraphs / เรื่องราว coherent stories หน่วยของภาษาคอมพิวเตอร์ อักขระ letters / คำสำคัญ keywords /
E N D
ทฤษฎีคณนา Theory of Computation ภาควิชาวิศวกรรมคอมพิวเตอร์ มิถุนายน ๒๕๕๒ AthasitSurarerks
ภาษา หน่วยของภาษา อักขระ letters/ คำ words/ ประโยค sentences/ ย่อหน้า paragraphs/ เรื่องราว coherent stories หน่วยของภาษาคอมพิวเตอร์ อักขระ letters/ คำสำคัญ keywords/ คำสั่ง commands/ โปรแกรม programs/ ระบบ systems
ภาษารูปนัย (Formal language) • คุณสมบัติของภาษา • มี กฎ กติกา ที่ชัดเจน ในการกำหนดลำดับของสัญลักษณ์ เพื่อสร้างสมาชิกในภาษา • ตีความตามรูปแบบโดยไม่ต้องใช้ ความรู้อื่น ๆ ในการตีความหมาย
ภาษารูปนัย (Formal language) • นิยามเบื้องต้น • เซตจำกัดของอักขระ (character) เรียกว่า เซตของอักขระ (alphabet) ใช้สัญลักษณ์ • ภาษา (language) หมายถึง เซตของสายอักขระ (string) ที่มีการกำหนดคุณสมบัติของ การเป็นสมาชิกที่ชัดแจ้ง • สมาชิกในภาษา เรียกว่า คำ (word) • สายอักขระที่ไม่มีอักขระใด ๆ เรียกว่า สายอักขระว่าง (empty string) ใช้สัญลักษณ์ • ภาษาที่ไม่มีคำใด ๆ เลย เรียกว่า เซตว่าง (empty set) ใช้สัญลักษณ์
สัญลักษณ์ที่นิยม Union operation + Different operation Alphabet Empty string , Language L, Empty language
การกำหนดภาษา • ตัวอย่าง • บรรยายแบบแจกแจงสมาชิก • { 0, 00, 000, 0000, … } • บรรยายด้วยรูปแบบทั่วไป • { 0n| n = 0, 1, 2, … } • หมายเหตุยกกำลังนิยม n ใช้ในกรณี การเขียนซ้ำ n ครั้ง
การกำหนดภาษา ตัวอย่าง บังคับการเดิน ของหุ่นยนต์ 0 : ขวา 1 : ซ้าย สอบผ่าน สอบตก เข้า { 1, 010, 01110, 0111110, … } { 1 } { 01m0 | m = odd integer}
การกำหนดภาษา • ตัวอย่าง • กำหนดให้ = { 0, 1 } • จงบรรยายภาษาของสายอักขระที่เมื่อเรียนย้อนกลับ (reverse) จะได้ผลลัพธ์ • เหมือนกับสายอักขระเดิม • { , 0, 1, 00, 11, 000, 010, 101, 111, … } • บรรยายด้วยรูปแบบทั่วไป • { x bit string | rev(x) = x} • { x bit string | x-1 = x} • หมายเหตุภาษานี้เรียกว่า Palindrome over
การกำหนดภาษา • ตัวอย่าง • กำหนดให้ = { 0, 1 } • จงบรรยายภาษาของสายอักขระที่มีจำนวนของ 0 เท่ากับจำนวนของ 1 • { , 01, 10, 0011, 0101, … } • บรรยายด้วยรูปแบบทั่วไป • { x bit string | n0(x) = n1(x) } • หมายเหตุนิยมใช้ ny(x) แทนฟังก์ชันการนับจำนวนของอักขระ y ในสายอักขระ x
Kleene closure นิยาม ภาษาที่สายอักขระทุกรูปแบบที่เป็นไปได้จากอักขระใน จะถูกเรียกว่าเป็น closure ของ โดยใช้สัญลักษณ์เป็น *. หมายเหตุ บางครั้งจะเรียกว่า Kleene star วิธีการนี้เป็นการนำเสนอแนวทางในการบรรยายภาษาที่เป็น เซตอนันต์ ตัวอย่าง กำหนดให้ = { 0, 1 } จะได้ว่า *={ , 0, 1, 00, 01, 10, 11, 000, … } ในกรณีของ S* (เมื่อ S เป็นภาษา หรือ เซตของสายอักขระ) จะหมายถึง เซตของสายอักขระทุกรูปแบบที่เป็นไปได้จากการนำสมาชิกใน S มาเรียงต่อกันจำนวนเท่าใดก็ได้
Kleene closure • ตัวอย่าง • กำหนดให้ S= { 0, 11 } • จะได้ว่า S*={ , 0, 00, 11, 000, 011, 110, … } กำหนดให้ S = { 01, 10 } จงหา S* ? S* = { , 01, 10, 0101, 0110, 1001, 1010, … } หมายเหตุ การเรียงลำดับของสมาชิกเป็นแบบ lexicographic ordering
Kleene closure • แบบฝึกหัด • กำหนดให้S = { 0, 1, 10 } • T = { 0, 1, 01 ) • U = { 0, 1 } • จงแสดงให้เห็นความสัมพันธ์ของ S* T* และ U* ? จงแสดงให้เห็นว่า ถ้า A B แล้ว A*B* เป็นความจริงหรือไม่ ?
Kleene closure แบบฝึกหัด กำหนดให้S = { xx, xxxxx}จงแสดง S* ? S* = { , xx, xxxx, xxxxx, xxxxxx, xxxxxxx, … } S* = { , x2, x4, x5, x6, … } เราจะพิสูจน์ว่าเป็นความจริงได้อย่างไร
Kleene closure นิยาม กำหนดให้S เป็นเซต จะได้ว่า S* = U Si Sn = SSn-1เมื่อ n 1 S0 = {} หมายเหตุConcatenation ของ AB หมายถึง { ab | aA และ bB } I Ii = 0
Kleene closure ทฤษฎีบท กำหนดให้S เป็นเซต จะได้ว่า S** = S* หมายเหตุS** หมายถึง (S*)* Proof:Every words in S** is made up of factors from S*. Every words in S* is made up of factors from S. Therefore every words in S** is made up of factors from S. We can write this S** S*. In general, it is true that S S*. So S* S**. Then S*= S**.
Positive closure นิยาม กำหนดให้S เป็นเซต จะได้ว่า S+ = U Si Sn = SSn-1เมื่อ n 1 S0 = {} หมายเหตุConcatenation ของ AB หมายถึง { ab | aA และ bB } I Ii = 1
? โจทย์น่าคิด แบบฝึกหัด ให้ L เป็นภาษาใด ๆ ที่นิยามบน = {0, 1} จงอธิบายความสัมพันธ์ของL*+และ L+*
การกำหนดภาษา • ตัวอย่าง • กำหนดให้ EVEN เป็นภาษาของจำนวนเต็มคู่บวก • ดังนั้น EVEN = { 2, 4, 6, 8, … } • การบรรยายโดยใช้ กฎการสร้าง (production rule) สามารถทำได้ดังนี้ • 1. 2 เป็นสมาชิกใน EVEN • 2. ถ้า x เป็นสมาชิกใน EVEN แล้ว x + 2 จะเป็นสมาชิกใน EVEN ด้วย • 3. สมาชิกใน EVEN เกิดจาก ข้อ 1 และ ข้อ 2 เท่านั้น จงพิสูจน์ว่า 1000000 เป็นสมาชิกใน EVEN ด้วย
การกำหนดภาษา • ตัวอย่าง • กำหนดให้ EVEN เป็นภาษาของจำนวนเต็มคู่บวก • ดังนั้น EVEN = { 2, 4, 6, 8, … } • การบรรยายโดยใช้ กฎการสร้าง (production rule) สามารถทำได้ดังนี้ • 1. 2 เป็นสมาชิกใน EVEN • 2. ถ้า x และ y เป็นสมาชิกใน EVEN แล้ว x + y จะเป็นสมาชิกใน EVEN ด้วย • 3. สมาชิกใน EVEN เกิดจาก ข้อ 1 และ ข้อ 2 เท่านั้น จงพิสูจน์ว่า 1000000 เป็นสมาชิกใน EVEN ด้วย
การกำหนดภาษา แบบฝึกหัด L1={ xn for n = 1, 2, 3, … } L2={ xn for n = 1, 3, 5, 7, … } L3={ xn for n = 1, 4, 9, 16, … } L4={ xn for n = 3, 4, 8, 22, … }. เป็นการบรรยายที่กำกวม และยากต่อการตรวจสอบความเป็นสมาชิก