GAF (Geographical Adaptive Fidelity – Sự chính xác thích ứng theo địa lý) xây dựng một mạng lưới ảo bao phủ toàn bộ vùng cảm biến. Trong đó các nút cảm biến trong cùng một mắt lưới (một ô vuông) đều có thể giao tiếp vô tuyến với bất kỳ nút cảm biến nào nằm trong mắt lưới bên cạnh. Thuật toán GAF giảm năng lượng tiêu thụ bằng cách tắt các nút không cần thiết trong mạng mà không làm ảnh hưởng đến mức độ chính xác trong quá trình định tuyến. Để thực hiện được điều này, GAF phải có được thông tin vị trí của tất cả các nút mạng. Thông tin này có thể xác định bằng GPS hoặc các hệ thống định vị khác. Kích thước của mắt lưới ảo được tính dựa trên phạm vi cường độ sóng của các nút cảm biến. Kết hợp thông tin về vị trí và kích thước của lưới, mỗi nút cảm biến sẽ xác định được mắt lưới mà nó thuộc vào.
GAF định nghĩa 3 trạng thái cho các nút cảm biến, đó là trạng thái khám phá (Discorver), trạng thái hoạt động (Active) và trạng thái ngủ (Sleep). Mỗi nút cảm biến sẽ được chuyển đổi giữa các trạng thái để đảm bảo cân bằng tải năng lượng tiêu thụ. Một nút cảm biến sẽ bắt đầu ở trạng thái khám phá, nó sẽ gửi các gói tin Discorver để tìm ra các nút khác trong cùng mạng lưới. Khi một nút đang ở trạng thái khám phám, nó sẽ bắt đầu với bộ định thời Td giây. Khi bộ định thời này hết hạn, nó sẽ chuyển sang trạng thái hoạt động. Các nút mạng đang ở trạng thái hoạt động sẽ tham gia vào quá trình định tuyến. Khi một nút đang ở trạng thái hoạt động, nó được thiết lập thời gian định thời là Ta giây. Khi bộ định thời Ta hết hạn, nó sẽ quay ngược trở lại trạng thái khám phá. Nếu một nút đang ở trạng thái khám phá hoặc hoạt động mà nhận được thông điệp Discorver từ các nút có thứ hạng cao hơn, nó sẽ chuyển vào trạng thái ngủ. Sự xếp hạng của các nút dựa trên mức năng lượng còn lại, các nút đang ở trạng thái hoạt động chuyển sang trạng thái khám phá sẽ được xếp hạng thấp hơn trước đó.
Một cách lý tưởng, GAF duy trì 1 nút hoạt động trên mỗi mắt lưới. Tuy nhiên, do tính di động, nút hoạt động có thể di chuyển ra bên ngoài mắt lưới của nó và ảnh hưởng đến độ chính xác trong quá trình định tuyến. Để khắc phục được tình trạng này, GAF sử dụng thêm tham số “Thời gian dự kiến” cho mỗi nút mạng trong lưới. Tham số này được gửi tới các nút hàng xóm trong gói tin Discorver. Dựa vào giá trị này các nút hàng xóm xác định được khoảng thời gian mà chúng có thể ở trong trạng thái ngủ.
Một ví dụ về GAF có thể được mô tả như hình 2.20 bên dưới. Trong ví dụ này, nút 1 có thể truyền đến bất kỳ nút nào trong các nút 2, 3 và 4. Và nút 2,3 và 4 cũng có thể truyền tới nút 5. Do đó các nút 2, 3 và 4 là tương đương và 2 trong 3 nút đó có thể ở trạng thái ngủ.
Hình 2.20: Ví dụ về mạng lưới ảo trong GAF