Tải bản đầy đủ (.doc) (27 trang)

Bài tập thảo luận môn toán rời rạc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (646.34 KB, 27 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
BÀI TẬP THẢO LUẬN MÔN HỌC
TOÁN HỌC RỜI RẠC
Số tín chỉ : 03
Hệ: Đại học chính qui
Ngành: Nhóm ngành Công nghệ thông tin
Khoa : Công nghệ thông tin
Nhóm giảng viên biên soạn :
1. ThS Nguyễn Hiền Trinh
2. ThS Ngô Thúy Ngân
3. ThS Nguyễn Thu Huyền
4. ThS Đào Thị Thu
5. KS Nguyễn Thị Thanh Tâm
Đơn vị : Bộ môn Khoa học máy tính
Năm : 2012
1
MỤC LỤC
STT Nội dung Trang
1
Thảo luận 1: Cấu trúc tập hợp, Đại số mệnh đề
3
2 Thảo luận 2: Qui tắc suy luận, các phương pháp chứng minh
toán học
6
3 Thảo luận 3: Thuật toán, cách biểu diễn, thuật toán đệ qui,
thuật toán quay lui
9
4 Thảo luận 4: Kỹ thuật đếm cơ bản & cao cấp 16
5 Thảo luận 5:Khái niệm cơ bản về đồ thị, các đồ thị đặc biệt 20
6 Thảo luận 6: Thuật toán tìm đường đi ngắn nhất, xây dựng
cây khung ngắn nhất trên đồ thị, bài toán luồng cực đại trên


mạng
22
7 Tài liệu tham khảo 26
2
Thảo luận 1
Cấu trúc tập hợp, Đại số mệnh đề
1.1 Tổng hợp kiến thức về cấu trúc tập hợp, đại số mệnh đề
1.2 Bài tập về tập hợp, các phép toán trên tập hợp, quan hệ
Bài 1 : Cho P(x) và Q(x) là các đa thức. Gọi A là tập các nghiệm của phương trình P(x)=0, B là
tập các nghiệm của phương trình Q(x)=0. Hãy biểu diễn mối quan hệ qua tập A, B tập nghiệm của
các phương trình sau:
a/ P(x).Q(x)=0 b/ P(x)+ Q(x) =0
c/
0
)(
)(
=
xQ
xP
Bài 2: Cho A={-2. -1, 0, 1, 4} ; B={ 0, 1, 2}. Hãy xác định các tập sau đây:
a/ {(x, y) ∈ A x B x<y } c/ {(x, y) ∈ A x B y là ước của x }
b/ {(x, y) ∈ A x B x
2
≤ y
2
} d/ {(x, y) ∈ A x B xy=0 }
Bài 3: Trên tập Z xét tính chất của các quan hệ sau:
a/ a R b nếu a+b lẻ
b/ a R b nếu a + b chẵn
Bài 4: Trên tập R các số thực, xét quan hệ xTy nếu |x| = |y|

a/ Chứng minh T là quan hệ tương đương trên R
b/ Xác định lớp tương đương [a], a ∈ R
Bài 5: Trên R xét 2 quan hệ
xSy nếu x
3
≤ y
3
xTy nếu x
2
≤ y
2
Chứng minh rằng T là quan hệ thứ tự toàn phần trên R ; T không phải là quan hệ thứ tự trên R
1.3 Bài tập về logic mệnh đề và các dạng chuẩn tắc, tân từ và vị từ
Bài 6: Tìm chính tắc hội của biểu thức sau:
( )
( )
( )
( ) ( )
yxzxyxzxzyxE ∨∧∧⇔→∧∨=,,
( )( )( )
zzyxzyyxxzzyyx ∨∨∨∨∨∨⇔
( )( )( )( )( )( )( )
zyxzyxzyxzyxzyxzyxzyx ∨∨∨∨∨∨∨∨∨∨∨∨∨∨⇔
( )( )( )( )
zyxzyxzyxzyx ∨∨∨∨∨∨∨∨
3
( )( )( )( )( )( )
zyxzyxzyxzyxzyxzyx ∨∨∨∨∨∨∨∨∨∨∨∨⇔
Bài 7: Tìm chính tắc tuyển của biểu thức :
( ) ( )

( ) ( ) ( )
(
)
tzyxyxtzyxtzyxE ∨∧∨∧∨⇔→∧↔=,,,
( ) ( )
( )
( ) ( )
( )
( )
tzyytzxytzyxtzxxtzyxyx ∧∧∧∨∧∧∧∨∧∧∧∨∧∧∧⇔∧∧∨∧∨⇔

( )
( )
tzyxtzyx ∧∧∧∨∧∧∧⇔
Bài 8: Tìm chính tắc tuyển của biểu thức:
( )
( )
yzyx →∨∧

( ) ( )
yzyx ∨∧∨

( ) ( )
yyxzyx ∧∨∨∧∨

yyyxzyzx ∨∨∨

yxzyzx ∨∨

( ) ( ) ( )

zzyxzyxxzyyx ∨∨∨∨∨

zyxyzxzyxzyxzyxzyx ∨∨∨∨∨

yzxzyxzyxzyx ∨∨∨
Bài 9: Liệt kê các phần tử của các tập sau:
a/ A={ x ∈ R  (x-1)(2x
2
+ 3x + 1)=0}
b/ B={ x ∈ N  x là ước của 24}
Bài 10:Phát biểu nào sau đây là mệnh đề trong Logic mệnh đề:
a. 5 không phải là số nguyên tố
b. Tam giác đều là tam giác có các cạnh bằng nhau
c. 1 + 1 = 0
d. Phương trình 5x+4=0 có nghiệm bằng bao nhiêu?
e. 6 là số chia hết cho 2 và 3
Bài 11: Kiểm tra 3 lô hàng. Ký hiệu p
i
là mệnh đề: ”Lô hàng i đạt yêu cầu” i=1,2,3. Sử dụng p
i

các phép toán mệnh đề hãy biểu diễn các mệnh đề:
a. Lô hàng 1 và lô hàng 2 đạt yêu cầu
b. Không lô hàng nào đạt yêu cầu
c. Có ít nhất một lô hàng đạt yêu cầu
Bài 12: Chứng minh các đẳng thức sau:
a.
)()( rpqrqp →→⇔→→
b.
rqprqp →∧⇔→→ )(

c.
rqprpqp ∧→⇔→∧→ )()(
d.
qpqp ∧∨∧ ()((
))
p∧
0⇔
4
Bài 13:
a/Tìm miềm đúng của các hàm mệnh đề xác định trên R:
a1. 2x+1>3 a2. 5x
2
– 4x-1 ≤ 0
a3. 3x
2
+ 5x + 10 >0 a4. x
2
+3x +4 ≤ 0
a5. (∃x!) (x>2)
b/ (∃x!) P(x) là kí hiệu cho mệnh đề:’ Tồn tại duy nhất một x sao cho P(x) là đúng. Hãy xác định
giá trị chân lý cho mệnh đề sau trên R:
b1/ (∃x!) x
3
=1 b2/ (∃x!) (x
2
-3x+2=0)
Bài 14: Cho biểu thức: E=
),(( yxPx ¬∀
),( yxyQ∃→
Hãy biến đổi tương đương để đưa biểu thức trên về dạng: Không có các dấu tương đương; không có

các dấu kéo theo; không kể các dấu lượng từ thì nó là tuyển của các thành phần mà mỗi thành phần
này lại là hội của các biểu thức không chứa các dấu tuyển và hội.
Bài 15: Cho biểu thức E=
))()(())()(( xxFxxRxxQxxP ∃∨∃¬→∀∧∀
Thực hiện các phép biến đổi tương đương sau đối với E:
1. Khử phép kéo theo
2. Đưa phép phủ định về trực tiếp liên quan tới các vị từ P, Q, R, F
3. Đưa các lượng từ lên trước biểu thức
5
Thảo luận 2
Qui tắc suy luận, các phương pháp chứng minh toán học
2.1 Tổng hợp kiến thức về qui tắc lập luận, các phương pháp chứng minh toán học, các vấn đề
liên quan đại số Bool.
2.2Bài tập về các quy tắc suy diễn, chứng minh toán học.
Bài 1: Chứng minh qui tắc suy luận
rp
rqqp

→→ ,
Cách 1: Lập bảng giá trị chân lý
p q r
p→q q→r p→r
0 0 0 1 1 1
0 0 1 1 1 1
0 1 0 1 0 1
0 1 1 1 1 1
1 0 0 0 1 0
1 0 1 0 1 1
1 1 0 1 0 0
1 1 1 1 1 1

Nhìn vào bảng giá trị chân lý ta thấy có 4 bộ giá trị của p,q, r làm cho p→q và q→r đồng thời nhận
giá trị 1 thì
rp →
cũng nhận giá trị 1, do đó theo định nghĩa ta có qui tắc suy luận
rp
rqqp

→→ ,
Cách 2: Để chứng minh qui tắc suy luận
rp
rqqp

→→ ,
ta cần chứng minh
1)())()(( ≡→→→∧→ rprqqp
( hằng đúng)
Thực vậy:
rrqpqprprqqprprqqp ∨∧∨∨∧⇔∨∨∨∨∨⇔→→→∧→ )()()()()())()((

11 ⇔∨∨⇔∨∨∨ rprpqq
(ĐPCM)
Bài 2: Chứng minh các qui tắc suy luận sau:
1/
rp
rqqp

→→ ,
2/
qp
pqqp


→→ ,
3/
rqp
rqrp
→∨
→→ ,
4/
rqp
rpqp
∧→
→→ ,
5/
rp
rqp

→∨
6/
q
qpqp →→ ,
Bài 3: Chứng minh rằng S
n
= 1 + 3 + 5 + + (2n-1) = n
2
với mọi số tự nhiên n ≥1
Chứng minh:
6
1. Khi n=1, ta có S
1
=1=1

2
hay S
1
là đúng
2. Giả sử khẳng định đúng với n=k>1, ∀k∈Z
+
Nghĩa là ta có: S
k
= 1 + 3 + +(2k-1)=k
2
Xét S
k+1
=1 + 3 + +(2k-1) + (2k+1) = k
2
+2k+1=(k+1)
2
tức là khẳng định đúng với n=k+1.
Kết luận: S
n
= 1 + 3 + 5 + + (2n-1) = n
2
với mọi số tự nhiên n ≥1
Bài 4: Hãy chứng minh rằng:
a/ 7
n
–1 chia hết cho 6 với ∀n=1,2,
b/ 1
2
–2
2

+3
2
- + (-1)
n+1
n
2
= (-1)
n+1
n(n+1)/2 với ∀n≥1, n

N
c/
1
1
+n

)2 (6.4.2
)12 (5.3.1
n
n −
với ∀n=1,2,
d/ 1
3
+ 2
3
+ + n
3
= (1+2+ +n)
2
=

2
2
)1(






+nn
với
*
Nn∈∀
e/ Chứng minh luật Demorgan ở dạng tổng quát với n=2,3
2.3 Bài tập về các phép toán trên đại số Bool, cực tiểu hóa hàm Bool
Bài 5: Dùng bảng Karnaugh cực tiểu hóa các hàm Bool sau (Thiết kế mạch tối thiểu biểu diễn hàm
Bool vừa tìm được)
1/ f =x y
2/ f =x y+
x

y
3/ f =
yxyx +
4/ f = xy + x
yxyxy ++
5/ f = xy
z
+
zyxyzxzyx ++

6/ f =
zyxzyxyzxzyxzyx ++++

7/ f = xyz +
zyxzyxyzxzyxzyxzxy +++++
8/ f =
zyxwyzxwzyxwzyxwzyxwyzxwzywxzwxywxyz ++++++++
Bài 6: Dùng thủ tục Quine-Cluskey cực tiểu hóa các hàm Bool sau (Thiết kế mạch tối thiểu biểu
diễn hàm Bool vừa tìm được)
1/ f =
zyxyzxzyxzxy +++

2/ f =
zyxyzx +
zyxzyxxyz +++
3/ f =
zyxyzxzxyxyz +++
4/ f =
zyxyzxzyxzyxzxy ++++
7
5/ f =
tzyxwtzyxwtzyxwztyxwtyzxwyztxwtzxywztyxw +++++++
8
Thảo luận 3
Thuật toán, cách biểu diễn, thuật toán đệ qui, thuật toán quay lui
3.1 Tổng hợp kiến thức về khái niệm thuật toán, các phương pháp biểu diễn thuật toán. Các
thuật toán đệ qui, quay lui.
3.2 Bài tập về thuật toán, thuật toán đệ qui, quay lui
Bài 1: Cho 2 số tự nhiên a, b. Tìm ước số chung lớn nhất của chúng.
Xác định bài toán:

A. Xác định thông tin vào: 2 số tự nhiên a, b
B. Xác định thông tin ra: Số tự nhiên d thõa mãn: d là ước của a và d là ước của b; d lớn nhất trong
tập các ước chung của a và b.
Xác định các thao tác xử lý thông tin: Xây dựng một dãy hữu hạn các thao tác cho phép tính được d
từ a và b. Ví dụ a=16 b=24 d=8
Bài 2: Cho một dãy số nguyên dương a
1
, a
2
, , a
n
. Hãy tìm từ dãy trên phần tử có giá trị là lớn
nhất.
Xác định bài toán:
A. Xác định thông tin vào:
+Một dãy số nguyên dương a
1
, a
2
, , a
n
+ Mỗi số được xác định bởi 2 yếu tố là giá trị của số và vị trí (số thứ tự) của số đó trong dãy.
B. Xác định thông tin ra:
+ Một phần tử lấy từ dãy số đã cho: a
k
Phần tử này phải tính chất: Có giá trị lớn nhất trong dãy
Xác định các thao tác xử lý thông tin:
1. Gán giá trị max tạm thời
2.Lần lượt duyệt các phần tử của dãy đã cho và so sánh giá trị của max tạm thời với các các
phần tử được xét.

1. Phải quyết định xem tại mỗi bước duyệt và so sánh giá trị nào là lớn hơn để chọn.
Bài 3: Tìm USCLN của 2 số tự nhiên a, b.
Input : Hai số tự nhiên a, b
Outputt: Số tự nhiên d là ước của a và d là ước của b; d lớn nhất trong tập các ước chung của a và
b.
Thuật toán giả mã:
Begin
9
1. Read(a,b)
2. While a<>b Do
if a>b then a:=a-b
Else b:=b-a
3.d:=a
4. Write(d)
End;
Hoặc có thể xây dựng thành thủ tục sau:
Function USCLN1(a,b:word):word;
Begin
While a<>b Do
If a> b then a:= a-b
Else b:=b-a;
USCLN:=a;
End;
Function USCLN2(a,b:word):word;
Var r: word;
Begin
While b<>0 Do
Begin
r:= a mod b;
a:= b; b:= r;

End;
USCLN:=a;
End;
10
Bài 4: Lập sơ đồ khối biểu diễn thuật toán tìm USCLN của 2 số tự nhiên a, b
0
1
1 0
Lưu đồ thuật toán tìm ước số chung lớn nhất của 2 số a,b.
11
Begin
a, b
a<>
b
a>
b
a:=a-b
b:=b-a
USCLN là a
End
Bài 5: Hãy liệt kê tất cả các dãy nhị phân độ dài n
Giả sử dãy nhị phân có độ dài n là một véc tơ nhị phân gồm n thành phần (a
1
, a
2
, ,a
n
) trong
đó a
i

∈ {0, 1}. Cần xây dựng thành phần thứ i của cấu hình tức là xây dựng a
i
(a
i
∈ {0, 1})
• a
i
có tập giá trị đề cử là {0, 1}
• a
i
có điều kiện chấp nhận: Không có điều kiện chấp nhận
Thủ tục quay lui xây dựng thành phần a
i
Procedure Try(i: integer);
Var j: integer;
Begin
For j: = 0 to 1 do
Begin
a[i]: = j;
If i = n then ghi nhận
else Try (i+1);
End;
End;
Trong thủ tục trên cần xây dựng thêm các thủ tục: ghi nhận, khởi tạo. Chương trình liệt kê
dãy nhị phân
Program Daynhiphan;
Uses crt;
var n,d:integer;
a:array[1 20] of integer;
procedure KHOITAO;

begin
write('nhap do dai day nhi phan n= ');
readln(n);
d:=0;
end;
procedure GHINHAN;
var i:integer;
begin
12
d:=d+1; write('day nhi phan thu',d:3,': ');
for i:=1 to n do write(a[i]:2);writeln;
end;
procedure TRY(i:integer);
var j:integer;
begin
for j:=0 to 1 do
begin
a[i]:=j;
if i=n then GHINHAN else Try(i+1);
end;
end;
BEGIN
khoitao;
Try(1);
readln;
END.
Bài 6: Liệt kê tất cả các hoán vị của tập n số tự nhiên đầu tiên {1, 2, , n}
Gọi hoán vị của tập A = {1, 2, , n} là một bộ gồm n thành phần (a
1
, a

2
, ,a
n
) trong đó a
i
∈ A,
i = 1,2, ,n và a
i
, a
j
đôi một khác nhau. Ta đi xây dựng thành phần thứ i của cấu hình a
i

• a
i
có tập giá trị đề cử là 1, 2,…,n
• a
i
có điều kiện chấp nhận: Giá trị chưa được dùng và để kiểm soát người ta dùng
mảng logic b: array[1 n] of Boolean;
- Nếu b[j] = True thì j chưa dùng
- Nếu b[j] = False thì j đã được dùng
Với mỗi giá trị đề cử j nếu b[j] = True thì j được chấp nhận và ta đi xác định a
i
theo j và sau
đó đặt b[j] = False (để xác định rằng j đã được dùng rồi)
Thủ tục quay lui xây dựng thành phần thứ i của cấu hình
Procedure Try(i: integer);
Var j: integer;
Begin

For j: = 1 to n do
13
If b[j] then {chấp nhận j}
Begin
a[i]: = j; {xác định a[i] theo j}
b[j]: = False; {ghi nhận trạng thái mới}
If i = n then ghi nhận
Else Try (i+1); {xây dựng thành phần thứ i + 1}
b[j]: = True; {trả lại trạng thái cũ}
End;
End;
Chương trình liệt kê các hoán vị
program hoanvi;
uses crt;
var
n,d:integer;
a:array[1 20] of integer;
b:array[1 20] of boolean;
procedure KHOITAO;
var i:integer;
begin
write('n=');readln(n);
for i:=1 to n do b[i]:=true;
d:=0;
end;
procedure GHINHAN;
var i:integer;
begin
d:=d+1;
write('Hoan vi thu',d:3,':');

for i:=1 to n do write(a[i]:3);
writeln;
end;
procedure Try(i:integer);
var j:integer;
14
begin
for j:=1 to n do
if b[j]= true then {chap nhan j}
begin
a[i]:=j; {xac dinh a[i] theo j}
b[j]:=false; {ghi nhan trang thai moi}
if i=n then GHINHAN else Try(i+1);
b[j]:=true; {tra lai trang thai cu}
end;
end;
BEGIN
khoitao;Try(1);
readln;
END.
15
Thảo luận 4
Kỹ thuật đếm cơ bản & cao cấp
4.1 Tổng hợp kiến thức về các kỹ thuật đếm cơ bản và cao cấp.
4.2 Bài tập về các nguyên lý đếm
Bài 1:(Lý thuyết Ramsay–giải quyết các bài toán phân chia các tập con của một tập các phần tử).
Giả sử trong nhóm 6 người mỗi cặp hai hoặc là bạn hoặc là thù. Chứng tỏ rằng trong nhóm
có ba người là bạn lẫn nhau hoặc có ba người là kẻ thù lẫn nhau.
Giải: Gọi A là một trong 6 người. Trong số 5 người của nhóm hoặc là có ít nhất 3 người là bạn của
A hoặc có ít nhất 3 người là thù của A ( Vì theo nguyên lý Dirrichlet

 
3/5
=3). Trong trường hợp
đầu ta gọi B, C, D là bạn của A. Nếu trong 3 người này có 2 người là bạn thì họ cùng với A lập
thành một bộ ba người bạn lẫn nhau, ngược lại nếu trong ba người B, C, D không có ai là bạn ai cả
thì chứng tỏ họ là bộ ba người thù lẫn nhau.
Bài 2: Có bao nhiêu xâu nhị phân độ dài là 8 hoặc là bắt đầu bởi 00 hoặc là kết thúc bởi 11?
Giải: Dễ thấy số xâu nhị phân độ dài 8 bắt đầu bởi 00 là 2
6
= 64 và số xâu nhị phân độ dài 8 kết
thúc bởi 11 là 2
6
= 64. Ngoài ra số xâu nhị phân độ dài 8 bắt đầu bởi 00 và kết thúc bởi 11 là 2
4

=
16. Vậy số xâu nhị phân hoặc bắt đầu bởi 00 hoặc kết thúc bởi 11 là: 64 + 64 – 16 = 112.
Bài 3: Biết rằng có 100 sinh viên học tiếng Anh, 70 học sinh học tiếng Nga, và 50 học sinh học
tiếng Pháp, 40 học sinh học cả tiếng Anh và tiếng Nga, 20 học sinh học cả tiếng Anh và tiếng Pháp,
12 học sinh hoạc cả tiếng Pháp và tiếng Nga. Néu tất cả 500 sinh viên đều theo học ít nhất một
ngoại ngữ, thì có bao nhiêu sinh viên học cả ba thứ tiếng?
Giải: Gọi A là tập các sinh viên học tiếng Anh, B là tập các sinh viên học tiếng Nga, C là tập các
sinh viên học tiếng Pháp. Khi đó số sinh viên theo học cả ba thứ tiếng sẽ là N(A

B

C)
Theo nguyên lý bù trừ ta có
N(A


B

C) = N(A) + N(B) + N(C) - N(A

B) - N(A

C) - N(B

C) + N(A

B

C )
mà N(A) = 100 , N(B) = 70 , N(C) = 50 , N(A

B) =40 , N(A

C) =20
N(B

C) = 12 , N(A

B

C) =500
Suy ra N(A

B

C )= 500 – 100 – 70 -50 +40 + 20 + 12 = 352

Lưu ý: Nếu ta đồng nhất tập A
k
với tính chất A
k
cho trên một tập X nào đó và đếm xem có
bao nhiêu phần tử của X không thõa mãn bất cứ một tính chất A
k
nào cả?
Ký hiệu
N
là số phần tử cần đếm, N là số phần tử của X, ta có:

N
= N - N(A
1

A
2




A
m
) = N - N
1
+ N
2
+(-1)
m

N
m
( nguyên lý bù trừ)
Trong đó N
k
là tổng các phần tử của X thoả mãn k tính chất lấy từ m tính chất đã cho
16
Bài 4: Hỏi trong tập X = {1, 2, …, 10000} có bao nhiêu số không chia hết cho bất cứ số nào trong
các số 3,4,7?
Giải: Gọi A
i
= {xє X x chia hết cho i}, i = 3, 4, 7
Khi đó A
3

A
4

A
7
là các số trong X chia hết cho ít nhất một trong 3 số 3, 4, 7.
Vậy theo nguyên lý bù trừ, số lượng các số cần đếm sẽ là:
N(X) – N(A
3

A
4

A
7

) = N(X) – N
1
+ N
2
– N
3
Trong đó:
N
1
= N(A
3
) + N(A
4
) + N(A
7
)
= [10000/3] + [10000/4] + [10000/7]
= 3333+ 2500 + 1428 = 7261
N
2
= N(A
3

A
4
) + N(A
3


A

7
) + N(A
4


A
7
)
= [10000/(3.4)] + [10000/(3.7)] + [10000/(4.7)]
= 833 + 476 + 357 = 1666
N
3
= N(A
3

A
4

A
7
) = [10000/(3.4.7)] = 119
(ở đây kí hiệu [r] để chỉ số nguyên lớn nhất không vượt quá r)
Vậy số lượng các số cần đếm là: 10000 – 7261 + 1666 – 119 = 4286.
Bài 5: Nhập vào một chuỗi ký tự S. Xuất ra màn hình tất cả các hoán vị khác nhau của các ký tự
trong chuỗi S (Các ký tự trong S không nhất thiết khác nhau)
Program hoanvilap;
uses crt;
Var s:string;
KT:Array[1 255] of Boolean;
B:Array[1 255] of Char;

n:byte;
dem:longint;
Function OK(k:byte):boolean;
Var j:byte;
Begin
OK:=False;
For j:=1 to k-1 do
if (S[k] = S[j]) and (not KT[j]) then Exit;
OK:=True;
end;
17
Procedure Ghinhan;
Var i:Byte;
Begin
Inc(dem);
write('Hoan vi thu ',dem,'.');
For i:=1 to n do write(B[i]);
Writeln;
end;
Procedure Try(i:byte);
Var j:byte;
Begin
For j:=1 to n do
If (not (KT[j])) and (OK(j)) then
begin
KT[j]:=True;
B[i]:=S[j];
If i=n then Ghinhan else Try(i+1);
KT[j]:=False;
B[i]:=#0;

end;
end;
BEGIN
clrscr; Write('S=');readln(S);
n:=Length(S); dem:=0;
Fillchar(KT,Sizeof(KT),0);
Fillchar(B,Sizeof(B),0);
Try(1);
readln;
END.
Bài 6. Có bao nhiêu xâu nhị phân có dộ dài nhỏ hơn hoặc bằng 8.
Bài 7. Có bao nhiêu xâu nhị phân có độ dài là 80 hoặc bắt đầu bởi 111 hoặc kết thúc bởi 000
Bài 8. Có bao nhiêu số nguyên dương gồm đúng 3 chữ số:
a/ Chia hết cho 4
18
b/ Chia hết cho 4 hoặc cho 3
c/ Chia hết cho 4 và chia hết cho 3
4.3 Bài tập về tổ hợp và hoán vị
Bài 9 Cho tập A={1, 3, 5}. Có bao nhiêu số gồm 3 chữ số khác nhau được thành lập từ A.
Giải: Số gồm 3 chữ số khác nhau được thành lập từ A chính là một hoán vị của A, do đó số các số
theo yêu cầu là P
3
=3!=1.2.3=6 (số theo yêu cầu)
Liệt kê các số đó là: 135; 153; 315; 351; 513; 531
Bài 10. Cho A={0,1, , 9}, có thể lập được bao nhiêu số chẵn có 4 chữ số mà các chữ số đó đều
khác nhau.
19
Thảo luận 5
Khái niệm cơ bản về đồ thị, các đồ thị đặc biệt
5.1 Tổng hợp kiến thức về cấu trúc đồ thị, các phương pháp duyệt đồ thị, đồ thị Euler, đồ thị

Hamilton, đồ thị phẳng, tô màu đồ thị.
5.2Bài tập về biểu diễn đồ thị, bậc, các phương pháp duyệt đồ thị
Bài 1.Cho đồ thị vô hướng G
1
, G
2
a. Tính bậc các đỉnh của đồ thị, bậc của đồ thị?
b. Hãy liệt kê các đường đi có độ dài là 5
c. Hãy liệt kê các chu trình có độ dài là 4
d. Xác định tính liên thông của đồ thị? số thành phần liên thông của đồ thị?
e. Hãy lập ma trận lân cận kề của đồ thị G, ma trận liên thuộc của G?
f. Đưa ra thứ tự duyệt đồ thị theo chiều rộng và chiều sâu, xây dựng cây khung tương
ứng với 2 thứ tự duyệt này.
g. Đồ thị trên có đường đi hoặc chu trình Euler (Hamilton) không?
(G
1
)
(G
2
)
20
A
G
H
D
B
C
E
I
3

6
7
2
5
1
4
K
Bài 2. Hãy vẽ các đồ thị vô hướng được biểu diễn bởi ma trận liền kề sau:
a)
1 2 3
2 0 4
3 4 0










, b)
1 2 0 1
2 0 3 0
0 3 1 1
1 0 1 0













