Bộ môn Khoa học Dữ liệu
Thực hành Toán rời rạc Trang 1
THỰC HÀNH TOÁN RI RC
TÀI LIU PHC V SINH VIÊN NGÀNH KHOA HC D LIU
Nhóm Giảng viên biên soạn: TS. Hoàng Minh Hoàng Thị Kiều Anh Khưu Minh Cảnh
Phạm Trọng Nghĩa –Nguyễn Công Nhựt Trần Ngọc Việt Ngọc Thành Đỗ Đình Thủ
Nguyễn Hữu Trí Nhật Công Hiếu Nguyễn Thị Thanh Bình Nguyễn Thái Hải Huỳnh
Thái Học và các Giảng viên khác
TP.HCM – Năm 2020
Bộ môn Khoa học Dữ liệu
Thực hành Toán rời rạc Trang 2
MỤC LỤC
CHƯƠNG 6: CƠ BẢN VỀ ĐẠI SỐ BOOL, FINITE STATE MACHINE ................................................ 3
1. Cơ bản về đại số Bool với Python......................................................................................................... 3
2. Khái niệm về Máy trạng thái hữu hạn FSM (Finite State Machines) ................................................... 5
2.1. Mô hình toán học: ......................................................................................................................... 6
2.2. Ví dụ: Mạch điện đèn điều khiển tín hiệu giao thông ................................................................... 6
3. Xây dựng chương trình kiểm tra ngữ pháp đơn giản ............................................................................ 8
BÀI TẬP CHƯƠNG 6 ................................................................................................................................ 17
Bộ môn Khoa học Dữ liệu
Thực hành Toán rời rạc Trang 3
CHƯƠNG 6: CƠ BẢN VỀ ĐẠI SỐ BOOL,
FINITE STATE MACHINE
Mục tiêu:
- Khái niệm về đại số Bool
- Biểu diễn Finite State Machine trong Python
Nội dung chính:
1. Cơ bản về đại số Bool với Python
Tóm tắt thuyết: Cho = {0,1}, biến được gọi biến bool nếu nhận giá trị 0 hoặc 1
trong . Khi đó, một hàm số (, , , ) được gọi là hàm bool nếu nó xác định trên tập
= {(, , , )| , = 1,
}
Các đặc tính: cho hai hàm số bool, phép toán hội (), phép toán tuyển () cho hai hàm số
phép toán phủ định cho một hàm số đều sẽ cho kết quả là một hàm số bool. Các kí hiệu:
- Hội của hai hàm bool: ( ).
- Tuyển của hai hàm bool: ( ).
- Phủ định của hàm bool: .
Ví d1: Cho hàm bool theo bảng sau và hãy xác định biểu thức bool thể hiện bằng ngôn ngữ
Python:
x y Hàm f(x,y)
1 1 0
1 0 1
0 1 0
0 0 0
Nhận xét: f(x,y)=1 khi và chỉ khi x=1, y=0 và f(x,y)=0 trong các trường hợp còn lại của giá trị x,
y. Từ đó, chúng ta có thể kết luận biểu thức bool của hàm f(x,y) .
Với Python, chúng ta thể viết các hàm thể hiện hàm bool. Một cách đơn giản liệt tất cả
các trường hợp tương ứng với giá trị của hàm bool cho trong bảng:
Sinh viên thực hiện thể hiện của hàm f như bên dưới:
>>> def bool_xy(x, y):
kq = 0
if (x==1) and (y==1):
Bộ môn Khoa học Dữ liệu
Thực hành Toán rời rạc Trang 4
kq = 0
if (x==1) and (y==0):
kq = 1
if (x==0) and (y==1):
kq = 0
if (x==0) and (y==0):
kq = 0
return kq
Thực hiện chạy chương trình:
>>> for x in [1,0]:
for y in [1,0]:
print (bool_xy(x,y))
………………………………………..
Cải tiến hàm theo phân tích:
>>> def bool_xy1(x,y):
kq = 0
if (x == 1) and (y==0):
kq = 1
return kq
Thực hiện chạy chương trình lần nữa:
>>> for x in [1,0]:
for y in [1,0]:
print (bool_xy(x,y))
Bộ môn Khoa học Dữ liệu
Thực hành Toán rời rạc Trang 5
………………………………………..
dụ 2: Trong hình bên dưới, hai mạch được thiết kế với cùng một chức năng. Trong đó, mạch
bên trái nhiều linh kiện hơn mạch bên phải nhưng cùng một tính năng.
Sinh viên hãy viết chương trình bằng Python để mô tả hai mạch bên trên.
Lưu ý: Trong thực tế, mặc mong muốn ban đầu của đại số Bool tối thiểu một thiết kế
“mạch” nhưng việc thiết kế mạch trong thực tế một vấn đề lớn. việc thiết kế mạch sảnh
hưởng đến độ bền của thiết bị, linh kiện, mức độ “chịu đựng” về điện áp hoặc các hiệu ứng
nhiễu (trong các thiết bị âm thanh, thu phát sóng,…trong các môi trường khác nhau), cũng như
năng ợng tiêu thụ các yếu tố khác... Do đó, mặc việc sử dụng các giải pháp đại số Bool
để làm đơn giản hóa mạch một vấn đề khác. Đôi khi, với các thiết kế phức tạp tmạch trở
nên ổn định, bền và chống nhiễu khi đưa vào sử dụng.
2. Khái niệm về Máy trạng thái hữu hạn FSM (Finite State Machines)
Một “Finite State Machine” viết tắt FSM còn được gọi “máy trạng thái” hoặc “Finite State
Automaton” máy ảo gồm tập các trạng thái (bao gồm trạng thái khởi đầu một hoặc nhiều
trạng thái cuối), một tập các sự kiện nhập, 1 tập skiện xuất 1 hàm chuyển đổi trạng thái.
Hàm chuyển đổi trạng thái lấy state và sự kiện nhập là đầu vào và trả về tập các sự kiện xuất mới
trạng thái tiếp theo (trạng thái mới). Một số trạng thái được gọi trạng thái “chấm dứt”
(terminal states) khi không thể chuyển sang trạng thái khác.
Hoạt động của một FSM bắt đầu bằng một trạng thái gọi trạng thái khởi đầu xlý xuyên
suốt các dịch chuyển phụ thuộc vào các trạng thái khác nhau thông thường kết thúc khi
trạng thái cuối. Một trạng thái đánh dấu một dòng thành công của hoạt động được gọi một
trạng thái được chấp nhận (accept state). Kỹ thuật state machine hiện tại được sử dụng trong c
ứng dụng: tchơi (games), giao diện người sử dụng, giao thức mạng các chương trình phân
tích.