1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo đồ án nghiên cứu, cài đặt thuật toán giải bài toán lập hành trình người đưa thư và ứng dụng

38 1K 0

Đ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

Thông tin cơ bản

Tiêu đề Báo cáo đồ án nghiên cứu, cài đặt thuật toán giải bài toán lập hành trình người đưa thư và ứng dụng
Tác giả Lê Thị Mộng Thanh
Người hướng dẫn PGS, TS Nguyễn Hiếu
Trường học Học viện Công nghệ Thông tin - Đại học Quốc gia Hà Nội
Chuyên ngành Khoa học máy tính
Thể loại Báo cáo đồ án nghiên cứu
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 38
Dung lượng 0,97 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nếu gọi TST là chu trình Hamilton nhỏ nhất, người ta chứng minh được rằng: LH... Ta tiếp tục kiểm tra cho các đoạn tiếp theo nếu có khả năng thay bằng một đoạn đường mới t

Trang 2

Mô tả bài toán người đưa thư

Giải bài toán người đưa thư

Thuật toán tìm chu trình Euler

5

Thuật toán tìm đường đi ngắn nhất

6

Trang 3

1 Mô tả bài toán người đưa thư:

Yêu cầu bài toán: Một ngừơi đưa thư xuất phát từ bưu điện hàng ngày phải đi qua tất cả các địa điểm(như:

cơ quan, công ty, xí nghiêp…) được phân công trong thành phố để phát thư, báo Yêu cầu đặt ra là tìm lộ trình đường đi ngắn nhất.

- Thực chất đây là bài toán tìm chu trình Hamilton của

n đỉnh của đồ thị, mỗi đỉnh qua đúng một lần sao cho tổng độ dài đường đi là nhỏ nhất.

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 4

2 Chu trình Hamilton:

- Định nghĩa: Chu trình bắt đầu từ một đỉnh v nào đó qua tất cả

các đỉnh còn lại mỗi đỉnh đúng một lần rồi quay trở về v được gọi là chu trình Hamilton

Ví dụ: Đồ thị Hamilton G3, nửa Hamilton G2 , và G1

Trang 5

Ví dụ Hình dưới đây mô tả cây tìm kiếm theo thuật toán 1.

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 6

Các thuật toán tìm chu trình Hamilton:

2.2 Thuật toán 2 (Tham khảo: Urban Operations Research - Richard C.Larson và Amedeo R.Odoni - Prentice-Hall).

Đối với thuật toán 1 chỉ áp dụng hiệu quả với số lượng đỉnh nhỏ Khi áp dụng thuật toán nhánh cận để tìm chu trình có độ phức tạp lớn O(n!) Với những bài toán yêu cầu số đỉnh phải xét lớn,

ta có thể giải bằng các phương pháp gần đúng.

Bước 1: Tìm cây khung nhỏ nhất, gọi là cây T (ở bước này có thể

áp dụng thuật toán tìm cây khung tối thiểu Kruskal hoặc Prim ).

Bước 2: Tìm trên T tập hợp những đỉnh bậc lẻ (số đỉnh bậc lẻ luôn

là một số chẵn) Xây dựng đồ thị M có số đỉnh là tập những đỉnh bậc lẻ trên (giả sử có m đỉnh bậc lẻ) và tập cạnh là m/2 (được tạo bằng cách ghép m/2 cặp đỉnh lẻ với nhau) sao cho đồ thị M tối

ưu nhất (tức là tổng độ dài các cạnh là nhỏ nhất).

Trang 7

Các thuật toán tìm chu trình Hamilton:

Bước 3: Gọi H là đồ thị hợp bởi T và M (H=T+M) Lúc này các

đỉnh trong H đều có bậc chẵn và do đó ta có 1 chu trình Eulerian

Nếu gọi TST là chu trình Hamilton nhỏ nhất, người ta chứng minh được rằng:

L(H)<3/2L(TST)

Bước 4: Kiểm tra những đỉnh của H, nếu đỉnh nào thăm quá 1 lần

trong chu trình Eulerian thì cải tiến đường đi bằng cách thay các đoạn đường đi mới theo bất đẳng thức tam giác Khi các đỉnh đều có bậc bằng 2 thi giải thuật kết thúc

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 8

Ví dụ: Giả sử một đồ thị có 10 đỉnh cho bởi ma trận khoản

cách sau

Các thuật toán tìm chu trình Hamilton:

Trang 9

Các bước thực hiện:

+ Bước 1: Tìm cây khung

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 10

2

4 7

Các bước thực hiện:

+ Bước 2: Nối các đỉnh b ậc lẻ

3

Trang 11

1

2

4 7

Trang 12

2

4 7

Các bước thực hiện:

+ Bước 3: Tìm chu trình Euler

3

Trang 13

1

2

4 7

Các bước thực hiện:

+ Bước 4: Tối ưu hoá bằng bất đẳng thức tam giác

3

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 14

2

4 7

Các bước thực hiện:

* Xét với đỉnh 2:

3

(1,2)+(2,3) = 54 (1,3) = 43

(4,2)+(2,3) = 63 (3,4) = 53

(1,2)+(2,3) = 54 (1,3) = 43

43

Trang 15

1

2

4 7

Các bước thực hiện:

* Xét với đỉnh 7:

(1,7)+(7,8) = 60 (1,8) = 41

Trang 16

2

4 7

Các bước thực hiện:

Sau khi hạ bậc các đỉnh ta có chu trình như sau:

3 41

29

34

43

Trang 17

Các bước thực hiện:

* Ta tiếp tục cải tiến các đoạn đường đi khác bằng cách giao

hoán các đỉnh trong một đoạn đường đi nào đó có thể :

Ví dụ thay đoạn : 4  6  5  7 bằng 4  5  6 7 được

đường đi mới :

1 3  2  4  5 6  7  10  9 8  1 với tổng độ dài L(H)=349(< L(Hcu)=371)

Ta tiếp tục kiểm tra cho các đoạn tiếp theo nếu có khả năng thay bằng một đoạn đường mới tối ưu hơn như cách trên

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 18

Các bước thực hiện:

1

2

4 7

29

34

45 40

Trang 19

Các bước thực hiện:

Cuối cùng chu trình Hamilton là:

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 20

Những ưu và nhược điểm của thuật toán 2:

 Nhược điểm:

- Thuật toán 2 chỉ là phương pháp giải gần đúng, lớn hơn cỡ 5%

so với thuật toán tối ưu nhất

Trang 21

3 Thuật toán tìm cây khung:

3.1 Thuật toán Kruskal

- Bước1: Sắp xếp các cạnh của đồ thị G theo thứ tự không giảm của độ dài.

- Bước2: Bắt đầu từ tập T= , ở mỗi bước ta sẽ lần lượt duyệt trong danh sách cạnh đã sắp xếp, từ cạnh

có độ dài nhỏ đến cạnh có độ dài lớn hơn, để tìm ra cạnh mà việc bổ sung nó vào tập T gồm n-1 cạnh, và không chứa chu trình.

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 22

Thuật toán Kruskal

Ví dụ 1.Tìm cây khung nhỏ nhất của đồ thị cho trong hình dưới

Trang 23

3.2 Thuật toán Prim:

- Bước 1: Bắt đầu từ một đỉnh s tuỳ ý của đồ thị, đầu tiên ta nối

s với đỉnh lân cận gần nó nhất, chẳng hạn là đỉnh y Nghĩa là trong số các cạnh kề của đỉnh s, cạnh (s,y) có độ dài nhỏ nhất

- Bước 2: Tiếp theo trong số các cạnh kề với hai đỉnh s hoặc y

ta tìm cạnh có độ dài nhỏ nhất, cạnh này dẫn đến đỉnh thứ ba z

Quá trình này sẽ tiếp tục cho đến khi ta thu được cây gồm n đỉnh và n-1 cạnh sẽ chính là cây khung nhỏ nhất cần tìm

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 24

Thuật toán Prim:

Ví dụ: Tìm cây khung nhỏ nhất cho đồ thị xét trong ví dụ 1 trên

theo thuật toán Prim Ma trận trọng số của đồ thị có dạng

Trang 25

Thuật toán Prim:

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 26

4 Thuật toán nối các đỉnh bậc lẻ:

- Bước 1: Xây dựng ma trận vuông A||i,j|| với i,j m với a(i,j)

là đường đi ngắn nhất giữa hai đỉnh bậc lẻ, phần tử a(i,i)=∞

Ma trận A là ma trận đối xứng

- Bước 2: Tìm giá trị nhỏ nhất trên mỗi hàng và trừ tất cả các

phần tử trên hàng đó cho giá trị đó Nếu cột nào chưa có phần

tử nào bằng 0 thì trừ tất cả các phần tử của cột đó cho giá trị của phần tử nhỏ nhất

- Bước 3: Chọn phần tử a(i,j)=0 sao cho tổng T=a(i,k)+a(l,j)

lớn nhất Với a(i,k) là phần tử có giá trị nhỏ nhất hàng i, a(l,k) là phần tử nhỏ nhất cột j Xoá hàng i, cột j khỏi ma trận

A, nếu A có một phần tử thì kết thúc, nếu không quay lại bước 1

Trang 27

Thuật toán nối các đỉnh bậc lẻ:

