Consecutive DBT (CDBT)

Một phần của tài liệu Nghiên cứu cơ chế giải quyết xung đột thẻ theo hướng tiếp cận tdma và ứng dụng cho bộ đọc sm (Trang 70)

4.4.1.1 Ý tưởng

Xét trong ngữ cảnh có một tập các thẻ mà UID của các thẻ tạo thành một dãy số liên tiếp hoặc các nhóm rời rạc mà trong mỗi nhóm các UID tạo thành một dãy số liên tiếp. Phương pháp CDBT được chúng tôi đề xuất nhằm cải tiến về độ phức tạp thời gian so với thuật toán DBT trong trường hợp này.

Phương pháp CDBT được phát biểu như sau:

Bước 1: Xác định UID nhỏ nhất (hoặc lớn nhất) theo thuật toán DBT. Bước 2:

Tồn tại UID: đến bước 3. Ngược lại: kết thúc.

Bước 3: UID = UID + 1 (hoặc UID = UID – 1)

Bước 4: Bắt đầu chu kỳ giải quyết xung đột với tham số UID. Bước 5: Xét phản hồi của thẻ:

Có phản hồi: xác định được UID của một thẻ mới, lặp lại bước 3. Ngược lại: lặp lại bước 1.

4.4.1.2 Ví dụ

Thẻ 4 3 2 1 UID (MSb...LSb) 1011 0011b 1011 0100b 1011 0101b 1011 0110b Bảng 4-4 Danh sách thẻ trong ví dụ CDBT

Theo thuật toán DBT, UID nhỏ nhất sẽ được xác định trong 2 chu kỳ đầu tiên, đó là thẻ có UID 1011 0011b.

Tiếp theo, tăng UID lên một đơn vị và bắt đầu chu kỳ 3 với tham số 1011 0100b, với tham số này, sẽ có một thẻ phản hồi → xác định được thẻ 2.

Tương tự với chu kỳ 4 và 5 → xác định được 2 thẻ 3 và 4 với UID lần lượt là 1011 0101b và 1011 0110b.

Ở chu kỳ 6, không có thẻ phản hồi với tham số 1011 0111b nên quay lại tìm UID nhỏ nhất theo thuật toán DBT. Lúc này không tồn tại thẻ nào phản hồi nên quá trình kết thúc.

Vậy với 4 thẻ có UID liên tiếp, áp dụng CDBT chỉ tốn 6 chu kỳ. Xét 4 thẻ như trong bảng 4-4

Thuật toán DBT CDBT

Số chu kỳ truy vấn 8 6

Bảng 4-5 So sánh số chu kỳ truy vấn giữa DBT và CDBT với n = 4 4.4.1.3 Phân tích

Tương tự như DBT, giả sử thời gian thực hiện một chu kỳ là cố định và bằng với các chu kỳ khác. Do đó, lượng thời gian trung bình trong toàn bộ quá trình phụ thuộc vào số chu kỳ tìm kiếm trung bình.

Xét n thẻ trong vùng từ trường được chia thành m nhóm. Gọi:

: số thẻ trong nhóm i.

: số chu kỳ tìm kiếm trung bình trong toàn bộ quá trình.

Số chu kỳ tìm kiếm trung bình để xác định được 1 thẻ trong n thẻ là , tuy nhiên sau khi đã xác định được thẻ thì số thẻ còn lại là n – . Trong một nhóm bất kỳ, sau khi đã xác định được thẻ đầu tiên thì sẽ tốn để xác định được các thẻ còn lại, để xác định đã kết thúc một nhóm cần tốn thêm một chu kỳ. Do đó suy ra được công thức trên.

Trong trường hợp tốt nhất ứng với m = 1, số chu kỳ tìm kiếm trung bình trong toàn bộ quá trình:

+ 1) + (n 1) + 1

Hình 4.12 Đồ thị so sánh độ phức tạp tính toán giữa CDBSbest-case và DBS

0 10 20 30 40 50 60 70 0 2 4 6 8 10 12 14 16 18 20 Số lượ n g c h u kỳ Số lượng thẻ

Độ phức tạp tính toán CDBSbest-case & DBS

DBS CDBS

Trong trường hợp xấu nhất ứng với m = n, số chu kỳ tìm kiếm trung bình trong toàn bộ quá trình:

Hình 4.13 Đồ thị so sánh độ phức tạp tính toán giữa CDBSworst-case và DBS (adsbygoogle = window.adsbygoogle || []).push({});

4.4.2 Position DBT (PDBT) 4.4.2.1 Ý tưởng

Thuật toán DBT được đề xuất trên tinh thần tối ưu hóa lượng dữ liệu truyền nhận trên kênh truyền so với thuật toán BT, tuy nhiên, trong các hệ thống mà độ dài UID của thẻ lên đến 80 bit, lượng dữ liệu bộ đọc truy vấn ở các chu kỳ tiếp theo ngày càng lớn. Do đó, phương pháp PDBT được đề xuất tập trung vào vấn đề này với mục đích cải tiến lượng dữ liệu bộ đọc truy vấn để giảm bớt lượng năng lượng tiêu thụ phía bộ đọc.

Giả sử tại chu kỳ i, dữ liệu nhận tại bộ đọc bị xung đột tại bit X, ở chu kỳ i + 1, thay vì bộ đọc truy vấn với X bit, với PDBT bộ đọc chỉ cần truy vấn với chuỗi bit thể hiện vị trí xung đột và một bit giá trị so khớp.

0 20 40 60 80 100 120 0 2 4 6 8 10 12 14 16 18 20 Số lượ n g c h u kỳ Số lượng thẻ

Độ phức tạp tính toán CDBSworst-case & DBS

DBS CDBS

4.4.2.2 Ví dụ

Xét 4 thẻ có UID với độ dài 24 bit như trong bảng 4-6.

Thẻ 4 3 2 1 UID (MSb...LSb) 11001110 10110011 11110000b 11001110 10111100 11110000b 11001110 10111010 11110000b 11001110 10110101 11110000b Bảng 4-6 Danh sách thẻ trong ví dụ PDBT

Sau khi chu kỳ 1 hoàn thành, dữ liệu nhận tại bộ đọc xung đột tại bit 11. Ở chu kỳ 2, bộ đọc truy vấn với dãy bit: 1101|0 → dữ liệu xung đột tại bit 10. Ở chu kỳ 3, bộ đọc truy vấn với dãy bit: 1110|0 → xác định được thẻ 1.

Ở chu kỳ 4, bộ đọc truy vấn với dãy bit rỗng, dữ liệu nhận tại bộ đọc xung đột tại bit 11.

Ở chu kỳ 5, bộ đọc truy vấn với dãy bit: 1101|0 → xác định được thẻ 4.

Ở chu kỳ 6, bộ đọc truy vấn với dãy bit rỗng, dữ liệu nhận tại bộ đọc xung đột tại bit 10.

Ở chu kỳ 7, bộ đọc truy vấn với dãy bit: 1110|0 → xác định được thẻ 3. Ở chu kỳ 8, bộ đọc truy vấn với dãy bit rỗng → xác định được thẻ 2. Trong toàn bộ quá trình, bộ đọc chỉ gởi 20 bit dữ liệu!

Xét 4 thẻ như trong bảng 4-6

Thuật toán DBT PDBT

Số lượng bit gởi 54 20

4.4.2.3 Phân tích

Phương pháp PDBT tập trung cải tiến về lượng dữ liệu bộ đọc gởi đi ở mỗi chu kỳ, nên số chu kỳ phải trải qua trong toàn bộ quá trình là không đổi so với thuật toán DBT, vì thế ở đây chúng tôi chỉ phân tích về chi phí bộ nhớ.

 Phía thẻ: không đổi

 Phía bộ đọc:

Gọi X là vị trí xung đột tại , số lượng bit thể hiện vị trí xung đột tại được tính theo công thức sau:

Trong đó:

k: độ dài UID của thẻ.

: số nguyên gần nhất và nhỏ hơn f.

Chi phí bộ nhớ phía bộ đọc = số lượng bit thể hiện vị trí xung đột + 1 bit thể hiện giá trị so khớp

=>

Hình 4.14 Đồ thị so sánh chi phí bộ nhớ phía bộ đọc giữa DBT và PDBT

0 5 10 15 20 25 30 35 40 45 0 4 8 12 16 20 24 28 32 36 40 Số lượ n g b it Vị trí xung đột

Chi phí bộ nhớ phía bộ đọc PDBT & DBT (adsbygoogle = window.adsbygoogle || []).push({});

DBS PDBS

Thuật toán DBT PDBT Chi phí bộ nhớ phía bộ đọc

Bảng 4-8 Chi phí bộ nhớ phía bộ đọc giữa DBT và PDBT

4.5 Query Tree (QT)

4.5.1 Khái niệm

QT là một cây nhị phân đầy đủ (mỗi node có 2 hoặc không có node con nào). Số lượng các node trong QT chính bằng số lượng chu kỳ bắt đầu bởi đầu đọc. Đối với node x không phải là node lá sẽ có 2 node con trái và phải lần lượt: l(x) và r(x), nếu x là node lá thì l(x) = r(x) = NIL.

Đầu chu kỳ, bộ đọc gửi một chuỗi truy vấn thuộc Q, node gốc của QT chính là chuỗi truy vấn . Nếu node x tương ứng với chuỗi truy vấn q thì l(x) và r(x) tương ứng với chuỗi truy vấn q0 và q1.

ԑ

0 1

01

00 101 110

000 001

Hình 4.15 Cấu trúc Query Tree trong ví dụ

Một node không phải là lá tương ứng với chuỗi truy vấn tại đó xảy ra xung đột trên kênh truyền. Ngược lại, nếu một node là lá tương ứng với chuỗi truy vấn tại đó không nhận được phản hồi nào từ các thẻ hoặc chỉ có duy nhất một thẻ phản hồi.

Theo hình 4.15, node xám là node xảy ra xung đột, node trắng là node không nhận được phản hồi, node đen là node nhận được một phản hồi.

4.5.2 Thuật toán

Cũng giống như DBT, thuật toán QT gồm các chu kỳ trong đó bộ đọc truy vấn và các thẻ phản hồi. Trong mỗi chu kỳ, bộ đọc truy vấn UID của các thẻ với một prefix (chuỗi truy vấn). Nếu có nhiều hơn 1 thẻ phản hồi, ít nhất có 2 thẻ có cùng prefix, bộ đọc sẽ thêm 0 hay 1 vào prefix và tiếp tục truy vấn với chuỗi prefix dài hơn. Đến khi chỉ còn 1 thẻ phản hồi, UID của thẻ được xác định. Quá trình này cứ lặp lại cho đến khi nào xác định được tất cả các thẻ hiện diện trong vùng từ trường.

Gọi:

là tập hợp các chuỗi nhị phân với độ dài dài nhất là k. Trạng thái của bộ đọc là một cặp (Q, M) được định nghĩa như sau:

o Q là hàng đợi chứa các chuỗi truy vấn trong .

o M là vùng nhớ chứa các UID đã được xác định. q là một chuỗi truy vấn trong (q ϵ Q).

w là chuỗi phản hồi từ thẻ (w ϵ ). Thuật toán QT được phát biểu như sau:

Bước 1:

Khởi tạo Q = {ԑ}. Khởi tạo M = .

Bước 2: Lấy và phát chuỗi truy vấn q ϵ Q đến các thẻ hiện diện trong vùng từ trường.

Bước 3: Cập nhật Q = Q – q

Bước 4: Khi nhận phản hồi từ các thẻ:

Nếu phản hồi là chuỗi w, thêm w vào trong vùng nhớ M.

Nếu phát hiện xung đột ở kênh truyền thì thêm 2 chuỗi q0, q1 vào Q. Nếu ko có bất kỳ phản hồi nào thì không làm gì.

Bước 5: (adsbygoogle = window.adsbygoogle || []).push({});

Nếu Q = : kết thúc.

Ngược lại: quay lại bước 2. Lưu ý:

Gọi w = w1w2…wk là UID của thẻ. Nếu thẻ nhận được chuỗi truy vấn q = ԑ

hoặc q = w1w2…wq thì thẻ sẽ phản hồi chuỗi w đến bộ đọc.

Lấy một phần tử ra hay thêm một phần tử vào Q tuân theo quy tắc FIFO (First In First Out).

Khi có nhiều hơn một thẻ phản hồi tại cùng một thời điểm, bộ đọc sẽ phát hiện xung đột thay vì nhận dữ liệu như thuật toán BT.

Trong thuật toán, bộ đọc sẽ phát một chuỗi rỗng để phát hiện xung đột giữa các thẻ. Tuy nhiên, trong thực tế bộ đọc nên bắt đầu luôn với chuỗi 0 hay 1. Điều này giúp cải thiện hiệu năng của thuật toán (ngoại trừ trường hợp chỉ có duy nhất một thẻ hiện diện!).

4.5.3 Ví dụ

Xét 4 thẻ hiện diện trong vùng năng lượng của bộ đọc với độ dài UID của mỗi thẻ là 3 bit và có giá trị như bảng 4-9.

Thẻ 4 3 2 1 UID (MSb...LSb) 000b 001b 101b 110b

Bảng 4-9 Danh sách thẻ trong ví dụ Query Tree

Ở chu kỳ 1, bộ đọc phát chuỗi truy vấn ԑ và cả 4 thẻ đều phản hồi với UID của mình, kết quả nhận được xung đột ở bit 0, sau chu kỳ 1, Q = Q – {ԑ} + {0, 1}.

Ở chu kỳ 2, bộ đọc phát chuỗi truy vấn 0, lúc này có 2 thẻ phản hồi là 1 và 2, kết quả nhận được xung đột ở bit 2, sau chu kỳ 2, Q = Q – {0} + {00, 01}.

Tương tự ở chu kỳ 3 và 4, kết quả nhận được xung đột tại bộ đọc, sau 2 chu kỳ, lúc này Q = {01, 10, 11, 000, 001}.

Đến chu kỳ 5, với chuỗi truy vấn 01, không có thẻ nào phản hồi!

