Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
757,5 KB
Nội dung
MỤC LỤC
MỤC LỤC 1
I. ĐẶT VẤN ĐỀ 2
II. CƠ SỞ LÝ THUYẾT 3
II.1. Định nghĩa DFA 3
II.1.1. Mô tả không hình thức 3
II.1.2. Mô tả hình thức: 4
II.1.3. DFA xử lý xâu như thế nào? 4
II.1.4. Các cách biểu diễn đơn giản hơn của DFA 5
a.Bằng đồ thị có hướng: 5
b.Bảng dịch chuyển 5
Bảng chuyển là bảng có kích cỡ |Q| × |Σ|, trong đó dòng i cột j của bảng là δ(qi, aj) hoặc
bỏ trống 5
II.2. SỰ TƯƠNG ĐƯƠNG CỦA CÁC AUTOMAT DFA 6
II.2.1. Sự tương đương của các trạng thái: 6
II.2.2. Sự tương đương của các DFA 7
a. Dựa vào bảng đánh dấu sự tương đương các trạng thái 8
b.Dựa vào tính đóng dưới phép giao 8
III. CẤU TRÚC CHƯƠNG TRÌNH 12
III.1. Cấu trúc 12
III.1.1. Cài đặt dựa theo trạng thái tương đương 13
III.1.2. Dựa vào tính đóng của phép giao 2 DFA 13
III.2. Sơ đồ khối các bước giải quyết công việc: 13
III.2.1.Cài đặt dựa theo trạng thái tương đương 13
III.2.2. Dựa vào tính đóng của phép giao 2 DFA 14
III.3. GIAO DIỆN CHƯƠNG TRÌNH: 15
III.3.1 .Cài đặt dựa theo trạng thái tương đương 15
III.3.2 .Dựa vào tính đóng của phép giao 2 DFA 16
III.4. Cài đặt 17
III.4.1 Cài đặt dựa theo trạng thái tương đương 18
III.4.2 Cài đặt dựa vào tính đóng của phép giao 2 DFA 20
TÀI LIỆU THAM KHẢO 25
Môn học Automat và NNHT Đề tài: HaiDFA tương đương
I. ĐẶT VẤN ĐỀ
Automat và Ngôn ngữ hình thức (TA & FL) là môn học cơ sở của ngành
công nghệ thông tin. Môn học trang bị cho người học những kiến thức cơ bản về
thuật toán, ngôn ngữ thuật toán, các kỹ thuật xây dựng chương trình, xây dựng
các hệ thống tự động và phương pháp tư duy liên quan đến khoa học máy tính.
Kiến thức về ngôn ngữ hình thức và automat là nền tảng cho nhiều lĩnh vực của
khoa học máy tính và CNTT.
• Nội dung chính của môn học TA&FL:
1. Cơ sở toán học của môn TA&FL
2. Văn phạm và ngôn ngữ hình thức
3. Automata hữu hạn và ngôn ngữ hình thức
4. Văn phạm chính quy và các tính chất
5. Văn phạm phi ngữ cảnh
6. Pushdown automata (automata đẩy xuống)
7. Máy Turing
• Để học tốt môn học, ta cần đảm bảo các kiến thức nền sau:
+ Lý thuyết trong Toán rời rạc như tập hợp, đồ thị, cây, quan hệ, phương pháp
chứng minh,…
+ Các kiến thức toán liên quan;
+ Khả năng lập trình (C, C++, C#,…)
• Sau khi nghiên cứu 3 nội dung đầu tiên, ta biết được rằng một
DFA(Deterministic Finite Automata ) có thể đoán nhận (hay nói
cách khác là biểu diễn) ngôn ngữ chính quy. Câu hỏi đặt ra là liệu 2
DFA khác nhau có cùng biểu diễn một ngôn ngữ chính quy hay
không? Khi 2 DFA biểu diễn cùng một ngôn ngữ chính quy thì ta nói
hai DFA này là tương đương. Để giải quyết thắc mắc, chúng ta sẽ
thực hiện bài toán sau:
Viết chương trình kiểm tra haidfa có tương đương nhau không.
GVHD:TS Hà Chí Trung
Trang 2
Môn học Automat và NNHT Đề tài: HaiDFA tương đương
II. CƠ SỞ LÝ THUYẾT
II.1. Định nghĩa DFA
II.1.1. Mô tả không hình thức
Automat hữu hạn đơn định là một cái máy đoán nhận xâu. Gồm các bộ phận
sau:
- Một băng vào được chia thành ô, dùng để ghi xâu vào, mỗi kí hiệu của
xâu vào thuộc bảng chữ Σ được ghi trên một ô
- Một đầu đọc, mỗi thời điểm đọc (trỏ) đến một ô trên băng vào
- Một bộ điều khiển Q, gồm một số hữu hạn các trạng thái, tại mỗi thời
điểm nó có một trạng thái
*Hoạt động của Automat được thực hiện như sau: Automat hoạt động theo
từng bước. Mỗi bước như sau: tùy theo trạng thái hiện thời của bộ điều khiển
và kí hiệu mà đầu đọc đang đọc, mà Automat chuyển sang một trạng thái mới,
đồng thời đầu đọc dịch chuyển sang phải một ô.
**Quy luật chuyển trạng thái của Automat hữu hạn đơn định được mô tả
bởi một hàm, được gọi là hàm dich chuyển như sau:
Trong Q, có một trạng thái đầu, thường kí hiệu qo và một tập hợp các
trạng thái cuối / thừa nhận, thường kí hiệu F (F ⊆ Q).
GVHD:TS Hà Chí Trung
Trang 3
Môn học Automat và NNHT Đề tài: HaiDFA tương đương
Ta nói Automat thừa nhận xâu vào w nếu sau khi xuất phát từ trạng thái
đầu qo và đầu đọc chỉ vào kí hiệu bên trái nhất của xâu w, sau một số bước
dịch chuyển hữu hạn, Automat đọc song xâu w và rơi vào một trong các trạng
thái cuối thuộc F.
Tập hợp tất cả các xâu đoán nhận bởi Automat hợp thành ngôn ngữ được
nhận bởi Automat đó.
II.1.2. Mô tả hình thức:
Một DFA được định nghĩa như là một bộ năm:
A=(Q, Σ, δ, q
0
, F), trong đó:
Q : tập khác rỗng, tập hữu hạn các trạng thái (p, q…);
Σ : bộ chữ cái nhập vào (a, b, c …);
δ : D→ Q, hàm chuyển (hay ánh xạ), D ⊆ Q × Σ, có nghĩa là δ(p, a) =q
hoặc δ(p, a) = Ø, trong đó p, q Є Q , a Є Σ;
q
0
Є Q : trạng thái bắt đầu (start state);
F Є Q : tập các trạng thái kết thúc (finish states).
Trong trường hợp D = Q × Σ ta nói A là một DFA đầy đủ.
II.1.3. DFA xử lý xâu như thế nào?
Giả sử w = a
0
a
1
a
n
là xâu vào. DFA sẽ bắt đầu với trạng thái q
0
, nó sẽ thực
hiện dịch chuyển δ(q
0
, a
1
) giả sử cho q
1
. DFA bây giờ ở trạng thái q
1
và kí hiệu
tiếp theo sẽ đọc a
2
, nó thưc hiện dịch chuyển δ(q
1
, a
2
) giả sử cho q
2
. Nó cứ tiếp
tục như thế, cho đến khi đọc an thì sẽ chuyển sang trạng thái q
n
nào đó, nếu q
n
thuộc tập F thì DFA thừa nhận xâu vào w, ngược lại thì xâu vào sẽ không được
thừa nhận.
GVHD:TS Hà Chí Trung
Trang 4
Môn học Automat và NNHT Đề tài: HaiDFA tương đương
II.1.4. Các cách biểu diễn đơn giản hơn của DFA
Cho một automata thực chất là cho hàm chuyển trạng thái của nó, có thể
cho dưới dạng bảng chuyển trạng thái hoặc cho dưới dạng đồ thị chuyển.
a. Bằng đồ thị có hướng:
Đồ thị chuyển là một đa đồ thị có hướng (có thể có khuyên) G:
+ Tập đỉnh của G được gán nhãn bởi các phần tử thuộc Q,
+ Các cung được gán nhãn bởi các phần tử thuộc Σ, nếu a ∈ Σ, p,q ∈ Q và
δ(q, a) = p thì sẽ có một cung từ đỉnh q tới đỉnh p được gán nhãn a.
+ Đỉnh vào của đồ thị chuyển ứng với trạng thái ban đầu q
0
.
Dưới đây là một ví dụ
+ Trạng thái khởi đầu sẽ được nhận biết bằng mũi tên đi vào không mang
nhãn mà không xuất phát từ bất kì đỉnh nào.
+ Các trạng thái kết thúc được vẽ bằng một vòng tròn đôi.
b. Bảng dịch chuyển
Bảng chuyển là bảng có kích cỡ |Q| × |Σ|, trong đó dòng i cột j của bảng là
δ(q
i
, a
j
) hoặc bỏ trống.
Trạng thái đầu được đánh dấu bởi dấu , các trạng thái cuối sẽ được đánh các
dấu
*
.
Minh họa cho ví dụ trên
GVHD:TS Hà Chí Trung
Trang 5
Môn học Automat và NNHT Đề tài: HaiDFA tương đương
II.2. SỰ TƯƠNG ĐƯƠNG CỦA CÁC AUTOMAT DFA
II.2.1. Sự tương đương của các trạng thái:
• Mục đích của chúng ta là xác định xem hai trạng thái khác nhau p và q có
thể thay thế bởi một trạng thái duy nhất mà có chức năng như p và q.
• Chúng ta nói rằng, hai trạng thái p và q là tương đương nếu: với mọi xâu
w, δ
*
(p, w) và δ
*
(q, w) cho kết quả hoặc cùng là trạng thái kết thúc hoặc
cùng là trạng thái không kết thúc.
• Lưu ý, chúng ta không yêu cầu δ
*
(p, w) và δ
*
(q, w) cho cùng trạng thái
mà chỉ cho kết quả cùng trạng thái kết thúc hoặc không kết thúc.
• Ngược lại, hai trạng thái không tương đương được gọi là phân biệt.
• Để xác định sự tương đương của các trạng thái, chúng ta sử dụng thuật
toán xây dựng bảng đánh dấu như sau:
Bước 1: Nếu p là trạng thái không kết thúc và q là trạng thái kết thúc thì
{p,q} là cặp trạng thái phân biệt.
Bước 2: Cho p và q là các trạng thái sao cho với kí hiệu vào a, r = δ (p, a)
và s= δ (q, a) là cặp trạng thái phân biệt. Khi đó {p, q} cũng là cặp trạng thái
phân biệt.
Ví dụ: Xây dựng bảng đánh dấu của DFA trong hình vẽ
Trong bảng đánh dấu: các cặp trạng thái phân biệt được đánh dấu X, các
cặp trạng thái tương đương được để trống, các ô bôi đen không được sử dụng.
GVHD:TS Hà Chí Trung
Trang 6
Môn học Automat và NNHT Đề tài: HaiDFA tương đương
Ban đầu, không có cặp nào bị đánh dấu. Chúng ta thực hiện việc đánh dấu theo
thuật toán đã trình bày ở trên.
Trước hết, các cặp trạng thái gồm có một trạng kết thúc và một trạng thái
không kết thúc được đánh dấu. Thực hiện bước 2 của thuật toán, chúng ta
không tìm thấy thêm cặp trạng thái phân biệt nào nữa.
Bảng đánh dấu các cặp trạng thái phân biệt cho Ví dụ
II.2.2. Sự tương đương của các DFA
Ví dụ: Xét hai DFA, haiDFA này cùng đoán nhận ngôn ngữ gồm các xâu
trên bảng chữ {0, 1} kết thúc bởi kí hiệu 0.
GVHD:TS Hà Chí Trung
Trang 7
Môn học Automat và NNHT Đề tài: HaiDFA tương đương
a. Dựa vào bảng đánh dấu sự tương đương các trạng thái
Giả sử có haiDFA M
1
và M
2
. Xét DFA mới là hợp của haiDFA M
1
và
M
2
. Khi đó, DFA này có hai trạng thái đầu. Nếu DFA M
1
và M
2
là tương
đương thì cặp trạng thái đầu phải là cặp trạng thái tương đương và ngược lại.
Áp dụng thuật toán
Chúng ta coi haiDFA như là một DFA với các trạng thái là A, B, C, D và
E. Bây giờ xây dựng bảng đánh dấu các trạng thái phân biệt của DFA này.
A và C là cặp trạng thái tương đương, vậy haiDFA là tương đương. Tức
là cùng thừa nhận một ngôn ngữ.
b. Dựa vào tính đóng dưới phép giao
*Định lý: Nếu L
1
và L
2
là các ngôn ngữ chính quy thì L
1
∩ L
2
cũng là
ngôn ngữ chính quy
*Chứng minh: Chúng ta xây dựng trực tiếp DFA thừa nhận ngôn ngữ
L
1
∩ L
2
từ các DFA thừa nhận L
1
và L
2
.
Giả sử M
1
= (Q
1
, Σ
1
, δ
1
, q
01
, F
1
) và M
2
= (Q
2
, Σ
2
, δ
2
, q
02
, F
2
) là các DFA
thừa nhận tương ứng L
1
và L
2
. Chúng ta sẽ xây dựng DFA M thực hiện đồng
thời M
1
và M
2
:
- Mỗi trạng thái của M sẽ là một cặp trạng thái: một trạng thái của M
1
và
một trạng thái của M
2
.
- Bảng chữ của M sẽ là hợp của các bảng chữ của M
1
và M
2
.
GVHD:TS Hà Chí Trung
Trang 8
Môn học Automat và NNHT Đề tài: HaiDFA tương đương
- Một dịch chuyển trong M được xây dựng tương ứng một dịch chuyển
đồng thời trên M
1
và M
2
khi đọc cùng một kí hiệu.
- M sẽ đoán nhận xâu vào khi đồng thời cả haiDFA M
1
và M
2
cùng đoán
nhận xâu vào.
Như vậy, M được xây dựng như sau:
M=(Q
1
× Q
2
, Σ
1
∪ Σ
2
, δ, (q
01
, q
02
), F
1
× F
2
)
Trong đó, δ((p, q), a) = (δ1(p, a), δ2(q, a)), với p ∈ Q1, q∈ Q2, a ∈ Σ1∪ Σ2.
Dễ dàng nhận thấy rằng L(M) = L(M1) ∩ L(M2).
Thật vậy, δ
*
((q
01
, q
02
), w) = (δ
1
*
(q
01
, w), δ
2
*
(q
02
, w)), như thế M chỉ chấp
nhận w khi δ
1
*
(q
01
, w) ∈ F
1
và δ
2
*
(q
02
, w) ∈ F
2
, nghĩa là M chỉ chấp nhận w
khi M
1
chấp nhận w và M
2
chấp nhận w. Vậy chấp nhận L(M
1
) ∪ L(M
2
)
Ví dụ: Cho L
1
là ngôn ngữ chính quy có chứa ít nhất một kí hiệu 0 được
thừa nhận bởi DFA M
1
(a) và L
2
là ngôn ngữ chính quy có ít nhất một kí hiệu 1
được thừa nhận bởi DFA M
2
(b). Chúng ta chỉ ra DFA M (c) thừa nhận ngôn
ngữ giao của L
1
và L
2
.
GVHD:TS Hà Chí Trung
Trang 9
Môn học Automat và NNHT Đề tài: HaiDFA tương đương
DFA giao của hai DFA
Chúng ta dễ dàng nhận thấy rằng, DFA thừa nhận ngôn ngữ gồm it nhất
một kí hiệu 0 và ít nhất một kí hiệu 1.
*
Áp dụng thuật toán
Để chứng minh haiDFA
1
L
và
2
L
tương đương thì ta chứng minh như
sau:
1
L
=
2
L
thì
1
L
∩
2
L
=
1
L
∩
2
L
= L(M) = ∅.
Automat DFA rỗng: Nếu không tồn tại một đường đi từ trạng thái đầu đến
một trong các trạng thái cuối thì là rỗng, ngược lại thì không rỗng.
Áp dụng cho Ví dụDFA biểu diễn
1
L
DFA biểu diễn
2
L
GVHD:TS Hà Chí Trung
Trang 10
[...]...Môn học Automat và NNHT Đề tài: HaiDFA tương đương DFA biểu diễn L2 GVHD:TS Hà Chí Trung Trang 11 Môn học Automat và NNHT Đề tài: HaiDFA tương đương DFA biểu diễn L1 ∩ L2 = L(M) Ta thấy L(M) là một Automat rỗng vì không tồn tại đương đi nào từ (A, C) đến (A, E) Tương tự ta có L(M)= L1 ∩ L2 cũng rỗng Suy ra haiDFA L1 , L2 tương đương III CẤU TRÚC CHƯƠNG TRÌNH III.1 Cấu... GVHD:TS Hà Chí Trung Trang 15 Môn học Automat và NNHT Đề tài: HaiDFA tương đương III.3.2 Dựa vào tính đóng của phép giao 2 DFA *Giao diện chính: GVHD:TS Hà Chí Trung Trang 16 Môn học Automat và NNHT Đề tài: HaiDFA tương đương III.4 Cài đặt Chú ý: Dùng ma trận để mã hóa 2DFA GVHD:TS Hà Chí Trung Trang 17 Môn học Automat và NNHT Đề tài: HaiDFA tương đương + Ma trận có 3 cột, số hàng là số các trạng... và giúp đỡ chúng em hoàn thành bài tậplớn này Chúng em xin chân thành cảm ơn! GVHD:TS Hà Chí Trung Trang 23 Môn học Automat và NNHT GVHD:TS Hà Chí Trung Đề tài: HaiDFA tương đương Trang 24 Môn học Automat và NNHT Đề tài: HaiDFA tương đương TÀI LIỆU THAM KHẢO 1 Giáo trình Lý thuyết ngôn ngữ hình thức và Automat – Nguyễn Thanh Bình- Khoa CNTT- trường ĐHBK- ĐH Đà Nẵng 2 Bài giảng của GVHD TS Hà Chí... tài: HaiDFA tương đương return 1; if (Dem_0 (d1, n1, 2) == 1) return 3; else return 0; } GVHD:TS Hà Chí Trung Trang 22 Môn học Automat và NNHT Đề tài: HaiDFA tương đương KẾT LUẬN Đối với mỗi người làm tin học, các ngôn ngữ là một phần không thể thiếu trong công việc Để có thể hiểu sâu sắc về các ngôn ngữ lập trình (giải thuật và cú pháp) thì không thể không ngiên cứu về các ngôn ngữ hình thức, về các... 2 DFA Hàm: NhapDuLieuVaoMang() Nhập dữ liệu từ file text vao mảng để tính toán Hàm: DFA_ PhanBu2(int [,] d2 ,int n2 ) Kiểm tra phần bù của DFA2 private void DFA_ PhanBu2(int [,] d2 ,int n2 ) { for(int i=0;i d2.GetLength(0)) kt_Min=d2.GetLength(0); else kt_Min=d1.GetLength(0); for(int i=0;i . sự tương đương các trạng thái Giả sử có hai DFA M 1 và M 2 . Xét DFA mới là hợp của hai DFA M 1 và M 2 . Khi đó, DFA này có hai trạng thái đầu. Nếu DFA M 1 và M 2 là tương đương thì cặp. các DFA Ví dụ: Xét hai DFA, hai DFA này cùng đoán nhận ngôn ngữ gồm các xâu trên bảng chữ {0, 1} kết thúc bởi kí hiệu 0. GVHD:TS Hà Chí Trung Trang 7 Môn học Automat và NNHT Đề tài: Hai DFA. tài: Hai DFA tương đương DFA giao của hai DFA Chúng ta dễ dàng nhận thấy rằng, DFA thừa nhận ngôn ngữ gồm it nhất một kí hiệu 0 và ít nhất một kí hiệu 1. * Áp dụng thuật toán Để chứng minh hai