, c)
0 1 3 0 4
1 2 1 3 0
3 1 1 0 1
0 3 0 0 2
4 0 1 2 3

















.
Bài 3. Nêu ý nghĩa của tổng các phần tử trên một hàng (cột) của một ma trận liền kề đối với một đồ
thị vô hướng ? Đối với đồ thị có hướng ?
Bài 4: Chỉ ra thứ tự duyệt đồ thị theo BFS hoặc DFS trên các đồ thị G
1
, G
2
(bài 1); đồ thị a,b,c (bài2)
Bài 5. Tìm ma trận liền kề cho các đồ thị sau:
a) K
n
, b) C
n
, c) W
n
, d) K
m,n
, e) Q
n
.
Bài 6. Cho V={2,3,4,5,6,7,8} và E là tập hợp các cặp phần tử (u,v) của V sao cho u<v và u,v
nguyên tố cùng nhau. Hãy vẽ đồ thị có hướng G=(V,E). Tìm số các đường đi phân biệt độ dài 3 từ
đỉnh 2 tới đỉnh 8.
Bài 7. Hãy tìm số đường đi độ dài n giữa hai đỉnh liền kề (t.ư. không liền kề) tùy ý trong K
3,3
với
mỗi giá trị của n sau:
a) n=2, b) n=3, c) n=4, d) n=5.
5.3 Bài tập về đồ thị Euler, Hamilton, đồ thị phẳng, vấn đề tô màu đồ thị.

