1. Trang chủ
  2. » Luận Văn - Báo Cáo

công cụ hỗ trợ học tập tin học lý thuyết trên web

106 367 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 106
Dung lượng 2,18 MB

Nội dung

Để thực hiện được công cụ trên chúng em kết hợp củng cố lý thuyết, tiến hành xây dựng các mô hình, lập trình trên Dot Net mà cụ thể là sử sụng Silverlight 4 của Microsoft và Visual Studi

Trang 1

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

CÔNG CỤ HỖ TRỢ HỌC TẬP TIN HỌC LÝ THUYẾT TRÊN WEB

Sinh viên thực hiện Cán bộ hướng dẫn

MSSV: 1091501

Nguyễn Văn Út

MSSV: 1091555

Cần Thơ, 2012 TRƯỜNG ĐẠI HỌC CẦN THƠ

KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

LỜI CẢM ƠN

Chúng em xin chân thành cảm ơn quý thầy cô Khoa công nghệ thông tin và truyền thông trường Đại học Cần Thơ đã tận tình dạy bảo chúng em nhiều kiến thức bổ ích trong suốt thời gian học tập tại trường cũng như đã tạo điều kiện cho chúng em thực hiện đề tài này Kính chúc quý thầy cô dồi dào sức khỏe và thành công trong cuộc sống

Đặc biệt chúng em xin bày tỏ lòng biết ơn sâu sắc đến thầy Lâm Hoài Bảo, người đã tận tình hướng dẫn chúng em trong suốt thời gian thực hiện đề tài, cho chúng em sự bình tĩnh và tự tin, giúp chúng em rút ra nhiều bài học kinh nghiệm quý báu mỗi khi chúng em vấp phải những khó khăn Chúng em khó có thể hoàn thành đề tài này nếu không có sự tận tình chỉ bảo của thầy

Chúng con cảm ơn cha mẹ và gia đình đã sinh ra và nuôi dạy chúng con khôn lớn, luôn bên cạnh động viên và ủng hộ chúng con trên con đường mà chúng con đã yêu thích và lựa chọn

Cảm ơn các bạn sinh viên công nghệ thông tin khóa 35, các bạn đã giúp đỡ, động viên và hỗ trợ chúng tôi rất nhiều cũng như đóng góp cho chúng tôi nhiều ý kiến quý báu, qua đó giúp chúng tôi hoàn thiện hơn đề tài

Mặc dù đã rất nổ lực, cố gắng nhưng chắc hẳn đềc tài vẫn còn nhiều thiếu sót Chúng em rất mong nhận được nhiều sự góp ý phê bình của quý thầy cô, của các anh chị và các bạn

Một lần nữa chúng em xin chân thành cảm ơn

Nhóm sinh viên thực hiện

Phạm Ngũ Linh - Nguyễn Văn Út

Trang 3

MỤC LỤC

BẢNG VIẾT TẮT 7

TÓM TẮT, ABSTRACT, TỪ KHÓA 8

I TÓM TẮT 8

II ABSTRACT 9

III TỪ KHÓA 10

CHƯƠNG I: TỔNG QUAN 11

I ĐẶT VẤN ĐỀ 11

II TỔNG QUAN ĐỀ TÀI 11

III PHẠM VI ĐỀ TÀI 11

IV HƯỚNG GIẢI QUYẾT 11

CHƯƠNG II: SILVERLIGHT 12

I SILVERLIGHT LÀ GÌ? 12

II CÁC ĐẶC TÍNH CỦA SILVERLIGHT 12

2.1 Sự kết hợp của WPF và XAML 12

2.2 Mở rộng ngôn ngữ kịch bản 12

2.3 Sự tích hợp các ứng dụng đã có 12

2.4 Sử dụng mô hình ngôn ngữ lập trình trên nền tảng Net Framwork và các công cụ để kết hợp 13

2.5 Hỗ trợ mạng 13

2.6 Hỗ trợ ngôn ngữ tích hợp truy vấn (LINQ) 13

III KIẾN TRÚC TỔNG THỂ VÀ CÁC MÔ HÌNH LẬP TRÌNH CỦA SILVERLIGHT 13

3.1 Kiến trúc và các thành phần 13

3.2 Các mô hình lập trình 15

3.2.1 Javasript API 15

3.2.2 Managed API 16

IV KHẢ NĂNG HỖ TRỢ TRÌNH DUYỆT, HỆ ĐIỀU HÀNH VÀ CÁC CÔNG NGHỆ LIÊN QUAN 16

4.1 Hỗ trợ trình duyệt và hệ điều hành 16

4.2 Các công nghệ và công cụ liên quan của Silverlight 17

V XAML - EXTENSIBLE APPLICATION MARKUP LANGUAGE 17

5.1 XAML là gì? 17

5.2 Khai báo đối tượng 18

5.3 Thiết lập đặc tính cho đối tượng 18

5.4 Root element và namespace trong XAML 18

5.5 Sự kiện 18

5.6 Các namespace trong XAML 19

VI CONTROL VÀ USER CONTROL TRONG SILVERLIGHT 19

6.1 Giới thiệu về các Control phổ biến 19

6.2 Các Control phổ biến trong Silverlight 19

Trang 4

7.1 Shapes and Drawing 21

7.1.1 Ellipse 21

7.1.2 Line 21

7.1.3 Path 21

7.2 Image 21

7.3 Video 22

VIII LÀM VIỆC VỚI DỮ LIỆU TRONG SILVERLIGHT 22

CHƯƠNG III: CƠ SỞ LÝ THUYẾT 23

I BỔ TÚC TOÁN 23

1.1.Tập hợp (Sets) 23

1.1.1 Ký hiệu tập hợp 23

1.1.2 Các phép toán trên tập hợp 24

1.2 Quan hệ (Relations) 24

1.2.1 Quan hệ tương đương 25

1.2.2 Bao đóng của quan hệ 25

1.3 Phép chứng minh quy nạp 26

1.4 Đồ thị và cây 26

1.4.1 Đồ thị (Graph) 26

1.4.2 Cây (trees) 27

II NGÔN NGỮ VÀ BIỂU DIỄN NGÔN NGỮ 28

2.1 Tổng quan về ngôn ngữ 28

2.1.1 Bộ chữ cái (alphabet) 28

2.1.2 Ký hiệu và chuỗi 28

2.1.3.Ngôn ngữ (Languages) 29

2.1.4 Các phép toán trên ngôn ngữ 29

2.2 Vấn đề biểu diễn ngôn ngữ 30

2.3 Văn phạm và sự phân lớp văn phạm 31

2.3.1 Định nghĩa văn phạm cấu trúc (Grammar) 31

2.3.2 Sự phân cấp Chomsky trên văn phạm 32

2.4 Cơ chế Ôtômat 34

2.4.1 Định nghĩa ôtômat 34

2.4.2 Phân loại các ôtômat 34

III ÔTÔMAT HỮU HẠN (FA: FINITE AUTOMATA) 35

3.1 Ôtômat hữu hạn không đơn định – DFA (Deterministic Finte Automata) 35

3.2 Ôtômat hữu hạn không đơn định – NFA (Nondeterministic Finte Automata) 38

3.3 Sự tương đương giữa DFA và NFA 40

3.4 NFA với ε-dịch chuyển (NFAε) 41

3.5 Sự tương đương giữa NFA có và không có ε-dịch chuyển 43

3.6 Giải thuật xây dựng DFA từ NFAε 44

IV BIỂU THỨC CHÍNH QUY (RE: Regular Expressions) 48

4.1 Định nghĩa: 48

Trang 5

4.2 Sự tương đương giữa ôtômat hữu hạn và biểu thức chính quy 48

V VĂN PHẠM CHÍNH QUI VÀ CÁC TÍNH CHẤT 52

5.1 Văn phạm chính qui (RG : Regular Grammar) 52

5.1.1 Văn phạm tuyến tính 52

5.1.2 Sự tương đương giữa văn phạm chính quy và ôtômat hữu hạn 53

5.2 Một số tính chất của tập hợp chính quy 54

5.2.1 Bổ đề bơm cho tập hợp chính quy 54

5.2.2 Tính chất đóng của tập hợp chính quy 54

5.3 Các giải thuật xác định tập hợp chính quy 55

VI VĂN PHẠM PHI NGỮ CẢNH (CFG: Context Free Grammar) 56

6.1 Định nghĩa: 56

6.2 Dẫn xuất và ngôn ngữ 57

6.3 Cây dẫn xuất 57

6.3.1 Thuật toán vẽ cây dẫn xuất 59

6.3.2 Hàm FIRST và FOLLOW 64

6.4 Quan hệ giữa dẫn xuất và cây dẫn xuất 67

6.5 Dẫn xuất trái nhất, dẫn xuất phải nhất 67

6.6 Giản lược các văn phạm phi ngữ cảnh 67

6.6.1 Các ký hiệu vô ích 68

6.6.2 Luật sinh ε 68

