Giáo án Bài giảng về: Toán rời rạc trong cách giải bài tập (Trường đại học sư phạm kỹ thuật )

110 1.6K 3
Giáo án Bài giảng về: Toán rời rạc trong cách giải bài tập (Trường đại học sư phạm kỹ thuật )

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ðẠI HỌC PHẠM KỸ THUẬT HƯNG YÊN KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP HỌC PHẦN TOÁN RỜI RẠC 2 Trình ñộ ñào tạo Hệ ñào tạo : : ðại học Chính quy/Liên thông Bài tập TOÁN RỜI RẠC 2 Bộ môn Công nghệ phần mềm - 2010 Trang 2 LỜI NÓI ĐẦU Có thể nói toán học rời rạc là môn tiên quyết và hiệu quả nhất ñể người học nâng cao tư duy toán học trong phân tích, thiết kế thuật toán và rèn luyện kỹ năng lập trình với những thuật toán phức tạp. Không những thế nó còn là “cửa ngõ” ñể người học có thể tiếp cận với rất nhiều modul trong khoa học máy tính (như Chương trình dịch, lý thuyết tính toán, Trí tuệ nhân tạo, ). Bài tập ñể củng cố và nâng cao kiến thức trong môn học này Về nội dung, bám sát với chương trình của nhà trường và hệ thống bài tập cũng ñược biên soạn theo các chương lý thuyết. Với mỗi chương sẽ ñược chia thành 4 phần: Phần A. Nhắc lại lý thuyết: tóm tắt các kiến thức cơ bản, các ví dụ và các lưu ý hữu ích, các kinh nghiệm trong khi lập trình Phần B. ðề bài tập: ñưa ra các loại bài tập khác nhau, với các mức ñộ khác nhau. Phần C. Bài tập mẫu: Hướng dẫn giải một số bài tiêu biểu trong phần B, có phân tích thuật toán và cài ñặt chương trình. Phần D. Bài tập tự giải: Người học thực hiện việc giải các bài tập này Mong rằng tài liệu này ñáp ứng ñược phần nào nhu cầu của học sinh, sinh viên. ðây là bản ñầu tiên chắc chắn còn rất nhiều sai sót. Nhóm tác giả mong nhận ñược sự ñóng góp của các thầy cô giáo, các bạn sinh viên và của tất cả những ai quan tâm tới lĩnh vực này. Hưng Yên, tháng 7 năm 2010 Bộ môn Công nghệ phần mềm Khoa Công nghệ thông tin Trường ñại học phạm kỹ thuật Hưng Yên Bài tập TOÁN RỜI RẠC 2 Bộ môn Công nghệ phần mềm - 2010 Trang 3 MỤC LỤC Bài 1: Các khái niệm cơ bản của Lý thuyết ñồ thị 5 Mục tiêu 5 a. Nhắc lại lý thuyết 5 b. ðề bài tập 5 c. Hướng dẫn giải 6 d. Bài tập tự giải 7 Bài 2: Biểu diễn ñồ thị trên máy tính 10 Mục tiêu 10 a. Nhắc lại lý thuyết 10 b. ðề bài tập 10 c. Hướng dẫn giải 10 d. Bài tập tự giải 14 Bài 3: ðồ thị Euler 15 Mục tiêu 15 a. Nhắc lại lý thuyết 15 b. ðề bài tập 16 c. Hướng dẫn giải 16 d. Bài tập tự giải 19 Bài 4: ðồ thị hamilton 20 Mục tiêu 20 a. Nhắc lại lý thuyết 20 b. ðề bài tập 20 c. Hướng dẫn giải 20 d. Bài tập tự giải 22 Bài 5: Thảo luận cài ñặt ñồ thị, các thuật toán liệt kê chu trình Euler và Hamilton. Thảo luận về bài tập lớn 23 Mục tiêu 23 a. Nhắc lại lý thuyết 23 b. ðề bài tập 23 c. Hướng dẫn giải 23 d. Bài tập tự giải 31 Bài 6 Thuật toán tìm kiếm trên ñồ thị và ứng dụng 34 Mục tiêu 34 a. Nhắc lại lý thuyết 34 b. ðề bài tập 34 c. Hướng dẫn giải 34 d. Bài tập tự giải 51 Bài 7: Cây và cây khung 52 Mục tiêu 52 a. Nhắc lại lý thuyết 52 b. ðề bài tập 53 c. Hướng dẫn giải 54 d. Bài tập tự giải 55 Bài 8: Thảo luận về cài ñặt thuật toán tìm cây khung nhỏ nhất trên ñồ thị 58 Mục tiêu 58 Bài tập TOÁN RỜI RẠC 2 Bộ môn Công nghệ phần mềm - 2010 Trang 4 a. Nhắc lại lý thuyết 58 b. ðề bài tập 58 c. Hướng dẫn giải 58 d. Bài tập tự giải 70 Bài 9, 10: Bài toán tìm ñường ñi ngắn nhất 71 Mục tiêu 71 a. Nhắc lại lý thuyết 71 b. ðề bài tập 71 c. Hướng dẫn giải 73 d. Bài tập tự giải 92 Bài 12: Bài toán luồng cực ñại trong mạng 97 Mục tiêu 97 a. Nhắc lại lý thuyết 97 b. ðề bài tập 98 c. Hướng dẫn giải 99 d. Bài tập tự giải 101 Bài tập TOÁN RỜI RẠC 2 Bộ môn Công nghệ phần mềm - 2010 Trang 5 Bài 1: Các khái niệm cơ bản của Lý thuyết ñồ thị Mục tiêu - Lưu trữ ñược ñồ thị trên máy tính theo những phương pháp khác nhau. - Cài ñặt ñược chương trình chuyển ñổi giữa các phương pháp. - Sinh viên có khả năng tự học. a. Nhắc lại lý thuyết - Hai ñỉnh x, y ñược gọi là cặp ñỉnh liên thông , nếu hoặc giữa x và y có ít nhất một xích nối với nhau, hoặc tồn tại ít nhất một ñường ñi từ y sang x. - ðồ thị vô hướng G(V,E) ñược gọi là ñồ thị liên thông, nếu mọi cặp ñỉnh của nó ñều liên thông. - ðồ thị có hướng G(V,E) ñược gọi là ñồ thị liên thông mạch, nếu mọi cặp ñỉnh của nó ñều liên thông. - Biểu diễn dạng hình học: Giả sử có ñồ thị G(V,E). Biểu diễn ñỉnh: lấy các ñiểm trên mặt phẳng hay trên không gian tương ứng với các phần tử của tập V và dùng ngay hiệu các phần tử này ñẻ ghi trên các ñiểm tương ứng. Biểu diễn cạnh: Nếu cạnh a với hai ñỉnh ñầu là x,y thì nó ñược biểu diễn bằng ñoạn thẳng hay một ñoạn cong nối giữa hai ñiểm x, y và không ñi qua các ñiểm tương ứng trong không gian. Biểu diễn cung: nếu cung a có ñỉnh ñầu là x, ñỉnh cuối là y, thì nó ñược biểu diễn bằng một ñoạn thẳng hoặc ñoạn cong ñược ñịnh hướng ñi từ x sang y và không qua các ñiểm tương ứng trung gian khác. Hình nhận ñược gọi là dạng biểu diễn hình học của ñồ thị G(V, E). ðôi khi người ta cũng gọi dạng biểu diễn hình học là một ñồ thị. b. ðề bài tập Bài 1 Cho G ñồ thị gồm 4 phần G1, G2, G3 và G4 như sau: a. Chỉ ra tập ñỉnh, cạnh(vô hướng,có hướng, khuyên, ) của mỗi ñồ thị ñã cho? Chỉ loại ñồ thị ñó? b. ðồ thị G, G1, G2, G3, G4 và G5 có liên thông ko? Nếu ñồ thị ko liên thông hãy chỉ ra các thành phần liên thông? Bài tập TOÁN RỜI RẠC 2 Bộ môn Công nghệ phần mềm - 2010 Trang 6 c. ðồ thị G, G1, G2, G3, G4 và G5 có chu trình ko? Chỉ ra các chu trình của ñồ thị (nếu có)? c. Hướng dẫn giải Bài 1 a. Tên ñồ thị Tập ñỉnh V Tập cạnh E Loại ñồ thị G1 1,2,3,4 (1,2);(1,4);(2,3);(2,4);(3,4) Vô hướng G2 5,6,7 (5,6);(5,7);(6,7) Có hướng G3 8,9 (8,9) Vô hướng G4 0 G 1,2,3,4,5,6,7,8,9,0 (1,2);(1,4);(2,3);(2,4);(3,4); (8,9) (5,6);(5,7);(6,7) Hỗn hợp b. Tên ñồ thị Tính liên thông Tên thành phần liên thông G1 Có G1 G2 Có G2 G 1 1 4 3 2 5 7 6 8 9 00 G 2 G 3 G 4 Bài tập TOÁN RỜI RẠC 2 Bộ môn Công nghệ phần mềm - 2010 Trang 7 G3 Có G3 G4 Có G4 G Không G1,G2,G3,G4 c. Tên ñồ thị Có chu trình? Tên chu trình G1 Có (1,2,4,1);(1,2,3,4,1);(2,3,4,2) G2 Không G3 Không G4 Không G Có (1,2,4,1);(1,2,3,4,1);(2,3,4,2) d. Bài tập tự giải Bài 1. Một quần ñảo có n( n ) hòn ñảo và hai hòn ñảo bất kì thuộc quần ñảo ñều có số ñầu mối ñường ngầm tới một trong nhưng hòn ñảo nầy ñều nhỏ hơn n. Chứng minh rằng từ một hòn ñảo tùy ý thuộc quần ñảo ta có thể ñi ñến một hòn ñảo bất kì khác của quần ñảo bằng ñường ngầm. Bài 2 Khi về nghỉ hè mỗi bạn học sinh của lớp 11A trường Lê Hồng Phong ñều trao ñổi ñịa chỉ với ít nhất một nửa số bạn trong lớp. Chứng minh rằng trong thời gian nghỉ hè mỗi bạn của lớp 11A ñều có thể báo tin trực tiếp hay gián tiếp cho các bạn trong lớp. Bài 3 Trong một cuộc họp có ñúng hai ñại biểu không que nhau và mỗi ñại biểu này có một số lẻ người que ñến dự. Chứng minh rằng luôn luôn có thể xếp một số ñại bieetr ngồi chen giữa hai ñại biể nói trên , ñể người ngồi giữa hai người mà anh( chị) ta quen. Hướng ñẫn: Bài tập TOÁN RỜI RẠC 2 Bộ môn Công nghệ phần mềm - 2010 Trang 8 ðể giải ñược bài toán trên trước hết ta xây dựng các ñồ thị tương ứng, sau ñó vận dụng kết quả của ñịnh lý 4.1, hệ quả 4.1 và ñịnh lý 4.2 mà suy ra kết luận. Xuây dựng ñồ thị • ðỉnh: Lấy các ñiểm trong mặt phẳng hay trong không gian tương ứng với các hòn ñảo thuộc quần ñảo ( các bạn học sinh trong lớp 11A, các ñại biểu ñến họp). • Cạnh: Hai ñiểm x, y ñược nối bằng một cạnh khi và chỉ khi hai hòn ñảo x, y có ñường ngầm trực tiếp với nhau( các bạn x, y trao ñổi ñịa chỉ cho nhau, các ñại biểu x, y quen nhau) - ðồ thị nhân ñược hiệu bằng G 1 , (G 2 , G 3 ) - ðồ thị G 1 mô tả toàn bộ lưới ñường ngầm trong quần ñảo - ðồ thị G 2 mô tả toàn bộ quan hệ trao ñổi ñịa chỉ trong lớp 11A - ðồ thị G 3 mô tả toàn bộ quen biết trong các ñại biểu trong các ñại biểu ñến dự họp. Vận dụng kết quả các ñịnh lý ñể suy ra kết luận - Do hai hòn ñảo bất kì ñều có tổng số ñầu mối ñường ngầm không nhỏ hơn n, nên hai ñỉnh bất kì của ñồ thị G 1 ñều có tổng bậc không nhỏ hơn n. Bởi vậy theo ñịnh lý 4.1. ñồ thị G 1 liên thông, nên hai hòn ñảo bất kì có ñường hầm nối với nhau. - Vì mỗi bạn học sinh trong lớp 11A trao ñổi ñịa chỉ với ít nhất một nửa số bạn tron lớp, nên bậc của mỗi ñỉnh của G 2 không nhỏ hơn một nửa số ñỉnh của ñồ thị. Khi ñó , theo hệ quả 4.1. ñồ thị G 2 liên thông. Bởi vậy hai ñỉnh x, y ñều có xích nối với nhau. Khi ñó thông qua các bạn tương ứng với các ñỉnh thuộc xích , mà bạn tương ứng với ñỉnh x báo tin ñược cho tương ứng với ñỉnh y và ngược lại. - Hai ñại biểu không quen nhau, thì hai ñỉnh tương ứng không kề nhau. Mỗi ñại biểu này lại có một số lẻ người quen ñến họp, nên trong ñồ thị liên thông G 3 có ñúng hai ñỉnh bậc lẻ và hai ñỉnh này lại không kề nhau. Khi dó, theo ñịnh lý 4.2, hai ñỉnh này liên thông nên có ít nhất một xich nối giữa hai ñỉnh này. Giả sử là một trong những mối xích nối giữa hai bậc lẻ này. Dựa vào ta sắp xếp các ñại biểu tương ứng ngồi giữa hai người mà anh chị quen. Bài 4 Cho G ñồ thị như sau: Chỉ ra tập ñỉnh, cạnh(vô hướng,có hướng, khuyên, ) của mỗi ñồ thị ñã cho? Chỉ loại ñồ thị ñó? ðồ thị có liên thông ko? Nếu ñồ thị ko liên thông hãy chỉ ra các Bài tập TOÁN RỜI RẠC 2 Bộ môn Công nghệ phần mềm - 2010 Trang 9 thành phần liên thông? ðồ thị có chu trình ko? Chỉ ra các chu trình của ñồ thị (nếu có)? Bài tập TOÁN RỜI RẠC 2 Bộ môn Công nghệ phần mềm - 2010 Trang 10 Bài 2: Biểu diễn ñồ thị trên máy tính Mục tiêu - Nêu ñược các cách biểu diễn ñồ thị và biểu diễn ñồ thị trên máy tính trên máy tính. - ðưa ra ñược ma trận kề, danh sách các cạnh, cung tương ứng với 1 ñồ thị cho trước. - Lưu trữ ñược ñồ thị trên máy tính theo những phương pháp khác nhau. - - Phân tích ñược bài toán thực tế tương ứng phần lý thuyết ñã học. - Sinh viên có khả năng tự học. a. Nhắc lại lý thuyết b. ðề bài tập Bài 1 Cho G ñồ thị gồm 4 phần G1, G2, G3 và G4 như sau: a. Biểu diễn các ñồ thị G,G1,G2,G3,G4 dưới dạng ma trận kề b. Biểu diễn các ñồ thị G,G1,G2,G3,G4 dưới dạng danh sách cạnh(cung) c. Biểu diễn các ñồ thị G,G1,G2,G3,G4 dưới dạng danh sách kề Bài 2 Cài ñặt chương trình nhập danh sách kề của ñồ thị từ bàn phím và ñưa danh sách ñó ra màn hình. c. Hướng dẫn giải Bài 1 G 1 1 4 3 2 5 7 6 8 9 00 G 2 G 3 G 4 [...]... ho c (u,x), gi s là (u,v) (xoá (u,v )) T v có th ñi qua m t trong các c nh (v,w), (v,x), (v,t), gi s (v,w) (xoá (v,w )) Ti p t c, có th ñi theo m t trong các c nh (w,s), (w,y), (w,z), gi s (w,s) (xoá (w,s )) ði theo c nh (s,y) (xoá (s,y) và s) Vì (y,x) là c u nên có th ñi theo m t trong hai c nh (y,w), (y,z), gi s (y,w) (xoá (y,w )) ði theo (w,z) (xoá (w,z) và w) và theo (z,y) (xoá (z,y) và z) Ti p t c... (z,y) (xoá (z,y) và z) Ti p t c ñi theo c nh (y,x) (xoá (y,x) và y) Vì (x,u) là c u nên ñi theo c nh (x,v) ho c (x,t), gi s (x,v) (xoá (x,v )) Ti p t c ñi theo c nh (v,t) (xoá (v,t) và v), theo c nh (t,x) (xoá c nh (t,x) và t), cu i cung ñi theo c nh (x,u) (xoá (x,u), x và u) d Bài t p t gi i Trang 19 Bài t p TOÁN R I R C 2 B môn Công ngh ph n m m - 2010 Bài 4: ð th hamilton M c tiêu - Ki m tra ñư c m... g m nh ng ñ nh nào? Bài 3 Thu t toán tìm ñư ng ñi theo chi u sâu (thu t toán duy t theo chi u sâu) Bài 4 Thu t toán tìm ñư ng ñi theo chi u r ng (thu t toán duy t theo chi u r ng) c Hư ng d n gi i Bài 1 Dùng cây ñ mô t k t qu duy t chi u sâu và duy t theo chi u r ng trên ñ th sau: Trang 34 Bài t p TOÁN R I R C 2 B môn Công ngh ph n m m - 2010 Duy t r ng Duy t sâu: Bài 2 Thu t toán tìm s thành ph n... f:text; I:integer; Begin Assign(f,’kq.out ); Rewrite(f); For i:=1 to solC do writeln(f,Ctr[i,1],’ ‘,Ctr[i,2 ]); Close(f); BEGIN Trang 29 Bài t p TOÁN R I R C 2 B môn Công ngh ph n m m - 2010 Docfile; Timchutrinh; Ghifile; END Bài 2 ð bài : Li t kê t t c các chu trình Hamilton c a ñ th Phân tích bài toán : Thu t toán sau ñây ñư c xây d ng d a trên cơ s thu t toán quay lui cho phép li t kê t t c các chu... luy n tư duy sáng t o - Phân tích ñư c bài toán th c t tương ng ph n lý thuy t ñã h c - Sinh viên có kh năng t h c a Nh c l i lý thuy t Xem l i trong bài 3 và bài 4 b ð bài t p Bài 1 Tìm chu trình Euler trong ñ th G Bài 2 Tìm chu trình Halmiton trong ñ th G c Hư ng d n gi i Bài 1 ð bài : Cài ñ t chương trình tìm chu trình Euler trong ñ th G Cho ñ th G=(X,E) t n t i chu trình Euler Hãy tìm chu trình... STACK:=∅ ; CE:=∅ ; Chon u la mot dinh nao do cua do thi; STACK← u; While STACK∅ do Begin X:=top(STACK); (* x la phan tu dau STACK) If Ke(x)∅ then Begin Y:=dinh dau tien trong danh sach Ke(x); STACK← y; (* loai bo canh (x,y) khoi do thi *) Ke(x):=Ke(x)\ { y} ; Ke(y):=Ke(y)\{ x} ; Trang 24 Bài t p TOÁN R I R C 2 B môn Công ngh ph n m m - 2010 End Else Begin x⇐ STACK; CE⇐ x; End; End; End; Chương trình... Trang 30 Bài t p TOÁN R I R C 2 B môn Công ngh ph n m m - 2010 for y ∈ Ke(X[k-1 ]) do if (k =N+ 1) and (y=v 0) then Ghinhan(X[1], , X[n], v 0) else if Chuaxet[y] then begin X[k]:=y; Chuaxet[y]:=false; Hamilton(k+ 1); Chuaxet[y]:=true; end; end; (* Main program *) begin for v ∈ V do Chuaxet[v]:=true; X[1]:=0; (* v0 la mot dinh nao do cua do thi *) Chuaxet[v0]:=false; Hamilton( 2); end d Bài t p t gi i Bài t... ñi qua ñúng m t l n) Phân tích bài toán : ð u vào: ð th G ð u ra: Chu trình Euler (n u c ) 2 Thu t toán: Xu t phát t m t ñ nh u b t kỳ, khi ñi qua c nh nào thì xoá c nh ñó kh i ñ th và ghi l i t trái sang ph i Khi th c hi n thu t toán c n lưu ý n u g p c nh b c c u gi a 2 thành ph n liên thông thì ta ph i xoá h t thành ph n liên thông r i m i xoá ñ n c nh b c c u Trang 23 Bài t p TOÁN R I R C 2 B môn... toán v a mô t ð th và cây li t kê chu trình Hamilton c a nó theo thu t toán quay lui Trong trư ng h p ñ th có không quá nhi u c nh thu t toán trên có th s d ng ñ ki m tra ñ th có ph i là Hamilton hay không Chương trình minh h a : Procedure Hamilton(k); (* liet ke cac chu trinh Hamilton thu duoc bang viec phat trien day dinh (X[1], , X[k-1 ]) cua do thi G=(V,E) cho boi danh sach ke: Ke(v), v∈ V *). .. Euler (t.ư n a Euler) Trang 15 Bài t p TOÁN R I R C 2 B môn Công ngh ph n m m - 2010 ð nh lý ð th (vô hư ng) liên thông G là ñ th Euler khi và ch khi m i ñ nh c a G ñ u có b c ch n H qu ð th liên thông G là n a Euler (mà không là Euler) khi và ch khi có ñúng hai ñ nh b c l trong G Thu t toán v ch ñư c m t chu trình Euler trong ñ th liên thông G có b c c a m i ñ nh là ch n theo thu t toán Fleury sau ñây . Bài 7: Cây và cây khung 52 Mục tiêu 52 a. Nhắc lại lý thuyết 52 b. ðề bài tập 53 c. Hướng dẫn giải 54 d. Bài tập tự giải 55 Bài 8: Thảo luận về cài ñặt thuật toán tìm cây khung nhỏ nhất trên. dựng các ñồ thị tương ứng, sau ñó vận dụng kết quả của ñịnh lý 4.1, hệ quả 4.1 và ñịnh lý 4.2 mà suy ra kết luận. Xuây dựng ñồ thị • ðỉnh: Lấy các ñiểm trong mặt phẳng hay trong không gian tương. bộ quen biết trong các ñại biểu trong các ñại biểu ñến dự họp. Vận dụng kết quả các ñịnh lý ñể suy ra kết luận - Do hai hòn ñảo bất kì ñều có tổng số ñầu mối ñường ngầm không nhỏ hơn n, nên

Ngày đăng: 25/04/2014, 10:13

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan