Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. // Note: `@` refers to matrix-matrix or matrix-vector multiplication. `*` refers to elementwise multiplication.
  2.  
  3. degrees = // vector s.t. degree[i] is the degree of the i'th node in graph G
  4. D = // diagonal matrix s.t. D[i, i] = degrees[i]
  5. D_inv = // diagonal matrix s.t. D_inv[i, i] = 1 / sqrt(degrees[i])
  6. q = // zero matrix of shape (max_iters, num_nodes)
  7.  
  8. grad = -alpha * D_inv @ s
  9.  
  10. while k < max_iters do
  11. for i in num_nodes do
  12. rad = rho * alpha * sqrt(degrees[i])
  13.  
  14. | q[k,i] - (grad[i] + rad) if q[k,i] - grad[i] >= rad
  15. q[k + 1, i] = | 0 if -rad < q[k,i] - grad[i] < rad
  16. | q[k,i] - (grad[i] - rad) if q[k,i] - grad[i] <= -rad
  17.  
  18. grad = D_inv @ (D - (1 / alpha) / 2 * (D + A)) @ D_inv @ q[k] - alpha * D_inv @ s
  19. end for
  20. k = k + 1
  21. end while
  22.  
  23. return D_inv @ q[k]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement