Xác định số lượng các đỉnh, số lượng các cạnh, và bậc của các đỉnh trong các đồ thị sau.. Tìm tổng các bậc của các đỉnh trong các đồ thị ở các Bài 2.1, và kiểm chứng rằng nó bằng hai lầ
Trang 1Tài liệu học tập dành cho sinh viên
Khoa CNTT - UEF
Phiên bản 1.0
Trang 3A Bài tập củng cố lý thuyết 4
1Quan hệ và các tính chất của nó 4
2Quan hệ n-ngôi và ứng dụng 4
B Bài tập thực hành trên máy tính 4
C Viết tiểu luận 4
CHƯƠNG 2 ĐỒ THỊ 5
A Bài tập củng cố lý thuyết 5
1Giới thiệu 5
2Các thuật ngữ đồ thị 6
3Biểu diễn các đồ thị và sự đẳng cấu đồ thị 9
4Tính liên thông 10
5Các đường đi Euler và Hamilton 12
6Các bài toán đường đi ngắn nhất 14
B Bài tập thực hành trên máy tính 15
C Viết tiểu luận 16
CHƯƠNG 4 ĐỘ PHỨC TẠP TÍNH TOÁN 16
A Bài tập củng cố lý thuyết 16
1Dãy và phép tính tổng 16
2Độ tăng của hàm 17
3Thuật toán 18
Trang 4LỜI GIẢI
VÀ HƯỚNG DẪN 23
CHƯƠNG 1 QUAN HỆ 24
A Bài tập củng cố lý thuyết 24
1Quan hệ và các tính chất của nó 24
2Quan hệ n-ngôi và ứng dụng 24
B Bài tập thực hành trên máy tính 24
C Viết tiểu luận 24
CHƯƠNG 2 ĐỒ THỊ 25
A Bài tập củng cố lý thuyết 25
1Giới thiệu 25
2Tiêu đề mục 2 26
B Bài tập thực hành trên máy tính 26
C Viết tiểu luận 26
Trang 5PHẦN 1 BÀI TẬP
Trang 6CHƯƠNG 1
QUAN HỆ
A Bài tập củng cố lý thuyết
1 Quan hệ và các tính chất của nó
Bài 1.1 Nội dung
Bài 1.2 Nội dung
…
2 Quan hệ n-ngôi và ứng dụng
Bài 2.1 Nội dung
Bài 2.2 Nội dung
…
B Bài tập thực hành trên máy tính
Bài 1 Nội dung
Bài 2 Nội dung
….
C Viết tiểu luận
Bài 1 Nội dung
Bài 2 Nội dung
….
Trang 7CHƯƠNG 2
ĐỒ THỊ
A Bài tập củng cố lý thuyết
1 Giới thiệu
Bài 1.1 Với mỗi trường hợp sau, vẽ các mô hình đồ thị biểu diễn các
đường bay và nói rõ về loại đồ thị được dùng Trong đó lịch bay mỗi ngày như sau:
- Từ TP.HCM: có một chuyến đến Hà Nội, một chuyến đến Đà Nẵng, một chuyến đến Phú Quốc, một chuyến đến Nghệ An, một chuyến đến Hải Phòng;
- Từ Hà Nội: có hai chuyến đến TP.HCM, một chuyến đến Đà Nẵng, một chuyến đến Nghệ An, một chuyến đến Hải Phòng;
- Từ Đà Nẵng: có một chuyến đến Hải Phòng, hai chuyến bay đến TP.HCM; một chuyến đến Hà Nội;
- Từ Nghệ An: có một chuyến đến Hà Nội, một chuyến đến TP.HCM;
- Từ Hải Phòng: có một chuyến đến Hà Nội, một chuyến đến TP.HCM,
và một chuyến đến Đà Nẵng;
- Từ Phú Quốc: có một chuyến đến TP.HCM
a) Đồ thị biểu diễn các thành phố có chuyến bay giữa chúng
b) Đồ thị biểu diễn số chuyến bay hoạt động giữa các thành phố, cộng với một khuyên biểu thị chuyến du lịch đặc biệt ngắm cảnh thành phố, cất và hạ cánh tại Phú Quốc
c) Đồ thị biểu diễn đầy đủ thông tin về hướng bay và số chuyến bay giữa các thành phố
Bài 1.2 Xác định xem đồ thị nào sau đây là đồ thị đơn, đa đồ thị, đồ thị
có hướng
Trang 8Bài 1.3 Trong trận đấu vòng tròn, đội H thắng đội G, đội C, và đội A;
đội G thắng đội A và đội C; đội C thắng đội A Hãy mô hình hóa kết quả này bằng một đồ thị có hướng
…
2 Các thuật ngữ đồ thị
Bài 2.1 Xác định số lượng các đỉnh, số lượng các cạnh, và bậc của các
đỉnh trong các đồ thị sau Cho biết đỉnh nào là đỉnh cô lập, đỉnh nào là đỉnh treo
a)b
Trang 9Bài 2.2 Tìm tổng các bậc của các đỉnh trong các đồ thị ở các Bài 2.1, và
kiểm chứng rằng nó bằng hai lần số các cạnh trong đồ thị
Bài 2.3 Có thể tồn tại một đồ thị đơn có 15 đỉnh, mỗi đỉnh có bậc bằng 5
không? Tại sao?
Bài 2.4 Trong một buổi chiêu đãi, mọi người đều bắt tay nhau Chứng tỏ
rằng tổng số người được bắt tay là một số chẵn Giả sử không ai tự bắt tay mình
Bài 2.5 Xác định số đỉnh, số cạnh, số bậc vào và số bậc ra của mỗi đỉnh
đối với đồ thị có hướng sau
a
b)b
Trang 10Bài 2.6 Hãy xác định tổng các bậc vào và tổng các bậc ra các đỉnh của
đồ thị trong bài 2.5 một cách trực tiếp Chứng tỏ rằng chúng đều bằng tổng các cạnh của đồ thị
Bài 2.7 Đồ thị sẽ có bao nhiêu cạnh nếu nó có các đỉnh bậc 4, 3, 3, 2, 2
Bài 2.9 Vẽ tất cả các đồ thị con của đồ thị sau.
Bài 2.10 Tìm hợp của các cặp đồ thị đơn sau
a
b
ab
cde
da)
Trang 113 Biểu diễn các đồ thị và sự đẳng cấu đồ thị
Bài 3.1 Dùng danh sách kề biểu diễn các đồ thị sau.
Bài 3.2 Biểu diễn các đồ thị trong bài 3.1 bằng ma trận kề.
Bài 3.3 Vẽ các đồ thị ứng với ma trận kề được cho như sau.
dc
e
e
dg
cb)
Trang 124 Tính liên thông
Bài 4.1 Các danh sách đỉnh sau đây có tạo nên đường đi trong đồ thị
bên dưới hay không? Đường đi nào là đơn? Đường đi nào là chu trình?
Độ dài của các đường đi này là bao nhiêu?
Trang 13Bài 4.2 Các danh sách đỉnh sau đây có tạo nên đường đi trong đồ thị
bên dưới hay không? Đường đi nào là đơn? Đường đi nào là chu trình?
Độ dài của các đường đi này là bao nhiêu?
a) (a, b, e, c, b)
b) (a, d, a, d, a)
c) (a, d, b, e, a)
d) (a, b, e, c, b, d, a)
Bài 4.3 Xác định xem các đồ thị đã cho có liên thông không.
Bài 4.4 Có bao nhiêu thành phần liên thông trong các đồ thị ở các Bài
tập 4.3? Tìm các thành phần liên thông đó
Trang 145 Các đường đi Euler và Hamilton
Bài 5.1 Xác định xem có tồn tại chu trình Euler trong các đồ thị sau hay
không Vẽ chu trình đó khi nó tồn tại
Bài 5.2 Xác định xem các đồ thị trong Bài 5.1 có đường đi Euler không
Vẽ các đường đi đó nếu có
Bài 5.3 Xác định xem có thể vẽ các bức tranh sau bằng một nét liền,
không nhấc bút lên khỏi mặt giấy không?
Bài 5.4 Xác định sự tồn tại chu trình Euler trong các đồ thị có hướng
sau Vẽ các chu trình này nếu chúng tồn tại
Trang 15Bài 5.5 Xác định xem đồ thị có hướng trong Bài 5.4 có đường đi Euler
hay không Vẽ các đường đi Euler này nếu có
Bài 5.6 Xác định đồ thị đã cho có chứa chu trình Hamilton hay không
Nếu có hãy tìm một chu trình như thế Nếu không có hãy giải thích lý do
vì sao không tồn tại
Trang 16Bài 5.7 Đồ thị trong Bài 5.6 có đường đi Hamilton không? Nếu có, hãy
tìm đường đó Nếu không có, cho biết lý do tại sao không tồn tại một đường đi như vậy
6 Các bài toán đường đi ngắn nhất
Bài 6.1 Tìm chiều dài của đường đi ngắn nhất giữa a và z trong đồ thị có
trọng số sau đây
Trang 17Bài 6.2 Tìm độ dài của đường đi ngắn nhất giữa các cặp đỉnh sau đây
trong các đồ thị có trọng số ở Bài 6.1
a) a và d b) a và f c) c và f d) b và z
B Bài tập thực hành trên máy tính
Viết các chương trình với các đầu vào và đầu ra như sau:
Bài 1 Một đồ thị cho trước bởi danh sách kề Xác định bậc các đỉnh của
đồ thị này
Bài 2 Một đồ thị cho trước bởi danh sách kề Xác định xem đồ thị này
có là đồ thị lưỡng phân hay không?
Bài 3 Một đồ thị cho trước bởi danh sách kề Xây dựng ma trận kề mô tả
đồ thị đó
Bài 4 Một đồ thị cho trước bởi ma trận kề Liệt kê các cạnh của đồ thị
này
Trang 18C Viết tiểu luận
Bài 1 Tìm hiểu nguồn gốc và sự phát triển của lý thuyết đồ thị trước thế
kỷ 20
Bài 2 Tìm hiểu một số thuật toán hiện có để xác định tính đẳng cấu của
hai đồ thị, cùng với độ phức tạp tính toán của những thuật toán này Hiện nay, thuật toán nào trong số đó có hiệu quả cao nhất
Bài 3 Tìm hiểu bài toán người đưa thư (travelling salesman problem) Bài 4 Tìm hiểu bài toán tô màu đồ thị (graph coloring).
Bài 1.3 Liệt kê 10 số hạng đầu của các dãy sau:
a) Dãy có được bằng cách bắt đầu từ 10 và các số hạng sau là các số hạng đứng trước trừ đi 3
b) Dãy có số hạng thứ n là tổng của n số nguyên dương đầu tiên
c) Dãy có số hạng thứ n là 3n – 2n
Trang 19các số hạng sau được tạo ra bởi một công thức hay quy luật đơn giản nào
đó
Bài 1.5 Đối với mỗi liệt kê các số nguyên sau đây, hãy tìm một công
thức hay luật đơn giản để tạo ra các số hạng của dãy số nguyên bắt đầu với liệt kê đã cho
Trang 20Bài 2.3 Chứng minh rằng
3
x 2x2x 1
Bài 2.5 Chứng minh rằng x3 là O(x4) nhưng x4 không phải là O(x3)
Bài 2.6 Xác định xem x3 có là O(g(x)) hay không đối với các hàm g sau:a) g(x) = x2 b) g(x) = x3/2
c) g(x) = x2 + x3 d) g(x) = x2 + x4
Bài 2.7 Chứng minh rằng nếu f(x) là O(x) thì f(x) cũng là O(x2)
Bài 2.8 Cho k là một số nguyên dương Chứng minh rằng 1k + 2k + … +
Bài 3.2 Trình bày thuật toán chỉ dùng các lệnh gán để đổi chỗ bộ ba (x,
y, z) thành (y, z, x) Cần dùng tối thiểu bao nhiêu lệnh gán?
Bài 3.3 Liệt kê tất cả các bước cần tiến hành để tìm (nhị phân) số 7
trong dãy số đã sắp tăng 1, 3, 4, 5, 6, 8, 9, 11
Bài 3.4 Trình bày thuật toán tìm số nguyên nhỏ nhất trong một dãy hữu
hạn các số tự nhiên
Trang 21tử nhỏ nhất trong một danh sách hữu hạn các số nguyên, trong đó các số nguyên không nhất thiết phải khác nhau.
Bài 3.6 Trình bày thuật toán tìm cả số lớn nhất lẫn số bé nhất trong dãy
hữu hạn các số nguyên
4 Độ phức tạp của thuật toán
Bài 4.1 Viết thuật toán dùng để xếp bốn số hạng đầu của một danh sách
có độ dài tuỳ ý theo thứ tự tăng dần Chứng minh rằng thuật toán này có
độ phức tạp thời gian là O(1), được tính thông qua số lượng các phép so sánh được sử dụng
Bài 4.2 Xác định số lượng phép nhân được dùng để tính x bắt đầu với 2 k
x rồi bình phương liên tiếp (để tìm x2, x4, …) Cách này có hiệu quả hơn cách nhân x với chính nó một số lần thích hợp hay không?
Bài 4.3 a) Chứng tỏ thuật toán sau có khả năng xác định số lượng bit 1
trong xâu bit S
Procedure đếm_bit(S: xâu_bit)
end {count sẽ là số lượng các bit 1 trong S}
Các phép toán của dòng lệnh S := S AND (S – 1) đều là phép toán bit.b) Cần phải thực hiện bao nhiêu phép AND bit để tìm số lượng bit 1 trong một xâu bit có độ dài bằng n
Bài 4.4 Phương pháp Horner dùng để tính giá trị đa thức anxn + an-1xn-1 +
… + a1x + a0 tại x = c như sau:
Procedure Horner(c, a0, a1, …, an: những số thực)
Trang 22y := y*c + an-i
{y = ancn + an-1cn-1 + … + a1c + a0}
a) Tính giá trị 3x2 + x + 1 tại x = 2 bằng cách thực hiện từng bước thuật toán trên
b) Có chính xác bao nhiêu phép nhân và phép cộng được thuật toán đó
sử dụng để tính giá trị một đa thức bậc n ở x = c? (không kể các phép cộng được dùng để tăng biến vòng lặp.)
Bài 4.5 Một thuật toán sẽ mất bao nhiêu thời gian để giải một bài toán
có kích thước n, nếu thuật toán đó dùng 2n2 + 2n phép tính bit, mỗi phép mất 10-9 giây, với các giá trị của n như sau:
a) 10 b) 20 c) 50 d) 100
Bài 4.6 Xác định số lượng phép so sánh ít nhất (hay hiệu năng trong
trường hợp tốt nhất)
a) cần thiết để xác định số lớn nhất trong một dãy số nguyên
b) được dùng để xác định vị trí một phần tử trong dãy có n số hạng khi dùng thuật toán tìm kiếm nhị phân
5 Các kỹ thuật thiết kế thuật toán
Bài 5.1 Đưa ra một thuật toán đệ quy để tính tổng của n số nguyên
dương đầu tiên
Bài 5.2 Đưa ra một thuật toán đệ quy để tìm số lớn nhất của tập hữu hạn
các số nguyên
Bài 5.3 Đưa ra thuật toán đệ quy để tìm a trong đó a là một số thực và 2 n
n là một số nguyên dương (Gợi ý: Dùng đẳng thức n 1 n 2
a a )
Bài 5.4 Thành lập một thuật toán đệ quy để tìm số hạng thứ n của dãy
được định nghĩa: a0 = 1, a1 = 2, a2 = 3, và an = an-1 + an-2 + an-3 với n = 3, 4,
5, …
6 Độ phức tạp thuật toán qua các ví dụ
Bài 6.1 Nhân (1110)2 với (1010)2 bằng thuật toán nhân nhanh Karatsuba
Bài 6.2 Tính thời gian thực hiện của các đoạn chương trình sau:
Trang 23B Bài tập thực hành trên máy tính
Viết các chương trình với các đầu vào và đầu ra như sau:
Bài 1 Cho a, r và n là các số nguyên không âm Tìm tổng của cấp số
nhân a, ar, ar2, …, arn
Bài 2 Nhập một xâu ký tự Xuất ra nghịch đảo của nó.
Bài 3 Cho trước một số thực a và số nguyên không âm n Dùng đệ quy
tính an
Bài 4 Cho hai số nguyên không đồng thời bằng không Tìm ước chung
nhỏ nhất của chúng bằng phép đệ quy
Bài 5 Cho một danh sách các số nguyên và một phần tử x, xác định vị
trí x trong danh sách bằng cách cài đặt đệ quy thuật toán tìm kiếm nhị phân
Bài 6 Cho trước một số nguyên không âm n Dùng phương pháp đệ quy
Trang 24C Viết tiểu luận
Bài 1 Trình bày khái niệm gốc của khái niệm O Giải thích về cách mà
tác giả và những người khác đã dùng khái niệm này
….
Trang 25PHẦN 2 LỜI GIẢI
VÀ HƯỚNG DẪN
Trang 26CHƯƠNG 1
QUAN HỆ
A Bài tập củng cố lý thuyết
1 Quan hệ và các tính chất của nó
Bài 1.1 Nội dung
Bài 1.2 Nội dung
…
2 Quan hệ n-ngôi và ứng dụng
Bài 2.1 Nội dung
Bài 2.2 Nội dung
…
B Bài tập thực hành trên máy tính
Bài 1 Nội dung
Bài 2 Nội dung
….
C Viết tiểu luận
Bài 1 Nội dung
Bài 2 Nội dung
….
Trang 28Bài 1.2 Nội dung
…
2 Tiêu đề mục 2
Bài 2.1 Nội dung
Bài 2.2 Nội dung
…
B Bài tập thực hành trên máy tính
Bài 1 Nội dung
Bài 2 Nội dung
….
C Viết tiểu luận
Bài 1 Nội dung
Bài 2 Nội dung