SlideShare ist ein Scribd-Unternehmen logo
1 von 12
Giáo viên hướng dẫn: TS. Hoàng Quang
Nhóm 6:
Nguyễn Mậu Quốc Hoàn
Mai Văn Mười
Trần Thị Phương Chi
Trương Thị Hương Huyền
NỘI DUNG TRÌNH BÀY
 Giới thiệu bài toán
 Định nghĩa Chu trình Hamilton
 Mô hình bài toán
 Các bước giải quyết bài toán
 Thủ tục mô tả thuật toán
 Thời gian thực hiện
GIỚI THIỆU BÀI TOÁN
Một người khách du lịch muốn đi thăm n
thành phố được đánh số từ 1 đến n. Mạng lưới
giao thông giữa n thành phố này là 2 chiều và
được cho bởi ma trận A[i,j] trong đó A[i,j] = 1
nếu có đường đi giữa thành phố i và thành phố
j, A[i,j] = 0 trong trường hợp ngược lại. Thiết
lập đường đi cho người khách thông báo tồn
tại đường đi hoặc không tồn tại đường đi.
ĐỊNH NGHĨA CHU TRÌNH HAMILTON
Cho đồ thị G=(V, E) có n đỉnh
1. Chu trình (x1, x2, …, xn, x1) được gọi là Chu trình
Hamilton nếu xi <>xj với 1<=i<j<=n
2. Đường đi (x1, x2, …, xn) được gọi là Đường đi
Hamilton nếu xi <>xj với 1<=i<j<=n
Chu trình Hamilton là chu trình xuất phát từ một
đỉnh, đi thăm tất cả những đỉnh còn lại, mỗi đỉnh
đúng một lần, cuối cùng quay lại đỉnh xuất phát.
Đường đi Hamilton là đường đi qua tất cả các
đỉnh của đồ thị, mỗi đỉnh đúng một lần.
VÍ DỤ VỀ CHU TRÌNH VÀ ĐƯỜNG ĐI HAMILTON
Một đồ thị đầy đủ có nhiều
hơn hai đỉnh là đồ thị
Hamilton.
Mọi đồ thị vòng là Hamilton.
Đồ thị khối ba chiều là đồ
thị Haminton.
MÔ HÌNH BÀI TOÁN (1)
 Ta có file:
 Input: Là file văn bản Input.pas
 Dòng 1 ghi số đỉnh n<=50 và số cạnh m của đồ thị cách
nhau một dấu cách.
 m dòng tiếp theo, mỗi dòng có dạng 2 số nguyên dương
u, v cách nhau một dấu cách, thể hiện u, v là 2 đỉnh kề
nhau trong đồ thị.
 Output: là file văn bản Output.pas
 Liệt kê tất cả các chu trình Hamilton
MÔ HÌNH BÀI TOÁN (2)
1 5
4
2
3
Input.pas Output.pas
5 7
1 2
1 4
2 3
2 5
3 4
3 5
4 5
1 2 3 5 4 1
1 2 5 3 4 1
1 4 3 5 2 1
1 4 5 3 2 1
CÁC BƯỚC GIẢI QUYẾT BÀI TOÁN
 Gán đỉnh đầu tiên bằng 1
 Thử các cách chọn đỉnh thứ i trong hành trình với
i>=2 và i<=n.
 Chọn tất cả các đỉnh j để tìm đỉnh thứ i X[i] kề với X[i-1]
và chưa bị đi qua
 Nếu tìm thấy đỉnh j thỏa mãn điều kiện trên thì gán X[i] = j.
 Nếu i < n thì
 Đánh dấu đỉnh j là đã đi qua để cho các bước tiếp theo
không chọn j nữa.
 Sau đó chọn đỉnh thứ i+1 trong hành trình
 Thử phương án khác cho X[i] nên sẽ bỏ đánh dấu đỉnh vừa
