Chu trình euler và tìm đường đi tối ưu bằng chu trình euler C++

30 797 1
Chu trình euler và tìm đường đi tối ưu bằng chu trình euler C++

Đ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ìm đường đi tối ưu cho xe quét rác tự động bằng chu trình euler Xã hội 5.0 cuộc sống con người ngày càng được cải thiện và nâng cao chất lượng, cùng với sự phát triển đó thì lượng rác thải hàng ngày mà chúng ta thải ra môi trường cũng ngày càng nhiều hơn. Một trong các cách để thu gom rác hiệu quả là sử dụng xe quét rác. Tuy nhiên với mạng lưới giao thông phức tạp và chằng chéo nhau trên địa bàn Thành phố thì việc di chuyển qua lại quá nhiều sẽ ảnh hưởng đến giao thông cũng như các lợi ích kinh tế. Vấn đề đặt ra là tìm hành trình tối ưu sao cho đường đi của xe rác là ngắn nhất .

Đồ án sở Tìm đường tối ưu cho xe quét rác MỤC LỤC GIỚI THIỆU CHƯƠNG ĐẠI CƯƠNG VỀ ĐỒ THỊ .4 1.1 Giới thiệu 1.2 Định nghĩa đồ thị 1.3 Một số thuật ngữ 1.4 Đường đi, chu trình đồ thị liên thơng 1.5 Biểu diễn đồ thị máy tính CHƯƠNG CHU TRÌNH EULER VÀ TÌM ĐƯỜNG ĐI TỐI ƯU 2.1 Định nghĩa 2.2 Điều kiện cần đủ 2.2.1 Định lý (Định lý Euler) 2.3 Các thuật tốn tìm chu trình Euler 10 2.4 Thiết kế cấu trúc liệu giải thuật tìm đường đi, chu trình Euler 12 2.5 Bài tốn tìm đường tối ưu 14 2.5.1 Phát biểu toán 14 2.5.2 Giải thuật 14 2.5.3 Giải thuật mịn 15 CHƯƠNG III HỒN THIỆN BÀI TỐN .18 3.1 Tìm đường đi, chu trình Euler 18 3.2 Giải tốn tìm đường tối ưu cho xe qt rắc tự động chu trình euler` 21 KẾT LUẬN .29 TÀI LIỆU THAM KHẢO 30 Trang Đồ án sở Tìm đường tối ưu cho xe quét rác GIỚI THIỆU Lý thuyết đồ thị ngành khoa học phát triển từ lâu lại có nhiều ứng dụng đại Những ý tưởng đưa từ kỷ XVIII nhà toán học Thụy sĩ tên Leonhard Euler Lý thuyết đồ thị dùng để giải toán nhiều lĩnh vực khác Chúng ta xác định hai máy tính mạng trao đổi thơng tin với hay khơng nhờ mơ hình đồ thị mạng máy tính Đồ thị có trọng số cạnh sử dụng để giải tốn như: Tìm đường ngắn hai thành phố mạng giao thơng Chúng ta sử dụng đồ thị để giải tốn lập lịch, thời khóa biểu, phân bố tần số cho trạm phát truyền hình… Ngày Lý thuyết đồ thị có vị trí đặc biệt quan trọng mặt lý thuyết ứng dụng Trong nội dung tiểu luận tơi xin trình bày “Tìm đường tối ưu cho xe quét rác tự động chu trình Euler” Trang Đồ án sở Tìm đường tối ưu cho xe quét rác - Đề tài: Tìm đường tối ưu cho xe quét rác tự động chu trình Euler - Người Thực Hiện: Hồ Văn Cường - MSSV: 18574802010178 Trang Đồ án sở Tìm đường tối ưu cho xe quét rác CHƯƠNG ĐẠI CƯƠNG VỀ ĐỒ THỊ 1.1 Giới thiệu Lý thuyết đồ thị lĩnh vực nghiên cứu có từ lâu có nhiều ứng dụng ngành công nghệ thông tin Những tư tưởng lý thuyết đồ thị đề xuất vào năm đầu kỷ 18 nhà toán học lỗi lạc người Thụy Sỹ: Leonhard Euler Chính ơng người sử dụng đồ thị để giải toán tiếng cầu thành phố Konigberg Những ứng dụng đồ thị như: - Xác định tính liên thơng mạng máy tính: hai máy tính truyền liệu cho khơng - Tìm đường ngắn mạng giao thông -… 1.2 Định nghĩa đồ thị Định nghĩa 1.2.1 Một đơn đồ thị vô hướng G=, đó: - V ≠ Ø tập hợp hữu hạn gồm đỉnh đồ thị - E tập hợp cặp khơng có thứ tự gồm hai phần tử khác V gọi cạnh Như vậy, theo định nghĩa trên, đơn đồ thị khơng thể có cặp cạnh nối cặp đỉnh (do E tập hợp nên khơng thể có cặp trùng nhau), cạnh không phân biệt thứ tự nên cạnh [u,v] cạnh [v,u] coi cạnh nhất, điều phù hợp với việc biểu diễn đường chiều, hiển nhiên khơng có cặp [u,u] E Ví dụ 1.1 a Đơn đồ thị vô hướng b Không phải đơn đồ thị vơ hướng có cặp cạnh nối cặp đỉnh c Không phải đơn đồ thị vô hướng có cạnh nối đỉnh với Định nghĩa 1.2.2 Đa đồ thị vô hướng G=, - V ≠ Ø tập hợp hữu hạn gồm đỉnh đồ thị - E họ cặp khơng có thứ tự V gọi cạnh Định nghĩa 1.2.3 Đơn đồ thị có hướng G=, đó: - V ≠ Ø tập hợp hữu hạn gồm đỉnh đồ thị - E tập hợp cặp có thứ tự gồm hai phần tử khác V gọi cung Ví dụ: Trang Đồ án sở Tìm đường tối ưu cho xe quét rác Định nghĩa 1.2.4 Đa đồ thị có hướng G=, - V ≠ Ø tập hợp hữu hạn gồm đỉnh đồ thị - E họ cặp có thứ tự V gọi cung Các cung nối cặp đỉnh gọi cung song song Ví dụ: Chú ý: - Đồ thị sau coi đơn đồ thị có hướng e1và e2, e3 e4 khơng phải cung song song (do khác hướng) 1.3 Một số thuật ngữ Định nghĩa 1.3.1 Cho đồ thị vô hướng G= - Hai đỉnh u v đồ thị gọi kề (u,v) cạnh đồ thị - Nếu e=(u,v) cạnh đồ thị ta nói cạnh liên thuộc với hai đỉnh u v Cạnh nói nối đỉnh u v Đỉnh u v gọi đỉnh đầu cạnh e Định nghĩa 1.3.2 Cho đồ thị vô hướng G= Bậc đỉnh v đồ thị, ký hiệu deg(v), số cạnh liên thuộc với Đỉnh có bậc gọi đỉnh lập, đỉnh có bậc gọi đỉnh treo Định nghĩa 1.3.3 Cho đồ thị có hướng G= - Hai đỉnh u v đồ thị gọi kề (u,v) cung đồ thị - Nếu e=(u,v) cung đồ thị ta nói cung khỏi đỉnh u vào vào đỉnh v Đỉnh u gọi đỉnh đầu cung e đỉnh v gọi đỉnh cuối cung e 1.4 Đường đi, chu trình đồ thị liên thơng Định nghĩa 1.4.1 Cho đồ thị *G = (* ký hiệu cho dùng chung đồ thị vơ hướng có hướng) Đường độ dài n từ đỉnh u đến đỉnh v (n số nguyên dương) dãy: Trang Đồ án sở Tìm đường tối ưu cho xe quét rác * Ta dùng thuật ngữ đồ thị để chung cho đồ thị vơ hướng đồ thị có hướng Đường nói biểu diễn dãy cạnh/cung: Đỉnh u gọi đỉnh đầu đường đi, đỉnh v gọi đỉnh cuối đường Đường có đỉnh đầu đỉnh cuối trùng (u=v) gọi chu trình Ví dụ: Cho đồ thị vơ hướng sau: Một số đường từ đỉnh đến đỉnh 7: - Đường d1: (đường độ dài 2) - Đường d2: (đường độ dài 3) Một số chu trình đồ thị trên: - Chu trình C1: (chu trình có độ dài 3) - Chu trình C2: (chu trình có độ dài 7) Định nghĩa 1.4.2 Đồ thị vô hướng G = gọi liên thơng ln tìm đường hai đỉnh Ví dụ: Xét đồ thị vơ hướng sau: Trong đồ thị G1là đồ thị liên thơng, G2 khơng phải đồ thị liên thơng hai đỉnh không tồn đường Định nghĩa 1.4.3 Cho đồ thị G = (V,E) Đồ thị H = gọi đồ thị G W € V F € E Trong trường hợp đồ thị vô hướng G khơng liên thơng, phân thành đồ thị độc lập chúng liên thông Mỗi đồ thị gọi thành phần liên thông G Định nghĩa 1.4.4 Cho đồ thị vô hướng G = Đỉnh v đồ thị gọi đỉnh rẽ nhánh việc loại bỏ v cạnh liên thuộc với khỏi đồ thị làm tăng số thành phần liên thông đồ thị Cạnh e đồ thị gọi cầu việc loại bỏ khỏi đồ thị làm tăng số thành phần liên thơng đồ thị Ví dụ: Xét đồ thị sau: Trang Đồ án sở Tìm đường tối ưu cho xe quét rác Trong đồ thị trên, đỉnh đỉnh rẽ nhánh việc loại đỉnh với cạnh (2,3), (2,1), (2,6) làm đồ thị có thành phần liên thơng Cạnh (2,3) cầu Các cạnh lại khơng phải cầu Đối với đồ thị có hướng khái niệm liên thơng khó thỏa mãn cung bị hạn chế chiều Từ đó, bên cạnh khái niệm liên thơng đề cập đồ thị vô hướng, ta đưa thêm khái niệm liên thông nhẹ hơn: liên thông yếu Định nghĩa 1.4.5 Cho G = đồ thị có hướng a G gọi liên thơng mạnh ln tìm đường hai đỉnh b G gọi liên thông yếu đồ thị vô hướng tương ứng với (đồ thị vơ hướng có cách biến cung chiều thành cạnh hai chiều) đồ thị vô hướng liên thông 1.5 Biểu diễn đồ thị máy tính Định nghĩa 1.5.1.1 Cho đồ thị G = , với tập đỉnh V = {v1, v2, , vn} Ta gọi ma trận kề đồ thị ma trận A, kích thước nxn xác định sau: Ví dụ: a Xét đồ thị vơ hướng sau: Ma trận kề đồ thị là: Trang Đồ án sở Tìm đường tối ưu cho xe quét rác CHƯƠNG CHU TRÌNH EULER VÀ TÌM ĐƯỜNG ĐI TỐI ƯU 2.1 Định nghĩa Cho đồ thị G=(V,E), V tập hợp đỉnh, E tập hợp cạnh Chu trình Euler chu trình qua cạnh đỉnh đồ thị, cạnh không lần Đường Euler đường qua cạnh đỉnh đồ thị, cạnh không lần Cho đồ thị có hướng G=(V,E) Chu trình có hướng Euler chu trình có hướng qua cung đỉnh đồ thị, cung không lần Đường có hướng Euler đường có hướng qua cung đỉnh đồ thị, cung không lần Đồ thị chứa chu trình Euler gọi Đồ thị Euler 2.2 Điều kiện cần đủ 2.2.1 Định lý (Định lý Euler) Đồ thị G có chu trình Euler G liên thơng đỉnh có bậc chẵn khác Chứng minh (i) (): Giả sử G có chu trình Euler v đỉnh G Khi chu trình Euler đến v theo cạnh e khỏi v cạnh e’  e Do bậc v phải số chẵn G hiển nhiên liên thông (ii) (): Giả sử G liên thông đỉnh có bậc chẵn khác Ta chứng minh G có chu trình Euler quy nạp theo số cạnh m G  m = 1: Vì G liên thơng đỉnh bậc chẵn nên G có đỉnh khuyên Khuyên tạo thành chu trình Euler  Giả sử G có m cạnh, số đỉnh n > đồ thị liên thơng có số cạnh nhỏ m với đỉnh bậc chẵn có chu trình euler + Trường hợp n = hiển nhiên tồn chu trình Euler + Trường hợp n > Vì bậc đỉnh chẵn  2, chọn đỉnh a, b, c với cạnh x = (a,b), y = (a,c) - Giả sử G chứa cạnh z = (b,c) Trang Đồ án sở Tìm đường tối ưu cho xe quét rác Xét đồ thị G’ thu từ G cách loại bỏ ba cạnh x,y,z Sẽ xảy ba khả sau:  G’ liên thơng Vì số cạnh G’ nhỏ m đỉnh có bậc chẵn nên theo giả thiết quy nạp tồn chu trình Euler C’ G’ Nối chu trình (x,y,z) với C’ ta thu chu trình Euler C G  G’ có thành phần liên thơng G G2 Khơng tính tổng quát giả sử G1 chứa a, G2 chứa b c G1 có chu trình Euler C 1, G2 có chu trình Euler C2 Ta xây dựng chu trình Euler C G sau Xuất phát từ đỉnh a theo chu trình C1 quay a, sau theo cạnh x = (a,b) đến đỉnh b, từ b theo chu trình C2 quay b, sau theo cạnh z = (b,c) y = (c,a) quay a 2.2.2 Định lý Cho đồ thị G có k đỉnh bậc lẻ Khi số đường tối thiểu phủ G k/2 Chứng minh Ta biết số đỉnh bậc lẻ chẵn, k=2n Chứng minh quy nạp theo n (i) n=1: Nối đỉnh bậc lẻ với cạnh z ta thu đồ thị G’ thoả định lý Euler Như G’ có chu trình Euler C’ Bỏ cạnh z C’ ta thu đường Euler phủ G (ii) Giả sử G có số đỉnh bậc lẻ 2n định lý với k dO(v)} T = {u  V : dI(v) < dO(v)} Từ bổ đề bắt tay ta có d vV O (v ) =  d (v )    d (v )  d I vV I vS O (v )  =  d O (v )  d I ( v )  vT Ta ký hiệu Trang Đồ án sở Tìm đường tối ưu cho xe quét rác k=   d (v )  d I vS O (v )  =  d O (v )  d I ( v )  vT 2.2.3 Định lý (i) Đồ thị có hướng G có chu trình có hướng Euler G liên thơng yếu đỉnh có nửa bậc vào nửa bậc ra, tức S =  T =  (ii) Nếu S  , số đường có hướng tối thiểu phủ G k Các đường nối đỉnh T đến đỉnh tập S Ví dụ: Đồ thị A B D C Đồ thị có chu trình Euler: (A,B,C,D,A) 2.3 Các thuật tốn tìm chu trình Euler 2.3.1 Thuật toán + Đầu vào Đồ thị G  , khơng có đỉnh lập + Đầu Chu trình Euler C G, kết luận G khơng có chu trình Euler + Phương pháp (1) Xuất phát: Đặt H := G, k := 1, C :=  Chọn đỉnh v  G (2) Xuất phát từ v, xây dựng chu trình Ck H Nếu tồn Ck , nối Ck vào C, C := C  Ck Sang bước (3) Nếu khơng tồn Ck , kết luận khơng có chu trình Euler, kết thúc (3) Loại khỏi H chu trình C k Nếu H chứa đỉnh lập loại chúng khỏi H Sang bước (4) (4) Nếu H = , kết luận C chu trình Euler, kết thúc Ngược lại sang bước (5) (5) Nếu H C khơng có đỉnh chung, kết luận khơng có chu trình Euler, kết thúc Nếu H C có đỉnh chung Chọn v đỉnh chung H C Đặt k := k+1 Quay lại bước (2) Ví dụ Trang Đồ án sở Tìm đường tối ưu cho xe quét rác Smin:=tổng k/c; Lưu mảng C vào mảng M //lưu M số thứ tự cặp đỉnh thuộc phân hoạch nhỏ end Cap[k]:=true; Danhdau[i]=false; //với dỉnh lẻ Else End danhdau[dau[k]]=danhdau[cuoi[k]]=True B3: Lập đồ thị G’,Tìm chu trình Euler // danh sách cạnh, thêm cạnh ảo for i:= to n for j:= i+1 to n begin t:=t+1; if(phần tử mảng A[Ten[i],Ten[j]] 0)then //lưu cặp đỉnh vào mảng dau1[t],cuoi1[t] Dau1[t]=Ten[i] ;cuoi1[t]=Ten[j] end; For cặp đỉnh mảng M //Mảng M chứa phân hoạch nhỏ begin t:=t+1; lưu vào hai mảng dau1,cuoi1 end; /tìm chu trình Euler c:=0; top:=0; dau1[0]stack //đường đỉnh dau1[0] while top0 begin xstack i:=0; //t số cạnh while (i

Ngày đăng: 23/05/2020, 13:00

Mục lục

    CHƯƠNG 1. ĐẠI CƯƠNG VỀ ĐỒ THỊ

    1.2 Định nghĩa đồ thị

    1.3. Một số thuật ngữ cơ bản

    1.4. Đường đi, chu trình và đồ thị liên thông

    1.5 Biểu diễn đồ thị trên máy tính

    CHƯƠNG 2. CHU TRÌNH EULER VÀ TÌM ĐƯỜNG ĐI TỐI ƯU

    2.2. Điều kiện cần và đủ

    2.2.1. Định lý 1 (Định lý Euler)

    2.3. Các thuật toán tìm chu trình Euler

    (4) Nếu H = , thì kết luận C là chu trình Euler, kết thúc. Ngược lại sang bước (5)

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

Tài liệu liên quan