Dot product of sparse vectors

Suppose we have very large sparse vectors (most of the elements in vector are zeros) 

  1. Find a data structure to store them
  2. Compute the Dot Product.

Follow-up:
What if one of the vectors is very small?

 1 a = [(1,2),(2,3),(100,5)]
 2 b = [(0,5),(1,1),(100,6)]
 3 
 4 i = 0; j = 0
 5 result = 0
 6 while i < len(a) and j < len(b):
 7     if a[i][0] == b[j][0]:
 8         result += a[i][1] * b[j][1]
 9         i += 1
10         j += 1
11     elif a[i][0] < b[j][0]:
12         i += 1
13     else:
14         j += 1
15 print(result)

 

你可能感兴趣的:(Dot product of sparse vectors)