Bài 8. Với giá trị nào của n các đồ thị sau đây có chu trình Euler ?
a) K
n
, b) C
n
, c) W
n
, d) Q
n
.
Bài 9. Với giá trị nào của m và n các đồ thị phân đôi đầy đủ K
m,n
có:
a) chu trình Euler ? b) đường đi Euler ?
Bài 10. Với giá trị nào của m và n các đồ thị phân đôi đầy đủ K
m,n
có chu trình Hamilton ?
Bài 11. Chứng minh rằng đồ thị lập phương Q
n
là một đồ thị Hamilton. Vẽ cây liệt kê tất cả các chu
trình Hamilton của đồ thị lập phương Q
3
.
21
Thảo luận 6
Thuật toán tìm đường đi ngắn nhất, xây dựng cây khung ngắn nhất trên đồ thị, bài toán
luồng cực đại trên mạng
6.1 Tổng hợp kiến thức về đường đi ngắn nhất, cây, cây khung, thuật toán xây dựng cây
khung nhỏ nhất, các phương pháp duyệt trên cây, bài toán luồng cực đại trên mạng.
6.2 Bài tập về thuật toán Dijkstra, Floyd

Bài 1. Áp dụng thuật toán Dijkstra tìm đường đi ngắn nhất từ đỉnh 1 đến đỉnh 8 trên đồ thị G được
biểu diễn bởi ma trận trọng số sau:
a/ C=


























∞∞∞∞

∞∞∞
∞∞∞∞
∞∞∞
∞∞∞∞
∞∞
∞∞∞∞
∞∞∞∞
0398
30551
9507
87046
5052
145014
6102
2420
b/ C=



























∞∞∞∞
∞∞∞
∞∞∞∞
∞∞∞
∞∞∞∞
∞∞
∞∞∞∞
∞∞∞∞
0276
20551
7508
68047
5012
141014
7102
2420
Bài 2. Cho đồ thị với trọng số dương như hình vẽ. Hãy xác định đường đi ngắn nhất từ đỉnh 1 đến
đỉnh 7 ( xác định giá và vết của đường đi).

22
3
5
2
6
7
5
3
1
5
1
4
2
7
6
7
5
1
4
Bài 3. Cho đồ thị với trọng số dương như hình vẽ. Hãy xác định đường đi ngắn nhất từ đỉnh 2 đến
đỉnh 7 ( xác định giá và vết của đường đi).
Bài 4. Dùng thuật toán Dijkstra tìm đường đi ngắn nhất từ đỉnh a đến các đỉnh còn lại trong G:
Bài 5. Dùng thuật toán Dijkstra tìm đường đi ngắn nhất từ đỉnh a đến các đỉnh khác trong đồ thị
sau:
Bài 6. Cho đồ thị có trọng số như hình dưới đây. Hãy tìm đường đi ngắn nhất từ đỉnh A đến đỉnh N.
23
4
5
2
2