thử
 Ngược lại, nếu đã thử chọn đến X[n] thì kiểm tra nếu X[n] lại
kề với X[1] thì ta có chu trình Hamilton.
THỦ TỤC MÔ TẢ THUẬT TOÁN
procedure Try(i: Integer);
var
j: Integer;
begin
for j := 1 to n do
if Mask[j] and A[X[i - 1], j] then
begin
X[i] := j;
if i < n then
begin
Mask[j] := False;
Try(i + 1);
Mask[j] := True;
end
else
if A[j, X[1]] then Print;
end;
end;
Khai báo
Const
Max=50;
Inputfilename=‘D:BPBININPUT.PAS’
Outputfilename=‘D:BPBINOUTPUT.PAS’
var
ft: Text;
A: array[1..max, 1..max] of Boolean;
Mask: array[1..max] of Boolean;
X: array[1..max] of Integer;
n: Integer;
CÁC THỦ TỤC KHỞI TẠO (1)
Nhập dữ liệu vào
procedure Inputdata;
var
i, u, v, m: Integer;
fs: Text;
begin
Assign(fs, InputFilename); Reset(fs);
FillChar(A, SizeOf(A), False);
ReadLn(fs, n, m);
for i := 1 to m do
begin
ReadLn(fs, u, v);
a[u, v] := True;
a[v, u] := True;
end;
Close(fs);
end;
In kết quả
procedure Print;
var
i: Integer;
begin
for i := 1 to n do
Write(ft, X[i], ' ');
WriteLn(ft, X[1]);
writeln;
end;
CÁC THỦ TỤC KHỞI TẠO (2)
Chương trình chính
BEGIN
Inputdata;
FillChar(Mask, SizeOf(Mask), True);
X[1] := 1; Mask[1] := False;
Assign(ft, Outputfilename); Rewrite(ft);
Try(2);
Close(ft);
readln;
END.
THỜI GIAN THỰC HIỆN
1 5
4
2
3
3
1
2 4
5
3
2
1
3
1
2
3
5
2
1
5
1
2
5
4
1 3
3
4
1
1
5
4
5
1
4
Đồ thị có 5 đỉnh
và 7 cạnh
Cây liệt kê chu trình Hamilton của đồ thị theo
thuật toán quay lui
T(n) = O(n*m) trong đó n là số đỉnh và m là số cạnh giữa các đỉnh

Weitere ähnliche Inhalte

Was ist angesagt?

Mat101 huongdan bai5_v2.3013103225
Mat101 huongdan bai5_v2.3013103225Mat101 huongdan bai5_v2.3013103225
Mat101 huongdan bai5_v2.3013103225Yen Dang
 
Mat101 huongdan bai1_v2.3013103225
Mat101 huongdan bai1_v2.3013103225Mat101 huongdan bai1_v2.3013103225
Mat101 huongdan bai1_v2.3013103225Yen Dang
 
Mat101 huongdan bai3_v2.3013103225
Mat101 huongdan bai3_v2.3013103225Mat101 huongdan bai3_v2.3013103225
Mat101 huongdan bai3_v2.3013103225Yen Dang
 
Mat101 huongdan bai2_v2.3013103225
Mat101 huongdan bai2_v2.3013103225Mat101 huongdan bai2_v2.3013103225
Mat101 huongdan bai2_v2.3013103225Yen Dang
 
Hamsolientuc
HamsolientucHamsolientuc
HamsolientucQuoc Thai
 
Hàm số - 1. Tính đơn điệu của Hàm số-clone
Hàm số - 1. Tính đơn điệu của Hàm số-cloneHàm số - 1. Tính đơn điệu của Hàm số-clone
Hàm số - 1. Tính đơn điệu của Hàm số-clonelovestem
 

Was ist angesagt? (10)

Mat101 huongdan bai5_v2.3013103225
Mat101 huongdan bai5_v2.3013103225Mat101 huongdan bai5_v2.3013103225
Mat101 huongdan bai5_v2.3013103225
 
