ในหลักสูตรวิทยาการเข้ารหัสลับ ครูของเราบอกว่าการแก้ปัญหาลอการิทึมแบบไม่ต่อเนื่องในกลุ่มคำสั่ง $2^e$ เป็นเรื่องง่าย และเขาให้อัลกอริทึมต่อไปนี้แก่เรา:
อนุญาต $G$ เป็นกลุ่มวัฏจักรด้วย $|G|=2^e$ และ $g\ใน G$ เครื่องกำเนิดไฟฟ้า อัลกอริทึมการคำนวณต่อไปนี้ $x$ ดังนั้น $h=g^x$:
การคำนวณล่วงหน้า: $g^{-1}=g^{n-1}$.
การเริ่มต้น: $x_0=0$, $b_0=h$, $m_0=\log_2(ออร์ด(h))$.
การทำซ้ำ:
ในขณะที่ $m_i> 0$:
$x_{i+1}=x_i+2^{e-m_i}$
$b_{i+1}=b_i(g^{-1})^{2^{e-m_i}}$
$m_{i+1}=\log_2(\text{ord}(b_{i+1}))$
เอาท์พุต: $x=x_i$
สิ่งที่ฉันต้องการทำคือการพิสูจน์ว่าอัลกอริทึมหยุดลง $x$ เป็นลอการิทึมที่ไม่ต่อเนื่องและทำงานในเวลาพหุนาม เพื่อให้อัลกอริทึมหยุด เราต้องตรวจสอบเท่านั้น $m_{i+1}<m_i~\forall~i$ซึ่งเท่ากับแสดงว่า $\text{ord}(b_{i+1})<\text{ord}(b_i)$. ถ้า $\text{ord}(b_i)=2^l$ แล้ว:
$$b_{i+1}^{2^l}=(b_i(g^{-1})^{2^{e-m_i}})^{2^l}=b_i^{2^l} (g^{-1})^{2^{e-l}2^l}=1$$
ซึ่งพิสูจน์ได้ว่า $\text{ord}(b_{i+1})\leq\text{ord}(b_i)$แต่ฉันไม่สามารถรับอสมการที่เข้มงวดได้ สำหรับอีกสองส่วนฉันไม่มีความคิดที่ดีในการแก้ปัญหา ...
ฉันเป็นนักคณิตศาสตร์ที่เป็นผู้เริ่มต้นในการเข้ารหัส ดังนั้นฉันจึงไม่รังเกียจหากคุณถือว่ามีความรู้ทางคณิตศาสตร์ ซึ่งเป็นสิ่งที่ฉันคุ้นเคย ขอบคุณสำหรับความช่วยเหลือของคุณ.