ỨNG DỤNG MAPPLE ĐỂ GIẢI BÀI TOÁN TÌM ĐƯỜNG ĐI EULER VÀ ĐƯỜNG ĐI HALMITON TRONG ĐỒ THỊ VÔ HƯỚNG

15 569 0
ỨNG DỤNG MAPPLE ĐỂ GIẢI BÀI TOÁN TÌM ĐƯỜNG ĐI EULER VÀ ĐƯỜNG ĐI HALMITON TRONG ĐỒ THỊ VÔ HƯỚ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

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH CHƯƠNG TRÌNH ĐÀO TẠO THẠC SĨ CNTT QUA MẠNG CHUYÊN ĐỀ LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO BÁO CÁO ỨNG DỤNG MAPPLE ĐỂ GIẢI BÀI TOÁN TÌM ĐƯỜNG ĐI EULER VÀ ĐƯỜNG ĐI HALMITON TRONG ĐỒ THỊ VÔ HƯỚNG Giảng viên hướng dẫn: PGS.TS. ĐỖ VĂN NHƠN Học viên thực hiện: VŨ VĂN VIỆT (CH1101058) tháng 01 năm 2013 LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO GIỚI THIỆU Maple là một hệ thống tính toán trên các biểu thức đại số và minh họa hình học mạnh mẽ của công ty Warterloo Maple Inc. (http://www.maplesoft.com), ra đời năm 1991, đã phát triển đến phiên bản 11 (đến 4/2007). Maple chạy trên tất cả các hệ điều hành, có trình trợ giúp (Help) rất dễ sử dụng. Từ phiên bản 7, Maple cung cấp ngày càng nhiều các công cụ trực quan, các gói lệnh tự học gắn liền với toán phổ thông và đại học. Ưu điểm đó khiến ngày càng có nhiều nước trên thế giới lựa chọn sử dụng Maple trong dạy-học toán tương tác trước đòi hỏi của thực tiễn và sự phát triển của giáo dục. Có thể nêu vắn tắt các chức năng cơ bản của Maple như sau: • Là một hệ thống tính toán trên các biểu thức đại số; • Có thể thực hiệc được hầu hết các phép toán cơ bản trong chương trình toán đại học và sau đại học; • Cung cấp các công cụ minh họa hình học thuận tiện gồm: vẽ đồ thị tĩnh và động của các đường và mặt được cho bởi các hàm tùy ý trong nhiều hệ tọa độ khác nhau; • Một ngôn ngữ lập trình đơn giản và mạnh mẽ, có khả năng tương tác với các ngôn ngữ lập trình khác; • Cho phép trích xuất ra các định dạng khác nhau như LaTex, Word, HTML, • Một công cụ biên soạn giáo án và bài giảng điện tử, thích hợp với các lớp học tương tác trực tiếp; • Một trợ giáo hữu ích cho học sinh và sinh viên trong việc tự học; Trong phần báo cáo này em có cài đặt “ỨNG DỤNG MAPPLE ĐỂ GIẢI BÀI TOÁN TÌM ĐƯỜNG ĐI EULER VÀ ĐƯỜNG ĐI HALMITON TRONG ĐỒ THỊ VÔ HƯỚNG”, nhằm hiểu rõ hơn về Mapple và sau này có thể ứng dụng Mapple vào trong trong việc triển khai các dự án về giáo dục. Sinh viên thực hiện: VŨ VĂN VIỆT - CH1101058 2 LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO MỤC LỤC PHÂN TÍCH YÊU CẦU 4 1. ĐỊNH NGHĨA VỀ CHU TRÌNH VÀ ĐƯỜNG ĐI EULER 4 2. ĐỊNH LÝ EULER VỀ CHU TRÌNH VÀ ĐƯỜNG ĐI EULER 4 3. CÁC TÍNH CHẤT KHÁC 5 4. ĐƯỜNG ĐI HAMILTON 5 CÁC THỦ TỤC TRONG BÀI TOÁN 5 i. Thủ tục khởi tạo ban đầu: 5 ii. Thủ tục m chu trình Euler 6 iii. Thủ tục m chu trình đường đi Euler 8 iv. Thủ tục m tất cả đường đi Hamilton trong đồ thị G 9 DỮ LIỆU THỬ NGHIỆM 13 TÀI LIỆU THAM KHẢO 15 Sinh viên thực hiện: VŨ VĂN VIỆT - CH1101058 3 LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO PHÂN TÍCH YÊU CẦU 1. Định nghĩa về chu trình và đường đi Euler 1. Đường đi Euler (tiếng Anh: Eulerian path, Eulerian trail hoặc Euler walk) trong đồ thị vô hướng là đường đi của đồ thị đi qua mỗi cạnh của đồ thị đúng một lần. 2. Chu trình Euler (tiếng Anh: Eulerian cycle, Eulerian circuit hoặc Euler tour) trong đồ thị vô hướng) là một chu trình đi qua mỗi cạnh của đồ thị đúng một lần. 3. Đồ thị gọi là đồ thị Euler khi nó chứa chu trình Euler, và được gọi là nửa Euler khi nó chứa đường đi Euler. 4. Đối với các đồ thị có hướng, các thuật ngữ đường đi và chu trình được thay bằng đường đi có hướng và chu trình có hướng. 2. Định lý Euler về chu trình và đường đi Euler 1. Đồ thị vô hướng liên thông G=(X, E) có chu trình Euler khi và chỉ khi G không có đỉnh bậc lẻ. 2. Đồ thị vô hướng liên thông G=(X, E) có đường đi Euler khi và chỉ khi G có không quá hai đỉnh bậc lẻ. Nếu G có hai đỉnh bậc lẻ thì đường đi Euler có hai đầu đường đi nằm ở hai đỉnh bậc lẻ. Phát biểu lại định lý 1: Một đa đồ thị không có điểm cô lập có chu trình Euler nếu và chỉ nếu đồ thị là liên thông và mỗi đỉnh của nó đều có bậc chẵn Sinh viên thực hiện: VŨ VĂN VIỆT - CH1101058 4 LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO 3. Các tính chất khác 1. Một đồ thị vô hướng là đồ thị Euler nếu nó liên thông và có thể phân tích thành các chu trình có các cạnh rời nhau. 2. Nếu đồ thị vô hướng G là Euler thì đồ thị đường L(G) cũng là Euler. 3. Đồ thị có hướng là Euler nếu nó liên thông và mọi đỉnh của nó có bậc vào bằng bậc ra. 4. Đồ thị có hướng là Euler nếu nó liên thông và có thể phân tích thành các chu trình có hướng với các cung rời nhau. 4. Đường đi Hamilton Một đường đi Hamilton là một đường đi trong đồ thị vô hướng đi qua tất cả các đỉnh của đồ thị, mỗi đỉnh đúng một lần. Một Chu trình Hamilton là một đường đi Hamilton sau đi qua tất cả các đỉnh của đồ thị thì trở về đỉnh xuất phát. Một đồ thị có chu trình Hamilton được gọi là đồ thị Hamilton, đồ thị có đường đi Hamilton được gọi là đồ thị nửa Hamilton. Bài toán tìm đường đi và chu trình như vậy được gọi là bài toán Hamilton. Bài toán Hamilton là NP đầy đủ. Các thủ tục trong bài toán i. Thủ tục khởi tạo ban đầu: > Init:=proc() restart; interface( warnlevel = 0 ); with(networks); #with(LinearAlgebra); end: Sinh viên thực hiện: VŨ VĂN VIỆT - CH1101058 5 LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO ii. Thủ tục tìm chu trình Euler > Euler:=proc(G::graph) local H,V,E,vStart,ECycle,C,S,cycleFound,i,j,k; H:=duplicate(G); V:=vertices(G); E:=edges(G); vStart:=V[1]; ECycle:=[]; while E<>{} do i:=vStart; C:=[i]; cycleFound:=false; while not cycleFound do #Tim dinh j ke can i, neu j=vStart -> duoc 1 chu trinh S:=neighbors(i,H); for j in S do if j<>vStart then break; fi; od; #Them dinh j vao C, roi xoa canh (i,j) if j=vStart then cycleFound:=true; else C:=[op(C),j]; Sinh viên thực hiện: VŨ VĂN VIỆT - CH1101058 6 LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO fi; #for k in E do # if {i,j}=ends(k,H) then k:=edges({i,j},H,all)[1]; E:=E minus {k}; delete(k,H); # break; # fi; #od; i:=j; #Neu tim duoc 1 chu trinh C thi them vao ECycle, if cycleFound then #Them chu trinh C vao ECycle tai vi tri vStart if ECycle=[] then ECycle:=C; else i:=1; while ECycle[i]<>vStart do i:=i+1; od; ECycle:=[op(1 i-1,ECycle), op(C), op(i nops(ECycle), ECycle)]; fi: #Tim dinh vStart ke tiep neu con chu trinh if E<>{} then Sinh viên thực hiện: VŨ VĂN VIỆT - CH1101058 7 LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO V:={}; for i in E do V:=V union ends(i,H) od; V:=V intersect convert(ECycle,set); vStart:=V[1]; fi; fi; od; od; ECycle:=[op(ECycle),ECycle[1]]; return ECycle; end: iii. Thủ tục tìm chu trình đường đi Euler > EulerRouting:=proc(G::graph) local Result,i,vOdd,H,tmp; if connectivity(G)=0 then printf("do thi khong lien thong"); return NULL; fi; vOdd:={}; for i in vertices(G) do if vdegree(i,G) mod 2 = 1 then vOdd:=vOdd union {i} fi; Sinh viên thực hiện: VŨ VĂN VIỆT - CH1101058 8 LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO od; if nops(vOdd)=2 then H:=duplicate(G); connect({vOdd[1]},{vOdd[2]},H); tmp:=Euler(H); i:=1; while {tmp[i],tmp[i+1]}<>vOdd do i:=i+1 od; Result:=[op(i+1 nops(tmp)-1,tmp),op(1 i,tmp)]; printf("Duong di Euler : "); lprint(Result); elif nops(vOdd)=0 then Result:=Euler(G); printf("Chu trinh Euler tim duoc :"); lprint(Result); else printf("Do thi khong co duong di Euler"); fi; end: iv. Thủ tục tìm tất cả đường đi Hamilton trong đồ thị G > Hamilton:=proc(Grph::graph) local R,C,Try,Found,i; Sinh viên thực hiện: VŨ VĂN VIỆT - CH1101058 9 LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO R:=[]; C:=[]; #Found:=false; Try:=proc(G::graph,v) local H,S,i,j; Result:=[op(Result),v]; S:=neighbors(v,G); H:=duplicate(G); delete({v},H); if nops(vertices(H))=1 then #Found:=true; #Result:=[op(Result),S[1]]; if edges({S[1],Result[1]},Grph)<>{} then C:=[op(C),[op(Result),S[1],Result[1]]]; else R:=[op(R),[op(Result),S[1]]]; fi; #lprint([op(Result),S[1]]); return; elif connectivity(H)=0 then return; Sinh viên thực hiện: VŨ VĂN VIỆT - CH1101058 10 [...]... draw(G); EulerRouting(G): Sinh viên thực hiện: VŨ VĂN VIỆT - CH1101058 13 LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO > V:={a,b,c,d,f}: E:=[{a,b},{a,c},{a,f},{b,c},{d,f},{b,d}]: G:=graph(V,E): draw(G); Hamilton(G); Sinh viên thực hiện: VŨ VĂN VIỆT - CH1101058 14 LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO TÀI LIỆU THAM KHẢO [1] Tài Liệu lập trình Symbolic – PGS.TS Đỗ văn Nhơn – ĐHCNTT TP.HCM [2] Sử dụng Mapple để. .. - CH1101058 14 LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO TÀI LIỆU THAM KHẢO [1] Tài Liệu lập trình Symbolic – PGS.TS Đỗ văn Nhơn – ĐHCNTT TP.HCM [2] Sử dụng Mapple để dạy – học Toán trong môi trường tương - Nguyễn Chánh Tú (Khoa Toán, ĐHSP Huế) Sinh viên thực hiện: VŨ VĂN VIỆT - CH1101058 15 . sinh và sinh viên trong việc tự học; Trong phần báo cáo này em có cài đặt ỨNG DỤNG MAPPLE ĐỂ GIẢI BÀI TOÁN TÌM ĐƯỜNG ĐI EULER VÀ ĐƯỜNG ĐI HALMITON TRONG ĐỒ THỊ VÔ HƯỚNG”, nhằm hiểu rõ hơn về Mapple. về chu trình và đường đi Euler 1. Đường đi Euler (tiếng Anh: Eulerian path, Eulerian trail hoặc Euler walk) trong đồ thị vô hướng là đường đi của đồ thị đi qua mỗi cạnh của đồ thị đúng một. TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO BÁO CÁO ỨNG DỤNG MAPPLE ĐỂ GIẢI BÀI TOÁN TÌM ĐƯỜNG ĐI EULER VÀ ĐƯỜNG ĐI HALMITON TRONG ĐỒ THỊ VÔ HƯỚNG Giảng viên hướng dẫn: PGS.TS. ĐỖ VĂN NHƠN Học viên thực

Ngày đăng: 10/04/2015, 00:51

Từ khóa liên quan

Mục lục

  • 1. Định nghĩa về chu trình và đường đi Euler

  • 2. Định lý Euler về chu trình và đường đi Euler

  • 3. Các tính chất khác

  • 4. Đường đi Hamilton

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

Tài liệu liên quan