6.6.3 Luật sinh đơn vị 69

6.7 Chuẩn hóa văn phạm phi ngữ cảnh 69

6.7.1 Dạng chuẩn Chomsky – CNF (Chomsky Normal Form) 69

6.7.2 Dạng chuẩn Greibach GNF (Grei Normal Form) 70

VII ÔTÔMAT ĐẨY XUỐNG (PDA: PushDown Automata) 72

7.1 Mô tả PDA 72

7.2 Định nghĩa 74

7.3 PDA và văn phạm phi ngữ cảnh 75

7.3.1 CFG => PDA 75

7.3.2 PDA => CFG 76

VIII MÁY TURING 78

8.1 Mô hình máy Turing (TM) 78

8.1.1 Mô tả TM 78

8.1.2 Định nghĩa 78

8.2 Các kỹ thuật xây dựng máy Turing 81

8.2.1 Lưu trữ trong bộ điều khiển (Storage in the finite control) 81

8.2.2 Nhiều rãnh trên băng (Multiple tracks) 82

8.2.3 Đánh dấu ký hiệu (Checking off symbols) 83

8.2.4 Dịch qua (Shifting over) 84

8.2.5 Chương trình con (Subroutines) 85

8.3 Các biến dạng của máy Turing 87

8.3.1 Máy Turing với băng vô hạn 2 chiều 87

8.3.2 Máy Turing với nhiều băng vô hạn hai chiều 87

Trang 6

8.3.3 Máy Turing không đơn định 87

8.3.4 Máy Turing nhiều chiều 88

8.3.5 Máy Turing nhiều đầu đọc 88

IX ÔTÔMÁT TUYẾN TÍNH GIỚI NỘI VÀ VĂN PHẠM CẢM NGỮ CẢNH 89

9.1 Ôtômat tuyến tính giới nội (LBA) 89

9.2 Văn phạm cảm ngữ cảnh (CSG) 89

9.3 Sự tương đương giữa LBA và CSG 90

9.4 Tương đương giữa các lớp ngôn ngữ 91

CHƯƠNG IV: ỨNG DỤNG 92

I Mô tả bài toán: 92

II Sơ đồ Use Case: 92

III Sơ đồ kiến trúc ứng dụng Silverlight: 93

IV Thiết kế CSDL: 95

4.1 Mô hình CMD: 95

4.2 MPD: 95

4.2 MPD: 96

V Giải thuật: 98

5.1 NFAε / NFA  DFA: 98

5.2 NFAε  NFA: 98

5.3 DFA  RE: 98

5.4 RE  NFAε: 99

5.5 Cây dẫn xuất: 100

5.6 Chuẩn hóa CFG theo Chomsky: 101

5.7 Chuẩn hóa CFG theo Greibach: 101

5.8 CFG  PDA: 102

VI Thiết kế giao diện: 103

KẾT LUẬN, NHẬN XÉT, ĐÁNH GIÁ 105

I KẾT LUẬN 105

II NHẬN XÉT, ĐÁNH GIÁ 105

TÀI LIỆU THAM KHẢO 106

Trang 7

(Deterministic Finite Automata)

(Nondeterministic Finite Automata)

Trang 8

TÓM TẮT, ABSTRACT, TỪ KHÓA

I TÓM TẮT

Đa số tình hình sinh viên hiện nay, đặc biệt là sinh viên ngành Công nghệ thông tin cần có những công cụ hỗ trợ cho việc học tập, mà cụ thể là cần một công

cụ để chuyển đổi và kiểm tra các kiến thức cũng như bài tập trong môn Tin học Lý

thuyết Nắm bắt được vấn đề trên nên chúng em tiến hành “Xây dựng công cụ hỗ trợ học tập Tin học Lý Thuyết trên Web” Đề tài này rất thiết thực cho sinh

viên ngành Công nghệ thông tin, nó không những củng cố lý thuyết đã học mà còn kiểm tra tính đúng đắn các bài tập về môn học này Đây là công cụ mang lại nhiều lợi ích cho các bạn sinh viên Công nghệ thông tin, giúp các bạn nhanh chóng trong việc củng cố lý thuyết cũng như công cụ chuyển đổi giữa các Ôtômat, RE, CFG, PDA trong môn học Để thực hiện được công cụ trên chúng em kết hợp củng cố lý thuyết, tiến hành xây dựng các mô hình, lập trình trên Dot Net mà cụ thể là sử sụng Silverlight 4 của Microsoft và Visual Studio 2010 kết hợp MS SQL 2008 Sau một quá trình thực hiện thì chúng em cũng hoàn thành cơ bản các chức năng chuyển đổi như đã nêu: Nêu lên phần lý thuyết môn Tin học lý thuyết, công cụ chuyển đổi giữa các Ôtômat và RE, cây dẫn xuất văn phạm, chuẩn hóa CFG theo Chomsky và Greibach, tương đương giữa CFG - PDA Tuy nhiên, để hoàn thiện hơn cho công cụ này, chúng em cần nhiều thời gian để nghiên cứu tiếp về các thuật toán còn lại và các phần công cụ chuyển đổi tương ứng khác, đặc biệt là máy Turing để cho công cụ hoàn chỉnh nhất về môn Tin học Lý thuyết này

Trang 9

II ABSTRACT

The majority of the current situation of students, especially students of information technology tools to support learning, in particular need a tool to convert and test the knowledge andexercises in theory of Computing courses

Foreseeing problems should we proceed "Building learning tool support Theoretical Computer Science on the Web" Very practical subject for students

of information technology, it does not reinforce the theory they have learned but also check the correctness of the exercises on this subject This is the tool to bring many benefits to the students of Information Technology, to help you quickly in the consolidation theory as well as converter between the automaton, RE, CFG, PDA subjects To make the tool we combine consolidation theory, the construction of the model, on the Dot Net programming that particular gun Silverlight 4 and Microsoft Visual Studio 2010 MS SQL 2008 After a process of implementation, we also completed the basic conversion function as described: automaton, RE, CFG, PDA However, to more complete tools, we need more time

to study for the rest of the algorithm, especially Turing machines to the most complete tool on the subject Computer Science Theory

Trang 10

III TỪ KHÓA

- Silverlight

- Ôtômat (NFA, DFA, NFAε)

- Biểu thức chính quy (RE)

- Văn phạm phi ngữ cảnh (CFG)

- Ôtômat đẩy xuống (PDA)

- Máy Turing (MT)

Trang 11

CHƯƠNG I: TỔNG QUAN

I ĐẶT VẤN ĐỀ

Trong thời đại công nghệ thông tin, hầu hết mọi người đã quá thân thuộc về máy tính cũng như Internet Đa số người dùng máy tính muốn góp phần thực hiện nhanh chóng công việc và đem lại kết quả tốt cho mình

Một khía cạnh khác, hiện nay sinh viên muốn có một công cụ hỗ trợ trong môn Tin học lý thuyết dành cho sinh viên công nghệ thông tin, để đáp ứng nhu cầu học tập của các bạn sinh viên, chúng tôi tiến hành xây dựng và thiết kế một công

cụ hỗ trợ trên Wed sử dụng Silverlight

Để thực hiện tốt dự định trên chúng tôi tiến hành thực hiện đề tài “Xây dựng công cụ hỗ trợ học tập Tin học Lý Thuyết trên Web” Nội dung đề tài

nêu lên phần Lý thuyết môn Tin học Lý thuyết và phần công cụ chuyển giữa các Ôtômat – RE; cây dẫn xuất văn phạm, chuẩn hóa CFG theo Chomsky và Greibach; tương đương giữa CFG– PDA Chúng tôi cố gắng đơn giản phạm vi về nội dung trong môn học cũng như tạo ra một giao diện thân thiện đơn giản dễ sử dụng cho các bạn sinh viên Dù cố gắng rất nhiều nhưng vẫn còn nhiều thiếu sót

và hạn chế Xin chân thành cảm ơn và nhận ý kiến đóng góp của quý thầy cô và bạn bè

II TỔNG QUAN ĐỀ TÀI

Đây là đề tài mới nên cần nhiều thời gian nghiên cứu và chúng em tiến hành thực hiện các phần sau đây:

- Cây dẫn xuất văn phạm

- Chuẩn hóa văn phạm phi ngữ cảnh CGF bằng Chomsky và Greibach,

- Chuyển đổi giữa CFG - PDA

III PHẠM VI ĐỀ TÀI

Phạm vi thực hiện của chúng em là toàn bộ phần vấn đề nêu ở trên

IV HƯỚNG GIẢI QUYẾT

- Củng cố lý thuyết từ giáo trình đã học và các nguồn tài liệu tham khảo

- Xây dựng và thiết kế các mô hình

- Cài đặt các phần mềm hỗ trợ cho việc lập trình: Silverlight 4, Visual

Trang 12

CHƯƠNG II: SILVERLIGHT

I SILVERLIGHT LÀ GÌ?