Ví dụ: xét đồ thị vô hướng như hình vẽ:

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 28

Thuật toán nối các đỉnh bậc lẻ:

+ Bước 1: Tìm các nút bậc lẻ: I, J, K, L, C, D, F, G

+ Bước 2: Nối các cạnh giả:

Trang 29

Ta được bảng sau :

Từ bảng ta có :

a(I,J) = 0 và T = 80 a(K,L) = 0 và T = 80

a(J,I) = 0 và T = 80 a(L,K) = 0 và T = 80

a(J,K) = 0 và T = 0 a(C,D) = 0 và T = 220

a(K,J) = 0 và T = 0 a(D,C) = 0 và T = 250

a(G,F) = 0 và T = 290 a(F,G) = 0 và T = 280

Ta chọn (G,F) và xoá cột F dòng G ra khỏi ma trận và tiếp tục quá trình ta được các cặp cạnh phải nối : (G,F), (F,G), (C,D), (D,C), (L,K), (K,L), (I,J), (J,I)

Ta có 4 cặp cạnh giả sao cho tổng nhỏ nhất : GF, CD, IJ, LK

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 30

5 Thuật toán tìm chu trình Euler:

Định nghĩa 1 Chu trình đi qua mỗi cạnh của đồ thị một lần được

gọi là chu trình Euler

Ví dụ 2 Đồ thị H2 là đồ thị Euler vì nó có chu trình Euler a, b, c,

d, e, a Đồ thị H3 không có chu trình Euler nhưng nó có đường

đi Euler c, a, b, c, d, b vì thế H3 là nữa euler

Trang 31

6 Thuật toán tìm đường đi ngắn nhất giữa tất

cả các căp đỉnh

6.1 Thuật toán Dijkstra:

Thuật toán:

- Với đỉnh xuất phát a, gán nhãn l(a):=0

- Nếu có cạnh (i,j) mà đỉnh i đã được gán nhãn và đỉnh j chưa được gán nhãn hoặc đỉnh j đã được gán nhãn nhưng l(i)

+c(i,j)<l(j) thì giảm nhãn l(j):=l(i)+c(i,j)

- Lặp lại bước 2 cho đến khi không gán hoặc giảm nhãn được nữa

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 32

Thuật toán tìm đường đi ngắn nhất giữa tất cả

các căp đỉnh6.2 Thuật toán Floyd tìm đường đi ngắn nhất:

- Bài toán đặt ra là tính tất cả các D(i,j) là khoảng cách nhỏ nhất từ i đến j

- Ta sử dụng ma trận Dn x n để tính độ dài đường đi ngắn nhất

giữa tất cả các cặp đỉnh

1 Bắt đầu gán D := C _ ma trận trọng số

2 Thực hiện n lần lặp trên D Sau bước lặp thứ k, D[i,j] chứa độ dài đường đi ngắn nhất từ đỉnh i đến đỉnh j mà chỉ đi qua các đỉnh có chỉ số không vượt quá k Vậy trong bước lặp thứ k

ta thực hiện theo công thức sau đây:

D(k)[i,j] := min (D(k-1)[i,j] , D(k-1)[i,k] + D(k-1)[k,j]) ,

với k = 1, 2, , n.

Trang 33

GIỚI THIỆU VỀ CHƯƠNG TRÌNH

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 34

1 Cơ sở dữ liệu:

1.1 Bảng đỉnh(tblDinh): 1.2 Bảng đường(tblDuong):

1.3 Bảng nhân viên(Nhan_vien):

Ma_NV Character Ten_NV Character DD_giaothu Character Lich_trinh Character(*)

Trang 35

2 Thiết kế chương trình:

2.1 Giao diện chương trình:

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 36

2.2 Một số chức năng của hệ thống:

thông tin nhưng nơi đặt hàng).

đó lên bản đồ.

một nơi đặt hàng mới sẽ phân công cho ai là tối ưu nhất.

Trang 37

2.3 Hướng phát triển:

- Tự động hoá trong việc phân công công việc cho các nhân

viên đảm bảo tốt nhất, và tối ưu nhất

- Nâng cấp hệ thống cả với hệ thống đường giao thông hai chiều và một chiều

- Thêm một số điều kiện cho hệ thống trong việc chọn đường cho mỗi nhân viên như: đường khó đi, đường thường xuyên bị tắt nghẽn giao thông, tính theo khoảng cách thời gian

- Phát triển hệ thống có thể nhận giao báo theo ngày, theo tuần, theo tháng…

-

GVHD: PGS,TS Nguyễn Đức Hiếu Học viên: Lê Thị Mộng Thanh-K39

Trang 38

www.kinhcancobe.com

Ngày đăng: 19/06/2014, 20:40

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w