Vị trí tiếp theo của các vật giả đƣợc quyết định trong một vùng lân cận của vị trí hiện tại của vật giả. Thiết bị giao tiếp của ngƣời dùng ghi nhớ vị trí
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/
trƣớc đó của mỗi vật giả. Sau đó thiết bị sinh ra các vật giả xung quanh vùng nhớ này.
Algorithm: 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
Method:
1. RandomNumber(x,y): sinh ra một số ngẫu nhiên trong khoảng giữa x và y
2. struct dummy {
3. public double x; // tọa độ x 4. public double y; // tọa độ y 5. public double t; // thời gian 6. }
7. static int RandomNumber(int min, int max){ 8. Random random = new Random();
9. return random.Next(min, max); 10. }
11. static void MN(double m, int n){ 12. dummy[] prev = new dummy[100]; 13. dummy[] next = new dummy[100]; 14. //đọc prev[] đưa vào input 15. for (int i = 1; i < n; i++){
16. next[i].x = RandomNumber(prev[i].x - m, prev[i].x + m);
17. next[i].y = RandomNumber(prev[i].y - m, prev[i].y + m);
18. } 19. }
2.3.3.3Thuật toán di chuyển trong một vùng giới hạn lân cận
Giống với thuật toán MN, 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
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/
của ngƣời dùng có thể lấy dữ liệu của các ngƣời dùng khác. Đầ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.
Algorithm: MNL
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
Method:
1. RandomNumber(x,y): sinh ra một số ngẫu nhiên trong khoảng giữa x và y
2. position(x,y): trả về số dữ liệu vị trí thuộc (x,y,t-1) 3. struct dummy {
4. public double x; // tọa độ x 5. public double y; // tọa độ y 6. public double t; // thời gian 7. }
8. static void MLN (int aveP, double m, int n){ 9. dummy[] prev = new dummy[100];
10. dummy[] next = new dummy[100];
11. int k = 0; // đếm số lần lặp (mặc định là 3) 12. //đưa prev[] vào input
13. for (i=1;i<n;i++){
14. next[i].x = random( prev[i].x-m, prev[i].x)+m); 15. next[i].y = random( prev[i].y-m, (prev[i].y+m); 16. next[i].t = (prev[i].t)++;
17. if (position(next[i].x, next[y].y) > aveP){ 18. if (k<=3){ k++; continue;} else k=0;} 19. }
20. //output các nội dung của next[] 21. }
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/