Đề tài: Tìm đường đi trong mê cung và ứng dụng

22 1.5K 3
Đề tài: Tìm đường đi trong mê cung và ứng dụng

Đ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

Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Lời nói đầu Lý thuyết đồ thị ngành khoa học có từ lâu lại có nhiều ứng dụng đại Những ý tưởng ban đầu đưa nhà toán học người Thụy Sĩ Leonhard Euler Lý thuyết đồ thị dùng để giải nhiều toán thuộc nhiều lĩnh vực khác chẳng hạn như: dùng mô hình đồ thị để xác định xem hai máy tính mạng máy tính có trao đổi thông tin với không?.Đồ thị với trọng số gắn cho cạnh dùng để giải toán tìm đường ngắn mạng lưới giao thông Chúng ta phân biệt hợp chất hóa học có công thức phân tử có cấu trúc khác nhờ vào đồ thị Vấn đề tìm đường đi, đặc biệt toán tìm đường mê cung chủ đề thú vị, mang tính chất trò chơi gắn liền với câu chuyện thần thoại Hi Lạp lại có nhiều ứng dụng sống Ngày nhiều người thiết kế mê cung nhằm phục vụ nhu cầu giải trí tham gia trò chơi mở mang trí lực… Do lí chúng em chọn đề tài “ Bài toán tìm đường mê cung ứng dụng” Chúng em xin chân thành cảm ơn Thầy PGS.TSKH Trần Quốc Chiến giúp chúng em có kiến thức hiểu rõ vấn đề Nhóm Trang Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Phân công công việc STT Họ tên Trương Hoài Bão Lê Thị Hạnh Vân Đỗ Xuân Nguyễn Thị Yến Phần thực Tìm hiểu đại cương lý thuyết đồ thị Tìm hiểu thuật toán, viết chương trình Tìm hiểu toán tìm đường mê cung ƯD Tìm hiểu thuật toán, viết chương trình Chữ kí Phần 1: Nhóm Trang Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Đại cương lý thuyết đồ thị Lý thuyết đồ thị bắt đầu với tư cách ngành Toán học báo tiếng nhà toán học Euler năm 1736 cầu Konigsberg Mãi 100 năm sau tức vào kỉ 19, người ta ý đến vấn đề Lý thuyết đồ thị đặc biệt nước Anh Bài toán tiếng : “ Giả thiết bốn màu” DeMorgan đưa lần năm 1850 Đây toán có nhiều đóng góp cho Lý thuyết đồ thị Ngày Lý thuyết đồ thị phát triển thành nghành Toán học có vị trí đặc biệt quan trọng mặt lý thuyết ứng dụng I Đại cương đồ thị Đồ thị vô hướng đồ thị có hướng Đồ thị vô hướng G=(V,E) tập V đỉnh tập E cạnh Đồ thị có hướng G=(V,E) gồm tập V đỉnh tập E cạnh có hướng gọi cung Cho đồ thị (có hướng vô hướng) G= (V,E) Nếu cạnh e liên kết đỉnh v,w ta nói cạnh e liên thuộc đỉnh v,w, đỉnh w,v liên thuộc cạnh e, đỉnh v,w gọi đỉnh biên cạnh e đỉnh v kề đỉnh w Nếu có nhiều cạnh liên kết cặp đỉnh ta nói cạnh song song Cạnh có hai đỉnh liên kết không trùng gọi khuyên Đỉnh không kề với đỉnh khác gọi đỉnh cô lập Số đỉnh đồ thị gọi bậc đồ thị, số cạnh số cung đồ thị gọi cỡ đồ thị Đồ thị hữu hạn đồ thị có cỡ bậc hữu hạn Đồ thị đơn đồ thị khuyên cạnh song song Đồ thị vô hướng đủ đồ thị mà cặp đỉnh kề Nhóm Trang Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Đồ thị có hướng đủ đồ thị có đồ thị lót đủ Bậc, nửa bậc vào, nửa bậc • Cho đồ thị G=(V,E) Giả sử v ∈ V có p khuyên q cạnh liên thuộc( khuyên) Khi bậc đỉnh v 2p+q kí hiệu deg(v) Đỉnh cô lập đồ thị đơn đỉnh có bậc Đỉnh có bậc gọi đỉnh treo Cho G= (V,E) đồ thị có hướng , v ∈ V, • nửa bậc đỉnh v kí hiệu là: dego(v), số cung từ đỉnh v nửa bậc vào đỉnh v kí hiệu là: deg1(v) số cung tới đỉnh v Bổ đề bắt tay- Hand Shaking Lemma Cho đồ thị G=(V,E) Khi đó: i Tổng bậc đỉnh đồ thị bậc chẵn ∑ deg(v) = 2.card ( E ) v ∈V ii Nếu G đồ thị có hướng ∑ v∈V dego(V)= ∑ v∈V deg1(v)= card(E) Trong card(E) số phần tử tập E Chú ý: Số đỉnh bậc lẻ đồ thị vô hướng số chẵn • Đồ thị Kn đồ thị đơn, đủ n đỉnh • Mọi đỉnh đồ thị Kn có n-1 bậc Kn có n(n-1)/2 cạnh • Đồ thị lưỡng phân Cho G=(V,E) đồ thị mà tập đỉnh phân làm tập rời V1 V2 cho cạnh liên kết với đỉnh thuộc V1 đỉnh thuộc V2 kí hiệu: G=({V1,V2},E) Nhóm Trang Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Đồ thị Km.n đồ thị lưỡng phân G=({V1,V2},E) với tập V1 có m đỉnh tập V2 có n đỉnh đỉnh V1 nối với đỉnh V2 cạnh Cho đồ thị lưỡng phân đủ Km.n= G=({V1,V2},E) với tập V1 có m đỉnh tập V2 có n đỉnh Khi đỉnh V1 có bậc n đỉnh V2 có bậc m Km.n có m.n cạnh • Cho đồ thị đơn G vecto bậc d(G) đồ thị G dãy bậc tất đỉnh G xếp giảm dần Véc tơ v gồm số tự nhiên gọi vecto đồ thị tồn đơn đồ thị có vecto bậc v Đường đi, chu trình, tính liên thông • Cho đồ thị G=(V,E) Dây µ từ đỉnh v đến đỉnh w tập hợp đỉnh cạnh nối tiếp đỉnh v kết thúc đỉnh w Số cạnh dây µ gọi độ dài dây µ Dây µ từ đỉnh v đến đỉnh w độ dài k biểu diễn sau µ = (v,e1,e2,e3,v2,….,vk-1,ek,w) Trong vi (i= 1,…,k-1) đỉnh dây ei( i=1,…,k-1)là cạnh dây Đường sơ cấp đường không qua đỉnh lần Vòng dây có đỉnh đầu đỉnh cuối trùng Chu trình đường có đỉnh đầu đỉnh cuối trùng Chu trình sơ cấp chu trình không qua đỉnh lần Đồ thị vô hướng gọi liên thông cặp đỉnh có đường nối chúng lại với Đồ thị có hướng gọi liên thông mạnh cặp đỉnh có đường có hướng nối chúng lại với Đồ thị có hướng gọi liên thông yếu đồ thị lót liên thông Đồ thị có hướng gọi bán liên thông với cặp đỉnh (u,v) tồn đường có hướng từ u đến v v đến u • Trọng đồ (có hướng) đồ thị ( có hướng) mà cạnh( cung) gắn số Nhóm Trang Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Phần 2: Bài Toán Tìm Đường Đi Trong Mê Cung Bài toán tìm đường mê cung đố vui đồ thị lâu đời Trong văn học Hi Lạp câu chuyện dũng sĩ Theseus cứu công chúa Ariadne bị nhân mã Minotaur giam giữ mê cung Ở đảo Crete có quái vật đầu bò, người tên Minotaur chuyên ăn thịt người súc vật Nhà vua sai kiến trúc sư tiếng Daedalus xây dựng cung điện lớn gồm nhiều hành lang, khó để nhốt Minotaur Hằng năm nước chư hầu phải đưa người đến nộp cho quái vật Chàng dũng sĩ Theseus muốn tiêu diệt quái thú trừ họa cho muôn dân chàng gặp công chúa Ariadne, công chúa đem lòng yêu Theseus nên tìm Daedalus hỏi kế giúp chàng khỏi lạc cung điện Theo lời Daedalus, Ariadne đưa cho chàng dũng sĩ cuộn Nhờ sau giết xong quái thú anh mà không bị lạc đường Ngày nhiều mê cung giới như: Mê cung Reignac-sur-Indre Pháp Đây mê cung cối lớn giới Nhóm Trang Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Mê cung Hampton Court Anh Đây mê cung rào có tuổi thị cao Anh Mê cung Imprint Gloucester Nhóm Trang Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Trang trại Pisaniở Italia Đây mê cung phức tạp giới Mê cung dứa Hawaii Đây mê cung dài giới Nhóm Trang Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Mê cung hệ thống gồm nhiều hành lang nối với Bài toán tìm đường mê cung đứng từ vị trí S( bên mê cung cửa vào) Tìm đường đến vị trí E( cửa bên mê cung) Nếu biểu diễn mê cung đồ thị hành lang cạnh, giao điểm chúng đỉnh ta có toán tìm đường đồ thị Lưu ý ta sơ đồ mê cung D G H C J K E F I L Mê cung biểu diễn đồ thị sau: G D H J E C F A Nhóm L K B Trang Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Một vài thuật toán tìm đường mê cung Cho đồ thị G= (V,E) đỉnh s,e thuộc V.Tìm đường từ s đến e a Thuật toán Wiener: Xuất phát từ đỉnh s theo cạnh đồ thị theo nguyên tắc sau: • Tại đỉnh chọn cạnh chưa qua trước • Nếu đỉnh cạnh liên thuộc qua quay ngược lại gặp đỉnh có cạnh chưa qua Hiển nhiên cách qua tất cạnh đồ thị Tuy nhiên để thực thuật toán cần phải nhớ thứ tự cạnh qua phải có phương tiện nhớ giống “ cuộn Ariadne” b Thuật toán Tarri Xuất phát từ đỉnh s theo cạnh đồ thị theo nguyên tắc sau: • Đánh dấu hướng qua cạnh • Với đỉnh bậc lớn đồ thị, cạnh dẫn đến lần đánh dấu đặc biệt • Tại đỉnh chọn cạnh chưa qua trước Trường hợp cạnh qua chọn cạnh theo hướng ngược lại Cạnh đánh dấu đặc biệt phương án cuối cách khác Bằng cách ta qua tất cạnh đồ thị Như đồ thị liên thông lúc ta đến đỉnh e c Tìm đường mê cung Mê cung đồ thị vô hướng gồm N đỉnh mã số từ đến N, với cạnh, cạnh nối đỉnh với nhau.Cho đỉnh S T mê cung tìm đường từ S tới T  Dữ liệu vào: file MECUNG.INP với cấu trúc sau: Nhóm Trang 10 Đề tài: Tìm đường mê cung ứng dụng • GVHD: PGS.TSKH Trần Quốc Chiến Dòng đầu tiên, gọi dòng 0, chứa số tự nhiên N,S,T ghi cách dấu cách, n số lượng đỉnh mê cung, S đỉnh xuất phát, T đỉnh kết thúc • Dòng thứ i ,i= 1…n-1 cho biết có hay không cạnh nối đỉnh i với j, j= i+1 n Ví dụ: Trong đó: - Dòng 0: mê cung gồm đỉnh ( mã số từ 9), cần tìm đường từ đỉnh đến đỉnh - Dòng 1: 1 1 0 nghĩa đỉnh nối với đỉnh 2,4,5,6 Không có cạnh nối đỉnh với đỉnh 3, 7,8,9 - …………… - Dòng 8: nghĩa đỉnh nối với đỉnh Vì đồ thị vô hướng nên cạnh nối đỉnh x với đỉnh y giống cạnh nối đỉnh y với đỉnh x Nhóm Trang 11 Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Thông tin vê đỉnh n không cần thông báo đỉnh i ta cần liệt kê đỉnh j>i tạo thành cạnh (i,j) Kết lưu vào file MECUNG.OUT - Dòng ghi số tự nhiên k số đỉnh đường từ S đến T không tìm đường ghi số - Từ dòng ghi đỉnh có đường Với ví dụ có kết là: Từ đỉnh đến đỉnh qua đỉnh sau: Với mê yêu cầu tìm đường từ đỉnh đến đỉnh với liệu vào nhận kết với ý nghĩa đường từ đỉnh đến đỉnh 9, mê cung cho không liên thông, đỉnh đỉnh nằm hai vùng liên thông khác Nhóm Trang 12 Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Thuật toán: Xuất phát từ đỉnh v[1] = s, bước lặp i ta thực bước kiểm tra sau Gọi k số đỉnh qua tích lũy trong mảng giải trình đường v Cụ thể xuất phát từ đỉnh v[1] =s, sau số lần duyệt ta định chọn đường qua đỉnh v[1],v[2],v[3],….,v[k] Có thể gặp tình sau: a (Đến đích) v[k]= t, tức đến đỉnh t: thông báo kết dừng thuật toán, ngược lại sang bước b b (Thất bại) k=0: quay lại vị trí xuất phát v[i]=s mà từ không đường khác phải lùi bước, k= 0.Trường hợp chứng tỏ toán vô nghiệm, tức đồ thị không liên thông nên đường từ đỉnh s đến đỉnh t Ta thông báo vô nghiệm dừng thuật toán c (Đi tiếp) Nếu từ đỉnh v[k] tìm cạnh chưa qua dẫn đến đỉnh i tiến theo đường không thực bước d d (Lùi bước) bỏ đỉnh v[k] lùi lại đỉnh v[k-1] Thuật toán có tên sợi Arian Chương trình (* Pascal *) (* -MECUNG.PAS Tim duong me cung -*) {$B-} uses crt; const MN = 100; {So dinh toi da } fn = 'MECUNG.INP'; {input file } gn = 'MECUNG.OUT'; {output file } Nhóm Trang 13 Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến nl = #13#10; {xuong dong moi } bl = #32; {dau cach } type MB1 = array[0 MN] of byte; MB2 = array[0 MN] of MB1; var a: MB2; {ma tran ke, doi xung } v: MB1; {vet tim kiem } d: MB1; {danh dau dinh da chon } n: byte; {so dinh } s: byte; {dinh xuat phat } t: byte; {dinh ket thuc } k: byte; {buoc duyet } f,g: text; {f: input file; g: output file} (* Doc du lieu *) procedure Doc; var i,j: byte; begin assign(f,fn); reset(f); read(f,n,s,t); fillchar(a,sizeof(a),0); if (n < 1) or (n > MN) then exit; for i := to n-1 for j := i+1 to n Nhóm Trang 14 Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến begin read(f,a[i,j]); a[j,i] := a[i,j]; {lay doi xung } end; close(f); end; (* -Xem du lieu -*) procedure xem; var i,j: byte; begin write(nl,n,bl,s,bl,t,nl); for i := to n begin for j := to n write(a[i,j],bl); write(nl); end; end; (* Ghi ket qua k = 0: vo nghiem k > 0: co duong tu s den t gom k canh *) Nhóm Trang 15 Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến procedure Ket(k: byte); var i: byte; begin assign(g,gn); rewrite(g); write(g,k,nl); if k > then begin write(g,v[1]); for i := to k write(g,bl,v[i]); end; close(g); end; (* -Tu dinh v[k] tim duoc mot buoc di den dinh i d[i] = - dinh i chua xuat hien lich trinh v d[i] = - dinh i da xuat hien lich trinh v, -*) function Tim: byte; var i: byte; begin Tim := 0; for i := to n if d[i] = then {dinh i chua tham } Nhóm Trang 16 Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến if a[v[k],i] = {co duong tu v[k] den i } then begin Tim := i; exit; end; end; (* Di buoc tu v[k] den i *) procedure NhaChi(i: byte); begin inc(k); v[k] := i; {tien them buoc } d[i] := 1; {danh dau dinh da qua } end; (* Lui buoc vi tu dinh v[k] khong co kha nang nao dan den ket qua -*) procedure CuonChi; begin dec(k); end; (* Tim duong me cung (Thuat toan Soi chi Arian) Nhóm Trang 17 Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến s: dinh xuat phat t: dinh ket -*) (* -MC - Tim duong me cung (Thuat toan Arian) s: dinh xuat phat t: dinh ket *) procedure MC; var i: byte; begin Doc; {doc du lieu} { -khoi tao mang d, danh dau cac dinh da tham: d[i] = 1: dinh da tham d[i] = 0: dinh chua tham -} fillchar(d,sizeof(d),0); k := 1; {k – dem so dinh da chon } v[k] := s; {dinh xuat phat } d[s] := 1; {da tham dinh s } repeat if v[k] = t then {den dich } begin ket(k); {ghi ket qua: giai trinh duong di } Nhóm Trang 18 Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến exit; end; if k < then {vo nghiem } begin ket(0); exit; end; i := Tim; {tu dinh v[k] tim dinh chua tham i } if i > then {neu tim duoc, i > 0, di den dinh i } NhaChi(i) else CuonChi; {neu khong tim duoc, } { i = 0: lui buoc - bo dinh v[k] } until false; end; BEGIN MC; write(nl,'fini'); END Nhóm Trang 19 Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Phần 3: Một vài toán ứng dụng Bài toán dê, sói cải Một người nông dân chở dê, sói cải qua sông thuyền nhỏ Mỗi lần chở thứ sói dê cải không để sói đứng với dê cải đứng với dê mà người trông coi Hãy cách chở Ta kí hiệu n( người), s( sói), d(dê) c( cải) Ta lập đồ thị biểu diễn khả chuyển đổi trạng thái người, sói, dê, cải bên bờ sông xuất phát Mỗi nút trạng thái tập (nsdc) trừ tập (sd),(nc),(dc),(ns) Sau áp dụng thuật toán tìm đường từ (nsdc) đến nút ø Sau hai phương pháp giải : nsdc sc nsc c ndc d nd ø s nsd d nd nsdc sc nsc ø Bài toán ba ông chồng ghen Có ba cặp vợ chồng qua sông thuyền nhỏ Mỗi thuyền chở nhiều người biết bơi thuyền Các ông chồng mắc bệnh ghen nặng nên không cho vợ đứng cạnh người đàn ông khác Hãy tìm phương pháp chở tất sang sông Ký hiệu cặp vợ chồng Aa, Bb, Cc Ta lập đồ thị, biễu diễn khả chuyển đổi trạng thái cặp vợ chồng bên bờ sông xuất phát Mỗi nút trạng thái tập cuả (AaBbCc) trừ tập dạng: {S| ((aB)) ⊂ S or (aC) ⊂ S) and A∉ S} {S| ((bA)) ⊂ S or (bC) ⊂ S and B ∉ S} {S| ((cA)) ⊂ S or (cB) ⊂ S) and C ∉ S} Nhóm Trang 20 Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Và tập bù chúng Sau áp dụng thuật toán để tìm đường từ nút AaBbCc đến nút ø Sau phương pháp giải toán AaBbCc AaCc ac abc AaBb c AaBbC Cc ABC ABCc Cc ø Bài toán ba thầy tu ba quỷ Ba thầy tu ba quỷ sang sông thuyền nhỏ.Mỗi lần thuyền chở nhiều hai người có khả bơi thuyền Hãy tìm phương án sang sông cho có thầy tu quỷ bờ số thầy tu không số quỷ ( ngược lại thầy tu bị ăn thịt) Kí hiệu nút trạng thái bờ sông (m,n) n số thầy tu, m số quỷ Cặp (m,n) thỏa mãn( ≤ n,m ≤ 3) [(n=0) or (n ≥ m)] Ta lập đồ thị biểu diễn khả chuyển đổi trạng thái thầy tu quỷ bên bờ sông xuất phát Sau áp dụng thuật toán để tìm đường từ nút (3,3) đến (0,0) Sau phương án giải toán: Nhóm (3,3) (2,2) (1,1) (0,0) (3,2) (3,0) (3, 1) (1,1) (2,2) (0,2) (0,3) (0,1) Trang 21 Đề tài: Tìm đường mê cung ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Tài liệu tham khảo Giáo trình Lý Thuyết Đồ Thị Và Ứng Dụng Tác giả: PGS.TSKH Trần Quốc Chiến Bài giảng Lý Thuyết Đồ Thị Và Ứng Dụng Tác giả: PGS Hoàng Chí Thành PGS Lê Trọng Vĩnh Và tham khảo vài trang web http://tailieu.vn http://ebook.edu.vn Nhóm Trang 22 [...]... không có đường đi từ đỉnh 6 đến đỉnh 9, do mê cung đã cho không liên thông, đỉnh 6 và đỉnh 9 nằm ở hai vùng liên thông khác nhau Nhóm 2 Trang 12 Đề tài: Tìm đường đi trong mê cung và ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Thuật toán: Xuất phát từ đỉnh v[1] = s, mỗi bước lặp i ta thực hiện các bước kiểm tra sau Gọi k là số đỉnh đã đi qua và được tích lũy trong trong mảng giải trình đường đi v Cụ thể... áp dụng thuật toán trên để tìm đường đi từ nút (3,3) đến (0,0) Sau đây là một phương án giải bài toán: Nhóm 2 (3,3) (2,2) (1,1) (0,0) (3,2) (3,0) (3, 1) (1,1) (2,2) (0,2) (0,3) (0,1) Trang 21 Đề tài: Tìm đường đi trong mê cung và ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Tài liệu tham khảo 1 Giáo trình Lý Thuyết Đồ Thị Và Ứng Dụng Tác giả: PGS.TSKH Trần Quốc Chiến 2 Bài giảng Lý Thuyết Đồ Thị Và Ứng Dụng. .. ((cA)) ⊂ S or (cB) ⊂ S) and C ∉ S} Nhóm 2 Trang 20 Đề tài: Tìm đường đi trong mê cung và ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Và các tập bù của chúng Sau đó áp dụng thuật toán trên để tìm đường đi từ nút AaBbCc đến nút ø Sau đây là một phương pháp giải bài toán AaBbCc AaCc ac abc AaBb c 3 AaBbC Cc ABC ABCc Cc ø Bài toán ba thầy tu và ba con quỷ Ba thầy tu và ba con quỷ sang sông bằng một thuyền nhỏ.Mỗi.. .Đề tài: Tìm đường đi trong mê cung và ứng dụng • GVHD: PGS.TSKH Trần Quốc Chiến Dòng đầu tiên, được gọi là dòng 0, chứa 3 số tự nhiên N,S,T ghi cách nhau bởi dấu cách, trong đó n là số lượng đỉnh của mê cung, S là đỉnh xuất phát, T là đỉnh kết thúc • Dòng thứ i ,i= 1…n-1 cho biết có hay không cạnh nối đỉnh i với j, j= i+1 n Ví dụ: Trong đó: - Dòng 0: 9 6 7 là mê cung gồm 9 đỉnh (... tài: Tìm đường đi trong mê cung và ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến Phần 3: Một vài bài toán ứng dụng 1 Bài toán dê, sói và cải Một người nông dân chở dê, sói và cải qua sông bằng một con thuyền nhỏ Mỗi lần chỉ chở được một thứ hoặc sói hoặc dê hoặc cải và không được để sói ứng với dê hoặc cải ứng với dê mà không có người trông coi Hãy chỉ cách chở Ta kí hiệu n( người), s( sói), d(dê) và c( cải)... -*) procedure CuonChi; begin dec(k); end; (* Tim duong trong me cung (Thuat toan Soi chi Arian) Nhóm 2 Trang 17 Đề tài: Tìm đường đi trong mê cung và ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến s: dinh xuat phat t: dinh ket -*) (* -MC - Tim duong trong me cung (Thuat toan Arian) s: dinh xuat phat t: dinh ket *) procedure... đỉnh ( mã số từ 1 9), cần tìm đường đi từ đỉnh 6 đến đỉnh 7 - Dòng 1: 1 0 1 1 1 0 0 0 nghĩa là đỉnh 1 được nối với các đỉnh 2,4,5,6 Không có cạnh nối đỉnh 1 với các đỉnh 3, 7,8,9 - …………… - Dòng 8: 1 nghĩa là đỉnh 8 nối với đỉnh 9 Vì đồ thị vô hướng nên cạnh nối đỉnh x với đỉnh y cũng giống cạnh nối đỉnh y với đỉnh x Nhóm 2 Trang 11 Đề tài: Tìm đường đi trong mê cung và ứng dụng GVHD: PGS.TSKH Trần Quốc... cạnh (i,j) Kết quả được lưu vào file MECUNG.OUT - Dòng đầu tiên ghi số tự nhiên k là số đỉnh trên đường đi từ S đến T nếu không tìm được đường đi ghi số 0 - Từ dòng tiếp theo ghi lần lượt các đỉnh có trên đường đi Với ví dụ trên có kết quả là: Từ đỉnh 6 có thể đến được đỉnh 7 qua 5 đỉnh như sau: 6 4 2 3 7 Với mê cùng này nếu yêu cầu tìm đường đi từ đỉnh 6 đến đỉnh 9 với dữ liệu vào như trên thì sẽ nhận... Đề tài: Tìm đường đi trong mê cung và ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến exit; end; if k < 1 then {vo nghiem } begin ket(0); exit; end; i := Tim; {tu dinh v[k] tim 1 dinh chua tham i } if i > 0 then {neu tim duoc, i > 0, di den dinh i } NhaChi(i) else CuonChi; {neu khong tim duoc, } { i = 0: lui 1 buoc - bo dinh v[k] } until false; end; BEGIN MC; write(nl,'fini'); END Nhóm 2 Trang 19 Đề tài: Tìm. .. Pascal *) (* -MECUNG.PAS Tim duong trong me cung -*) {$B-} uses crt; const MN = 100; {So dinh toi da } fn = 'MECUNG.INP'; {input file } gn = 'MECUNG.OUT'; {output file } Nhóm 2 Trang 13 Đề tài: Tìm đường đi trong mê cung và ứng dụng GVHD: PGS.TSKH Trần Quốc Chiến nl = #13#10; {xuong dong moi } bl = #32; {dau cach } type MB1 = array[0 MN] of byte; MB2 = array[0 MN] of

Ngày đăng: 21/11/2015, 20:55

Từ khóa liên quan

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

Tài liệu liên quan