Mat101 huongdan bai1_v2.3013103225
Mat101 huongdan bai1_v2.3013103225Mat101 huongdan bai1_v2.3013103225
Mat101 huongdan bai1_v2.3013103225
 
Mat101 huongdan bai3_v2.3013103225
Mat101 huongdan bai3_v2.3013103225Mat101 huongdan bai3_v2.3013103225
Mat101 huongdan bai3_v2.3013103225
 
Công thức
Công thứcCông thức
Công thức
 
Giải phương trình
Giải phương trìnhGiải phương trình
Giải phương trình
 
Mat101 huongdan bai2_v2.3013103225
Mat101 huongdan bai2_v2.3013103225Mat101 huongdan bai2_v2.3013103225
Mat101 huongdan bai2_v2.3013103225
 
Hamsolientuc
HamsolientucHamsolientuc
Hamsolientuc
 
Hamsolientuc
HamsolientucHamsolientuc
Hamsolientuc
 
Nhung bai mau lap trinh c
Nhung bai mau lap trinh cNhung bai mau lap trinh c
Nhung bai mau lap trinh c
 
Hàm số - 1. Tính đơn điệu của Hàm số-clone
Hàm số - 1. Tính đơn điệu của Hàm số-cloneHàm số - 1. Tính đơn điệu của Hàm số-clone
Hàm số - 1. Tính đơn điệu của Hàm số-clone
 

Andere mochten auch (16)

Cd 2 CSDL nang cao
Cd 2 CSDL nang caoCd 2 CSDL nang cao
Cd 2 CSDL nang cao
 
Mang May Tinh
Mang May TinhMang May Tinh
Mang May Tinh
 
Chuyen De 3 CSDL nang cao
Chuyen De 3 CSDL nang caoChuyen De 3 CSDL nang cao
Chuyen De 3 CSDL nang cao
 
Baocao Chuanhoa
Baocao ChuanhoaBaocao Chuanhoa
Baocao Chuanhoa
 
Csdl Nangcao
Csdl NangcaoCsdl Nangcao
Csdl Nangcao
 
Chuyen De 1 CSDL nang cao
Chuyen De 1 CSDL nang caoChuyen De 1 CSDL nang cao
Chuyen De 1 CSDL nang cao
 
Quy hoạch động
Quy hoạch độngQuy hoạch động
Quy hoạch động
 
Csdl Nangcao
Csdl NangcaoCsdl Nangcao
Csdl Nangcao
 
Chuong 1 CSDL phân tán
Chuong 1 CSDL phân tánChuong 1 CSDL phân tán
Chuong 1 CSDL phân tán
 
Chu trinh Haminton de quy
Chu trinh Haminton de quyChu trinh Haminton de quy
Chu trinh Haminton de quy
 
Baigiang Ns2
Baigiang Ns2Baigiang Ns2
Baigiang Ns2
 
Csdl Nangcao
Csdl NangcaoCsdl Nangcao
Csdl Nangcao
 
Đệ quy và quay lui
Đệ quy và quay luiĐệ quy và quay lui
Đệ quy và quay lui
 
Bai toan du lich
Bai toan du lichBai toan du lich
Bai toan du lich
 
Quy hoạch động
Quy hoạch độngQuy hoạch động
Quy hoạch động
 
Giaoan lythuyet mangmaytinhcb chuong1
Giaoan lythuyet mangmaytinhcb chuong1Giaoan lythuyet mangmaytinhcb chuong1
Giaoan lythuyet mangmaytinhcb chuong1
 

Mehr von Hoàng Chí Dũng

Mehr von Hoàng Chí Dũng (12)

Seminar Ly Thuyet Chuan Hoa V1.2
Seminar   Ly Thuyet Chuan Hoa   V1.2Seminar   Ly Thuyet Chuan Hoa   V1.2
Seminar Ly Thuyet Chuan Hoa V1.2
 
Chuyen De 3 Bo Sung CSDL nang cao
Chuyen De 3   Bo Sung CSDL nang caoChuyen De 3   Bo Sung CSDL nang cao
Chuyen De 3 Bo Sung CSDL nang cao
 
Seminar Ly Thuyet Chuan Hoa V1.2
Seminar   Ly Thuyet Chuan Hoa   V1.2Seminar   Ly Thuyet Chuan Hoa   V1.2
Seminar Ly Thuyet Chuan Hoa V1.2
 
Baocao Chuanhoa
Baocao ChuanhoaBaocao Chuanhoa
Baocao Chuanhoa
 
Data Warehouse
Data WarehouseData Warehouse
Data Warehouse
 
bài tập quay lui
bài tập quay luibài tập quay lui
bài tập quay lui
 
Phương pháp tham lam
Phương pháp tham lamPhương pháp tham lam
Phương pháp tham lam
 
Cơ sở thuật toán
Cơ sở thuật toánCơ sở thuật toán
Cơ sở thuật toán
 
Section 2 Quay Lui
Section 2   Quay LuiSection 2   Quay Lui
Section 2 Quay Lui
 
Chuong 2 CSDL phân tán
Chuong 2 CSDL phân tánChuong 2 CSDL phân tán
Chuong 2 CSDL phân tán
 
Chuong 4 CSDL phân tán
Chuong 4 CSDL phân tánChuong 4 CSDL phân tán
Chuong 4 CSDL phân tán
 
Chuong 3 CSDL phân tán
Chuong 3 CSDL phân tánChuong 3 CSDL phân tán
Chuong 3 CSDL phân tán
 

