You are on page 1of 4

BÀI TẬP THỰC HÀNH TRÊN MÁY TÍNH

Môn: Toán rời rạc


Người soạn: Lương Thái Lê
Bộ môn: Khoa học máy tính

Yêu cầu: - Mỗi sinh viên chọn mỗi phần ít nhất hai bài để làm (túc là, tổng cộng mỗi
sinh viên phải làm ít nhất 8 bài).
-Trong tuần thứ 10, nộp 4 bài đầu.
-Trong tuần thứ 14, nộp 4 bài còn lại

Phần 1: Logic cơ sở và một số khái niệm cơ bản


1, Viết chương trình với:
Input: Bảng chân lý của hai mệnh đề p và q
Output: Tìm bảng chân lý của các mệnh đề hội, tuyển, tuyển loại, kéo theo, tương
đương của hai mệnh đề đó.
2, Viết chương trình với:
Input: Hai xâu bit có chiều dài n
Output: Xâu bit sau khi thực hiện các phép toán AND, OR, XOR đối với hai xâu
bit đã cho.
3, Viết chương trình với:
Input: Hai tập con A, B của tập có n phần tử
Output: A , A ∩ B, A ∪ B, A \ B, A ⊕B
4, Viết chương trình với:
Input: Hàm f từ {-n, -n+1,…n-1, n} đến tập số nguyên
Output: Kiểm tra xem f có phải là hàm đơn ánh.
5, Viết chương trình với:
Input: Hàm f từ {1, 2,…, n} vào chính nó
Output: Kiểm tra xem f có phải là hàm toàn ánh.
6,Viết chương trình với:
Input: Hai ma trận 0 – 1 : A, B có cùng cỡ n × n
Output: A ∧ B, A ∨ B
7, Viết chương trình với:
Input: Hai ma trận 0 – 1 : A, B lần lượt có cỡ là n × p và p × m
Output: Tích Bool của A và B.
8, Viết chương trình với:
Input: Ma trận 0 – 1 vuông và số nguyên k
Output: Lũy thừa Bool bậc k của ma trận đó.

Phần 2: Phương pháp đếm


1, Viết chương trình với:
Input: Số nguyên dương n
Output: Các dãy nhị phân độ dài n
2, Viết chương trình với:
Input: Số nguyên dương n
Output: Các hoán vị của tập {1,2,3,…,n} theo thứ tự từ điển
3, Viết chương trình với:
Input: Số nguyên dương n và số nguyên không âm k không vượt quá n
Output: Các chỉnh hợp chập k của tập {1,2,3,…,n} theo thứ tự từ điển
4, Viết chương trình với:
Input: Số nguyên dương n và số nguyên không âm k không vượt quá n
Output: Các tổ hợp chập k của tập {1,2,3,…,n} theo thứ tự từ điển

5, Viết chương trình với:


Input: Số nguyên dương n và số nguyên không âm k
Output: Số chỉnh hợp chập k của n và số tổ hợp chập k của n
6, Viết chương trình với:
Input: Số nguyên dương n và số nguyên không âm k
Output: Số chỉnh hợp lặp chập k của n và số tổ hợp lặp chập k của n
7, Viết chương trình với:
Input: Số nguyên dương n và số nguyên không âm k
Output: Các chỉnh hợp lặp chập k của tập {1,2,3,…,n}
8, Viết chương trình với:
Input: Số nguyên dương n và số nguyên không âm k
Output: Các tổ hợp lặp chập k của tập {1,2,3,…,n}
9, Viết chương trình với:
Input: Số nguyên dương n
Output: Các xâu nhị phân độ dài n không chứa hai số 0 liên tiếp
10, Viết chương trình với:
Input: Hệ thức truy hồi thuần nhất tuyến tính hệ số hằng số bậc hai an = c1an-1 +
c2an-2 và các điều kiện đầu a0 = C, b0 = D. Cho số nguyên dương k.
Output: ak

