Giải pháp để xây dựng dãy phân rã một cách hiệu quả

Một phần của tài liệu Về một thuật toán sinh số giả ngẫu nhiên dựa trên phương pháp tạo dãy phi tuyến lồng ghép với bậc lớn (Trang 70 - 72)

Theo đúng các bước của phương pháp phân rã, ta cần tính tốn T trạng thái trong của m-dãy để tạo ra 1 bit của dãy phân rã đầu ra

Nếu ta sử dụng biến đổi - d để tính trạng thái mới (hoặc phương pháp Gaussian), thay vì tính tốn từng trạng thái bằng cách nhân trạng thái trong hiện tại với d trong mỗi bước trên trường GF(qn), ta có thể tính trực tiếp trạng thái bên trong sau bước T bằng trạng thái bên trong hiện tại nhân với dT trên trường GF(qn) Ta sẽ không cần phải lưu trạng thái trong của T-1 bước trung gian Tuy nhiên trong q

trình tính tốn đa thức trên trường GF(qn) cần tính phép modulo đa thức với T hệ

số Q trình tính tốn này sẽ cần nhiều thời gian, đặc biệt khi giá trị T rất lớn Khi ta sử dụng phương pháp Fibonacci (là cách phổ biến để sinh m-dãy trong các vi xử lý), ta có thể thực hiện việc phân rã nhanh hơn bằng cách thực hiện các tính tốn trước theo phương pháp sau:

Giả sử trạng thái trong của m-dãy được lưu trong một thanh ghi dịch ký hiệu {ai} (i = 0 n-1)

Công thức sinh bit phản hồi cho m-dãy theo Fibonacci như sau:

−1 (2 39)

Ví dụ 2 4: ta lấy lại tham số trong thử nghiệm trên với bước phân rã được chọn là T = 5 Ta biết rằng đa thức sinh của dãy phân rã là :

g1(x) = x23 + x22 + x18 + x17 + x16 + x15 + x12 + x10 + x7 + x6 + x5 + x3 + x2 + x + 1 Từ các bit của trạng thái ban đầu S(0) = {a0, a1, …, a22}, sử dụng phương

pháp Fibonacci để lập công thức cho cả T bit liên tiếp, tính theo tham số là n bit đầu vào như sau (sử dụng đa thức sinh của dãy ban đầu):

a23 = a0 ^ a5 ^ a8 ^ a9 ^ a12 ^ a14 ^ a18 ^ a21

a24 = a1 ^ a6 ^ a9 ^ a10 ^ a13 ^ a15 ^ a19 ^ a22

a25 = a2 ^ a7 ^ a10 ^ a11 ^ a14 ^ a16 ^ a20 ^ a23

= a2 ^ a7 ^ a10 ^ a11 ^ a14 ^ a16 ^ a20 ^ a0 ^ a5 ^ a8 ^ a9 ^ a12 ^ a14 ^ a18 ^ a21 = a0 ^ a2 ^ a5 ^ a7 ^ a8 ^ a9 ^ a10 ^ a11 ^ a12 ^ a16 ^ a18 ^ a20 ^ a21

a26 = a3 ^ a8 ^ a11 ^ a12 ^ a15 ^ a17 ^ a21 ^ a24

= a1 ^ a3 ^ a6 ^ a8 ^ a9 ^ a10 ^ a11 ^ a12 ^ a13 ^ a17 ^ a19 ^ a21 ^ a22

a27 = a4 ^ a9 ^ a12 ^ a13 ^ a16 ^ a18 ^ a22 ^ a25

= a0 ^ a2 ^ a4 ^ a5 ^ a7 ^ a8 ^ a10 ^ a11 ^ a13 ^ a20 ^ a21 ^ a22

Như vậy trạng thái trong của thanh ghi sau T bước sẽ là:

S(5) = {a5, a6, … , a22, a23, a24, a25, a26, a27}

Biểu diễn các hệ số dưới dạng ma trận như sau:

0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ⋮ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 A = 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 (2 40) (2 41) 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 1 1 0 0 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 1 1 1 1 1 1 0 0 0 1 0 1 0 1 1 [1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 1 1 1]

Với biểu diễn ma trận này, ta có thể tính trạng thái trong của thanh ghi sau T bước:

S(T) = A S(0)T (2 42)

Sử dụng lặp lại công thức (2 42), ta có thể sinh ra tồn bộ dãy phân rã mà khơng cần tính các giá trị trung gian

Chú ý là ta cần có được tồn bộ các giá trị các bit của trạng thái trong tại S (5)

toàn bộ các giá trị các bit của trạng thái trong tại S(5) để áp dụng cho (2 42) Tuy rằng ta có thể xây dựng cơng thức tính trực tiếp a32 từ S(0), nhưng ta khơng thể tính trước tồn bộ các cơng thức sinh cho từng bit của dãy phân rã

Với T < m, ta có thể tính được các bit của dãy phân rã mà chỉ cần lưu T cơng thức trong (2 41), khơng cần thiết lưu tồn bộ ma trận A trong (2 42) Giải pháp này chỉ cần lưu trữ thơng tin ít hơn, và hiệu năng sẽ tốt hơn so với phép nhân ma trận đầy đủ sử dụng (2 42)

Trong các thử nghiệm thực tế, nếu áp dụng giải pháp nêu trên, độ phức tạp tính tốn khơng thay đổi giữa phương pháp truyền thống (tính trực tiếp theo (2 40)) và phương pháp sử dụng (2 41) Tuy nhiên trong phương pháp truyền thống, ta cần dịch chuyển thanh ghi dịch T lần, mỗi lần dịch chuyển 1 vị trí Với phương pháp sử dụng (2 41) và (2 42) ta chỉ cần một lần dịch chuyển thanh ghi

Một phần của tài liệu Về một thuật toán sinh số giả ngẫu nhiên dựa trên phương pháp tạo dãy phi tuyến lồng ghép với bậc lớn (Trang 70 - 72)

Tải bản đầy đủ (DOCX)

(112 trang)
w