Tại chu kỳ 6, với chuỗi truy vấn 10, chỉ có thẻ 3 phản hồi, UID của thẻ 3 được xác định và được thêm vào vùng nhớ M = M + {101}.

Tại chu kỳ 7 và 8, lần lượt thẻ 4 (UID = 110) và 1 (UID = 000) được xác định và thêm vào vùng nhớ M. Sau 2 chu kỳ, Q = {001}.

Chu kỳ Chuỗi truy vấn Thẻ phản hồi 1 2 3 4 Hàng đợi Q Vùng nhớ M 1 ԑ 000 001 101 110 0, 1 2 3 4 5 6 7 8 9 1, 00, 01 0 000 001 1 101 110 00, 01, 10, 11 00 01, 10, 11, 000, 001 000 001 01 10, 11, 000, 001 10 101 11, 000, 001 11 110 000, 001 101 101, 110 000 000 001 101, 110, 000 001 001 101, 110, 000, 001

Bảng 4-10 Ví dụ quá trình xác định các thẻ trong Query Tree

Ở chu kỳ 9, với chuỗi truy vấn 001, thẻ 2 được xác định và được thêm vào vùng nhớ M. Lúc này hàng đợi Q = Q - {001} = và quá trình xác định thẻ kết thúc với UID các thẻ nằm trong vùng nhớ M = {101, 110, 000, 001}.

4.5.4 Phân tích

4.5.4.1 Độ phức tạp thời gian (time complexity)

Tương tự như thuật toán BT, ở đây ta cũng giả sử mỗi chu kỳ (bao gồm đầu đọc truy vấn và thẻ phản hồi) tốn một khoảng thời gian bằng nhau để thực hiện, do đó để tính lượng thời gian trung bình trong toàn bộ quá trình ta chỉ cần đếm số chu kỳ trong toàn bộ quá trình đó.

(4.5) Trong đó:

: thời gian thực hiện một chu kỳ. : số chu kỳ tìm kiếm trung bình.

Gọi là số slot trung bình phải tốn trong quá trình xác định n thẻ, với n ≥ 4 và giả sử UID các thẻ tuân theo mô hình phân phối chuẩn, ta tính được:

Từ (4.5)

Tính :

Để tính lượng thời gian nhiều nhất trong toàn bộ quá trình ta cần đếm số chu kỳ trung bình trong trường hợp xấu nhất.

Số chu kỳ truy vấn chính là tổng số node của cây, vì đây là cây nhị phân đầy đủ, gọi: L: số node lá của cây. (adsbygoogle = window.adsbygoogle || []).push({});

S: số node của cây.

Gọi:

T: cây với n node lá.

: tập hợp tất cả các cây con của T, với là cây con lớn nhất chứa 2 node lá.

depth( ): chiều sâu node gốc của trong T. k: chiều cao của T.

chiều cao của cây con lớn nhất bằng k – depth( ), từ đó, dễ dàng thấy số node lá của cây con nhiều nhất bằng k – depth( ) +1.

Ta có:

Trong đó là số phần tử của , do cứ 2 node lá thì xác định một cây con nên số cây con là .

Mặt khác, ta chứng minh được rằng:

Thế công thức trên vào (4.7), ta có:

Từ công thức (4.6), ta có:

Vậy

4.5.4.2 Độ phức tạp giao tiếp (communication complexity)

Gọi:

w: chuỗi UID của một thẻ trong tập hợp n thẻ.

=

Ta có:

Gọi wj là j-bit prefix của w, với j = 0, 1, 2, …

= Xác suất{những thẻ khác có prefix wj} = 1 – Xác suất{tất cả thẻ khác không có prefix wj} = 1 – (Xác suất{một thẻ khác không có prefix wj})n-1 = 1 –

Từ (4.8) –

Mặt khác, bằng phương pháp quy nạp ta chứng minh được:

Với

Do đó, một thẻ phải trải qua nhiều nhất là chu kỳ xung đột để phản hồi UID thành công về bộ đọc ở chu kỳ cuối cùng, ngoài ra ở mỗi chu kỳ, thẻ phản hồi k bit UID:

=> lượng dữ liệu thẻ phản hồi trong suốt quá trình nhiều nhất là .

=> lượng dữ liệu n thẻ phản hồi trong suốt quá trình nhiều nhất là .

Ta đã biết số chu kỳ , tại mỗi chu kỳ bộ đọc truy vấn nhiều nhất k bit UID:

=> lượng dữ liệu bộ đọc truy vấn trong suốt quá trình nhiều nhất là 2.89nk.

Tóm lại, lượng dữ liệu giao tiếp trong kênh truyền trong toàn bộ quá trình nhiều nhất là:

Một phần của tài liệu Nghiên cứu cơ chế giải quyết xung đột thẻ theo hướng tiếp cận tdma và ứng dụng cho bộ đọc sm (Trang 70)