4
6
7
5
3
1
6
1
2
2
1
7
3
2
1
5
Bài 7. Tìm đường đi ngắn nhất giữa mọi cặp đỉnh trên đồ thị:
6.3 Bài tập về các thuật toán xây dựng cây khung nhỏ nhất, các phương pháp duyệt trên cây,
luồng cực đại trên mạng
Bài 8. Cho đồ thị được biễu diễn bằng ma trận trọng số (C
1
), (C
2
) :
a/ Dùng thuật toán Kruskal tìm cây khung với giá nhỏ nhất trên G
1
, G
2
b/ Dùng thuật toán Prim tìm cây khung với giá nhỏ nhất trên G
1

, G
2
0511318
5011075
1110463
3104021
176209
853190
093175
902514
320326
15304
7124010
546100


(C
1
) ( C
2
)
Bài 9. Cho đồ thị G được biểu diễn ở H
1
. Mỗi đỉnh là một địa điểm trong thành phố, trọng số trên
các cạnh thể hiện khoảng cách giữa các điểm. Hãy xây dựng thuật toán thiết kế một mạng lưới giao
thông qua tất cả các điểm, mỗi điểm đúng một lần sao cho tổng khoảng cách trên mạng lưới là nhỏ
nhất. Sau đó áp dụng số với đồ thị H
1
24
Bài 10. Cho đồ thị G được biểu diễn bởi ma trận trọng số:

C=


























∞∞∞∞
∞∞∞
∞∞∞

∞∞∞

∞∞∞
∞∞∞
∞∞∞∞
0125
10552
25023
52041
5340233
12012
23102
3220
a/ Đồ thị có liên thông không? Tại sao?
b/ Xây dựng cây khung ngắn nhất của đồ thị.
Bài 11. Cho mạng như hình vẽ. Hãy xác định luồng cực đại trên mạng và giá trị tương
ứng
25
1
A
G
H
D
B
C
E
6
I
2
4

2
5
3
7
6
4
3
3
2

×