Chuyển bài toán Ng “ ời du lịch về bài toán tìm chu trìn h”

Một phần của tài liệu Một thuật toán trên đồ thị giải bài toán người du lịch (Trang 25 - 30)

Hamilton

Từ bài toán "Ngời du lịch" đã đợc phát biểu trong Đ1. Để có thể sử dụng thuật toán tìm chu trình Hamilton đã nêu ở chơng 2, ta chuyển về bài toán xác định nh sau:

(n+1) thành phố mà ngời du lịch muốn đi qua tơng ứng với (n+1) đỉnh của đồ thị.

Đờng đi từ thành phố này sang thành phố kia tơng ứng là cung của đồ thị (đoạn thẳng nối hai điểm).

Do ngời du lịch xuất phát từ thành phố T0 và đi qua tất cả các thành phố còn lại, mỗi thành phố đúng một lần nên ngời đó sẽ có n! hành trình khác nhau. Mỗi hành trình là một hành trình Hamiltơn với đỉnh đích và nguồn trùng nhau.

Ký hiệu cij là chi phí từ thành phố i sang thành phố j. Ký hiệu a0j là chi phí

nhỏ nhất từ To đến Tj tơng ứng và ta gọi là cao độ đỉnh thứ j của đồ thị. Rõ ràng cij+1 = |ai+1 - a0i | là chi phí từ thành phố i sang thành phố i+1.

Ta thấy rằng trong số n! hành trình sẽ tồn tại ít nhất một hành trình sao cho tổng chi phí cho hành trình đó là nhỏ nhất, ký hiệu là hành trình π. Hành trình π sẽ tơng ứng với đờng đi trong đồ thị thoả mãn điều kiện:

Làm cực tiểu mức chi phí lớn nhất của hai thành phố liên tiếp nhau trong hành trình. Hành trình tơng ứng là một chu trình Hamiltơn tối u của bài toán A.

Từ những phân tích trên ta có thể áp dụng bài toán A để giải bài toán “Ngời du lịch”

Không mất tính tổng quát giả sử mọi số a0i (i = 1, 2, ..., n+1) đều khác nhau. Khi đó ta đánh số các thành phố nh sau: T1 ≤ Ti ≤ Tn sao cho:

0 < a01 < a02 < <a… 0i < an (i = 1, 2, ..., n).

Ta xem đỉnh nguồn có số thứ tự là 0 và đỉnh đích có số thứ tự là n+1, áp

dụng bài toán A ta có hành trình tối u π là:

π = (π1, π2, π3)' trong đó

π1 là hành trình xuất phát từ T0 đến T1

π2 là hành trình từ T1 đến Tn+1, qua mọi đỉnh của thành phố Ti, với T1 < Ti < Tn+1.

π3 là hành trình từ Tn+1 đến T0.

Tóm lại: Hành trình tối u của ngời du lịch xuất phát từ T0,đi qua tất cả các đỉnh còn lại, mỗi đỉnh đúng một lần sao cho cao độ của mỗi đỉnh tăng dần đến

Tn, rồi quay lại thành phố xuất phát tức các cao độ trong mỗi đỉnh của đồ thị thoả mãn:

a01 < a02 < . < a… 0n.

Chú ý: Nếu có nhiều giá trị a0i trùng nhau, ta sẽ chia thành phố thành một

số lớp (Tq lớp nếu có q giá trị a01 khác nhau) sao cho các thành phố thuộc cùng 1 lớp khi và chỉ khi chúng có cùng mức a0i nh nhau.

Mỗi lớp xem nh một thành phố mới, với mức chi phí từ T0 đến các thành phố đó là mức chi phí chung của chúng. Dựa vào cách giải đã trình bày ở trên ta sẽ tìm đợc hành trình tối u trong hành trình này bằng cách thay thành phố mới bằng 1 đờng đi qua mọi đỉnh (mỗi đỉnh 1 lần) thuộc lớp tơng ứng với đỉnh gộp đó.

Nh vậy bài toán “Ngời du lịch” đã có thể giải bằng thuật toán A đã nêu trong Đ1 và Đ2, chơng 2.

Bằng cách chuyển đổi nh đã nêu, áp dụng thuật toán tìm chu trình Hamilton, tìm đờng đi ngắn nhất trên đồ thị ta đi giải bài toán ngời du lịch.

Ví dụ: Ta lấy ví dụ trong trờng hợp n = 5, tức có 6 thành phố, tạm đánh số là T0, T1, T2, T3, T4, T5. Ngời du lịch muốn xuất phát từ thành phố T0 sau đó đi

qua các thành phố còn lại, mỗi thành phố đúng một lần rồi quay trở về thành phố T0.

Với giả thiết chi phí đi từ giữa thành phố i đến thành phố j là cij (i = 0, ..., 4;

j = 1, ..., 5) nh sau: c01 = 1,0; c02 = 2,0; c03 = 1,5; c04 = 2,5; c05 = 1,5; c12 = 3,0; c13 = 2,0; c14 = 1,5; c15 = 1 c23 = 1,0; c24 = 1,0; c25 = 4,0; c34 = 1,0; c35 = 2,0; c45 = 0,5.

