Ý tƣởng: tạo ra vùng bao chứa ngƣời tạo ra yêu cầu dịch vụ (isuser) có kích thƣớc nhỏ nhất có thể, bằng cách sửa lại phƣơng pháp làm mờ đơn giản nhất (naïve method - tìm k ngƣời dùng gần nhất).
Thực hiện: với ngƣời dùng u cho trƣớc, đầu tiên xác định tập S chứa u và
k – 1 ngƣời dùng gần u nhất. Từ S, chọn ngẫu nhiên ngƣời dùng u’. Vì vậy, xác suất để chọn đúng ngƣời dùng u ban đầu là 1/k. Sau đó tính toán tập S’ chứa u’
và k – 1 ngƣời dùng gần u’ nhất. Kế tiếp, tìm tập S’’ = S’⋃ {u}. Cuối cùng, tìm vùng bao hình chữ nhật hoặc hình tròn chứa hết vị trí các ngƣời dùng trong tập
S’’ trên, rồi trả về kết quả.
Hình 2-12: Minh họa giải thuật nnASR
Giả sử U1 phát ra request với k = 3. Đầu tiên, hai ngƣời dùng gần nhất với
U1 đƣợc tìm để tạo ra tập 3-ASR cho U1 là S0 = {U1, U2, U3}. Sau đó, giải thuật sẽ chọn ngẫu nhiên một ngƣời dùng trong ba ngƣời dùng thuộc S0. Giả sử đó là
U3. Vùng 3-ASR của U3 đƣợc tìm ra là tập các ngƣời dùng S1 = {U3, U4, U5}. Tập ngƣời dùng S đƣợc xây dựng theo công thức S = S1⋃ {U1} = {U1, U3, U4,
U5}. Tập này đƣợc dùng để tạo ra kết quả trả về là vùng bao (dạng hình tròn hoặc hình chữ nhật) bao phủ tất cả các ngƣời dùng trong S.
Algorithm: nnASR
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
Output: tập các người dùng chứa ít nhất k phần tử và chứa người dùng ban đầu
Method:
1. S ≔ {u} ⋃ {ui|uilà 1 trong k – 1 phần tử gần nhất của u} 2. Chọn ngẫu nhiên u’ ∈ S
3. S’ ≔ {u’} ⋃ {uj|ujlà 1 trong k – 1 phần tử gần nhất của u’} 4. S’’ ≔ S’ ⋃ {u}
5. return k-ASR of S’’