Chu trinh Haminton de quy

  • 1. Giáo viên hướng dẫn: TS. Hoàng Quang Nhóm 6: Nguyễn Mậu Quốc Hoàn Mai Văn Mười Trần Thị Phương Chi Trương Thị Hương Huyền
  • 2. NỘI DUNG TRÌNH BÀY  Giới thiệu bài toán  Định nghĩa Chu trình Hamilton  Mô hình bài toán  Các bước giải quyết bài toán  Thủ tục mô tả thuật toán  Thời gian thực hiện
  • 3. GIỚI THIỆU BÀI TOÁN Một người khách du lịch muốn đi thăm n thành phố được đánh số từ 1 đến n. Mạng lưới giao thông giữa n thành phố này là 2 chiều và được cho bởi ma trận A[i,j] trong đó A[i,j] = 1 nếu có đường đi giữa thành phố i và thành phố j, A[i,j] = 0 trong trường hợp ngược lại. Thiết lập đường đi cho người khách thông báo tồn tại đường đi hoặc không tồn tại đường đi.
  • 4. ĐỊNH NGHĨA CHU TRÌNH HAMILTON Cho đồ thị G=(V, E) có n đỉnh 1. Chu trình (x1, x2, …, xn, x1) được gọi là Chu trình Hamilton nếu xi <>xj với 1<=i<j<=n 2. Đường đi (x1, x2, …, xn) được gọi là Đường đi Hamilton nếu xi <>xj với 1<=i<j<=n Chu trình Hamilton là chu trình xuất phát từ một đỉnh, đi thăm tất cả những đỉnh còn lại, mỗi đỉnh đúng một lần, cuối cùng quay lại đỉnh xuất phát. Đường đi Hamilton là đường đi qua tất cả các đỉnh của đồ thị, mỗi đỉnh đúng một lần.
  • 5. VÍ DỤ VỀ CHU TRÌNH VÀ ĐƯỜNG ĐI HAMILTON Một đồ thị đầy đủ có nhiều hơn hai đỉnh là đồ thị Hamilton. Mọi đồ thị vòng là Hamilton. Đồ thị khối ba chiều là đồ thị Haminton.
  • 6. MÔ HÌNH BÀI TOÁN (1)  Ta có file:  Input: Là file văn bản Input.pas  Dòng 1 ghi số đỉnh n<=50 và số cạnh m của đồ thị cách nhau một dấu cách.  m dòng tiếp theo, mỗi dòng có dạng 2 số nguyên dương u, v cách nhau một dấu cách, thể hiện u, v là 2 đỉnh kề nhau trong đồ thị.  Output: là file văn bản Output.pas  Liệt kê tất cả các chu trình Hamilton
  • 7. MÔ HÌNH BÀI TOÁN (2) 1 5 4 2 3 Input.pas Output.pas 5 7 1 2 1 4 2 3 2 5 3 4 3 5 4 5 1 2 3 5 4 1 1 2 5 3 4 1 1 4 3 5 2 1 1 4 5 3 2 1
  • 8. CÁC BƯỚC GIẢI QUYẾT BÀI TOÁN  Gán đỉnh đầu tiên bằng 1  Thử các cách chọn đỉnh thứ i trong hành trình với i>=2 và i<=n.  Chọn tất cả các đỉnh j để tìm đỉnh thứ i X[i] kề với X[i-1] và chưa bị đi qua  Nếu tìm thấy đỉnh j thỏa mãn điều kiện trên thì gán X[i] = j.  Nếu i < n thì  Đánh dấu đỉnh j là đã đi qua để cho các bước tiếp theo không chọn j nữa.  Sau đó chọn đỉnh thứ i+1 trong hành trình  Thử phương án khác cho X[i] nên sẽ bỏ đánh dấu đỉnh vừa thử  Ngược lại, nếu đã thử chọn đến X[n] thì kiểm tra nếu X[n] lại kề với X[1] thì ta có chu trình Hamilton.
  • 9. THỦ TỤC MÔ TẢ THUẬT TOÁN procedure Try(i: Integer); var j: Integer; begin for j := 1 to n do if Mask[j] and A[X[i - 1], j] then begin X[i] := j; if i < n then begin Mask[j] := False; Try(i + 1); Mask[j] := True; end else if A[j, X[1]] then Print; end; end; Khai báo Const Max=50; Inputfilename=‘D:BPBININPUT.PAS’ Outputfilename=‘D:BPBINOUTPUT.PAS’ var ft: Text; A: array[1..max, 1..max] of Boolean; Mask: array[1..max] of Boolean; X: array[1..max] of Integer; n: Integer;
  • 10. CÁC THỦ TỤC KHỞI TẠO (1) Nhập dữ liệu vào procedure Inputdata; var i, u, v, m: Integer; fs: Text; begin Assign(fs, InputFilename); Reset(fs); FillChar(A, SizeOf(A), False); ReadLn(fs, n, m); for i := 1 to m do begin ReadLn(fs, u, v); a[u, v] := True; a[v, u] := True; end; Close(fs); end; In kết quả procedure Print; var i: Integer; begin for i := 1 to n do Write(ft, X[i], ' '); WriteLn(ft, X[1]); writeln; end;
  • 11. CÁC THỦ TỤC KHỞI TẠO (2) Chương trình chính BEGIN Inputdata; FillChar(Mask, SizeOf(Mask), True); X[1] := 1; Mask[1] := False; Assign(ft, Outputfilename); Rewrite(ft); Try(2); Close(ft); readln; END.
  • 12. THỜI GIAN THỰC HIỆN 1 5 4 2 3 3 1 2 4 5 3 2 1 3 1 2 3 5 2 1 5 1 2 5 4 1 3 3 4 1 1 5 4 5 1 4 Đồ thị có 5 đỉnh và 7 cạnh Cây liệt kê chu trình Hamilton của đồ thị theo thuật toán quay lui T(n) = O(n*m) trong đó n là số đỉnh và m là số cạnh giữa các đỉnh