1 / 73

Pushdown Machines

Pushdown Machines. 1. นางสาวจีรภัทร์ ขจรกล่ำ 4205128 2. นายทนงศักดิ์ เมืองฝั้น 4205174 3. นางสาวบุษยรัตน์ รัตนจันทรานนท์ 4205236 4. นางสาวภัทิรา แช่โค้ว 4205302 5. นางสาวสุภาวดี คงเมือง 4205460. คณะผู้จัดทำ. 1. Definition of a pushdown machine.

felcia
Download Presentation

Pushdown Machines

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. Pushdown Machines

  2. 1. นางสาวจีรภัทร์ ขจรกล่ำ 4205128 2. นายทนงศักดิ์ เมืองฝั้น 4205174 3. นางสาวบุษยรัตน์ รัตนจันทรานนท์ 4205236 4. นางสาวภัทิรา แช่โค้ว 4205302 5. นางสาวสุภาวดี คงเมือง 4205460 คณะผู้จัดทำ

  3. 1. Definition of a pushdown machine Finite-state machine สามารถทำการคำนวณภายในเนื้อที่ในหน่วยความจำที่จำกัดได้ ทำให้มันไม่สามารถที่จะทำงานหลายอย่างภายใต้ข้อจำกัดของคอมไพเลอร์ได้ ดังนั้นจึงต้องมีการสร้างเครื่องมือที่สามารถรองรับการทำงานที่มีลักษณะที่ซับซ้อนมากขึ้น เช่น การตรวจสอบจำนวนวงเล็บในนิพจน์คณิตศาสตร์ การสร้างเครื่องมือนี้ต้องอาศัยกลไกการเพิ่มเนื้อที่การทำงาน มีวิธีหนึ่งที่ใช้บ่อยในคอมไพเลอร์ เรียกว่า "Stacking"

  4. คำศัพท์เกี่ยวกับ Stack • Push คือ การเพิ่มข้อมูลเข้าไปใน stack • Pop คือ การย้ายข้อมูลออกไปจาก stack • Top of stack คือ ข้อมูลตัวบนสุดของ stack

  5. คุณสมบัติของ Stack • สามารถกระทำกับข้อมูลได้เพียงครั้งละหนึ่งตัวเท่านั้น • ข้อมูลที่จะถูกนำออกมาต้องเป็นข้อมูลตัวล่าสุดที่ได้ใส่เข้าไปใน stack เท่านั้น

  6. รูป 5.1

  7. สัญลักษณ์  •  เรียกว่า “bottom marker” •  เป็นตัวที่ใช้บอกถึง bottom of stack และไม่สามารถ pop ออกมาได้

  8. รูป 5.1 (a) จากรูป (a)bottom symbol คือ  top symbol คือ C จากลำดับของ symbol ทำให้เราทราบว่า 1. A คือ symbol ที่ถูก PUSH ลงไปเป็นตัวแรก 2. B คือ symbol ที่ถูก PUSH ลงไปเป็นตัวที่2 3. A คือ symbol ที่ถูก PUSH ลงไปเป็นตัวที่3 4. C คือ symbol ที่ถูก PUSH ลงไปเป็นตัวสุดท้าย

  9. รูป 5.1 (b) • จากรูป (b) แสดงการ PUSH symbol D ลงไปใน stack ดังนั้นขณะในนี้ D คือ top of stack

  10. รูป 5.1 (c) • จากรูป (c) แสดงการ POP symbol C ทำให้ A กลายเป็น top of symbol ซึ่งจะสังเกตเห็นว่าการกระทำกับข้อมูลบน stack นั้น จะทำได้กับข้อมูลที่อยู่บนสุดเท่านั้น

  11. รูป 5.1 (d) • จากรูป (d) สัญลักษณ์  ซึ่งขณะนี้เป็น top of stack หมายถึงว่า ไม่มีข้อมูลใดๆเลยอยู่ใน stack เรียกว่า STACK EMPTY

  12. การเรียงลำดับใน stack • เราสามารถเขียนการเรียงลำดับใน stack ได้ 2 แบบดังนี้ 1. C A B A  คือ การเรียงจาก top ลงไปหา bottom ของ stack เรียกว่า "top symbol on the left" 2.  A B A C คือ การเรียงจาก bottom ขึ้นไปหา top ของ stack เรียกว่า "top symbol on the right"

  13. Finite & Pushdown • Finite state machine ได้แบ่งการทำงานออกเป็น step ย่อย ในแต่ละ step อาจเปลี่ยนลักษณะใน memory ได้โดยที่เปลี่ยน state และเปลี่ยนการ POP หรือ PUSH STACK • Pushdown machine จะมีขั้นตอนหลายขั้นตอนในการ process แต่ละ symbol ของ input sequence แต่ละขั้นตอนจะถูกควบคุมโดยตัว control ซึ่งเครื่องสามารถที่จะรู้ได้ว่าการ process ของ input sequence นั้นเสร็จสิ้นเมื่อใด

  14. รูป 5.2

  15. อธิบายรูป 5.2 จากรูป แสดงการเก็บข้อมูลในหน่วยความจำ ขณะที่กำลัง process input sequence 1001110 ซึ่งมีลูกศรชี้ไปที่ current input symbol ที่กำลัง process ในแต่ละขั้นตอนการ process จำเป็นจะต้องใช้ข้อมูล 3 อย่าง ดังนี้ 1. The State 2. The top stack symbol 3. The current input symbol

  16. อธิบายรูป 5.2 ต่อ ซึ่งทั้ง 3 อย่างนี้ ได้จากรูปโดย - การควบคุม(control) คือ state = 6 - Top of stack คือ C      - Current input คือ 0 ตามหลักแล้ว ตัวควบคุมจะเลือกทำระหว่าง จบการประมวลผล(exit) กับ การ transition

  17. Transition ประกอบด้วย 3 ส่วน • Stack operation • State operation • Input operation

  18. Stack operation 1. PUSH ข้อมูลที่ต้องการจัดเก็บลง stack 2. POP ข้อมูลออกจาก top ของ stack (การ POP stack สามารถทำได้กับข้อมูลตัวบนสุดหรือตัวล่าสุดได้เท่านั้น) 3. คงสภาพของ stack ไว้เหมือนเดิม ไม่มีการเปลี่ยนแปลง

  19. State operation คือ เปลี่ยนจากสถานะหนึ่งไปอีกสถานะหนึ่ง

  20. Input operation 1. รับ input ตัวถัดไปเข้ามาเป็นตัวปัจจุบัน (current) นั่นหมายความว่า "Advance" 2. ไม่เปลี่ยนแปลง Input นั่นหมายความว่า "Retain"

  21. Pushdown Machine จะถูกระบุโดยสิ่งต่างๆ ดังนี้ 1) เชตจำกัดของ Input Symbol ซึ่งจะรวมถึง End Marker ด้วย 2) เชตจำกัดของ Stack Symbol ซึ่งจะรวมถึง Bottom Marker ด้วย 3) เชตจำกัดของ State ซึ่งจะรวมถึงสถานะเริ่มต้น (Starting State) ด้วย 4) สิ่งควบคุม (A Control) ซึ่งจะสั่งให้ทำการ Exit หรือ Transition โดยตัวกระทำจะถูกดึงไปใช้กับ Input จนกระทั่งพบ End Marker หรือทำการ Pop , Push จนพบ End Marker 5) Stack เริ่มต้น ซึ่งจะอยู่ในลักษณะ "Top Symbol On the Right" คือ Bottom Marker จะอยู่ทางซ้ายมือเรียงมาก่อน ตามด้วย Stack Symbol

  22. Pushdown Recognizer Pushdown Machine จะถูกเรียกว่า Pushdown Recognizerก็ต่อเมื่อมีการหยุดการทำงาน การหยุดการทำงานมี 2 กรณี คือ - Accept จะ Accept ก็ต่อเมื่อมี ตามท้าย - Reject จะ Reject ก็ต่อเมื่อมีอักขระใดๆที่ไม่ใช่ ตามท้าย

  23. คำศัพท์ในการอธิบาย Transition ของ Pushdown Machine • POPคือ การดึงข้อมูลออกจาก Top of stack • PUSH คือ การเก็บ A ลงใน stack • STATE(s) คือ การกำหนดให้ s เป็น state ถัดไป • ADVANCE คือ รับ Input ตัวถัดไปเข้ามาเป็น Input ปัจจุบัน • RETAINคือ การคง Input ปัจจุบันเอาไว้ให้อยู่ในสภาวะเดิม

  24. พิจารณาการใช้ Pushdown Recognizer ในการแก้ปัญหาการตรวจวงเล็บ • เมื่อพบเครื่องหมายวงเล็บเปิด สัญลักษณ์ A จะถูก Push ลงใน Stack • เมื่อพบเครื่องหมายลงเล็บปิดที่คู่กัน จะทำการ Pop สัญลักษณ์ A ออกจาก Stack • Sequence จะถูก - Reject หากพบวงเล็บปิด เมื่อ Stack ว่าง หรือ เมื่อจบลงโดยมีสัญลักษณ์ A ค้างอยู่บน Stack อีก- Accept เมื่อ Sequence นั้นจบพร้อมกับ Stack ว่างพอดี

  25. รายละเอียดต่างๆ เป็นดังนี้ 1. เซตของ Input ได้แก่ { ( , ) , --| } 2. เซตของ Stack ได้แก่ {A ,  } 3. เซตของ State Symbol ได้แก่ {s} โดยที่ s เป็นสถานะเริ่มต้น 4. Transition ได้แก่ เหตุการณ์ทั้งหมดที่เป็นไปได้( , A , s = Push (A) , State(S) , Advance( , , s =Push (A) , State(s) , Advance) , A , s =Pop , State(s) , Advance) ,  ,s =Reject--| , A ,s =Reject--| , , s =Accept โดยทางซ้ายมือของเครื่องหมายเท่ากับ (=) เป็น Input Symbol ,Stack Symbol ,State ส่วน Transition แสดงให้เห็นทางขวามือ 5. Starting Stack คือเครื่องหมาย 

  26. พิจารณาขั้นตอนการทำงานของเครื่องประมวลผลโดย Input Sequence : ( ( ) ( ) )

  27. พิจารณาขั้นตอนการทำงานของเครื่องประมวลผลโดย Input Sequence : ( ( ) ( ) ) (ต่อ)

  28. พิจารณาขั้นตอนการทำงานของเครื่องประมวลผลโดย Input Sequence : ( ( ) ( ) ) (ต่อ)

  29. พิจารณาขั้นตอนการทำงานของเครื่องประมวลผลโดย Input Sequence : ( ( ) ( ) ) (ต่อ)

  30. การแสดงขั้นตอนการทำงานอย่างย่อๆการแสดงขั้นตอนการทำงานอย่างย่อๆ

  31. Control table Control table แสดงถึงขั้นตอนต่างๆ ที่เครื่องทำกับแต่ละ input symbol และ stack symbol ที่อยู่บน Top ของ Stack หัวข้อในแนวตั้งคือ Input Symbol หัวข้อในแนวนอนคือ Stack Symbol

  32. 2. SOME NOTATION FOR SETS OF SEQUNECE จากตัวอย่างได้แสดงขั้นตอนกระบวนการเกี่ยวกับ set ของ sequence โดยเครื่อง Pushdown state Machine เราสามารถอธิบายเกี่ยวกับสัญลักษณ์บางสัญลักษณ์ โดยกำหนด Operation 3 ชนิด เซตของ Operationที่ว่านี้จะรวมเซตของ sequence กับ เซตของ sequence อื่นๆ ซึ่ง Operation เหล่านี้จะประกอบด้วย - Union - Concatenation - Kleene Star

  33. UNION ถ้า P และ Q เป็นเซตของ sequence UNION ของ P และ Q คือ เซตของ sequence ที่สามารถเป็นสมาชิกของทั้ง PและQ ใช้สัญลักษณ์ PUQ หรือ P+Q ตัวอย่างเช่น { for , if , then } + { do , if } = { for , if ,then ,do } { ab, x3 } + { ab , x3 ,, y ,e } = { ab , x3 ,y ,e }

  34. Concatenation การ concatenation ของ 2 sequence คือ การนำเอา 2 sequence มาต่อกัน ตัวอย่างเช่น การ concatenation ของ ENVIRON กับ MENT ผลลัพธ์คือ ENVIRONMENT ความยาวของ sequence ที่ได้คือ ผลรวมของความยาว ของ 2 sequence นั้น ส่วน NULL SEQUENCE คือ sequence ที่มีความยาวเป็น 0 ถ้าเรา concatenate sequence ใด ๆ กับ NULL SEQUENCE ผลที่ได้ก็คือ sequence นั้น ไม่เปลี่ยนแปลง

  35. Concatenation (ต่อ) ตัวอย่างเช่น การconcatenation ระหว่าง MENT กับ 0 จะได้ MENT เช่นเดิม การ concatenation สามารถทำได้ตั้งแต่ operation บน sequence จนถึง operation บนเซตของ sequence ถ้า P และ Q เป็นเซตของ sequence แล้วการ concatenation ของ P และ Q คือ เซตที่ประกอบด้วยสมาชิกที่ได้จากการconcatenation ของ sequence จากเซต P และ เซต Q สัญลักษณ์การ concatenation ระหว่าง P และ Q คือ P.Q หรือ PQ

  36. Concatenation (ต่อ) ตัวอย่าง การ concatenation { 10 } { 1 , 00 } = { 101 , 1000 } { AB, X ,ABY } { {}, Y } = { AB, X, ABY ,XY , ABYY } การconcatenation ระหว่างเซตของตัวมันเอง เช่น RR หรือ R.R จะเขียนแทนด้วย R2 ตัวอย่างเช่น { 0, 11 }2 = { 00, 011, 110, 1111 } เช่นเดียวกับ R iสำหรับ i เป็นเลขจำนวนเต็มบวก จะได้เซตของตัวมันเอง concatenate i ครั้ง ถ้าเป็น 0 จะได้ { e } นั้นคือ R0 = { {} } ดังนั้น R0 = { {} }และ R i . R j = R i+j ซึ่งจะเห็นได้ว่าการ concatenation จะเหมือนกับการคูณ

  37. KLEENE STAR การใช้ประโยชน์จำเป็นที่ต้องมีสัญลักษณ์สำหรับเซตของชุด sequence ซึ่งทำโดยการแทนด้วยตัวอักษร Alphabet ถ้า A แทนเซตของสัญลักษณ์ของตัวอักษรเหล่านั้น เราสามารถเขียนได้ว่า A* แทนเซตของทุกๆ sequence ซึ่งได้มาจาก A และ A* จะต้องมีสมาชิก คือ { } ด้วย

  38. KLEENE STAR (ต่อ) ตัวอย่างเช่น { 0, 1 }* แทนด้วยเซตของ sequence ทั้งหมดของ { 0, 1 } เรียกว่า สัญลักษณ์ของ Kleene Star หรือบางครั้งเรียก Star Kleene Star สามารถสร้างจาก operation บนตัวอักษร จนถึง operation บนเซตของ sequence อื่น ๆ ตัวอย่างเช่น { IF , THEN }* แทน เซตที่เป็น infinite ประกอบด้วย { {}, IF, THEN, IFIF, THENIFTHEN, IFTHENIF, IFTHENIFIF, ….} ถ้า R เป็น เซตของ sequence เราจะได้ว่า R* = R + R + R + …. เครื่องหมาย + ในสมการ จะหมายถึงการ Union

  39. KLEENE STAR (ต่อ) Kleene Star เป็นที่นิยมใช้กันมากพอ ๆ กับ Kleene Plus (R) ถ้าให้ เซตของ sequence A เราสามารถกำหนดเซตของ A + ดังนี้ A + = AA* ดังนั้น A + = A1 + A2+ A3 + …. A + นั้นเหมือนกับ A* ยกเว้น A + มี { } ก็ต่อเมื่อเซต A นั้นมี { }

  40. SOME NOTATION FOR SETS OF SEQUNECE Operation ทั้ง 3 อย่างนี้จะเหมาะสม ถ้านำมาใช้กับ regular sets ซึ่งผลลัพธ์ก็จะเป็น regular set เช่นกัน (regular set คือ set ที่สามารถยอมรับได้ใน finite state machine) ในความเป็นจริง regular set อาจเป็นการแทน Alphabet symbol ต่อไปเป็น ตัวอย่าง extension สำหรับ operation เหล่านี้สามารถใช้กับ nonregular set ได้

  41. SOME NOTATION FOR SETS OF SEQUNECE ตัวอย่างสำหรับ extension แรกให้ใช้ตัวแปร exponent notation สำหรับ set { 1n0n } ; n>0 สำหรับตัวอย่างนี้ หมายถึงset ซึ่งประกอบด้วย set ของ1, n ตัว ตามด้วย 0, n ตัว เช่น 10 111000 11111110000000

  42. SOME NOTATION FOR SETS OF SEQUNECE ใน state ทั่ว ๆไป เทคนิคในการแทนสัญลักษณ์จะใช้ตัวอักษร แทน ตัวยกกำลัง ซึ่งแสดงความสำพันธ์ระหว่าง เลขยกกำลัง กับ ตัวเลขฐาน เช่น { 1n0m }; n >= m >= 0 อธิบายได้ว่า set ประกอบด้วย sequence ของ เลข 1 , n ตัว จะต้องตามด้วย เลข 0 น้อยกว่าหรือเท่ากับ n ตัว ตัวอย่างเช่น 111000 1110

  43. SOME NOTATION FOR SETS OF SEQUNECE เช่นเดียวกับ set { an bm cm dn } ; n > 0, m > 0 ประกอบด้วย sequence ของจำนวน ของ a ตามด้วยจำนวน ของ b และตามด้วยจำนวน ของ c และตามด้วยจำนวน ของ d ซึ่ง จำนวน ของ a = d และ จำนวน ของ b = c ดังนั้น set ประกอบด้วย abbccd aaabbbbccccddd

  44. SOME NOTATION FOR SETS OF SEQUNECE ตัวอย่างที่สอง หา notation โดยวิธีการใช้ superscript r ที่ประกาศค่าตรงข้ามของ sequence เช่น { a b c } r = c b a โดยใช้ operation กลับค่าเราสามารถเขียนรูปแบบได้ดังนี้ { ww r} = w in ( 0 + 1)* ซึ่งแทนเซตของ sequence ประกอบด้วย arbitrary sequence ของ 0 และ 1 ตามด้วย sequence ของ reverse ซึ่งทำให้เราอ่านค่าจากทางซ้ายมือมา หรือขวาไปซ้ายก็ได้เหมือนกันคือ มี SYMMETRY ดังตัวอย่างเช่น 1110110111 , 0000

  45. SOME NOTATION FOR SETS OF SEQUNECE แม้วิธี notation ใหม่นี้สามารถแสดง nonregular set ได้ และสามารถทำให้เราสามารถอธิบาย การทำงานของ pushdown machine ได้ แต่เราไม่สามารถอธิบายตัวโปรแกรมจริง ๆ ได้ ด้วยเหตุผลนี้เอง ทำให้ตัวอย่างและปัญหาของบทนี้ยังไม่เพียงพอที่จะใช้ในด้านโปรแกรมได้

  46. 3. AN EXAMPLE OF PUSHDOWN RECOGNITION ตัวอย่าง การ Recognizing ของ set (1n,0n) , n>0 ซึ่งเป็นตัวอย่าง ของ pushdown recognition ที่มี state มากกว่า 1 state ขั้นแรกในการ designpushdown recognizer เราต้องกำหนด recognition plan - โดยการ acceptจะเกิดขึ้นเมื่อ stack ว่างเมื่อ sequence นั้นจบพอดี - ถ้าเจอ 0 หลังจากที่เจอ 1 ตัวแรก sequence นั้นจะถูก reject ทันที - โดยเราจะใช้ Zเป็น stack symbol ที่ใช้แทน 0 เพื่อหลีกเลี่ยงความสับสน

  47. ขั้นตอนของการ process แบ่งออกเป็น 2 phase คือ 1. Pushing phase 2. Popping phase และเพื่อจะแสดงให้เห็นว่าตอนนี้อยู่ที่ phase ใดจะใช้ state 2 state คือ S1 แทน phase ที่ 1 S2 แทน phase ที่ 2 ตามลำดับ

  48. การทำงานของเครื่องเมื่อมี input sequence 000111

  49. การทำงานของเครื่องเมื่อมี input sequence 001011

  50. CONTROL TABLE Starting state : 

More Related