Consider some set of vectors v_i i=1...N , v_i \in Z^k.
e.g. N = 10^4; k = 10
Consider all possible sums: v_i + v_j.
Is it possible to estimate how many DISTINCT vectors we get in advance without making summation ? (some algorithm ? what is complexity of this algorithm ?)
Obviously maximal number is N(N+1)/2 - when all obtained vectors are distinct. Minimal number is "1" - when all v_i are equal to each other.
======
The question can be reformulated in other terms: consider polynomial P = \sum_i z^{(v_i)} where z^v means z_1^{(v_1)}z_2{(v_2)}... z_k^{(v_k)}.
Consider P^2. How many monomials we get ? (Is it possible to estimate it looking on P it self).
===
Of course we can ask about growth of triple sums: v_i + v_j + v_k and so forth.
===
Why this is interesting (for me) ? The practical (for me) question is it reasonable to write and start some prog or not ?
If I know that answer is N^4 =10^16 - it will take ~3 years - unreasonable. If I know in advance that we have much smaller number the prog is worth to write and we get result in reasonable time.
If we have some set of vectors w_p p=1...M and we want to analyse how many distinct elements are there we need to make ~M^2 compares. So if w_p = v_i + v_j we need M^2~N^4 compares. But for N=10^4 this is 10^16 which is beyond say "pentium" abilities - 10^16/10^9 = 10^7 seconds ~ 10^4 hours ~ 10^3 days ~ 3 years...
So the task is hopeless and you do not need to start such a program. But if I know in advance that the number of distinct vectors is much smaller, then it is reasonable to wait for the answer.
============