Score:3

การดำเนินการที่ไวต่อคำสั่งที่เร็วที่สุด

ธง in

สำหรับใดๆ $v$ มากมาย $ข$-บิตเวกเตอร์ $(\mathbf{x}_0, \mathbf{x}_1, \ldots, \mathbf{x}_{v-1}) \in \{\{0, 1\}^b\}^v$,อะไรคือ เร็วที่สุด วิธีการรวม $\mathbf{x}_0, \mathbf{x}_1, \ldots, \mathbf{x}_{v-1}$ เป็นเลขตัวเดียว เช่น การดำเนินการนั้น สั่งไว?

เช่น. บอกว่า $\หมวก+$ เป็นวิธีการรวมตัวเลข (ไม่จำเป็นต้องบวก แต่เราสามารถกำหนดได้ตามที่เราต้องการ) เป้าหมายคือการมี $\mathbf{x}_0 \hat+ \mathbf{x}_1 \hat+ \ldots \hat+ \mathbf{x}_{v-1}$ ทำให้ได้หมายเลขเฉพาะที่แตกต่างจากคำสั่งอื่นๆ เช่น $\mathbf{x}_{v-1} \hat+ \mathbf{x}_{v-2} \hat+ \ldots \hat+ \mathbf{x}_0$.

ส่วน เร็วที่สุด, ความเร็วจะวัดจาก CPU ที่ใช้งานทั่วไป เช่น. x86-64.


ความคิดของฉันจนถึงตอนนี้คือ:

b_bits_variable xor = 0;
สำหรับ (i = 0; i < v; i++) {
  xor = xor ^ (xor + x_i);
}

ที่ไหน:

  • b_bits_variable เป็นตัวแปรที่มีตรง $ข$ หลายบิต เช่น. ถ้า $b=16$แล้วเราอาจใช้ uint16_t ในโปรแกรมภาษาซี
  • โวลต์ เป็น $v$ (ปริมาณของเวกเตอร์ตามคำถามข้างต้น)
  • x_i เป็น $\mathbf{x}_i$ (เวกเตอร์ในหมู่ $v$ หลายตัวดังคำถามข้างต้น)
  • ฉัน ++ $= ฉัน+1$.
  • ^ เป็น XOR ที่ฉลาดระดับบิต
  • + เป็นการบวกที่ใช้กันทั่วไปในภาษาโปรแกรม ซึ่งจะล้นถ้าตัวเลขมากกว่า $2^b - 1$. ฉัน คิด ล้นดังกล่าวเป็นพื้นโมดูโล $2^b$ ส่วนที่เพิ่มเข้าไป. เช่น. xor + x_i $=\text{xor} + \mathbf{x}_i \mod 2^b$.
kodlu avatar
sa flag
โปรดใช้สัญกรณ์ทางคณิตศาสตร์ uint_8t คืออะไร
caveman avatar
in flag
จำนวนเต็มไม่มีเครื่องหมาย 8 บิต `uint8_t` ใช้ใน C ฉันคิดว่ามันเป็นเรื่องธรรมดาในหมู่ชุมชนการเข้ารหัสที่จะพูดใน C เนื่องจากการใช้งานส่วนใหญ่ในที่สุดก็จบลงที่การปรับให้เหมาะสม บางทีฉันอาจจะผิด มีวิธีเขียนที่ดีกว่านี้ไหม
kodlu avatar
sa flag
การเขียนโจทย์ทางคณิตศาสตร์จะทำให้คนที่ไม่เขียนโค้ดเข้าใจได้ชัดเจนขึ้น ตัวแปรของคุณอยู่ในชุดใด การดำเนินการที่กำหนดไว้คืออะไร? rand_pick_pool หมายถึงอะไร
kodlu avatar
sa flag
สมมติว่าฉันมี $X_1,\ldots,X_N \in \{0,1\}^m$ ดังนั้นพวกนี้คือเวกเตอร์ $m-$bit คุณยังสามารถคิดว่าพวกมันเป็นจำนวนเต็มใน $\{0,1,..,2^m-1\}$ ด้วยการบวก $2^m-1$ โมดูโล ใช้สิ่งนี้แสดงคำถามของคุณอีกครั้ง
caveman avatar
in flag
@kodlu - IMO นั้นมากเกินไป เพราะคำถามนี้เกี่ยวกับการใช้งานที่รวดเร็ว IMO เป็นชุดย่อยของการเข้ารหัสที่เกี่ยวข้องอย่างใกล้ชิดกับการใช้งานในด้านประสิทธิภาพ และคำถามของฉันคือข้อหนึ่ง ฉันคิดว่านามธรรมทางคณิตศาสตร์มากเกินไปจะทำให้เราห่างไกลจากเป้าหมายของคำถาม
kodlu avatar
sa flag
ยุติธรรมเพียงพอ *แต่* หากคุณต้องการเข้าใจว่ามีเหตุผลที่แท้จริงหรือไม่ โดยพิจารณาจากพารามิเตอร์ $N,m$ ในความคิดเห็นของฉันและลำดับที่แน่นอนของการดำเนินการทั้งสองที่กำหนดว่าความไวในการสั่งซื้อของผลลัพธ์โดยรวมหรือไม่ นั่นเป็นคำถามทางคณิตศาสตร์เกี่ยวกับการเข้ารหัสลับ . ฉันกำลังพูดถึงคำถามของคุณ 1 ฉันยังไม่เข้าใจว่าการตั้งค่าคืออะไร แต่ไม่เป็นไร
caveman avatar
in flag
@kodlu - เสร็จแล้ว (ขอบคุณ คุณพูดถูก ฉันมองข้ามมันไป)
Score:1
ธง sa

