my-server
← Wiki

Vectorial addition chain

In mathematics, for positive integers k and s, a vectorial addition chain is a sequence V of k-dimensional vectors v<sub>i</sub> of nonnegative integers for −k + 1 ≤ i ≤ s together with a sequence w, such that

,
,
: ⋮
: ⋮
,
v<sub>i</sub> = v<sub>j</sub> + v<sub>r</sub> for all 1 ≤ i ≤ s with −k + 1 ≤ j, r ≤ i − 1,
v<sub>s</sub> = [n<sub>0</sub>, ..., n<sub>k−1</sub>],
w = (w<sub>1</sub>, ..., w<sub>s</sub>), w<sub>i</sub> = (j, r).

For example, a vectorial addition chain for [22, 18, 3] is

V = ([1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 1, 0], [2, 2, 0], [4, 4, 0], [5, 4, 0], [10, 8, 0], [11, 9, 0], [11, 9, 1], [22, 18, 2], [22, 18, 3])
w = ((−2, −1), (1, 1), (2, 2), (−2, 3), (4, 4), (1, 5), (0, 6), (7, 7), (0, 8))

Vectorial addition chains are well suited to perform multi-exponentiation:

Input: Elements x<sub>0</sub>, ..., x<sub>k−1</sub> of an abelian group G and a vectorial addition chain of dimension k computing [n<sub>0</sub>, ..., n<sub>k−1</sub>]
Output: The element x<sub>0</sub><sup>n<sub>0</sub></sup>...x<sub>k−1</sub><sup>n<sub>r−1</sub></sup>
# for i = −k + 1 to 0 do y<sub>i</sub> → x<sub>i+k−1</sub>
# for i = 1 to s do y<sub>i</sub> → y<sub>j</sub> × y<sub>r</sub>
# return y<sub>s</sub>

Addition sequence

An addition sequence for the set of integer S = {n<sub>0</sub>, ..., n<sub>r−1</sub>} is an addition chain v that contains every element of S.

For example, an addition sequence computing

{47, 117, 343, 499}

is

(1, 2, 4, 8, 10, 11, 18, 36, 47, 55, 91, 109, 117, 226, 343, 434, 489, 499).

It is possible to find addition sequence from vectorial addition chains and conversely, so they are in a sense dual.

See also

References