BÀI TOÁN K-MEDIAN
3.3.1 Thuật toỏn tham lam (Greedy Algorithm)
Gọi S là tập chứa cỏc đỉnh median đang được xõy dựng, k là số median cần tỡm kiếm, c(S) là chi phớ khỏch hàng được phục vụ bởi dịch vụ trong S.
Thuật toỏn thực hiện theo nguyờn tắc như sau:
Procedure GreedyAlgorithm
S=∅;
While |S|<k
<Chọn một đỉnh p khụng thuộc S sao cho:
c(S∪{p}) = min{c(S∪{q}) với mọi q khụng thuộc S}>
doS<- S∪{p}
ReturnS;
End; //Kết thỳc thủ tục
Liờn quan đến giải thuật vột cạn, một số tỏc giả cũn đề xuất giải thuật vột cạn ngược (Reverse Greedy). Giải thuật hoạt động ngược với giải thuật trờn, theo nguyờn tắc như sau: Giải thuật bắt đầu với tập S chứa tất cả cỏc
điểm. Tại mỗi bước lặp, giải thuật loại bỏ dần cỏc đỉnh trong S sao cho tối thiểu chi phớ phục vụ tập cỏc đỉnh đó loại bỏ. Vũng lặp kết thỳc khi tập S chứa
49
3.3.2 Thuật toỏn Local Search
Giả sử ε >0 là một hằng số dương tuỳ ý, n=|F| là số lượng cỏc khả
năng, m=|C| là số lượng cỏc khỏch hàng, p(m,n) là một hàm đa thức của m và
n. Hàm chi phớ cost(S) và toỏn hạng op(S) sẽđược định nghĩa khỏc nhau cho cỏc bài toỏn khỏc nhaụ Thuật toỏn thực hiện như sau:
Procedure LocalSearch
S <- <Một lời giải khả thi bất kỳ>
While <∃ một toỏn hạng op sao cho> cost(op(S))≤ (1- ) , (m n p ε )cost(S) doS <- op(S) ReturnS; End; //Kết thỳc thủ tục
Thuật toỏn Local Search này khi ỏp dụng cho bài toỏn k-median cú hai cỏch khỏc nhaụ
ạ Thuật toỏn Local Search đơn trao đổi
Trong trường hợp này quỏ trỡnh trao đổi được thực hiện bằng cỏch chọn một đỉnh s∈S và s’∉S. Khi đú toỏn hạng op được định nghĩa như sau:
op(S)= S – s + s’
50
b. Thuật toỏn Local Search đa trao đổi
Trong trường hợp này cú p đỉnh triển vọng được trao đổi một cỏch
đồng thời thay vỡ 1 đỉnh như trường hợp ạ Khi đú toỏn tử op được định nghĩa như sau:
op(S) = (S\A)∪B với A⊆S, B⊆F\S và |A|=|B|≤p.
Trong trường hợp này, thuật toỏn đó được chứng minh là đạt được kết quả triển vọng tốt hơn trong trường hợp ạ