Abstract
A baby-step giant-step algorithm divides n by n blocks that possess $m={\lceil}\sqrt{n}{\rceil}$ elements, and subsequently computes and stores $a^x$ (mod n) for m elements in the 1st block. It then calculates mod n for m blocks and identifies each of them with those in the 1st block of an identical elemental value. This paper firstly proposes a modified baby-step giant-step algorithm that divides ${\lceil}m/2{\rceil}$ blocks with m elements applying $a^{{\phi}(n)/2}{\equiv}1(mod\;n)$ and $a^x(mod\;n){\equiv}a^{{\phi}(n)+x}$ (mod n) principles. This results in a 50% decrease in the process of the giant-step. It then suggests a reverse baby-step giant step algorithm that performs and saves ${\lceil}m/2{\rceil}$ blocks firstly and computes $a^x$ (mod n) for m elements. The proposed algorithm is found to successfully halve the memory and search time of the baby-step giant step algorithm.
최단 보폭-최장 보폭 알고리즘은 n을 $m={\lceil}\sqrt{n}{\rceil}$개의 원소를 가진 m개의 블록으로 분할하고 첫 번째 블록의 m개에 대해 $a^x$ (mod n) 값을 저장한다. 다음으로 m개의 블록에 대한 mod n을 계산하여 첫 번째 블록의 원소 값을 검색하여 일치하는 블록을 찾는 방법이다. 본 논문에서는 첫 번째로, $a^{{\phi}(n)/2}{\equiv}1(mod\;n)$과 $a^x(mod\;n){\equiv}a^{{\phi}(n)+x}$ (mod n)의 특징을 적용하여 m개의 원소를 가진 ${\lceil}m/2{\rceil}$개의 블록으로 분할하는 방법을 적용하여 최장보폭의 수행횟수를 50% 감소시켰다. 두 번째로, ${\lceil}m/2{\rceil}$개의 최단 보폭을 먼저 수행하여 저장하고, 첫 번째 블록의 m개 원소를 수행하는 최단 보폭을 수행하는 방법으로 최단 보폭-최장 보폭 알고리즘을 역으로 수행하는 방법을 제안하였다. 이 알고리즘은 최단 보폭-최장 보폭 알고리즘의 m개 저장과 검색을 ${\lceil}m/2{\rceil}$개로 50% 감소시키는 특징이 있다.