นี่เป็นแนวคิดง่ายๆ

ฉันจะใช้ $x_i$ สำหรับเวกเตอร์ใน $d$ ขนาดและการใช้งาน $a_i$ สำหรับจำนวนเต็มที่เกี่ยวข้อง ใน $\{0,1,\ldots, 2^d-1\}$.

เรียงลำดับ $a_i$ ตั้งแต่เล็กไปจนถึงใหญ่ อนุญาต $r_i$ มียศเป็น $a_i$ ใช้อันดับจาก $\{0,1,\ldots,v-1\}$. ทำลายความสัมพันธ์ระหว่างการเรียงลำดับโดยพลการ

ตัวอย่าง: $(a_1,a_2,a_3)=(1,7,2)$ มีเวกเตอร์อันดับ $(r_1,r_2,r_3)=(0,2,1).$ มีสามรายการที่มีหมายเลขตั้งแต่ 0 ถึง 2 และรายการตรงกลางคือ 7 ซึ่งใหญ่ที่สุดในอันดับที่ 2

ตอนนี้ให้พิจารณารายการการเรียงสับเปลี่ยนของวัตถุ 3 รายการตามลำดับศัพท์มาตรฐานและดัชนี

$$ 012~~0\\ 021~~1\\ 102~~2\\ 120~~3\\ 201~~4\\ 210~~5\\ $$ และโปรดทราบว่าการเรียงสับเปลี่ยนนี้คือ 021 ดังนั้นจึงมีตำแหน่ง 1 ในรายการการเรียงสับเปลี่ยน การเข้ารหัสตำแหน่งเป็นเวกเตอร์ไบนารีใช้เวลา $r=\lceil \log_2 v\rceil$ บิต

ถ้า $r\leq ง,$ เราสามารถกำหนดได้ $$ x_1+x_2+\cdots+x_v=x_1\oplus x_2\oplus \cdots\oplus x_v \oplus ดัชนี(การเรียงสับเปลี่ยน (x_1,\ldots,x_v)), $$ ดังนั้นในตอนท้ายเราจะ xor ดัชนีของการเรียงสับเปลี่ยนซึ่งเปลี่ยนแปลงถ้า $x_i$ มีการจัดลำดับใหม่

caveman avatar
in flag
สิ่งนี้เปรียบเทียบกับแนวคิดของฉันข้างต้นอย่างไร เช่น. เรียกซ้ำสำหรับ $i$, $x_i + x_{i+1} = x_i \oplus (x_i + x_{i+1} \mod 2^d)$ โดยที่ตัวพิมพ์ฐานคือ $x_0 = x_0$ โดยพื้นฐานแล้วฉันสงสัยในสองประเด็นหลัก: (1) ความไวต่อคำสั่ง และ (2) ความเร็ว สำหรับ (1) ฉันคิดว่ามันแสดงถึงการชนกันที่ลดลง; เช่น. เป็นไปได้มากน้อยเพียงใดที่จำนวนคำสั่งซื้อที่แตกต่างกันจะได้หมายเลขสุดท้ายเดียวกันในที่สุด

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา