Điểm:3

Hoạt động nhạy cảm với đơn đặt hàng nhanh nhất

lá cờ in

Bất cứ gì $v$ nhiều $b$vectơ -bit $(\mathbf{x}_0, \mathbf{x}_1, \ldots, \mathbf{x}_{v-1}) \in \{\{0, 1\}^b\}^v$, cái gì nhanh nhất cách kết hợp $\mathbf{x}_0, \mathbf{x}_1, \ldots, \mathbf{x}_{v-1}$ thành một số duy nhất, sao cho hoạt động là nhạy cảm với đơn đặt hàng?

Ví dụ. nói rằng $\mũ+$ là một số phương pháp kết hợp các số (không nhất thiết phải cộng, nhưng chúng ta có thể định nghĩa nó theo cách chúng ta muốn). Mục tiêu là có $\mathbf{x}_0 \hat+ \mathbf{x}_1 \hat+ \ldots \hat+ \mathbf{x}_{v-1}$ dẫn đến một số duy nhất khác với bất kỳ thứ tự nào khác, chẳng hạn như, $\mathbf{x}_{v-1} \hat+ \mathbf{x}_{v-2} \hat+ \ldots \hat+ \mathbf{x}_0$.

Đối với nhanh nhất, tốc độ được đo trên các CPU có mục đích chung. Ví dụ. x86-64.


Suy nghĩ của tôi cho đến nay là:

b_bits_variable xor = 0;
for (i = 0; i < v; i++) {
  xor = xor^(xor + x_i);
}

ở đâu:

  • biến b_bits là một biến có chính xác $b$ nhiều bit. Ví dụ. nếu $b=16$, thì chúng ta có thể sử dụng uint16_t trong ngôn ngữ lập trình C.
  • v$v$ (số lượng vectơ như trong câu hỏi trên).
  • x_i$\mathbf{x}_i$ (một vectơ giữa các $v$ nhiều cái như trong câu hỏi trên).
  • tôi ++ $= i+1$.
  • ^ là bit-khôn ngoan XOR.
  • + là phép cộng thường được sử dụng trong các ngôn ngữ lập trình, sẽ tràn nếu số lớn hơn $2^b - 1$. Tôi nghĩ tràn như vậy về cơ bản là modulo $2^b$ phép cộng. I E. xor + x_i $=\text{xor} + \mathbf{x}_i \mod 2^b$.
kodlu avatar
lá cờ sa
vui lòng sử dụng ký hiệu toán học. uint_8t là gì?
caveman avatar
lá cờ in
Số nguyên không dấu với 8 bit. `uint8_t` được sử dụng trong C. Tôi nghĩ cộng đồng mật mã thường nói bằng C vì hầu hết các triển khai cuối cùng đều chuyển thành tối ưu hóa trong chúng? Có lẽ tôi sai. Có một cách tốt hơn để viết này?
kodlu avatar
lá cờ sa
viết vấn đề một cách toán học sẽ làm cho nó rõ ràng hơn đối với những người không viết mã. Các biến của bạn nằm trong tập hợp nào? các hoạt động được xác định trên chúng là gì? Rand_pick_pool có nghĩa là gì?
kodlu avatar
lá cờ sa
Giả sử tôi có $X_1,\ldots,X_N \in \{0,1\}^m$ nên đây là các vectơ $m-$bit. Bạn cũng có thể coi chúng là số nguyên trong $\{0,1,..,2^m-1\}$ với phép cộng modulo $2^m-1$. Sử dụng điều này, thể hiện lại câu hỏi của bạn.
caveman avatar
lá cờ in
@kodlu - IMO quá nhiều, bởi vì câu hỏi này là về việc triển khai nhanh. IMO một tập hợp con của mật mã có liên quan chặt chẽ đến việc triển khai khi nói đến hiệu suất và câu hỏi của tôi là một. Tôi nghĩ rằng quá nhiều trừu tượng toán học sẽ đưa chúng ta ra khỏi mục tiêu của câu hỏi
kodlu avatar
lá cờ sa
Đủ công bằng. *Nhưng* nếu bạn muốn hiểu liệu có lý do nội tại hay không, dựa trên các tham số $N,m$ trong nhận xét của tôi và thứ tự chính xác của hai thao tác xác định xem độ nhạy thứ tự của kết quả tổng thể hay không, đó là một câu hỏi về tiền điện tử toán học . Tôi đang nói về câu hỏi của bạn 1. Tôi vẫn không hiểu thiết lập chính xác là gì, nhưng không sao cả.
caveman avatar
lá cờ in
@kodlu - Xong (cảm ơn, bạn nói đúng; tôi đã bỏ qua điều đó).
Điểm:1
lá cờ sa

Đây là một ý tưởng đơn giản.

tôi sẽ sử dụng $x_i$ cho vectơ trong $d$ kích thước và sử dụng $a_i$ cho số nguyên tương ứng Trong $\{0,1,\ldots, 2^d-1\}$.

Sắp xếp các $a_i$ từ nhỏ đến lớn. Để cho $r_i$ là thứ hạng của $a_i$ sử dụng cấp bậc từ $\{0,1,\ldots,v-1\}$. Phá vỡ các ràng buộc tùy ý trong quá trình phân loại.

Ví dụ: $(a_1,a_2,a_3)=(1,7,2)$ có véc tơ hạng $(r_1,r_2,r_3)=(0,2,1).$ Có ba mục được đánh số từ 0 đến 2 và mục ở giữa 7 là mục lớn nhất với thứ hạng 2.

Bây giờ hãy xem xét danh sách hoán vị của 3 đối tượng theo thứ tự từ điển tiêu chuẩn và chỉ mục của chúng

$$ 012~~0\\ 021~~1\\ 102~~2\\ 120~~3\\ 201~~4\\ 210~~5\\ $$ và lưu ý rằng hoán vị này là 021 nên có vị trí 1 trong danh sách các hoán vị. Mã hóa vị trí dưới dạng vectơ nhị phân mất $r=\lceil \log_2 v\rceil$ chút ít.

Nếu $r\leq d,$ chúng ta có thể xác định $$ x_1+x_2+\cdots+x_v=x_1\oplus x_2\oplus \cdots\oplus x_v \oplus index(hoán vị(x_1,\ldots,x_v)), $$ vì vậy, cuối cùng, chúng tôi xor chỉ số của hoán vị sẽ thay đổi nếu $x_i$ được sắp xếp lại.

caveman avatar
lá cờ in
Làm thế nào để điều này so sánh với ý tưởng của tôi ở trên? Ví dụ. đệ quy cho bất kỳ $i$, $x_i + x_{i+1} = x_i \oplus (x_i + x_{i+1} \mod 2^d)$, với trường hợp cơ sở là $x_0 = x_0$. Về cơ bản, tôi chủ yếu thắc mắc về hai khía cạnh: (1) độ nhạy với mệnh lệnh và (2) tốc độ. Đối với (1) tôi nghĩ rằng nó ngụ ý giảm va chạm; ví dụ. khả năng các số lượng khác nhau của các đơn đặt hàng khác nhau cuối cùng nhận được cùng một số cuối cùng là bao nhiêu?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.