+ Giải thuật di chuyển trong một vùng lân cận
// giai thuat MN:
// input: vị trí của các vật giả tại thời điểm t-1 // output: vị trí của các vật giả tại thời điểm t // RandomNumber(x,y): sinh ra một số ngẫu nhiên trong khoảng giữa x và y
struct dummy {
public double x; // tọa độ x public double y; // tọa độ y public double t; // thời gian }
static int RandomNumber(int min, int max) {
Random random = new Random(); return random.Next(min, max); }
static void MN(double m, int n) {
dummy[] prev = new dummy[100]; dummy[] next = new dummy[100]; //đọc prev[] đưa vào input for (int i = 1; i < n; i++) {
next[i].x = RandomNumber(prev[i].x - m, prev[i].x + m);
next[i].y = RandomNumber(prev[i].y - m, prev[i].y + m);
} }
(8) Giải thuật di chuyển trong một vùng giới hạn lân cận (MLN)
Trong giải thuật này, vị trí tiếp theo của vật giả cũng đƣợc quyết định trong vùng lân cận của vật giả. Tuy nhiên vị trí tiếp theo đƣợc giới hạn bởi mật độ của vùng này. Giải thuật này thích hợp trong các trƣờng hợp thiết bị giao tiếp của ngƣời dùng có thể lấy dữ liệu của các ngƣời dùng khác. Một ví dụ của các vật giải thích hợp với kỹ thuật này đƣợc minh họa trong hình 6(b). Đầu tiên, thiết bị sinh các vật giả xung quanh vùng nhớ giống nhƣ giải thuật MN. Nếu có nhiều ngƣời dùng trong vùng đƣợc sinh, thiết bị lại sinh vật giả. Quá trình đƣợc lặp lại vài lần.
// giai thuat MLN:
// input: vị trí của các vật giả tại thời điểm t-1 // output: vị trí của các vật giả tại thời điểm t // RandomNumber(x,y): sinh ra một số ngẫu nhiên trong khoảng giữa x và y
// position(x,y): trả về số dữ liệu vị trí thuộc (x,y,t-1)
struct dummy {
public double x; // tọa độ x public double y; // tọa độ y public double t; // thời gian }
static void MLN (int aveP, double m, int n){ dummy[] prev = new dummy[100];
dummy[] next = new dummy[100];
int k = 0; // đếm số lần lặp (mặc định là 3) //đưa prev[] vào input
for (i=1;i<n;i++){
next[i].x = random( prev[i].x-m, prev[i].x)+m); next[i].y = random( prev[i].y-m, (prev[i].y+m); next[i].t = (prev[i].t)++;
if (position(next[i].x, next[y].y) > aveP){ if (k<=3){ k++; continue;} else k=0;} }
//output các nội dung của next[] }
Định nghĩa Shift(P) là một độ đo, ƣớc lƣợng hai giải thuật. Shift(P) chỉ rõ một điểm khác của P trong mỗi vùng giữa thời gian t và t+1. Nếu số ngƣời thay đổi lớn trong một vùng, thì khả năng cao là vật giả di chuyển mạnh so với dữ liệu vị trí thực, tạo ra một rủi ro rằng ngƣời quan sát có thể tìm thấy dữ liệu vị trí thực. Vì thế, nó không làm tăng vị trí ẩn danh. Nói cách khác, khi Shift(P) giảm, vị trí ẩn danh cao.
3.5. Kỹ thuật giảm chi phí
Trong kỹ thuật giao tiếp ẩn danh cho LBSs, nếu số vật giả tăng, vị trí ẩn danh tăng lên, nhƣng chi phí giao tiếp cũng tăng. Để tránh việc tăng này, tác giả nghiên cứu kỹ thuật giảm chi phí cho kỹ thuật giao tiếp. Đầu tiên, tác giả giới thiệu về chi phí giao tiếp. Sau đó, sẽ đề xuất một kỹ thuật giảm chi phí cho các tin nhắn yêu cầu từ một khách hàng đến một server và các tin nhắn trả lời từ server đến khách hàng [5].
3.5.1. Chi phi giao tiếp
Chi phí của một kỹ thuật ẩn danh sử dụng các ngƣời dùng giả sẽ làm tăng cao trong thế giới thực các dịch vụ. Trong kỹ thuật giao tiếp, chi phí giao tiếp tăng đƣợc sinh ra là một mặt ảnh hƣởng đến sự tăng vị trí ẩn danh. Nó là một trở ngại khi sử dụng thực hành. Mặt khác nhà cung cấp dịch vụ không chỉ phải tạo một tin nhắn trả lời cho dữ liệu thực mà còn cho cả vật giả. Khi việc tạo ra chi phí cho các các vật giả thấp đi, chúng ta không phải quan tâm đến việc tạo ra các chi phí [5].
3.5.2. Các tin nhắn yêu cầu
Khi các vật giả đƣợc sinh ra, làm tăng số lƣợng dữ liệu vị trí một cách trực tiếp gây ra sự tăng trong chi phí gửi các tin nhắn. Trong cách xây dựng S đã đƣa ra là:
(u,(Xr, Yr), (X1, Y1), (X2, Y2), … ,(Xn, Yn)),
Trong đó Lr = (Xr, Yr) là dữ liệu vị trí thực và (Xi,Yi) (i=1, 2, 3, …, n) là các vật giả. Trong trƣờng hợp này, các vật giả đƣợc sinh ra, nhƣ hình 3.6(a). Nếu n các vật giả đƣợc sinh ra, độ phức tạp tính toán của các tin nhắn yêu cầu là O(n). Nói cách khác, khi số vật giả tăng, chi phí của các tin nhắn yêu cầu tăng tỷ lệ[5].