Phần 3: Quan hệ
1, Viết chương trình với
Input: Quan hệ hai ngôi R trên tập A có n phần tử
Output: Kiểm tra xem R có các tính chất phản xạ, đối xứng, phản đối xứng hay
bắc cầu không?
2, Viết chương trình với
Input: Số nguyên dương n
Output: Các quan hệ hai ngôi trên tập {1,2,…,n}
3, Viết chương trình với
Input: Số nguyên dương n
Output: Các quan hệ phản xạ trên tập {1,2,…,n}
4, Viết chương trình với
Input: Số nguyên dương n
Output: Các quan hệ đối xứng trên tập {1,2,…,n}
5, Viết chương trình với
Input: Quan hệ hai ngôi R trên tập A có n phần tử và số nguyên dương k
Output: Quan hệ Rk
6, Viết chương trình với
Input: Quan hệ R từ tập A đến tập B, và quan hệ S từ tập B đến tập C, với |A| = n,
|B| = p, |C| = m.
Output: Quan hệ SoR
7, Viết chương trình với
Input: Quan hệ hai ngôi R trên tập A có n phần tử
Output: Bao đóng đối xứng của R
8, Viết chương trình với
Input: Quan hệ hai ngôi R trên tập A có n phần tử
Output: Bao đóng phản xạ của R
9, Viết chương trình với
Input: Quan hệ hai ngôi R trên tập A có n phần tử
Output: Bao đóng bắc cầu của R (bằng thuật toán sử dụng tính liên thông của
quan hệ)
10, Viết chương trình với
Input: Quan hệ hai ngôi R trên tập A có n phần tử
Output: Bao đóng bắc cầu của R (bằng thuật toán Warshall)
11, Viết chương trình với
Input: Số nguyên dương n, a, b, c
Output: Các phân hoạch gồm 3 lớp tương đương A, B, C của tập {1,2,…,n},
trong đó: |A| = a, |B| = b, |C| = c
12, Viết chương trình với
Input: Quan hệ thứ tự R trên tập A có n phần tử
Output: Các phần tử cực tiểu, cực đại của A theo quan hệ R

Phần 4: Lý thuyết đồ thị và cây


1, Viết chương trình với
Input: Các cặp đỉnh tương ứng với các cạnh của đồ thị vô hướng
Output: Xác định bậc của mỗi đỉnh
2, Viết chương trình với
Input: Các cặp có thứ tự các đỉnh ứng với các cạnh của đồ thị có hướng.
Output: Xác định bậc_vào và bậc_ra của mỗi đỉnh
3, Viết chương trình với
Input: Danh sách cạnh của một đơn đồ thị
Output: Đồ thị đó có là đồ thị phân đôi không
4, Viết chương trình với
Input: Các cặp đỉnh ứng với các cạnh của đơn đồ thị vô hướng
Output: Ma trận kề của đồ thị
5, Viết chương trình với
Input: Các cặp đỉnh ứng với các cung của đơn đồ thị có hướng
Output: Ma trận kề của đồ thị
6, Viết chương trình với
Input: Ma trận kề của giả đồ thị vô hướng
Output: Liệt kê các cạnh của đồ thị và số lần xuất hiện mỗi cạnh
7, Viết chương trình với
Input: Ma trận kề của giả đồ thị có hướng
Output: Liệt kê các cung của đồ thị và số lần xuất hiện mỗi cung
8, Viết chương trình với
Input: Ma trận kề của đơn đồ thị vô hướng
Output: Đồ thị đó có là cây không
9, Viết chương trình với
Input: Ma trận kề của đơn đồ thị vô hướng liên thông
Output: Cây khung của đồ thị đó bằng kỹ thuật tìm kiếm ưu tiên chiều sâu
10, Viết chương trình với
Input: Ma trận kề của đơn đồ thị vô hướng liên thông
Output: Cây khung của đồ thị đó bằng kỹ thuật tìm kiếm ưu tiên chiều rộng

11, Viết chương trình với


Input: Ma trận kề của đồ thị vô hướng và số nguyên dương n
Output: Tìm số đường đi khác nhau độ dài n giữa hai đỉnh bất kì của đồ thị
12, Viết chương trình với
Input: Ma trận kề của đồ thị có hướng và số nguyên dương n
Output: Tìm số đường đi khác nhau độ dài n giữa hai đỉnh bất kì của đồ thị
13, Viết chương trình với
Input: Ma trận kề của giả đồ thị vô hướng
Output: Đồ thị đó có liên thông không
14, Viết chương trình với
Input: Các cặp đỉnh tương ứng với các cạnh của một đa đồ thị vô hướng
Output: Đồ thị đó có chu trình Euler không, nếu không thì nó có đường đi Euler
không? Hãy xây dựng một chu trình Euler và một đường đi Euler nếu chúng tồn tại
15, Viết chương trình với
Input: Danh sách cạnh và trọng số của chúng trong một đơn đồ thị liên thông có
trọng số, và hai đỉnh phân biệt bất kì của đồ thị này
Output: Đường đi ngắn nhất giữa hai đỉnh đã cho và độ dài đường đi đó bằng
thuật toán Dijkstra.
16, Viết chương trình với
Input: Danh sách cạnh và trọng số của chúng trong một đơn đồ thị liên thông có
trọng số
Output: Tìm cây khung nhỏ nhất của đồ thị đó bằng thuật toán Prim
17, Viết chương trình với
Input: Danh sách cạnh và trọng số của chúng trong một đơn đồ thị liên thông có
trọng số
Output: Tìm cây khung nhỏ nhất của đồ thị đó bằng thuật toán Kruskal

You might also like