TRÌNH BÀY LÝ THUYẾT VỀ AUTOMAT ĐẨY XUỐNG VÀ MINH HỌA BÀI TOÁN TRONG TIN HỌC BẰNG CHƯƠNG TRÌNH RAM (TIỂU LUẬN MÔN LÝ THUYẾT TÍNH TOÁN)

30 1.4K 2
TRÌNH BÀY LÝ THUYẾT VỀ AUTOMAT ĐẨY XUỐNG VÀ MINH HỌA BÀI TOÁN TRONG TIN HỌC  BẰNG CHƯƠNG TRÌNH RAM (TIỂU LUẬN MÔN LÝ THUYẾT TÍNH TOÁN)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

LỜI MỞ ĐẦU Lý thuyết tính toán là lĩnh vực nghiên cứu các lý thuyết về máy tính, đó là nghiên cứu về tính toán hiệu quả, các mô hình của các quá trình tính toán, và giới hạn của chúng. Lĩnh vực này đã nổi lên trong vài thập kỷ qua như là một căn bản khoa học kỷ luật cũng như chuyên sâu của khoa học máy tính. Là một ngành khoa học non trẻ, với nhiều câu hỏi trung tâm vẫn chưa được trả lời, và nó cũng là một khoa học sẵn sàng để có tác động đáng kể về các vấn đề hiện tại trong sự phát triển của các hệ thống và phần mềm, của mạng lưới quốc gia và cơ sở hạ tầng thông tin liên lạc, tin học sinh học và khoa học vật lý. Cũng như tham gia vào các lĩnh vực như thiết kế các thuật toán cơ bản, tối ưu hóa tổ hợp, học máy, lý thuyết phức tạp tính toán, đại số máy tính, logic trong khoa học máy tính, hình học tính toán, và các ứng dụng để xác minh, các hệ thống đáng tin cậy, đa phương tiện và xử lý hình ảnh , và các khoa học tính toán. Vận dụng những kiến thức thu nhận trong quá trình học tập, tìm hiểu và nghiên cứu về môn Lý thuyết tính toán, được sự phân công và hướng dẫn của thầy giáo PGS.TS. Phan Huy Khánh, chúng tôi đã chọn đề tài này để làm đề tài tiểu luận cho môn học. Tiểu luận đề cập đến các vấn đề lý thuyết như về Automat đẩy xuống, cũng như xây dựng PDA tương ứng với văn phạm phi ngữ cảnh; phần bài tập, tiểu luận đi vào giải quyết các bài toán trong tin học sử dụng chương trình RAM để minh họa kết quả. Lời cuối cùng, chúng tôi xin chân thành cảm ơn thầy giáo PGS.TS. Phan Huy Khánh đã tận tình giảng dạy và hướng dẫn để chúng tôi hoàn thành tiểu luận này. Chúng tôi cũng xin chân thành cảm ơn các học viên trong lớp đã chia sẻ kinh nghiệm trong học tập nghiên cứu và giúp đỡ chúng tôi trong quá trình làm tiểu luận.

 Tiểu luận Lý thuyết tính toán  ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA  TIỂU LUẬN MÔN LÝ THUYẾT TÍNH TOÁN §Ò tµi: TRÌNH BÀY LÝ THUYẾT VỀ AUTOMAT ĐẨY XUỐNG VÀ MINH HỌA BÀI TOÁN TRONG TIN HỌC BẰNG CHƯƠNG TRÌNH RAM CBHD: PGS. TS. PHAN HUY KHÁNH HỌC VIÊN: MAI LAM HỒ THỊ NGỌC LÊ THỊ HƯƠNG GIANG LỚP: KHMT- KHÓA 12 Đà Nẵng 03/2010 Nhóm 9- Lớp KHMT Khóa 12 Trang 1  Tiểu luận Lý thuyết tính toán  LỜI MỞ ĐẦU Lý thuyết tính toán là lĩnh vực nghiên cứu các lý thuyết về máy tính, đó là nghiên cứu về tính toán hiệu quả, các mô hình của các quá trình tính toán, và giới hạn của chúng. Lĩnh vực này đã nổi lên trong vài thập kỷ qua như là một căn bản khoa học kỷ luật cũng như chuyên sâu của khoa học máy tính. Là một ngành khoa học non trẻ, với nhiều câu hỏi trung tâm vẫn chưa được trả lời, và nó cũng là một khoa học sẵn sàng để có tác động đáng kể về các vấn đề hiện tại trong sự phát triển của các hệ thống và phần mềm, của mạng lưới quốc gia và cơ sở hạ tầng thông tin liên lạc, tin học sinh học và khoa học vật lý. Cũng như tham gia vào các lĩnh vực như thiết kế các thuật toán cơ bản, tối ưu hóa tổ hợp, học máy, lý thuyết phức tạp tính toán, đại số máy tính, logic trong khoa học máy tính, hình học tính toán, và các ứng dụng để xác minh, các hệ thống đáng tin cậy, đa phương tiện và xử lý hình ảnh , và các khoa học tính toán. Vận dụng những kiến thức thu nhận trong quá trình học tập, tìm hiểu và nghiên cứu về môn Lý thuyết tính toán, được sự phân công và hướng dẫn của thầy giáo PGS.TS. Phan Huy Khánh, chúng tôi đã chọn đề tài này để làm đề tài tiểu luận cho môn học. Tiểu luận đề cập đến các vấn đề lý thuyết như về Automat đẩy xuống, cũng như xây dựng PDA tương ứng với văn phạm phi ngữ cảnh; phần bài tập, tiểu luận đi vào giải quyết các bài toán trong tin học sử dụng chương trình RAM để minh họa kết quả. Lời cuối cùng, chúng tôi xin chân thành cảm ơn thầy giáo PGS.TS. Phan Huy Khánh đã tận tình giảng dạy và hướng dẫn để chúng tôi hoàn thành tiểu luận này. Chúng tôi cũng xin chân thành cảm ơn các học viên trong lớp đã chia sẻ kinh nghiệm trong học tập nghiên cứu và giúp đỡ chúng tôi trong quá trình làm tiểu luận. Nhóm học viên thực hiện: Mai Lam Hồ Thị Ngọc Lê Thị Hương Giang Nhóm 9- Lớp KHMT Khóa 12 Trang 2  Tiểu luận Lý thuyết tính toán  MỤC LỤC ĐẠI HỌC ĐÀ NẴNG 1 LỜI MỞ ĐẦU 2 MỤC LỤC 3 CHƯƠNG 1. PHẦN LÝ THUYẾT 4 1.1. Giới thiệu theo cách trình bày ví dụ 4 1.2. Định nghĩa của một Automat đẩy xuống 10 1.3. MỘT ÔTÔMÁT ĐẨY XUỐNG TƯƠNG ỨNG VỚI MỘT VĂN PHẠM PHI NGỮ CẢNH XÁC ĐỊNH 17 CHƯƠNG 2. PHẦN BÀI TẬP 27 2.1. Ý tưởng: 27 2.2. Đề xuất thuật toán: 27 2.3. Minh họa thuật toán bằng chương trình RAM: 28 TÀI LIỆU THAM KHẢO 30 Nhóm 9- Lớp KHMT Khóa 12 Trang 3  Tiểu luận Lý thuyết tính toán  CHƯƠNG 1. PHẦN LÝ THUYẾT 1.1. Giới thiệu theo cách trình bày ví dụ Trong chương này chúng ta xem xét cẩn thận về phương thức mở rộng mô hình tính toán trạng thái giới hạn để chúng ta có thể nhận ra ngôn ngữ phi ngữ cảnh. Trong ví dụ đầu tiên, ta xem xét một trong những ngôn ngữ phi ngữ cảnh bất quy tắc đơn giản nhất. Mặc dù các máy trừu tượng mà chúng ta mô tả rõ ràng không liên quan gì đến CFG (CFG: văn phạm phi ngữ cảnh) – tạo ra ngôn ngữ máy nhưng sau này chúng ta sẽ xét đến các trường hợp: các máy cùng loại nói chung có thể dùng chung bất kỳ ngôn ngữ phi ngữ cảnh nào và việc có thể dễ dàng xây dựng được một máy từ văn phạm. Ví dụ 1.1 về một máy chấp nhận chuỗi Palindromes đơn giản. Với G là một văn phạm phi ngữ cảnh, ta có kết quả sau: G tạo ra ngôn ngữ máy là: Các chuỗi trong L là chuỗi có chiều dài lẻ trên {a,b} (ví dụ 6.3), trừ trường hợp kí tự giữa là c. (Chúng ta hãy xét đến các chuỗi Palindrome thông thường. Kí hiệu “đánh dấu” ở giữa giúp ta dễ dàng nhận ra các chuỗi kí tự) Cũng không khó gì để viết một thuật toán kiểm tra các xâu trong L bằng cách đọc các kí tự từ trái sang phải. Ta lưu lại các kí tự của nửa đầu xâu chuỗi mà ta đã đọc, để một khi chúng ta bắt gặp kí tự c thì ta có thể bắt đầu thực hiện việc so khớp các kí tự đang vào với các kí tự đã được đọc. Để thực hiện được điều này, ta phải lấy lại các kí hiệu đã được lưu trữ bằng cách sử dụng quy tắc “ vào sau, ra trước” (viết tắt là LIFO): Kí tự thường được đem đi so khớp với các kí tự đang vào kế tiếp là một kí tự đã được đọc hoặc đã được lưu trữ. Cấu trúc dữ liệu dùng quy tắc LIFO là một ngăn xếp, thường được sắp xếp như là một danh sách trong đó kí tự cuối được xếp vào vị trí đầu tiên. Các kí tự luôn luôn được thêm vào (gọi là push – đẩy vào ngăn xếp) và xóa (gọi là pop – đẩy ra khỏi ngăn xếp) tại vị trí cuối này, và ở bất kỳ thời điểm nào, phần tử duy nhất của ngăn xếp có thể được truy cập ngay tức thời là phần tử ở vị trí đỉnh của ngăn xếp. Nhóm 9- Lớp KHMT Khóa 12 Trang 4  Tiểu luận Lý thuyết tính toán  Khi ta thử dùng thuật toán này với máy trừu tượng, cũng đúng khi nói rằng “trạng thái” hiện tại của máy được xác định một phần bởi nội dung hiện hành của ngăn xếp. Tuy nhiên, cách tiếp cận này sẽ đòi hỏi một tập vô hạn các “trạng thái”, bởi vì ngăn xếp cần đến chúng để có thể chứa được các xâu chuỗi có kích thước lớn. Phương pháp này thuận lợi hơn thay vì tiếp tục dùng một tập các “trạng thái” hữu hạn – mặc dù đầu đọc không phải là một “máy có trạng thái hữu hạn”, cách này cũng giống như cách thức mà FA đã dùng, bởi vì với trạng thái hiện tại thì không đủ để xác định được trạng thái máy và không đủ khả năng để xem ngăn xếp như là một hình thức đơn giản của bộ nhớ đệm. Điều này có nghĩa là một hành động của máy tính không những phụ thuộc vào trạng thái hiện tại cũng như dữ liệu đầu vào mà còn phụ thuộc vào kí tự hiện đang ở vị trí đỉnh của ngăn xếp. Việc thực hiện một hành động có thể làm thay đổi ngăn xếp cũng như trạng thái của ngăn xếp. Trong ví dụ đơn giản trên, một tập các trạng thái Q sẽ chỉ chứa 3 phần tử: q0, q1, q2. Trạng thái đầu q0 có khả năng xử lý một nửa xâu đầu. Trong trạng thái này, mỗi kí tự đầu vào được đẩy lên ngăn xếp mà không cần biết kí tự gì hiện đang ở vị trí đầu. Máy tính vẫn ở trạng thái q0 chừng nào nó chưa nhận được kí tự c; khi nhận được kí tự c thì máy tính chuyển sang trạng thái q1 nhưng ngăn xếp không thay đổi. Trạng thái q1 được dành để xử lý một nửa xâu đầu vào còn lại. Một khi máy tính đang trong trạng thái này thì xâu duy nhất được thừa nhận phải là xâu thuộc nửa xâu chuỗi còn lại (sau ký tự c), là xâu chuỗi đảo ngược đã được máy đọc. Trong trạng thái q1, mỗi kí tự đầu vào sẽ được đem so sánh với một kí tự hiện đang ở vị trí đỉnh của ngăn xếp. Nếu chúng được chấp nhận, các kí tự đó sẽ bị đẩy ra khỏi ngăn xếp và bị loại bỏ; ngược lại máy sẽ bị sự cố và xâu kí tự sẽ không được chấp nhận. Giai đoạn xử lý này kết thúc khi ngăn xếp hoàn toàn rỗng và máy không bị sự cố. Một ngăn xếp trống có nghĩa là mỗi kí tự tại một nửa đầu xâu chuỗi hoàn toàn trùng khớp với mỗi kí tự đầu vào của xâu chuỗi còn lại và lúc này máy sẽ chuyển sang trạng thái chấp thuận q2 Bây giờ ta xét đến phương thức miêu tả một cách chính xác sự hoạt động của một máy trừu tượng mà chúng ta đã phát thảo. Mỗi động thái của máy sẽ được xác định bởi 3 yếu tố: 1. Trạng thái hiện tại 2. Dữ liệu nhập kế tiếp 3. Kí tự ở đầu ngăn xếp Nhóm 9- Lớp KHMT Khóa 12 Trang 5  Tiểu luận Lý thuyết tính toán  Và bao gồm 2 phần: 1. Sự thay đổi trạng thái ( hoặc vẫn ở cùng trạng thái) 2. Sự thay thể kí tự ở đỉnh ngăn xếp bằng một chuỗi số 0 hoặc các kí tự khác. Việc mô tả sự dịch chuyển theo cách này cho phép chúng ta có thể xét 2 sự chuyển dịch cơ bản của ngăn xếp như là các trường hợp đặc biệt: - Đẩy kí tự tại vị trí đầu tiên (pop) ra khỏi ngăn xếp để thay thế bằng một kí tự kế tiếp Λ, và đẩy kí tự Y (push) vào ngăn xếp tức là thay kí tự X tại vị trí đỉnh của ngăn xếp bằng kí tự YX (với giả định là kí tự tận cùng bên trái của chuỗi nằm tương ứng với vị trí đỉnh của ngăn xếp). Chúng ta sẽ tuân theo quy luật ngăn xếp một cách nghiêm ngặt với yêu cầu là ứng với một sự dịch chuyển trong ngăn xếp thì đó phải là chuyển động duy nhất trong ngăn xếp: hoặc là đẩy kí tự vào (push) hoặc là đẩy kí tự ra (pop). Tuy nhiên việc thay thế một kí tự X trong ngăn xếp bằng 1 kí tự alpha có thể được thực hiện bằng một chuỗi các chuyển động cơ bản (hành động đẩy kí tự ra, theo sau là một chuỗi các số 0 hoặc nhiều hành động đẩy kí tự vào) và càng nhiều sự chuyển động chung chung thì càng làm cho số lượng chuyển động khác biệt trở nên ít hơn. Trong trường hợp của thiết bị ôtômát hữu hạn thì chức năng chuyển dịch có dạng: Tại đây nếu chúng ta cho phép xảy ra trường hợp: các kí tự chữ cái chứa trong ngăn xếp (một tập hợp các kí tự có thể xuất hiện trong ngăn xếp) khác với các kí tự chữ cái nhập vào thì ta có: Với trạng thái q, dữ liệu nhập là a và kí tự trong ngăn xếp là X, ta có: Nghĩa là trong trạng thái q , với kí tự X nằm ở vị trí đỉnh trong ngăn xếp, ta đọc kí tự a, chuyển sang trạng thái p và thay thế X trong ngăn xếp bằng kí tự α. Điều này làm nảy sinh một vài vấn đề. Thứ nhất, bằng cách nào để có thể mô tả sự dịch chuyển nếu ngăn xếp hoàn toàn trống (δ(q, a, ?))?. Giải pháp là ta dùng phát biểu sau: khi có một ký tự bắt đầu đặc biệt là Zo trong ngăn xếp và máy tính sẽ không được phép thực hiện hành động dịch chuyển khi ngăn xếp trống. Với điều kiện là Zo không bao giờ bị loại bỏ khỏi ngăn Nhóm 9- Lớp KHMT Khóa 12 Trang 6  Tiểu luận Lý thuyết tính toán  xếp và không có thêm bản sao nào của Zo được đẩy vào ngăn xếp và lúc này ta có thể nói rằng Zo đang ở vị trí đầu tiên của ngăn xếp, nghĩa là ngăn xếp đã hoàn toàn trống. Vấn đề thứ hai, làm thế nào để chúng ta mô tả sự dịch chuyển của ngăn xếp khi không có dữ liệu nhập vào (δ(q, ?, X))?. (Nên nhớ rằng trong ví dụ này chúng ta đang muốn chuyển sang trạng thái q2 khi ngăn xếp rỗng và tất cả dữ liệu nhập vào đã được đọc. Mà giải pháp chúng ta áp dụng ở trường hợp này là cho phép dịch chuyển với điều kiện chỉ sử dụng một dữ liệu đầu vào duy nhất, và điều này cũng giống với những sự chuyển dịch trong NFA-A (Automat hữu hạn không đơn định). Và cái mà ta thật sự cần là: Tất nhiên một khi có sự chuyển dịch của hình thức δ(q, Λ, X), thì ta có thể tạo ra chúng trước khi dữ liệu nhập được đọc; nếu ký tự đầu vào kế tiếp không được đọc trong khi tồn tại một chuyển dịch thì nó vẫn nằm ở vị trí cũ và sẽ được đọc ngay sau đó. Chúng ta đã nói rằng: có thể xảy ra nhiều tình huống khi máy tính gặp sự cố - tức là không có sự dịch chuyển nào. Trong trường hợp của một otomat hữu hạn, khi tình huống này xảy ra ta quyết định tạo ra δ(q, a), một tập con của Q chứ không phải là một phần tử và nó có giá trị rỗng. Đồng thời chúng ta cho phép xảy ra khả năng là δ(q, a), có thể chứa nhiều hơn một phần tử để FA trở thành bất định. Chúng ta có thể làm điều tương tự ngoại trừ trường hợp khi là một tập vô hạn, và cũng nói rõ thêm là δ(q, a, X), và δ(q, Λ, X) luôn là hữu hạn. trong ví dụ hiện tại sự bất định là không cần thiết nhưng lại là điều cần thiết trong những trường hợp khác. Vì vậy chúng ta đang nằm ở vị trí bên trái với  một tập hợp các tập con hữu hạn của Bây giờ chúng ta có thể mô tả một cách chính xác cách nhận dạng một chuỗi palindrome đơn giản: Q sẽ là một tập {q0, q1, q2} với q0 là trạng thái ban đầu, q2 là trạng thái duy nhất được chấp nhận. Bảng chữ cái đầu vào là {a, b, c} và ngăn xếp bảng chữ cái là (a, b, z0). Chức năng chuyển dịch của δ được trình bày ở bảng 1.1. Hãy nhớ rằng khi chúng ta đưa một chuỗi vào ngăn xếp thì vị trí trên cùng của ngăn xếp sẽ tương ứng với vị trí cuối cùng bên phải của chuỗi. Quy ước này là nếu chúng ta cùng một lúc có thể đưa nhiều ký tự vào thì chúng ta phải thực hiện theo trật tự từ phải qua trái hoặc theo thứ tự ngược lại. Vấn đề là khi chúng ta đang cố gắng Nhóm 9- Lớp KHMT Khóa 12 Trang 7  Tiểu luận Lý thuyết tính toán  xử lý các ký tự trong ngăn xếp thì thứ tự mà chúng ta gặp cũng giống như thứ tự đã được sắp xếp trong chuỗi. Khi dịch chuyển từ 1 đến 6: đẩy những ký tự đầu đầu vào a, b vào trong ngăn xếp và sự dịch chuyển từ 7 đến 9: làm thay đổi trạng thái mà không ảnh hưởng đến ngăn xếp, sự dịch chuyển từ 10 đến 11: so khớp ký tự nhập với ký tự ngăn xếp và cả hai đều bị xóa bỏ, và sự chuyển dịch cuối cùng sẽ được chấp nhận với điều kiện sẽ không còn ký tự nào ngoại trừ ký tự Zo ở trong ngăn xếp. Bảng 1.1 minh họa cho Ví dụ 1.1 Số lần dịch chuyển Trạng thái Vào Biểu tượng ngăn xếp Dịch chuyển Nhóm 9- Lớp KHMT Khóa 12 Trang 8 Tất cả các kết hợp khác không  Tiểu luận Lý thuyết tính toán  Chúng ta hãy theo dõi sự dịch chuyển của máy tính đối với 3 chuỗi đầu vào abcba, ab và acaa Số lần dịch chuyển Trạng thái kết quả Đầu vào chưa đọc Ngăn xếp Chú ý là sự chuyển dịch cuối cùng được thực hiện với chuỗi acaa. Mặt dù không có sự dịch chuyển thì máy tính có thể thực hiện sự chuyển đổi sang trước khi hết sự lựa chọn. Ta có thể nói rằng khi đầu đọc đang ở trạng thái chấp nhận thì các phần của chuỗi được máy đọc cho tới giờ (ví dụ: aca) đã được thừa nhận; tuy nhiên toàn bộ chuỗi đầu vào lại không được chấp nhận bởi vì không phải tất cả các ký tự đều được đọc. Hình 1.1 Chuyển đổi sơ đồ cho các automaton pushdown (PDA) trong Ví dụ 1.1. Hình 1.1 là sơ đồ mô hình cho ví dụ 1.1 (nhưng phức tạp hơn) nằm sau biểu đồ chuyển đổi của một FA. Mỗi sự chuyển đổi được gán nhãn tương ứng với một dữ liệu đầu vào (là một ký tự chữ cái hoặc Λ, một ký tự ngăn xếp X, một dấu / và một chuỗi α các ký tự của ngăn xếp. Chúng ta có Nhóm 9- Lớp KHMT Khóa 12 Trang 9 (Ban đầu) (Chấp nhận) (Ban đầu) (Ban đầu) (Máy treo  Tiểu luận Lý thuyết tính toán  thể diễn giải là sự chuyển tiếp có thể xảy ra với dữ liệu đầu vào xác định và có liên quan đến sự thay thế ký tự X trong ngăn xếp bằng ký tự α. Ngay cả khi đã có các thông tin bổ sung cần thiết để gán nhãn trên mũi tên thì biểu đồ ở dạng này không hoàn toàn nắm hết được các hành vi của một PDA cũng giống như cách thức mà một biểu đồ chuyển tiếp của FA thể hiện. Với một FA thì bạn có thể bắt đầu tại bất kỳ vị trí nào trên sơ đồ này với các kí tự đầu vào và dõi theo các hành động của đầu đọc theo hướng của của các mũi tên. Tuy nhiên trong hình 1.1 bạn không thể dõi theo các mũi tên mà không dò theo nội dung của ngăn xếp (có thể là toàn bộ nội dung). Số lượng các trạng thái kết hợp có thể có và nội dung của ngăn xếp là vô hạn, vì vậy ta không thể suy ra được một sơ đồ các trạng thái hữu hạn trong cùng một trường hợp cho một FA. Trong hầu hết các trường hợp, trong chương này, chúng ta có thể mô tả một automat đẩy xuống bằng các bảng chuyển tiếp tương tự như bảng 1.1, mặc dù thi thoảng nó cũng rất hữu ích để trình bày một sơ đồ chuyển tiếp. 1.2. Định nghĩa của một Automat đẩy xuống Dưới đây là một định nghĩa chính xác về các loại máy trừu tượng trong mục 1.1. Nên nhớ rằng những gì đang được định nghĩa nói là chung không xác định. Định nghĩa 1.2. Định nghĩa về một PDA. Một PDA là một tập M có 7 phần tử M = (Q, Σ, 0, Z, A, δ) Với Q là một tập hợp các trạng thái hữu hạn – Σ là một tập hữu hạn gồm các dữ liệu đầu vào, bảng ngăn xếp các ký tự chữ cái tương ứng. qo trạng thái ban đầu, là một thành phần của tập Q Zo là ký tự ngăn xếp ban đầu, là một phần tử của ngăn xếp. A là một tập hợp các trạng thái chấp nhận, là một tập con của Q.  một tập hợp các tập con hữu hạn của Các δ chức năng được gọi là chức năng chuyển tiếp của M. Nhóm 9- Lớp KHMT Khóa 12 Trang 10 [...]... Trang 14  Tiểu luận Lý thuyết tính toán  những sự dịch chuyển ở trong bảng cho thấy có điểm khác biệt giữa trạng thái q0 trong tất cả các lần xảy ra quá trình dự đoán và trạng thái q1 trong tất cả các lần xảy ra quá trình so sánh) Số lần dịch chuyển Trạng thái Vào Tất cả các kết hợp khác Biểu tượng ngăn xếp Dịch chuyển không Hình 1.2: Tính toán cây cho PDA trong Bảng 1.2, với baab đầu vào Nhóm 9- Lớp... Tiểu luận Lý thuyết tính toán  Cho G = (V,Σ,S,P) là một văn phạm phi ngữ cảnh Khi đó, PDA đẩy xuống M được mô tả trong Định nghĩa 7.4 chấp nhận L(G) Chứng minh Trước tiên, chứng minh L(G) ⊆ L(M) If x là 1 chuỗi bất kỳ trong L(G), thì bước cuối cùng trong dẫn xuất trái nhất của x là: yAz ⇒ yy’ = x trong đó y, z và y’ là các chuỗi ký hiệu, và bước thông thường sẽ là: yAα ⇒ yy’β ở đây, một lần nữa y và. .. Quá trình lý của a+a*a thực hiện bởi PDA đẩy lên tương ứng với G Chuyển Nhóm 9- Lớp KHMT Khóa 12 Quy tắc Stack Đầu vào Trang 24  Tiểu luận Lý thuyết tính toán  Bảng 7.7 | Một PDA đẩy lên không đơn định của G Trạng thái Đầu vào Stack ký tự Chuyển vào stack Một khi trình tự dịch chuyển được bắt đầu, một tập hợp các trạng thái duy nhất cho trình tự này cho phép PDA nhớ làm thế nào để hoàn thành trình. .. chữ cái đầu vào là {a, +, *} và bảng chữ cái trong stack là {a, +, *, S, T, Z0} Chú ý rằng trong sự dịch chuyển, một số kết hợp của ký hiệu đầu vào và stack có thể được bỏ qua Ví dụ như, khi 1 chuỗi trong ngôn ngữ được xử lý, ký hiệu + sẽ không bảo giờ xảy ra một Nhóm 9- Lớp KHMT Khóa 12 Trang 25  Tiểu luận Lý thuyết tính toán  cách đồng thời như là 2 ký hiệu của đầu vào và của stack Việc kết hợp chúng... dẫn xuất và hai phương pháp tiếp cận thứ tự từ trên xuống và từ dưới lên mà trong đó các phần được xây dựng Chúng ta sẽ bắt đầu với cách tiếp cận từ trên xuống PDA bắt đầu bằng cách đẩy ký hiệu bắt đầu S (ở trên cùng của cây dẫn xuất) vào ngăn xếp (stack), và mỗi bước tiếp theo trong các dẫn xuất được mô phỏng được thực hiện bằng cách thay thế một biến trên stack (tại một nút nào đó trong cây) bằng phía... 12 Trang 21  Tiểu luận Lý thuyết tính toán  định nghĩa bởi bảng sau: Trạng thái Đầu vào Stack ký tự Chuyển (s) Chúng ta xem như chuỗi x = abbaaa ∈ L và so sánh các dịch chuyển tạo bởi M trong việc chấp nhận x với một dẫn xuất trái nhất của x trong văn phạm Mỗi bước chuyển trong đó một biến bị thay thế trong stack bởi 1 chuỗi tương ứng với một bước trong dẫn xuất trái nhất của x, và bước này được thể... treo hoặc không còn ký tự để nhập vào trước khi ngăn xếp rỗng Nhóm 9- Lớp KHMT Khóa 12 Trang 16  Tiểu luận Lý thuyết tính toán  1.3 MỘT ÔTÔMÁT ĐẨY XUỐNG TƯƠNG ỨNG VỚI MỘT VĂN PHẠM PHI NGỮ CẢNH XÁC ĐỊNH Tính đến thời điểm này, các PDA chúng ta đã xây dựng được dựa trên các tính chất đối xứng đơn giản của các chuỗi trong các ngôn ngữ được nhận biết hơn là trên bất kỳ đặc tính nào của CFG (CFG) hình thành... sẽ được sẽ được rút gọn về S Không khó để chứng minh rằng PDA không đơn định chấp nhận ngôn ngữ tạo ra bởi G Ngoài ra, đối với bất kỳ CFG, một PDA không đơn định có thể được xây dựng theo cùng 1 cách chấp nhận ngôn ngữ tương đương Nhóm 9- Lớp KHMT Khóa 12 Trang 26  Tiểu luận Lý thuyết tính toán  CHƯƠNG 2 PHẦN BÀI TẬP Câu hỏi: Bằng cách loại bỏ lệnh hoán đổi S trong máy RAM thô sơ để chỉ còn... những dẫn xuất trái nhất khác của x trong CFG Cách tiếp cận đối lập của từ trên xuống là từ dưới lên Trong phương pháp này, có các phần đối lập với cả hai loại dịch chuyển trong PDA đẩy xuống Thay vì thay thế một biến A vào stack bằng phía bên phải của α của phép sinh A → α (mà có thể mở rộng cây xuống 1 cách hiệu quả), PDA các loại bỏ α khỏi stack và thay thế nó bằng (hay "làm giảm nó để") A, do đó,... S+T (2) S → T (3) T → T*a (4) T → a Lý do để đánh số các phép sinh sẽ được nhìn thấy ngay Giả sử là chuỗi đầu vào a+a*a$, trong đó có dẫn xuất phải nhất Nhóm 9- Lớp KHMT Khóa 12 Trang 23  Tiểu luận Lý thuyết tính toán  S ⇒ S+T ⇒ S+T*a ⇒ S+a*a ⇒ T+a*a ⇒ a+a*a Các bước tương đương hoặc nhóm các bước thực hiện bởi các PDA đẩy lên như chuỗi a+a*a được xử lý thể hiển trong Bảng 7.6 Hãy nhớ rằng tại mỗi

Ngày đăng: 11/11/2014, 15:21

Từ khóa liên quan

Mục lục

  • ĐẠI HỌC ĐÀ NẴNG

  • LỜI MỞ ĐẦU

  • MỤC LỤC

  • CHƯƠNG 1. PHẦN LÝ THUYẾT

    • 1.1. Giới thiệu theo cách trình bày ví dụ

    • 1.2. Định nghĩa của một Automat đẩy xuống

    • 1.3. MỘT ÔTÔMÁT ĐẨY XUỐNG TƯƠNG ỨNG VỚI MỘT VĂN PHẠM PHI NGỮ CẢNH XÁC ĐỊNH.

    • CHƯƠNG 2. PHẦN BÀI TẬP

      • 2.1. Ý tưởng:

      • 2.2. Đề xuất thuật toán:

      • 2.3. Minh họa thuật toán bằng chương trình RAM:

      • TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

Tài liệu liên quan