Xem mỗi thành phố là một đỉnh của đồ thị. áp dụng thuật toán tìm đờng đi ngắn nhất giữa hai đỉnh a và b trên đồ thị (Đ2, chơng 1) ta có chi phí ít nhất, ký hiệu là a0i (i = 1, ..., 5), đi từ thành phố T0 tới Ti (i = 1, ..., 5) nh sau (hình *): (adsbygoogle = window.adsbygoogle || []).push({});

+ Từ thành phố T0 tới T1 (đi trực tiếp) a01 = c01 = 1,0

+ Từ thành phố T0 tới T2 (đi trực tiếp) a02 = c02 = 2,0

+ Từ thành phố T0 tới T3 (đi trực tiếp) a03= c03 = 1,5

+ Từ thành phố T0 tới T3 ta có thể có 2 cách đi là: Cách 1: Đi từ T0 qua T3 tới T4

Cách 2: Đi từ T0 tới T4

a04 = c03+ c04 = c04 = 2,5.

+ Từ thành phố T0 tới T5 (đi trực tiếp) a05= 1,5.

Nh vậy ta có

a01 = 1,0; a02 = 2; a03 = 1,5 a04 = 2,5

a05 = 4,0.

Bây giờ ta đánh số lại các thành phố nh sau:

T1≤ Ti≤ T5 sao cho 0 < a01 ≤ a0i a05 (i = 1,..., 5). T2 T0 T1 T5 T4 T3 Hình 10.

Tức là: T1, T4, T5 giữ nguyên T2 đổi thành T3 T3 đổi thành T2. Tức là nh hình * Hình 11.

Xem thành phố T0 là đỉnh nguồn đồng thời là đỉnh đích trong bài toán A. áp dụng bài toán A ta có hành trình tối u cần tìm nh sau:

π = (π1, π2, π3), trong đó

π1 xuất phát từ T0 tới T1,

π2 là hành trình xuất phát từ T1 tới T5 qua các thành phố Ti sao cho

a01≤ a0i a05 (i = 2, 3, 4), tức hành trình nh sau:

T1 → T2→ T3 → T4 → T5 (theo thứ tự mới), π3 là hành trình từ T5 tới T0.

Tóm lại ta có hành trình π đợc đánh theo số thứ tự mới:

π = (π1, π2, π3) = T0 → T1 → T2 → T3 → T4 → T5 → T0. Nếu đánh số theo giả thiết ban đầu thì ta có

T0 → T1 → T3 → T2 → T4 → T5 → T0. Tổng chi phí lúc toàn bộ hình trình tối u là:

c01+ c13+ c32+ c24+ c45 + c50 = 1,0 + 2,0 + 1,0 + 1,0 + 0,5 + 3,0 = 8,5. T0 T1 T5 T4 T2 T1

Kết luận

Kết quả chính của luận văn có thể đợc tóm tắt là:

1) Tiếp cận đợc một số thành tựu mới thông qua các kiến thức cơ bản về hành trình Hamiltơn và các bài báo công bố gần đây nh đã nêu ở chơng 1 và chơng 2.

2) Trên cơ sở tiếp cận các kết quả đã nêu, chúng tôi áp dụng để giải bài toán "Ngời du lịch" là một bài toán quy hoạch tuyến tính nguyên bằng phơng pháp đồ thị.

Chúng ta có thể áp dụng bài toán "Tìm hành trình tối u trên đồ thị" (Bài toán A và bài toán B) để giải một số bài toán khác. Chúng tôi hy vọng theo những cách áp dụng linh hoạt khác nhau, chúng ta sẽ có những kết quả thú vị mới.

Kết quả có đợc là sự tập dợt nghiên cứu, chắc còn nhiều điều cần phải xem xét. Rất mong quý thầy giáo, cô giáo cùng các bạn góp ý kiến giúp đỡ. (adsbygoogle = window.adsbygoogle || []).push({});

Một lần nữa, tác giả xin chân thành cảm ơn thầy giáo hớng dẫn, các thầy cô trong tổ Điều khiển và Khoa Toán. Xin cảm ơn gia đình cùng bạn bè đã động viên giúp đỡ tác giả rất nhiều trong quá trình học tập và làm luận văn.

Tài liệu tham khảo

[1]. Nguyễn Hữu Ng, Lý thuyết đồ thị, NXB Đại học Quốc gia Hà Nội, 2001.

[2]. Nguyễn Đức Nghĩa - Nguyễn Tô Thành, Toán rời rạc, NXB Giáo dục, Hà Nội, 1999.

[3]. Nguyễn Đức Nghĩa, Tối u hoá (qui hoạch tuyến tính và rời rạc), NXB Giáo dục, Hà Nội, 1998.

[4]. Trần Vũ Thiệu, Các bài báo của giáo s trên tạp chí "30 năm Toán học và Tuổi trẻ", Bộ Giáo dục và Đào tạo - Hội Toán học Việt Nam, NXB Giáo dục, 1991. [5]. Trần Vũ Thiệu, Bài toán tìm hành trình tối u trên đồ thị, Báo cáo khoa học tại xemine nhóm "Tối u rời rạc", 2003.

Một phần của tài liệu Một thuật toán trên đồ thị giải bài toán người du lịch (Trang 25 - 30)