Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
1,43 MB
Nội dung
TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC HÀNH MÔN CẤU TRÚC RỜI RẠC ESSAY DISCRETE STRUCTURES Người hướng dẫn: GV NGUYỄN QUỐC BÌNH Người thực hiện: NGUYỄN TIẾN DŨNG – 52000883 ĐOÀN PHƯƠNG NAM – 52000895 Lớp : 501044 Khố THÀNH PHỐ HỒ CHÍ MINH, NĂM 2021 0 : 24 TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC HÀNH MÔN CẤU TRÚC RỜI RẠC ESSAY DISCRETE STRUCTURES Người hướng dẫn: GV NGUYỄN QUỐC BÌNH Người thực hiện: NGUYỄN TIẾN DŨNG – 52000883 ĐỒN PHƯƠNG NAM – 52000895 Lớp : 501044 Khố THÀNH PHỐ HỒ CHÍ MINH, NĂM 2021 0 : 24 MỤC LỤC MỤC LỤC - CHƯƠNG – PHÂN CHIA CÔNG VIỆC - 1.1 Đánh giá mức độ hồn thành cơng việc sau: 1.2 Ý kiến thành viên: CHƯƠNG – LÍ THUYẾT - 2.1 Lí thuyết Reverse Polish 2.2 Lí thuyết Basic logic sử dụng bảng chân trị CHƯƠNG – GIẢI THÍCH 3.1 Function Infix2Postfix(Infix): 3.2 Function Postfix2Truthtable(Postfix): CHƯƠNG – KẾT QUẢ - TestCase 1: R|(P&Q) Testcase 2: ~P|(Q&R)>R 10 Testcase 3: P|(R&Q) 11 Testcase 4: (P>Q)&(Q>R) 12 Testcase 5: (P|~Q)>~P=(P|(~Q))>~P 13 Nhìn tổng quan Testcase qua truthtable 14 CHƯƠNG 5: TÀI LIỆU THAM KHẢO 17 0 CHƯƠNG – PHÂN CHIA CÔNG VIỆC 1.1 Đánh giá mức độ hồn thành cơng việc sau: STT Họ tên Tiến MSSV Nguyễn Dũng Đoàn Phương 52000895 Nam 52000883 Nhiệm vụ -Code python câu 1,2 - Làm lý thuyết chương -Code python câu 1,2 - Fix bug code testcase Đánh giá hoàn thành - Hoàn thành tốt Mức độ 100% - Hoàn thành tốt 100% 1.2 Ý kiến thành viên: - Nguyễn Tiến Dũng: đồng ý với ý kiến - Đoàn Phương Nam: đồng ý với ý kiến Thành viên thứ Thành viên thứ ( Ký ghi rõ họ tên) ( Ký ghi rõ họ tên) Nguyễn Tiến Dũng Đoàn Phương Nam 0 Điểm CHƯƠNG – LÍ THUYẾT 2.1 Lí thuyết Reverse Polish Reverse Polish (RPN) phương pháp để đại diện cho biểu thức dấu phép tính đặt sau đối số triển khai Vào cuối năm 1950, nhà triết học nhà khoa học máy tính người Úc Charles Hamblin đề nghị đặt dấu phép tính phía sau đối số từ tạo kí hiệu RPN Ví dụ: biểu thức RPN sau tạo tổng 3, cụ thể 5: + Ký hiệu Reverse Polish, gọi ký hiệu Postfix, tương phản với Infix biểu thức số học tiêu chuẩn Đặc điểm reverse polish dấu ngoặc không bắt buộc Các biểu thức reverse polish đơn giản đánh từ trái sang phải điều đơn giản nhiều so với việc tính tốn biểu thức chương trình máy tính Ví dụ, biểu thức số học (3 + 4) x5 thể RPN + x Trong thực tế, reverse polish sử dụng phổ biến cách sử dụng cấu trúc Stack Một biểu thức infix chuyển đổi thành biểu thức reverse polish cách sử dụng thuật toán đệ quy Trong khoa học máy tính, phương pháp sử dụng ngơn ngữ lập trình PostScript, Forth, STOIC… 0 2.2 Lí thuyết Basic logic sử dụng bảng chân trị Có tổng cộng phép tốn logic bản: And: a Kí hiệu: & b Giá trị bảng chân trị: P Q P&Q True True True True False False False True False False False False Bảng 1: Bảng chân trị AND Or: a Kí hiệu: | b Giá trị bảng chân trị: P Q P|Q True True True True False True False True True False False False Bảng 2: Bảng chân trị OR Not: a Kí hiệu: ~ b Giá trị bảng chân trị: P ~P True False False True Bảng 3: Bảng chân trị Not 0 Implication: a Kí hiệu: > b Giá trị bảng chân trị: P Q P→Q True True True True False False False True True False False True Bảng 4: Bảng chân trị implication Bi implication: a Kí hiệu: = b Giá trị bảng chân trị: P Q P↔Q True True True True False False False True False False False True Bảng 5: Bảng chân trị bi implication 0 CHƯƠNG – GIẢI THÍCH 3.1 Function Infix2Postfix(Infix): Bước 1: - Tạo function với tên “Infix2Postfix” - Tạo mảng Stack Postfix Bảng 1: Bước Infix2Postfix Bước 2: - Tạo vòng lặp for để đọc biểu thức từ trái sang phải - Quét phép tính Infix - Nếu kí tự phép tính biểu thức ta có trường hợp sau: • Nếu Stack rỗng gán giá trị cho Stack • Kiểm tra độ ưu tiên kí tự xét lớn kí tự vừa vào Stack : + Nếu lớn đưa vào Stack + Cịn khơng đưa giá trị khỏi Stack đưa vào Postfix 0 Bảng 2: Bước Infix2Postfix Bước 3: - Nếu giá trị dấu ngoặc, ta có trường hợp sau: • Nếu ngoặc đóng kiểm tra Stack rỗng hay có giá trị • Đưa đối số trước topSt vào Postfix Stack đẩy hết tất giá trị tìm thấy dấu ngoặc mở dừng lại Nếu khơng tìm thấy dấu ngoặc mở báo lỗi - Nếu giá trị phép tính ta đưa vào Postfix - Sau đọc toàn biểu thức, tất lại Stack đưa đẩy giá trị Postfix theo thứ tự 0 Bảng 3: Bước Infix2Postfix Ví dụ: Biểu thức: ~P|(Q&R)>R Từng bước thuật toán sau: Stack = [~,P] pop = P pop = P~ Stack = [|] Stack1 = [Q] pop = Q Stack1 = [&,R] 0 pop = R pop = & pop = | Stack = [>,R] pop = R pop = > Stack [] Kết trường hợp là: P ~ Q R &| R > 0 3.2 Function Postfix2Truthtable(Postfix): Bước 1: - Thực hàm nhỏ để hỗ trợ việc tính tốn bao gồm: and, or, not, implication, bi implication Bảng 4: Bước Postfix2Truthtable Bước 2: - Tạo mảng: • Mảng WorldLS để xếp biến ban đầu theo bảng cữ • Mảng TrueOrFalse để tạo giá trị theo thứ tự bảng chữ • Mảng Truthtable để in kết • Mảng Stack để tạo bảng chân trị - Tạo vòng lặp for để đọc biểu thức từ trái sang phải Sau xếp bảng chữ danh sách theo thứ tự 0 - Tạo bảng chân trị đưa giá trị vừa xếp vào bảng Bảng 5: Bước Postfix2Truthtable Bước 3: - Gán giá trị mảng Stack vào bảng chân trị - Sau quay lại mảng Stack lặp lại đến hết giá trị mảng - Trả lại Truthtable để kết thúc 0 0 Bảng 6: Bước Postfix2Truthtable - Ta so sánh Postfix để đưa bảng chân trị , từ biết True or False - Sau ta có bảng chân trị theo dạng list trả Truth table 0 CHƯƠNG – KẾT QUẢ TestCase 1: R|(P&Q) Và ta có bảng chân trị là: 0 10 Testcase 2: ~P|(Q&R)>R Và ta có bảng chân trị là: 0 11 Testcase 3: P|(R&Q) Và ta có bảng chân trị là: 0 12 Testcase 4: (P>Q)&(Q>R) Và ta có bảng chân trị là: 0 13 Testcase 5: (P|~Q)>~P=(P|(~Q))>~P Và ta có bảng chân trị là: 0 - Tạo bảng chân trị đưa giá trị vừa xếp vào bảng 0 Bảng 5: Bước Postfix2Truthtable Bước 3: - Gán giá trị mảng Stack vào bảng chân trị - Sau quay lại mảng Stack lặp lại đến hết giá trị mảng - Trả lại Truthtable để kết thúc 0 0 0 ... HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC HÀNH MÔN CẤU TRÚC RỜI RẠC ESSAY DISCRETE STRUCTURES Người hướng dẫn: GV NGUYỄN QUỐC BÌNH Người thực hiện: NGUYỄN TIẾN DŨNG – 52000883 ĐOÀN... giá hoàn thành - Hoàn thành tốt Mức độ 100% - Hoàn thành tốt 100% 1.2 Ý kiến thành viên: - Nguyễn Tiến Dũng: đồng ý với ý kiến - Đoàn Phương Nam: đồng ý với ý kiến Thành viên thứ Thành viên thứ... biểu thức số học (3 + 4) x5 thể RPN + x Trong thực tế, reverse polish sử dụng phổ biến cách sử dụng cấu trúc Stack Một biểu thức infix chuyển đổi thành biểu thức reverse polish cách sử dụng thuật