Döï 2,22 (Shanks của thuật toán Babystep-Giantstep). Cho G là một nhóm và cho g ∈ G là một phần tử của thứ tự N ≥ 2√. Algorithm• sau giải quyết vấn đề lôgarit rời rạc gx = h trong O (N logN) bước. , do đó, trong cụ thể, n > √N.(2) tạo ra hai danh sách, Danh sách 1: e, g, g2, g3,..., gn, Danh sách 2: h, h • g−n, h • g−2n, h • g−3n,..., h • g−n2.(3) tìm thấy một kết hợp giữa hai danh sách, nói gi = hg−jn.(4) sau đó x = i + jn là một giải pháp cho gx = h.Bằng chứng. Chúng tôi bắt đầu với một vài quan sát. Trước tiên, khi tạo danh sách 2, chúng tôi bắt đầu bằng cách tính toán số lượng u = g−n và sau đó biên dịch danh sách 2 bởi máy tính h, h • u, h • u2,..., h • Liên Hiệp Quốc. Tạo hai danh sách mất khoảng 2n multiplications. Thứ hai, giả định rằng một trận đấu tồn tại, chúng tôi có thể tìm thấy một trận đấu trong bội nhỏ log(n) bước bằng cách sử dụng tiêu chuẩn phân loại và tìm kiếm thuật toán, do đó bước (3) takes≈O√ O(logn√) bước. Do đó tất cả thời gian cho các thuật toán là (nlogn) = O (N logN). Cho này bước cuối cùng chúng tôi đã sử dụng một thực tế rằng N n, vì vậy Để chứng minh rằng các thuật toán hoạt động, chúng tôi phải cho rằng danh sách 1 và 2 luôn luôn có một trận đấu. Để thấy điều này, hãy để x là giải pháp không rõ để gx = h và viết x như x = nq + r với 0 ≤ r < n.Chúng ta biết rằng 1 ≤ x < N, vì vậy√
đang được dịch, vui lòng đợi..