Silverlight là một dạng plug-in dựa trên công nghệ của Microsoft Net, nó độc lập với đa nền tảng và đa trình duyệt, nó cho phép phát triển các ứng dụng đa phương tiện đặc biệt là các ứng dụng trên web Silverlight cung cấp một mô hình lập trình lập trình mềm dẻo và đồng nhất, nó hỗ trợ Ajax, Python, Ruby và các ngôn ngữ lập trình Net như Visual basic, C#

Khả năng đa phương tiện của silverlight thể hiện ở mức độ truyền tải âm thanh và hình ảnh chất lượng cao một cách nhanh chóng và hiệu quả trên tất cả các trình duyệt chính như Internet Explorer, Firefox, Safari

II CÁC ĐẶC TÍNH CỦA SILVERLIGHT

Silverlight kết hợp nhiều công nghệ vào một nền tảng phát triển, nó cho phép bạn được lựa chọn nhiều công cụ và ngôn ngữ lập trình thích hợp để giải quyết bài toán của bạn Silverlight cung cấp các tính năng sau:

2.1 Sự kết hợp của WPF và XAML

Silverlight là một gói nhỏ của công nghệ Windows Presentation Foundation (WPF) Nó được mở rộng nhiều hơn các Element trong trình duyệt để tạo giao diện người dùng PWF cho phép bạn tạo ra đồ họa 3 chiều, hình ảnh động, đa phương tiện và nhiều tính năng phong phú khác trên máy khách XAML (Extensible Application Markup Language) cung cấp các cú pháp đánh dấu đặc trưng cho việc tạo các Element

2.2 Mở rộng ngôn ngữ kịch bản

Silverlight cung cấp việc mở rộng cho các ngôn ngữ kịch bản (Javascript) ở một số các trình duyệt phổ biến để thể hiện việc trình bày giao diện và thao tác người dùng một cách phong phú hơn

2.3 Sự tích hợp các ứng dụng đã có

Silverlight tích hợp liền mạch với ngôn ngữ javascript và mã Ajax của ASP.Net để bổ sung các chức năng bạn đã xây dựng được Bạn có thể tạo những tài nguyên trên nền máy chủ có trong ASP.NET và sử dụng các khả năng của Ajax trong ASP.NET để tương tác với tài nguyên trên nền máy chủ đó mà không làm gián đoạn người dùng

Trang 13

2.4 Sử dụng mô hình ngôn ngữ lập trình trên nền tảng Net Framwork và các công cụ để kết hợp

Bạn có thể tạo các ứng dụng trên nền tảng Silverlight và sử dụng các ngôn ngữ động như InronPython cũng như là các ngôn ngữ C# và Visual Basic Bạn cũng có thể sử dụng các công cụ phát triển như Visual Studio để tạo ứng dụng trên nền tảng Silverlight

2.5 Hỗ trợ mạng

Silverlight bao gồm các hỗ trợ cho HTTP qua TCP Bạn có thể kết nối tới các dịch vụ của WCF, SOAP, hoặc ASP.NET AJAX và nhận về các định dạng theo cấu trúc XML, JSON hay dữ liệu RSS

2.6 Hỗ trợ ngôn ngữ tích hợp truy vấn (LINQ)

Điều này cho phép bạn truy cập dữ liệu bằng cách sử dụng cú pháp trực quan tự nhiên và mạnh mẽ, được gỡ bởi các đối tượng có trong các ngôn ngữ Net Framework

III KIẾN TRÚC TỔNG THỂ VÀ CÁC MÔ HÌNH LẬP TRÌNH CỦA SILVERLIGHT

3.1 Kiến trúc và các thành phần

Về cơ bản Silverlight là một nền tảng thống nhất của nhiều thành phần khác nhau Tuy nhiên chúng tôi nhóm lại các thành phần chính của silverlight vào bảng dưới đây

bố trí giao diện Net Framework cho

Silverlight

Là một gói nhỏ trong Net Framework, bao gồm các thành phần và cá thư viện, kể cả tương việc tương tác dữ liệu, khả năng mở rộng các control, mạng, garbage collection,

và CLR

Cài đặt và cập nhật Là thành phần để sử lý các tiến trình cài đặt làm sao để

đơn giản hóa cho lần cài đặt đầu tiên, tiếp sau đó chỉ cung cấp cơ chế tự động cập nhật và tương tác ở mức thấp

Trang 14

Dưới đây là hình ảnh mô tả những thành phần trong kiến trúc của Silverlight cùng với các thành phần và dịch vụ liên quan khác

Hình 1.1 Thành phần cấu trúc Silverlight Core Presentation Components:

kiểu dáng và khuôn mẫu Xếp đặt Layout Cho phép khả năng xếp đặt vị trí động các thành phần giao diện người dùng Trình bày dữ liệu

(Data Binding)

Cho phép việc kết nối dữ liệu của các đối tượng và các thành phần giao diện người dùng

DRM Khả năng Quản lý phân quyền số

XAML Cung cấp trình phân tách cho XAML

Bảng 1.2: Thành phần chủ yếu

Các lập trình viên có thể tương tác với thành phần nền tảng trình bày cơ sở trên đây bằng cách sử dụng XAML để đặc tả XAML là một yếu tố quan trọng nhất trong việc tương tác giữa Net Framwork và các kiểu trình bày Layout, ngoài

Trang 15

ra các lập trình viên cũng có thể sử dụng cơ chế quản lý code bên trong để thao tác với lớp trình bày

.Net Frame work for Silverlight:

Data

Hỗ trợ ngôn ngữ truy vấn tích hợp (LINQ) và LINQ với đặc

tả XML, dễ dang xử lý việc tích hợp và làm việc với dữ liệu

từ nhiều nguồn khác nhau Hỗ trợ việc sử dụng XML và các lớp biên đổi hóa (serialization) để xử lý dữ liệu

Base class library

Thuộc thư viện của Net Framework, nó cung cấp các chức năng lập trình chủ yếu như việc xử lý chuỗi, biểu thức chính quy, đầu vào và đầu ra, ánh xạ, tập hợp và toàn cục hóa Window

Bảng 1.3 Net Framword Silverlight 3.2 Các mô hình lập trình

Ở phiên bản Silverlight 1.0 cung cấp cho bạn duy nhất một mô hình lập trình là Javascript API, cho đến phiên bản Silverlight 2.0 trở đi đã cung cấp cả hai

mô hình lập trình là Managed API và Javascript API Trong khi Javascipt API chỉ cho phép bạn gõ mã lệnh Javascript để tương tác với trình duyệt thì Managed API

đã sử dụng được cơ chế làm việc của Common Language Runtime (CLR) và kể cả Dynamic Language Runtime (DLR) để biên dịch và thi chương trình code (C#, VB…) của bạn

3.2.1 Javasript API

Trong một chương trình silverlight nhúng theo kiểu Javascript API, nó tải

Trang 16

thể bao gồm các tham chiếu URI từ những nguồn bên máy chủ khác như là các đoạn video và hình ảnh Silverlight nhúng sử dụng XAML để tạo một cây đối tượng cái mà bạn có thể thao tác lập trình với javascript lưu trữ bên trong một trang HTML

Javascript API không cung cấp một mô hình ứng dụng có khả năng hỗ trợ các ứng dụng tổ hợp với sự điều hướng bên trong Tuy nhiên nó cho phép làm những kịch bản theo kiểu Splash screan Bạn cũng có thể làm các sự điều hướng trong Javascript API bằng cách tải lại trang XAML mới hoặc tải lại cả trang web

đó trong trình duyệt

3.2.2 Managed API

Trong lập trình silverlight theo kiểu Managed API, bạn có thể thao tác lập trình với cả file XAML và file code bên trong

Khi một Silverlight nhúng tải file XAML, nó sẽ tạo một cây mô hình cái

mà bạn cũng có thể gõ bằng các mã lệnh bên trong ( thường là C#, Visual basic…)

IV KHẢ NĂNG HỖ TRỢ TRÌNH DUYỆT, HỆ ĐIỀU HÀNH VÀ CÁC CÔNG NGHỆ LIÊN QUAN

4.1 Hỗ trợ trình duyệt và hệ điều hành

Operating system

Internet Explorer 7

Internet Explorer 6

Firefox 1.5, 2.x, and 3.x

Safari 2.x and 3.x

Trang 17

4.2 Các công nghệ và công cụ liên quan của Silverlight

- Microsoft Expression Blend: Sử dụng công cụ này bạn bạn có thể tạo và

thay đổi cách xắp xếp trình bày Layer của ứng dụng bằng cách thao tác đến canvas

và control trong XAML, làm việc với các chức năng đồ họa, Lập trình với ngôn ngữ Javascript

- Visual Studio 2010: Visual Studio cung cấp các công cụ hiệu quả cho

việc phát triển các ứng dụng có hỗ trợ thao tác code bên trong Tất cả các phiên bản đã có của Visual Studio đều có khả năng hỗ trợ Silverlight Tuy nhiên ở phiên bản mới này nó còn hỗ trợ các tính năng đặc biệt hơn như bao gồm khả năng IntelliSense, debugging và các template cho việc tạo mới một ứng dụng Silverlight

- ASP.NET AJAX: Bao gồm tập các Control, Service, và các thư viện cần

thiết cho việc tạo và tương tác với nền ứng dụng web

- Microsoft ASP.NET 3.5 Extensions Preview: Công nghệ này cung cấp

chức năng thêm để việc tăng cường các ứng dụng ASP.NET AJAX Nó bao gồm 2 control sử dụng hữu ích cho việc xây dựng ứng dụng nền tảng silverlight cũng như

là một phần của ứng dụng ASP.NET:

+ ASP.NET Silverlight Server Control

+ Microsoft Windows Communication Foundation (WCF) services

- Internet servers: Bao gồm IIS (Microsoft Internet Information Services)

và Apache Web server

- Microsoft Windows Communication Foundation (WCF) services

V XAML - EXTENSIBLE APPLICATION MARKUP LANGUAGE

5.1 XAML là gì?

XAML được viết tắt bởi cụm từ: Extensible Application Markup Language

là một ngôn ngữ dạng khai báo Bạn có thể tạo ra các phần tử đồ họa(UI) với những khai báo thông qua thẻ trong XAML Sau đó bạn có thể dùng file mã lệnh tách biệt của nó(code-behind) để trả về những sự kiện và điều khiển những đối tượng mà bạn đã định nghĩa trong XAML Nó là một ngôn ngữ mô tả dựa trên XML là rất trực quan để xây dựng giao diện từ những bước phác thảo cho tới sản xuất sản phẩm, đặc biệt hữu ích cho đối tượng có kinh nghiệm thiết kế website và

kỹ thuật

Trang 18

5.2 Khai báo đối tượng

Có hai cách để khai báo đối tượng trong XAML:

- Khai báo trực tiếp:

Sử dụng thẻ đóng mở để khai báo một đối tượng giống như là một phần tử XML Bạn cũng có thể sử dụng cú pháp này để khai báo đối tượng gốc (root object) hoặc để xét các giá trị các thuộc tính

- Khai báo gián tiếp:

Sử dụng giá trị trực tiếp để khai báo một đối tượng Bạn có thể sử dụng cú pháp này để thiết lập giá trị của thuộc tính.Thông thường, điều này có nghĩa là chỉ những thuộc tính mà được hỗ trợ bởi đối tượng mới có thể sử dụng được phương pháp này

5.3 Thiết lập đặc tính cho đối tượng

Có những cách sau để khai báo đặc tính cho đối tượng:

5.4 Root element và namespace trong XAML

Một file XAML chỉ được có duy nhật một Root element và phải thỏa mãn

cả hai tiêu chí sau: well-formed XML(có mở và đóng thẻ) và valid XML(tuân thủ theo Document Type Definition(DTD))

5.5 Sự kiện

XAML là một ngôn ngữ khai báo cho đối tượng và những đặc tính của chúng, nhưng nó cũng bao gồm những cú pháp cho sự kết hợp sự kiện cho đối tượng trong những thẻ đánh dấu Bạn chỉ rõ tên của sự kiện như là một thuộc tính tên trên đối tượng mà sự kiện được nghe Về giá trị của thuộc tính, bạn chỉ rõ tên của hàm nghe sự kiện mà bạn định nghĩa ở phần code-behind hoặc ở phần javascript

Việc có khai bao hay không đặc tính x:Class ở thẻ root trong XAML có ảnh hưởng đến việc xử lý sự kiện Nếu bạn khai báo x:Class tức là việc xử lý sự kiện của bạn sẽ được thực hiện trong code-behind, trường hợp này thường xuất hiện trong kiểu lập trình Managed API (chứa trong silverlight 2.0) Còn ngược lại thì việc xử lý sự kiện của bạn được thực hiện ngay trong thẻ Javascript chứa trong

Trang 19

HTML, trường hợp này thường xuất hiện trong kiểu lập trình JavaScript API (chứa trong Silverlight 1.0)

5.6 Các namespace trong XAML

Trong Silverlight, một XAML namescope lưu trữ quan hệ giữa những tên

từ khóa của XAML đã được định nghĩa của đối tượng và những khởi tạo tương đương của nó Điều này cũng tương tự như ý nghĩa của ―namescope‖ trong các ngôn ngữ lập trình và công nghệ khác XAML namescope được tạo ra trong quá trình dịch mã XAML và trong quá trình tạo hình đối tượng Những tên mà được tạo trong namescope sau đó được sử dụng ở code-behind thao tác lúc chạy chương trình để truy cập tới đối tượng được tạo bởi quá trình dịch file XAML Để biết thêm chi tiết các bạn có thể tham khảo tại địa chỉ: http://msdn.microsoft.com/en-us/library/cc189026(VS.95).aspx

VI CONTROL VÀ USER CONTROL TRONG SILVERLIGHT

6.1 Giới thiệu về các Control phổ biến

Các Control trong silverlight cho phép bạn lưu trữ nội dung hoặc các control khác, bạn có thể tạo hoặc tự thiết kế được các control này để chúng hiển thị được những thay đổi trạng thái tới người dùng

Trong công cụ phát triển Visual studio 2010 đã tích hợp các công cụ silverlight có rất nhiều các control có sẵn để bạn tạo, thay đổi hoặc xử lý các sự kiện theo chúng

Dưới đây là hình ảnh danh sách các công cụ đã có trong Silverlight tool:

Hình 1.2 Các công cụ Silverlight 6.2 Các Control phổ biến trong Silverlight

Trang 20

Border cung cấp một background, khu vực cho phép bạn nhúng vào đó một thành phần duy nhất nhằm tạo ra hiệu quả về đồ hoạ

o Data Grid hỗ trợ nhiều style hiển thị dữ liệu trong các cột hoặc hàng

o Data Grid hỗ trợ các bảng tùy chọn định dạng và khả năng hiển thị hoặc ẩn các tiêu đề, các thanh trượt di chuyển

o Ngoài ra Data Grid còn cung cấp một số kiểu mẫu mà bạn có thể thay đổi hình thức thể hiện dữ liệu hàng, cột và tiêu đề

- Canvas:

Định nghĩa một khu vực mà trong đó bạn có thể chỉ ra vị trí của từng đối tượng thành phần bằng cách sử dụng các tọa độ tham chiếu Bạn có thể sử dụng lồng các Canvas với nhau và những thành phần bên trong của Canvas phải là một

UIElement Trong nhiều trường hợp thì Canvas chỉ đóng vai trò như một đối tượng để chứa đựng những đối tượng khác và không có một thuộc tính hiển thị nào Một Canvas sẽ không được hiển thị nếu nó có một trong những thuộc tính sau đây:

+ Thuộc tính Height xét giá trị 0

+ Thuộc tính Width xét giá trị 0

+ Background bằng null hoặc là Nothing ở VS Basic

- TextBox: Hiển thị văn bản

VII XỬ LÝ ĐỒ HỌA TRONG SILVERLIGHT

Silverlight cung cấp nhiều lựa cho ̣n cho viê ̣c thêm các tính năng trực quan thú

vị cho ứng dụng của bạn Bạn có thể sử dụng vẽ , Shape, Path, và những hình học

Trang 21

phức ta ̣p Những khu vực được xác đi ̣nh bởi da ̣ng hình thì có thể tô hiê ̣u ứng , như

là ảnh, dải màu, hoă ̣c là đoa ̣n video, thông qua viê ̣c sử du ̣ng Brush

Silverlight kế thừa mô ̣t thư viê ̣n đồ ho ̣a khá đầy đủ từ WPF bởi vâ ̣y sẽ không quá khó khăn để một lập trình viên đã quen với WPF chuyển qua làm việc với

Silverlight Dướ i đây chúng ta sẽ lần lươ ̣t làm quen với các đối tươ ̣ng đồ ho ̣a như Ellipse, Line, Path, Polygon, Geometries, Brushes…

7.1 Shapes and Drawing

Trong Silverlight, Shape là kiểu UIElement nên ba ̣n có thể dễ dàng hiển thi ̣

mô ̣t đối tượng da ̣ng Shape lên màn hình Bởi vì chúng là những thành phần đồ ho ̣a nên những đối tượng Shape này có thể đi kèm với những container như Grid và Canvas Silverlight cung cấp những da ̣ng hình (Shape) mà bạn có thể dùng nga y đươ ̣c như Ellipse, Line, Path, Polygon, Polyline, và Rectangle Những Shape đều

có chung những đặc tính dưới đây:

- Stroke: dùng để vẽ viền ngoài của Shape

- StrokeThickness: độ dày của viền ngoài của Shape

- Fill: Mô tả cách phía bên trong của Shape được vẽ

Đặc tính Data chỉ rõ tọa độ và các đỉnh được định nghĩa tùy theo thông tin đầu vào Những đối tượng Shape có thể dùng bên trong Canvas Canvas hỗ trợ chỉ

ra vi ̣ trí tuyê ̣t đối của đối tượng con bên trong thông qua đă ̣c tính đính kèm là

đă ̣c tính Data của đối tượng Path Có nhiều loại đối tượng Geometry khác nhau để bạn chọn : LineGeometry, RectangleGeometry, và EllipseGeometry có liên quan tới những da ̣ng hình (shape) đơn giản lần lượt tương ứng Line, Rectangle, Ellipse Để ta ̣o những da ̣ng hình phức ta ̣p hoă ̣c hình tròn chúng ta sử du ̣ng PathGeometry

7.2 Image

Trang 22

Lớp ImageBrush cho phép bạn sử dụng ả̉nh để fill, để xét làm bacrkground

và viền ngòi ImageBrush sử dụng được với những định dạng ảnh JPEG hoăc PNG

và được dùng thông qua thuô ̣c tính ImageSource Bạn có thể cung cấp thông tin ImageSource với đường dẫn của ảnh để tải chúng

7.3 Video

VideoBrush cho phép bạn vẽ một khu vực bằng video

VIII LÀM VIỆC VỚI DỮ LIỆU TRONG SILVERLIGHT

Trong phần này chúng ta sẽ xây dựng một ứng dụng nhỏ để kết nối với CSDL SQL Server Để hoàn thiện được ứng dụng này chúng ta cần tập hợp được những kỹ năng sau:

- Kết nối tới một WCF Web Service

- Sử dụng LINQ để truy vấn và trả về dữ liệu

- Sử dụng Control DataGrid/ListBox để hiển thị dữ liệu

Trang 23

CHƯƠNG III: CƠ SỞ LÝ THUYẾT

Ví dụ 1.1: D xác định tập hợp các ngày trong tuần :

D = { Mon, Tues, Wed, Thurs, Fri, Sat, Sun }

Các phần tử trong tập hợp viết cách nhau bởi dấu ―, ― và đặt trong cặp dấu {

và } Không có sự bắt buộc về thứ tự liệt kê các phần tử trong tập hợp Chẳng hạn, tập hợp D cũng tương đương với tập hợp sau :

D = { Mon, Wed, Fri, Thurs, Sun, Tues, Sat }

Nếu phần tử x là thành phần của tập hợp A, ta viết x ∈ A (đọc là x thuộc A), và nếu x không là phần tử của A, ta viết x ∉ A (đọc là x không thuộc A) Chẳng hạn: Mon ∈ D nhưng Kippers ∉ D Nếu một tập hợp chứa một số khá lớn các phần tử hay thậm chí là một số vô hạn, người ta có thể không liệt kê tất cả các phần tử mà đặc tả tập hợp theo một số tính chất đặc trưng của nó

Ví dụ 1.2: D = { x | x là một ngày trong tuần }

P = { y | y là số nguyên tố }

X = { x | x > 2 } Mọi tập hợp đều chứa các phần tử thuộc vào một không gian xác định nào

đó, ký hiệu là U Không gian tương ứng có thể được định nghĩa là một tập số nguyên, số thực, …

Một trường hợp đặc biệt của tập hợp là tập hợp rỗng (empty set) Tập hợp này không có chứa bất kỳ phần tử nào, ký hiệu bởi ∅ hoặc { }

Ta nói tập hợp A là tập hợp con (subset) của tập hợp B khi mọi phần tử của

A là thành phần của B ( ký hiệu A ⊆ B) Ngược lại, A không là tập con của B (A

Trang 24

2) Phép hợp (union) : A ∪ B = {x | x ∈A hoặc x ∈B}

3) Phép giao (intersection) : A ∩ B = {x | x ∈A và x ∈B}

Ta gọi một quan hệ R trên tập S là:

• Phản xạ (reflexive) : nếu aRa là đúng ∀a ∈ S

• Đối xứng (symmetric) : nếu aRb thì bRa

• Bắc cầu (transitive) : nếu aRb và bRc thì aRc

Ví dụ 1.8:

Trang 25

L không là quan hệ phản xạ trên S vì (0, 0) ∉ L, nhưng E và P là 2 quan hệ mang tính phản xạ

L không là quan hệ đối xứng trên S vì (0, 1) ∈ L nhưng (1, 0) ∉ L, tuy nhiên cả E và P đều mang tính đối xứng

Cả L, E và P đều là các quan hệ mang tính bắc cầu, nhưng X = {(1, 0),(0, 3)} thì không vì (1, 3) ∉ X

1.2.1 Quan hệ tương đương

Một quan hệ R trên tập S có đủ các tính chất phản xạ, đối xứng và bắt cầu được gọi là quan hệ tương đương

Ví dụ 1.9: E và P là các quan hệ tương đương, còn L và X không là các

quan hệ tương đương trên S

Một tính chất quan trọng của quan hệ tương đương là nếu R là quan hệ tương đương trên tập S thì R phân hoạch tập S thành các lớp tương đương (equivalence class) Si không rỗng và rời nhau, tức là S = S1 ∪ S2 ∪ và với mọi i ≠ j ta có :

+ Si Sj = Ø + Với mỗi a,b cùng thuộc Si thì aRb là đúng

+ Với mỗi a ∈ Si và b ∈ Sj thì aRb là sai

Lưu ý rằng số lớp tương đương có thể là vô hạn Vậy nếu R là quan hệ tương trên S và a∈ S, ta có :

Si = [a] = {b S | aRb}

Ví dụ 1.10:

E có 4 lớp tương đương khác nhau: [0] = {0}, [1] = {1}, [2] = {2} và [3] = {3} P có 2 lớp tương đương khác nhau: [0] = [2] = {0, 2} và [1] = [3] = {1, 3}

1.2.2 Bao đóng của quan hệ

Giả sử P là tập hợp một số tính chất của các quan hệ, bao đóng P (P - closure) của một quan hệ R trên tập S là quan hệ nhỏ nhất có chứa tất cả các cặp của R thoả mãn các tính chất trong P

• Bao đóng bắc cầu R + của R được xác định như sau :

i) Nếu (a,b) thuộc R thì (a,b) thuộc R+

ii) Nếu (a,b) thuộc R+ và (b,c) cũng thuộc R thì (a,c) thuộc R+ iii) Không còn gì thêm trong R+

• Bao đóng phản xạ và bắc cầu R* của R được xác định như sau :

Trang 26

1.3 Phép chứng minh quy nạp

Phần lớn các định lý trong giáo trình sẽ được chứng minh bằng phương pháp quy nạp toán học :

Giả sử ta cần chứng minh một mệnh đề P(n) với n là một số nguyên không

âm Nguyên lý quy nạp toán học cho P(n) được chứng minh theo 2 bước như sau :

i) P (0) , và ii) P( n - 1) kéo theo P (n), ∀n ≥ 1

Bước (i) được gọi là cơ sở quy nạp, bước (ii) được gọi là bước quy nạp với P(n-1) là giả thiết quy nạp

Ví dụ 1.12: Dùng quy nạp, chứng minh biểu thức :

n i

0

2

6

) 1 2 )(

1 (

Cơ sở quy nạp: Thay n = 0 trong vế phải của biểu thức và nhận thấy cả 2

n i

0

2

6

) 1 2 )(

1 (

Ta nhận xét rằng:

2 1

0 2 0

2

n i i

n

i n

1 ( 6

) 1 2 ( ) 1

n n

n n

Với một vài phép biến đổi đại số đơn giản, biểu thức trên có thể được chứng minh

Trang 27

Một đường đi (path) trên một đồ thị là dãy các đỉnh v1, v2 , , vk, k ≥ 1, sao cho trong đó có một cạnh (vi ,vi +1) cho mỗi i, 1 ≤ i < k Độ dài của đường đi

là k - 1 Nếu v1 = vk thì đường đi là một chu trình

Chẳng hạn: 1, 3, 4 là một đường đi trong đồ thị trên

Đồ thị có hướng (directed graph)

Một đồ thị có hướng cũng là dạng đồ thị được xác định bởi G = (V, E), trong đó V là tập các đỉnh, còn E là tập các đỉnh có thứ tự gọi là các cung (hay các đường nối có hướng giữa 2 đỉnh) Ký hiệu một cung từ v đến w có dạng v → w

ii) Mỗi nút còn lại đều được dẫn ra từ một nút cha ở trên nó :

- Các nút có dẫn ra nút con sau nó được gọi là nút trung gian hay nút trong

- Các nút không dẫn ra nút con gọi là nút lá

iii) Thứ tự duyệt trên cây là từ trái sang phải

Trong một cây, người ta thường dùng các khái niệm nút cha và nút con để lần lượt chỉ thứ tự trước và sau của sự phát sinh nút từ nút gốc trên cây Nếu có một đường đi từ nút v1 đến nút v2 thì v1 được gọi là nút cha của v2 và ngược lại, v2

sẽ là nút con của nút v1

Ta thường vẽ cây với nút gốc ở trên cùng và các cung chỉ xuống phía dưới,

do vậy các ký hiệu mũi tên trở nên không còn cần thiết nữa Các nút con của mỗi nút trên cây sẽ được vẽ lần lượt từ trái qua phải theo thứ tự đã xác định

Ví dụ 1.15: Cây minh họa cấu trúc cú pháp của một câu đơn trong ngôn

ngữ tiếng Việt "An là sinh viên giỏi"

Trang 28

II NGÔN NGỮ VÀ BIỂU DIỄN NGÔN NGỮ

2.1 Tổng quan về ngôn ngữ

Các ngôn ngữ lập trình (như Pascal, C, ) lẫn ngôn ngữ tự nhiên (như tiếng Việt, tiếng Anh, ) đều có thể xem như là tập hợp các câu theo một cấu trúc quy định nào đó Câu của ngôn ngữ, trong tiếng Việt như "An là sinh viên giỏi" hay trong Pascal là một đoạn chương trình bắt đầu bằng từ khóa program cho đến dấu chấm câu kết thúc chương trình, đều là một chuỗi liên tiếp các từ, như ―An‖,

―giỏi‖ hay ―begin‖, ―if‖, ―x2‖, ―215‖, tức các chuỗi hữu hạn các phần tử của một

bộ chữ cái cơ sở nào đó Ta có thể xem chúng như là các ký hiệu cơ bản của ngôn ngữ

Từ nhận xét đó, ta dẫn tới một quan niệm hình thức về ngôn ngữ như sau (theo từ điển): Ngôn ngữ, một cách không chính xác là một hệ thống thích hợp cho việc biểu thị các ý nghĩ, các sự kiện hay các khái niệm, bao gồm một tập các ký hiệu và các quy tắc để vận dụng chúng

Định nghĩa trên chỉ cung cấp một ý niệm trực quan về ngôn ngữ chứ không

đủ là một định nghĩa chính xác để nghiên cứu về ngôn ngữ hình thức Chúng ta bắt đầu xây dựng định nghĩa này bằng các khái niệm mà mọi ngôn ngữ đều đặt nền tảng trên đó

Chẳng hạn : a, b, c là các ký hiệu còn abcac là một từ

ε, 0, 1011, 00010, là các từ trên bộ chữ cái Σ = {0, 1}

Độ dài của một chuỗi w, ký hiệu |w| là số các ký hiệu tạo thành chuỗi w

Chẳng hạn: Chuỗi abca có độ dài là 4 , ký hiệu : |abca | = 4

Trang 29

Chuỗi rỗng (ký hiệu ε) là chuỗi không có ký hiệu nào, vì vậy | ε | = 0 Chuỗi v đƣợc gọi là chuỗi con của w nếu v đƣợc tạo bởi các ký hiệu liền kề nhau

trong chuỗi w

Chẳng hạn: Chuỗi 10 là chuỗi con của chuỗi 010001

Tiền tố của một chuỗi là một chuỗi con bất kỳ nằm ở đầu chuỗi và hậu tố

của một chuỗi là chuỗi con nằm ở cuối chuỗi Tiền tố và hậu tố của một chuỗi khác hơn chính chuỗi đó ta gọi là tiền tố và hậu tố thực sự

Chẳng hạn: Chuỗi abc có các tiền tố là a, ab, abc và các hậu tố là c, bc, abc

Chuỗi nối kết (ghép) từ hai chuỗi con là một chuỗi tạo đƣợc bằng cách viết

chuỗi thứ nhất sau đó là chuỗi thứ hai (không có khoảng trống ở giữa)

Chẳng hạn: Nối kết chuỗi Long và Int là chuỗi LongInt

Sự đặt cạnh nhau nhƣ vậy đƣợc sử dụng nhƣ là một toán tử nối kết Tức là, nếu w

và x là hai chuỗi thì wx là sự nối kết hai chuỗi đó Chuỗi rỗng là đơn vị của phép nối kết, vì ta có εw = wε = w với mọi chuỗi w

Ta viết v0 = ε ; v1 = v ; v2 = vv hay tổng quát vi = vvi - 1 với i > 0

Chuỗi đảo ngƣợc của chuỗi w, ký hiệu wR là chuỗi w đƣợc viết theo thứ tự ngƣợc lại, nghĩa là nếu w = a1 a2 an thì wR = an an-1 a1 Hiển nhiên : εR = ε

Tập hợp tất cả các chuỗi con kể cả chuỗi rỗng trên bộ chữ cái cố định Σ, ký hiệu là Σ*cũng là một ngôn ngữ Mỗi ngôn ngữ trên bộ chữ cái Σ đều là tập con của Σ* Chú ý rằng Σ* vô hạn đếm đƣợc với mọi Σ khác ∅, vì ta có thể liệt kê tất

cả các chuỗi con của nó theo thứ tự độ dài tăng dần, khi có cùng độ dài thì liệt kê theo thứ tự từ điển

Ngoài ra tập hợp tât cả các chuỗi sinh ra từ bộ chữ cái Σ, ngoại trừ chuỗi rỗng ε, đƣợc ký hiệu là Σ+ Dễ thấy:

Σ+ = Σ* - {ε} hay Σ* = Σ+ + {ε}

Ví dụ 2.2 : Σ = {a} thì Σ* = {ε, a, aa, aaa, }

Σ+ = {a, aa, aaa, }

Σ = {0, 1} thì Σ*= {ε, 0, 1, 00, 01, 10, 11, 000, }

Σ+ = {0, 1, 00, 01, 10, 11, 000, }

2.1.4 Các phép toán trên ngôn ngữ

Trang 30

Từ các ngôn ngữ có trước, ta có thể thu được các ngôn ngữ mới nhờ áp dụng các phép toán trên ngôn ngữ Trước hết, vì ngôn ngữ là một tập hợp, nên mọi phép toán trên tập hợp như: hợp (union), giao(intersection) và hiệu (difference) đều có thể áp dụng lên các ngôn ngữ Ngoài ra, còn có thêm một số phép toán thường gặp khác như sau :

Phép phần bù (complement) của một ngôn ngữ L trên bộ chữ cái Σ được

Phép bao đóng (closure) : Trong nhiều trường hợp, người ta muốn thành

lập một ngôn ngữ bằng cách nối kết các chuỗi (với số lượng bất kỳ) lấy trong một ngôn ngữ L cho trước, các phép toán đó như sau:

Bao đóng (Kleene) của ngôn ngữ L, ký hiệu L* được định nghĩa là hợp của

mọi tập tích trên L: i

i Y L L

L2 = { aa, aba, baa, baba}

L2 = { aaa, aaba, abaa, ababa, baaa, baaba, babaa, bababa}

L* = { ε, a, ba, aa, aba, baa, baba, aaa, aaba, abaa, ababa, baaa, baaba,

babaa, bababa … }

2.2 Vấn đề biểu diễn ngôn ngữ

Đối với các ngôn ngữ hữu hạn, để biểu diễn chúng một cách đơn giản ta chỉ cần liệt kê tất cả các chuỗi thuộc vào chúng

Chẳng hạn: L1 = {ε}

L2 = { a, ba, aaba, bbbbb } Tuy nhiên, trong trường hợp các ngôn ngữ là vô hạn, ta không thể liệt kê tất

cả các chuỗi thuộc ngôn ngữ được mà phải tìm cho chúng một cách biểu diễn hiệu quả khác

Trong những trường hợp không phức tạp lắm, người ta thường xác định các chuỗi bằng cách chỉ rõ một đặc điểm chủ yếu chung cho các chuỗi đó Đặc điểm này thường được mô tả qua một phát biểu hay một tân từ

Trang 31

Chẳng hạn: L3 = { ai | i là một số nguyên tố }

L4 = { aibj | i ≥ j ≥ 0 }

L5 = { w ∈ { a, b}* | số a trong w = số b trong w } Trong phần lớn các trường hợp, người ta thường biểu diễn ngôn ngữ một cách tổng quát thông qua một văn phạm hay một ôtômát Văn phạm là một cơ chế cho phép sản sinh ra mọi chuỗi của ngôn ngữ, trong khi ôtômát lại là cơ chế cho phép đoán nhận một chuỗi bất kỳ có thuộc ngôn ngữ hay không Về mặt hình thức,

cả văn phạm và ôtômát đều là các cách biểu hiện khác nhau của cùng một quan niệm

Ví dụ 2.4: Cho L là một ngôn ngữ trên bộ chữ cái Σ = {a, b} được định

nghĩa như sau:

i) ε ∈ L

ii) Nếu X∈ L thì aXb ∈ L

iii) Không còn chuỗi nào khác thuộc L

Định nghĩa đệ quy trên cho ta một cách sản sinh ra các chuỗi thuộc ngôn

ngữ L như sau : Do (i) nên ta có chuỗi đầu tiên trong L là ε Xem đó là X thì theo

(ii) ta lại có được chuỗi thứ hai aεb hay ab Áp dụng lặp đi lặp lại quy tắc (ii) ta lại tìm được các chuỗi: aabb, rồi lại aaabbb, … Cứ như thế có thể phát sinh tất cả các chuỗi thuộc ngôn ngữ L Bằng cách áp dụng (một số hữu hạn) quy tắc phát sinh như trên, ta có thể phát sinh bất kỳ chuỗi nào trong ngôn ngữ

Dễ dàng nhận thấy : L = {aibi | i ≥ 0}

2.3 Văn phạm và sự phân lớp văn phạm

2.3.1 Định nghĩa văn phạm cấu trúc (Grammar)

Theo từ điển, văn phạm, một cách không chính xác, là một tập các quy tắc

về cấu tạo từ và các quy tắc về cách thức liên kết từ lại thành câu

Để hiểu rõ hơn khái niệm này, ta xét ví dụ cây minh họa cấu trúc cú pháp của một câu đơn trong ngôn ngữ tiếng Việt "An là sinh viên giỏi" ở Ví dụ 1.5 của phần I Xuất phát từ nút gốc theo dần đến nút lá, ta nhận thấy các từ ở những nút lá của cây như ―An‖, ―sinh viên‖, ―giỏi‖, … là những từ tạo thành câu được sản sinh

Ta gọi đó là các ký hiệu kết thúc bởi vì chúng không còn phát sinh thêm nút nào

trên cây và câu được hoàn thành Trái lại, các nút trong của cây như ―câu đơn‖,

―chủ ngữ‖, ―danh từ‖, … sẽ không có mặt trong dạng câu sản sinh, chúng chỉ giữ vai trò trung gian trong việc sinh chuỗi, dùng diễn tả cấu trúc câu Ta gọi đó là các

ký hiệu chưa kết thúc

Quá trình sản sinh câu như trên thực chất là sự diễn tả thông qua cấu trúc cây cho một quá trình phát sinh chuỗi Các chuỗi được phát sinh bắt đầu từ một ký hiệu chưa kết thúc đặc biệt, sau mỗi bước thay thế một ký hiệu chưa kết thúc nào

đó trong chuỗi thành một chuỗi lẫn lộn gồm các ký hiệu kết thúc và chưa, cho đến khi không còn một ký hiệu chưa kết thúc nào nữa thì hoàn thành Quá trình này

Trang 32

chính là phương thức phát sinh chuỗi của một văn phạm, được định nghĩa hình thức như sau:

Định nghĩa: Văn phạm cấu trúc G là một hệ thống gồm bốn thành phần

xác định như sau G (V, T, P, S), trong đó:

.V: tập hợp các biến (variables) hay các ký hiệu chưa kết thúc (non terminal)

.T: tập hợp các ký hiệu kết thúc (terminal) (với V ∩ T = ∅)

.P tập hữu hạn các quy tắc ngữ pháp được gọi là các luật sinh (production), mỗi luật sinh được biểu diễn dưới dạng α → β, với α, β là các chuỗi ∈ (V ∪ T)*

S ⊂ V: ký hiệu chưa kết thúc dùng làm ký hiệu bắt đầu (start)

Người ta thường dùng các chữ cái Latinh viết hoa (A, B, C, ) để chỉ các

ký hiệu trong tập biến V; các chữ cái Latinh đầu bảng viết thường (a, b, c, ) dùng chỉ các ký hiệu kết thúc thuộc tập T

Chuỗi các ký hiệu kết thúc thường được biểu diễn bằng các chữ cái Latinh cuối bảng viết thường (x, y, z, )

2.3.2 Sự phân cấp Chomsky trên văn phạm

Bằng cách áp đặt một số quy tắc hạn chế trên các luật sinh, Noam Chomsky

đề nghị một hệ thống phân loại các văn phạm dựa vào tính chất của các luật sinh

Hệ thống này cho phép xây dựng các bộ nhận dạng hiệu quả và tương thích với từng lớp văn phạm Ta có 4 lớp văn phạm như sau :

1) Văn phạm loại 0: Một văn phạm không cần thỏa ràng buộc nào trên tập các luật sinh được gọi là văn phạm loại 0 hay còn được gọi là văn phạm không hạn chế (Unrestricted Grammar)

2) Văn phạm loại 1: Nếu văn phạm G có các luật sinh dạng α → β và thỏa

| β |≥ | α |thì G là văn phạm loại 1 hoặc còn được gọi là văn phạm cảm ngữ cảnh CSG (Context Sensitive Grammar).Ngôn ngữ của lớp văn phạm này được gọi là

ngôn ngữ cảm ngữ cảnh (CSL)

3) Văn phạm loại 2: Nếu văn phạm G có các luật sinh dạng A → α với A

là một biến đơn và α là một chuỗi các ký hiệu ∈ (V ∪T)* thì G là văn phạm loại

2 hoặc còn được gọi là văn phạm phi ngữ cảnh CFG (Context-Free Grammar).Ngôn ngữ của lớp văn phạm này được gọi là ngôn ngữ phi ngữ cảnh (CFL)

4) Văn phạm loại 3: Nếu văn phạm G có mọi luật sinh dạng tuyến tính

phải (right-linear): A → wB hoặc A → w với A, B là các biến đơn và w là chuỗi

ký hiệu kết thúc (có thể rỗng); hoặc có dạng tuyến tính trái (left-linear): A → Bw

hoặc A → w thì G là văn phạm loại 3 hay còn được gọi là văn phạm chính quy

Trang 33

RG (Regular Grammar) Ngôn ngữ của lớp văn phạm này được gọi là ngôn ngữ

chính quy (RL)

Ký hiệu : L0, L1, L2, L3 là các lớp ngôn ngữ sinh ra bởi các văn phạm loại 0,

1, 2, 3 tương ứng Ta có : L3 ⊂ L2 ⊂ L1 ⊂ L0 và các bao hàm thức này là nghiêm ngặt

S ⇒ aSb ⇒ aaSbb ⇒ aaaSbbb ⇒ aaaabbbb = a4b4

Hay văn phạm sinh ra ngôn ngữ L(G2) = {anbn | n ≥ 1}

Trang 34

2.4 Cơ chế Ôtômat

2.4.1 Định nghĩa ôtômat

Chuỗi nhập cần xác định sẽ được lưu trữ trên băng input Tại mỗi thời điểm, ứng với trạng thái hiện thời, đọc vào một ký tự nhập trên băng input, có thể kết hợp với việc xem xét ký hiệu tương ứng trong Bộ nhớ, Bộ điều khiển của ôtômát sẽ quyết định bước chuyển đến trạng thái kế tiếp

2.4.2 Phân loại các ôtômat

Dựa theo hoạt động của ôtômát, thông thường người ta chia ôtômát thành hai dạng sau:

Ôtômat đơn định (Deterministic Automata): Là một ôtômat mà tại mỗi

bước di chuyển chỉ được xác định duy nhất bởi cấu hình hiện tại Sự duy nhất này thể hiện tính đơn định, nghĩa là hàm chuyển của ôtômát dạng này luôn là đơn trị

Ôtômat không đơn định (Non - deterministic Automata): Là một ôtômát

mà tại mỗi bước di chuyển, nó có một vài khả năng để chọn lựa Sự chọn lựa này thể hiện tính không đơn định, nghĩa là hàm chuyển của ôtômat dạng này là đa trị

Trang 35

III ÔTÔMAT HỮU HẠN (FA: FINITE AUTOMATA)

Ôtômat hữu hạn FA là một mô hình tính toán của hệ thống với sự mô tả bởi các input và output Tại mỗi thời điểm, hệ thống có thể xác định ở một trong số

hữu hạn các cấu hình nội bộ gọi là các trạng thái (states) Mỗi trạng thái của hệ

thống thể hiện sự tóm tắt các thông tin liên quan đến những input đã chuyển qua

và xác định các phép chuyển kế tiếp trên dãy input tiếp theo

Lý do quan trọng nhất cho việc nghiên cứu các hệ thống trạng thái hữu hạn

là tính tự nhiên của khái niệm và khả năng ứng dụng đa dạng trong nhiều lĩnh vực thực tế Ôtômat hữu hạn (FA) được chia thành 2 loại : đơn định (DFA) và không đơn định (NFA) Cả hai loại ôtômat hữu hạn đều có khả năng nhận dạng chính xác tập chính quy Ôtômat hữu hạn đơn định có khả năng nhận dạng ngôn ngữ dễ dàng hơn ôtômat hữu hạn không đơn định, nhưng thay vào đó thông thường kích thước của nó lại lớn hơn so với ôtômat hữu hạn không đơn định tương đương

3.1 Ôtômat hữu hạn không đơn định – DFA (Deterministic Finte Automata)

Một DFA gồm một tập hữu hạn các trạng thái và một tập các phép chuyển

từ trạng thái này tới trạng thái khác trên các ký hiệu nhập (input symbols) được chọn từ một bộ chữ cái Σ nào đó Mỗi ký hiệu nhập có đúng một phép chuyển khỏi mỗi trạng thái (có thể chuyển trở về chính nó) Một trạng thái thường ký hiệu là q0, gọi là trạng thái bắt đầu (trạng thái ôtômat bắt đầu) Một số trạng thái được thiết kế như là các trạng thái kết thúc hay trạng thái chấp nhận

Một đồ thị có hướng, gọi là sơ đồ chuyển (transition diagram) tương ứng với một DFA như sau: các đỉnh của đồ thị là các trạng thái của DFA; nếu có một đường chuyển từ trạng thái q sang trạng thái p trên input a thì có một cung nhãn a chuyển từ trạng thái q đến trạng thái p trong sơ đồ chuyển DFA chấp nhận một chuỗi x nếu như tồn tại dãy các phép chuyển tương ứng trên mỗi ký hiệu của x dẫn

từ trạng thái bắt đầu đến một trong những trạng thái kết thúc

Chẳng hạn sơ đồ chuyển của một DFA được mô tả trong hình 3.1 Trạng thái khởi đầu q0 được chỉ mũi tên có nhãn ―Start‖ Chỉ có duy nhất một trạng thái kết thúc, cũng là q0 trong trường hợp này, được chỉ ra bằng hai vòng tròn Ôtômat này chấp nhận tất cả các chuỗi số 0 và số 1 với số 0 và số 1 là chẵn

Trang 36

Một điều cần lưu ý, DFA sử dụng mỗi trạng thái của nó để giữ chỉ một phần của chuỗi số 0 và 1 chứ không phải chứa một số thực, vì thế DFA cần dùng một số hữu hạn trạng thái

- δ là hàm chuyển ánh xạ từ Q x Σ  Q, tức là δ(q,a) là một trạng thái

được cho phép bởi phép chuyển từ trạng thái q trên ký hiệu nhập a

Hàm chuyển trạng thái mở rộng:

Để có thể mô tả một cách hình thức hoạt động của một DFA trên chuỗi, ta

mở rộng hàm chuyển δ để áp dụng đối với một trạng thái trên chuỗi hơn là một trạng thái trên từng ký hiệu Ta định nghĩa hàm chuyển δ như một ánh xạ từ Q x Σ*  Q với ý nghĩa δ (q,w) là trạng thái DFA chuyển từ trạng thái q chuỗi trên chuỗi w Một cách hình thức, ta định nghĩa:

Trang 37

- Q là tập các trạng thái Ký hiệu q và p (có hoặc không có chỉ số) là các trạng thái, q0 là trạng thái bắt đầu

- Σ là bộ chữ cái nhập Ký hiệu a, b (có hoặc không có chỉ số) và các chữ số

là các ký hiệu nhập

- δ là hàm chuyển

- F là tập các trạng thái kết thúc

- w, x, y và z (có hoặc không có chỉ số) là các chuỗi ký hiệu nhập

Ngôn ngữ đƣợc chấp nhận bởi DFA :

Một chuỗi w đƣợc chấp nhận bởi ôtômat hữu hạn M (Q, Σ, δ, q0, F) nếu δ(q0, w)=p với p F Ngôn ngữ đƣợc chấp nhận bởi M, ký hiệu L(M) là tập hợp : L(M)={w | δ (q0, w) F}

Ví dụ 3.1: Xét sơ đồ chuyển ở hình trên (hình 3.1) Theo khái niệm hình

thức, ta có DFA đƣợc xác định bởi M(Q, Σ, δ, q0, F) với Q = {q0, q1, q2, q3}, Σ = {0, 1}, F = {q0} và hàm chuyển δ nhƣ sau:

Trang 38

Giải thuật mô phỏng hoạt động của một DFA:

Nhận xét:

Một cách tổng quát, ta thấy tập Q của DFA thể hiện các trạng thái lưu trữ của ôtômat trong quá trình đoán nhận ngôn ngữ và như vậy khả năng lưu trữ ôtômat là hữu hạn Mặt khác, hàm chuyển δ là hàm toàn phần và đơn vị, cho nên các bước chuyển của ôtômat luôn luôn được xác định một cách duy nhất Chính vì

2 đặc điểm này mà DFA mô tả như trên được gọi là ôtômat hữu hạn đơn định

3.2 Ôtômat hữu hạn không đơn định – NFA (Nondeterministic Finte Automata)

Xét một dạng sửa đổi mô hình DFA để chấp nhận không, một hoặc nhiều hơn một phép chuyển từ một trạng thái trên cùng một ký hiệu nhập Mô hình mới này gọi là ôtômat hữu hạn không đơn định (NFA)

Một chuỗi ký hiệu nhập a1, a2, …, an được chấp nhận bởi một NFA nếu có tồn tại một chuỗi các phép chuyển, tương ứng với chuỗi nhập, từ trạng thái bắt đầu đến trạng thái kết thúc Chẳng hạn, chuỗi 01001 được chấp nhận bởi ôtômat trong hình dưới đây vì có chuỗi phép chuyển qua các trạng thái q0, q0, q0, q3, q4, q4 có nhãn tương ứng là 0, 1, 0, 0, 1 NFA này chấp nhận tất cả các chuỗi có hai số 0 liên tiếp hoặc hai số 1 liên tiếp

Input: Chuỗi nhập x kết thúc bởi $

Output: Câu trả lời ―YES‖ nếu DFA chấp nhận chuỗi x và ―NO‖ nếu ngược lại

Giải thuật:

q:=q0; c:=nextchar; {c là ký hiệu nhập được đọc tiếp theo}

Trang 39

Hình 3.3 Sơ đồ chuyển NFA

Chú ý rằng có thể xem DFA là một trường hợp đặc biệt của NFA, trong đó mỗi trạng thái chỉ có duy nhất một phép chuyển trên mỗi ký hiệu nhập Vì thế trong DFA, với một chuỗi nhập w và trạng thái q, chỉ có đúng một đường đi nhãn

w bắt đầu từ q Để xác định chuỗi w có được chấp nhận bởi NFA hay không chỉ cần kiểm tra đường đi này Nhưng đối với NFA, có thể có nhiều đường đi có nhãn

là w, và do đó tất cả phải được kiểm tra để thấy có hay không có đường đi tới trạng thái kết thúc

Tương tự như DFA, NFA cũng hoạt động với một bộ điều khiển hữu hạn đọc trên băng nhập Tuy nhiên, tại mỗi thời điểm, bộ điều khiển có thể chứa một

số bất kỳ trạng thái Khi có sự lựa chọn trạng thái kế tiếp, chẳng hạn như từ trạng thái q0 trên ký hiệu nhập 0 ở hình 3.3, ta phải tưởng tượng như có các bản sao của ôtômat đang thực hiện đồng thời Mỗi trạng thái kế tiếp mà ôtômat có thể chuyển đến sẽ tương ứng với một bản sao của ôtômat mà tại đó bộ điều khiển đang chứa trạng thái đó

Chẳng hạn, với chuỗi 01001, ta có:

Định nghĩa:

Một cách hình thức ta định nghĩa ôtômat hữu hạn không đơn định NFA là

một bộ 5 thành phần (Q, Σ, δ, q 0 , F) trong đó Q, Σ, q0 và F có ý nghĩa như trong

DFA, nhưng δ là hàm chuyển ánh xạ từ Q x Σ  2 Q

Trang 40

Khái niệm δ(q, a) là tập hợp tất cả các trạng thái p sao cho có phép chuyển trên nhãn a từ trạng thái q tới p

Ngôn ngữ được chấp nhận bởi NFA

Ngôn ngữ L(M), với M là ôtômat hữu hạn không đơn định NFA (Q, Σ, δ,

q0, F) là tập hợp:

L(M)={w| δ(q0, w) có chứa một trạng thái trong F}

Ví dụ 3.2: Xét sơ đồ chuyển của hình 3.3 Theo khái niệm hình thức, ta có:

NFA M({q0, q1, q2, q3, q4}, {0, 1}, δ, q0, {q2, q4} với hàm chuyển δ như sau:

3.3 Sự tương đương giữa DFA và NFA

Vì mỗi DFA là một NFA, nên rõ ràng lớp ngôn ngữ được chấp nhận bởi NFA cũng bao gồm các tập chính quy (đây chính là ngôn ngữ được chấp nhận bởi DFA) Tuy nhiên, không có cơ sở để nói rằng NFA chỉ chấp nhận duy nhất các tập hợp này Điều đó cho thấy DFA có thể mô phỏng được hoạt động của NFA, nghĩa

là với mỗi NFA, ta có thể xây dựng một DFA tương đương (chấp nhận cùng một ngôn ngữ với nó) Đặt một DFA mô phỏng hoạt động của NFA là cho phép các

Ngày đăng: 16/11/2015, 15:23

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w