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