Các thuật toán giải đúng

Một phần của tài liệu đồ án công nghệ thông tin Trình bày thuật toán di truyền giải bài toán Cây Steiner trên đồ thị. (Trang 31)

2. BÀI TOÁN CÂY STEINER

2.6.Các thuật toán giải đúng

Như trình bày trong các mục ở trên, bài toán cây Steiner trên đồ thị thuộc lớp NP-khó. Các thuật toán giải chính xác hiện biết đều chưa thể đạt tới thời gian đa

thức. Mục này trình bày hai thuật toán giải đúng bài toán cây Steiner. Đầu tiên là thuật toán quy hoạch động của Dreyfus và Wagner [4].

2.6.1. Thuật toán Dreyfus-Wagner

Cho đồ thị vô hướng liên thông G = (V, E), T là tập đỉnh kết thúc của đồ thị. (G, c, T) là một thể hiện của bài toán, với mọi tập U ⊆ T và x ∈ V(G)\U, ta định nghĩa:

với S1 là cây Steiner phủ tập U trong G,

với S2 là cây Steiner phủ tập U∪ {x} trong G có lá là các phần tử của U.

Khi đó với mọi U V(G), |U| 2 và x V(G) \ U ta có:

distG(x, y) là chiều dài đường đi ngắn nhất giữa cặp đỉnh x, y trong G.

Chứng minh:

(a) Mọi cây Steiner S phủ tập U ∪ {x} có các nút lá là phần tử của U đều có thể tách thành hai cây con, mỗi cây con đều chứa x và chứa ít nhất một phần tử của U. Như vậy (a) được chứng minh.

(b) Xét cây Steiner nhỏ nhất S phủ tập U ∪ {x}. Ký hiệu degs(x) là bậc trong S

của nút x. Nếu degs(x) ≥ 2 thì S có thể tách theo x thành hai cây Steiner nhỏ nhất Nếu degs(x)=1, gọi y là nút thuộc U gần x nhất trong S hoặc nút có degs(y) ≥ 3. Với trường hợp yU

nếu degs(y) ≥ 3

Như vậy, giá trị nhỏ nhất của ba trường hợp trên sẽ được tính trong (b). Từ công thức đệ quy trên, chúng ta thu được thuật toán quy hoạch động sau: in Đồ thị vô hướng liên thông G, trọng số c và tập đỉnh kết thúc T. out Trọng số p(T) của cây Steiner nhỏ nhất phủ tập T của đồ thị G.

1 BEGIN

2 Nếu |T| ≤ 1 thì p(T) = 0, kết thúc thuật toán;

3 Tính distG(x,y) và đặt p(x,y) = distG(x,y) cho mọi x, y; 4 for k=2 to |T|-1

5 for (U ⊆ T, |U|=k) và (x∈V(G)\U)

7 endfor;

8 for (U ⊆ T, |U|=k) và (x∈V(G)\U) 9 Tính p(U∪{x}) theo công thức (b);

10 endfor;

11 endfor; 12 Trả về p(T);

13 END

Thuật toán Dreyfus-Wagner tính cây Steiner nhỏ nhất có độ phức tạp là O(3tn +

2tn2 + n3) với t = | T | và n = |V(G)|.

Chứng minh:

Bước 2 của thuật toán tính trong thời gian O(n3) bằng cách áp dụng thuật toán đường đi ngắn nhất giữa các cặp đỉnh. Công thức đệ quy ở bước 4 tính mất O(3t) vì có 3t khả năng chia T thành U’, U \ U’T \ U. Công thức 5 cần thời gian là

O(n22t). Các công thức 4 và 5 lặp O(n) lần, ta rút ra được đpcm. ■

2.6.2. Mô hình quy hoạch nguyên cho SPG

Bản thân bài toán cây Steiner trên đồ thị là bài toán tối ưu tổ hợp, do vậy nó có thể xây dựng mô hình quy hoạch tuyến tính nguyên cho bài toán và áp dụng các phương pháp giải quy hoạch tuyến tính nguyên để tìm phương án tối ưu.

Cây Steiner có thể được biểu diễn bởi một biến vector nhị phân x = (xe)|E|. Vector x có | E | thành phần, mỗi thành phần tương ứng với một cạnh của G, giá trị của thành phần xe là 1 hoặc 0 phụ thuộc cạnh e có mặt trong cây Steiner hay không. Trọng số của cạnh e ký hiệu là ce. (adsbygoogle = window.adsbygoogle || []).push({});

Bài toán cây Steiner trên đồ thị có mô hình toán học như sau:

(ILP)

Trong đó δ(M) là lát cắt đồ thị bởi tập MV, tức δ(M) là tập các cạnh có một đầu mút thuộc M, đầu mút còn lại thuộc tập N \ M:

.

Dễ thấy có sự tương ứng một-một giữa cây Steiner trong G với vector nhị phân thỏa mãn (i). Nên việc giải bài toán cây Steiner có thể quy về giải bài toán quy hoạch (ILP).

2.6.3. Một số hướng tiếp cận khác

Phần cuối của chương đề cập đến một hướng khác để tìm lời giải gần tối ưu cho bài toán cây Steiner. Đó là các kỹ thuật tìm kiếm metaheuristic có hướng dẫn trong không gian lời giải, có thể gọi là kỹ thuật tìm kiếm heuristic nâng cao. Trong thực tế, các kỹ thuật metaheuristic thường được sử dụng để giải các bài toán tối ưu tổ hợp. Chúng không được đảm bảo về mặt lý thuyết là có thể đưa ra lời giải tối ưu, nhưng qua những thử nghiệm thực tế, kết quả mà các phép tìm kiếm metaheuristic mang lại rất khả quan. Một số kỹ thuật tìm kiếm metaheuristic :

• Thuật toán di truyền [7, 8, 9, 12]

• Tìm kiếm Tabu [27]

• GRASP (Greedy Random Adaptive Search Procedures) [16, 17]

Hiện nay cả ba kỹ thuật này đều đã được áp dụng để giải bài toán cây Steiner. Đây là các kỹ thuật tìm kiếm tối ưu cục bộ nhưng thực hiện lặp nhiều lần trong toàn bộ không gian. Trong phần tiếp theo của đồ án sẽ trình bày thuật toán di truyền áp dụng vào giải bài toán cây Steiner trên đồ thị.

CHƯƠNG 2

GIẢI THUẬT DI TRUYỀN

Giải thuật di truyền (Genentic Algorithm-GA) là một phần của tính toán tiến hóa (Evolutionary Computing), một lĩnh vực đang phát triển rất nhanh của Trí tuệ nhân tạo.

Như đã biết, GA được lấy cảm hứng từ học thuyết của Darwin về sự tiến hóa. Nói một cách đơn giản thì bài toán được giải quyết bằng quá trình tiến hóa đưa ra kết quả tốt nhất hay cá thể khỏe nhất. Hiểu theo cách khác, lời giải được tiến hóa.

GA mô phỏng quá trình tiến hóa tự nhiên: Kế thừađấu tranh sinh tồn để cải tiến các thế hệ và khảo sát không gian lời giải. GA thường được dùng trong các bài toán tối ưu, hay lớp các bài toán NP_khó, đó là lớp bài toán rất hay nhưng thường rất khó tìm ra lời giải tối ưu với các giải thuật cổ điển vét cạn trong không gian tìm kiếm.

Một phần của tài liệu đồ án công nghệ thông tin Trình bày thuật toán di truyền giải bài toán Cây Steiner trên đồ thị. (Trang 31)