TRƯỜNG ĐẠI HỌC GTVT TP HỒ CHÍ MINH
BÀI THUYẾT TRÌNH
CHƯƠNG 4: LÝ THUYẾT LIÊN QUAN ĐẾN CÁC
BÀI TẬP CHƯƠNG 4
Sinh viên thực hiện: Nguyễn Duy Quốc Thái
Nguyễn Thanh Lưu
Giáo viên hướng dẫn: TS. Phan Văn Đức
TP. Hồ Chí Minh, Ngày 16 tháng 03 năm 2023
NỘI DUNG THUYẾT TRÌNH
1
2
LÝ THUYẾT CHƯƠNG 4
BÀI TẬP 1
3
BÀI TẬP 2
4
BÀI TẬP 3
1. LÝ THUYẾT CHƯƠNG 4
1.1. BIỂU DIỄN CẤU TRÚC DANH SÁCH
Danh sách là kiểu cấu trúc dữ liệu được sử dụng rộng rãi trong các ngơn ngữ lập trình phi số.
•
Một danh sách là 1 dãy bất kỳ các đối tượng, khác với kiểu dữ liệu tập hợp, các dữ liệu của danh sách
có thể trùng nhau
•
(xuất hiện nhiều lần) và mỗi vị trí của đối tượng đều có ý nghĩa.
•
Danh sách là kiểu diễn đạt ngắn gọn của hàm trong Prolog. Hàm tử của danh sách là dấu “.”
•
Prolog quy ước đặt dãy các phần tử của danh sách giữa các cặp móc vng.
VD: .(a,.(b,[])). Là danh sách [a,b].
1. LÝ THUYẾT CHƯƠNG 4
1.1. BIỂU DIỄN CẤU TRÚC DANH SÁCH
Nếu danh sách rỗng, nó được viết dưới dạng một nguyên tử []
Nếu danh sách khác rỗng, có thể xem nó được cấu trúc từ 2 thành phần là phần đầu (head) và phần đuôi
(tail)
Trong VD này: đầu là anne, đuôi là danh sách [ tennis, tom, skier ]
Tail là 1 danh sách nên tail có thể rỗng hoặc có thể cấu tạo từ 1 đầu head và 1 đuôi tail khác.
1. LÝ THUYẾT CHƯƠNG 4
1.1. BIỂU DIỄN CẤU TRÚC DANH SÁCH
Để biểu diễn1 danh sách được tạo bằng đầu head và đuôi tail, prolog sử dụng split “|” để phân
tách phần đầu và phần đuôi như sau:
1. LÝ THUYẾT CHƯƠNG 4
1.1. BIỂU DIỄN CẤU TRÚC DANH SÁCH
Một số cách viết danh sách
1. LÝ THUYẾT CHƯƠNG 4
1.1. MỘT SỐ VỊ TỪ XỬ LÝ TRONG PROLOG
1. LÝ THUYẾT CHƯƠNG 4
1.3. Các thao tác cơ bản trên danh sách
a) Kiểm tra 1 số phần tử có mặt trong danh sách
Vậy:
1. LÝ THUYẾT CHƯƠNG 4
1.3. Các thao tác cơ bản trên danh sách
b) Ghép hai danh sách
1. LÝ THUYẾT CHƯƠNG 4
1.3. Các thao tác cơ bản trên danh sách
C) Bổ sung phần tử vào danh sách
1. LÝ THUYẾT CHƯƠNG 4
1.3. Các thao tác cơ bản trên danh sách
d) Loại bỏ 1 phần tử khỏi danh sách
1. LÝ THUYẾT CHƯƠNG 4
1.3. Các thao tác cơ bản trên danh sách
e) Danh sách con
1. LÝ THUYẾT CHƯƠNG 4
1.3. Các thao tác cơ bản trên danh sách
f) Hoán vị
1. BÀI TẬP 1
1.1. ĐỀ BÀI
1.2. LÝ THUYẾT VÀ LỜI GIẢI
Cho danh sách L:
? - L=[ a, b, c, d, e, f ],
append (L1, [ d, e, f ], L)
L1 = [ a, b, c ]
1. BÀI TẬP 1
1.1. ĐỀ BÀI
1.2. LÝ THUYẾT VÀ LỜI GIẢI
Cho danh sách L:
? - L=[ a, b, c, d, e, f ], append (L1, [ d, e, f ], L)
L1 = [ a, b, c ]
2. BÀI TẬP 2
2.1. ĐỀ BÀI
2.2. LÝ THUYẾT VÀ LỜI GIẢI
L = [1, 2, 3, 4, 5, 6, a, b, c]
L2 =[4, 5, 6]
? - L = [1, 2, 3, 4, 5, 6, a, b, c],
append ( L3, [ a, b, c], L ).
L3 = [ 1, 2, 3, 4, 5, 6]
append ( L2, [ 1, 2, 3], L3 ).
L2 = [ 4, 5, 6]
3. BÀI TẬP 3
3.1. ĐỀ BÀI
3.2. LÝ THUYẾT VÀ LỜI GIẢI
Last_element ( Object, List)
Mệnh đề 1: Last _element (Object, [ Head | List ] ) : - member (Object, List).
Mệnh đề 2: Last_element ( Object, List) : - append ( _, [Object] _, List).
Ví dụ:
?- reverse( [ a, b, c , d, e, f ] , L).
L = [f, e, d, c, b, a]
Yes
THANKS FOR WATCHING