Guest User

Untitled

a guest
Jun 22nd, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. let nodes = [1, 2, 3, 4, 5]
  2. let edges = ['1-3', '1-4', '2-1', '2-3', '2-4', '3-2', '3-5', '4-2', '4-5']
  3.  
  4. let nodeWeights = {1: 20, 2: 30, 3: 25, 4: 50, 5: 45}
  5. let edgeWeights = {
  6. '1-3': 3,
  7. '1-4': 5,
  8. '2-1': 2,
  9. '2-3': 9,
  10. '2-4': 4,
  11. '3-2': 1,
  12. '3-5': 2,
  13. '4-2': 8,
  14. '4-5': 6
  15. }
  16.  
  17. let clusters = {
  18. 1: [1],
  19. 2: [2],
  20. 5: [5],
  21. 6: [3, 4]
  22. }
  23. let mergeHash = { 3: 6, 4: 6 }
  24.  
  25. let newNodes = []
  26. let newNodeWeights = {}
  27. for (let key in clusters) {
  28. newNodes.push(key)
  29. newNodeWeights[key] = 0
  30. for (let nodeID of clusters[key]) {
  31. newNodeWeights[key] += nodeWeights[nodeID]
  32. }
  33. }
  34.  
  35. let newEdges = []
  36. let newEdgeWeights = {}
  37. for (let edgeKey of edges) {
  38. let [i, j] = edgeKey.split('-').map(x => parseInt(x))
  39. if (mergeHash[i]) {
  40. i = mergeHash[i]
  41. }
  42. if (mergeHash[j]) {
  43. j = mergeHash[j]
  44. }
  45. let newKey = i + '-' + j
  46. if (!newEdges.includes(newKey)) { newEdges.push(newKey) }
  47. if (newEdgeWeights[newKey]) {
  48. newEdgeWeights[newKey] += edgeWeights[edgeKey]
  49. } else {
  50. newEdgeWeights[newKey] = edgeWeights[edgeKey]
  51. }
  52. }
  53.  
  54. {
  55. "1-6": 8,
  56. "2-1": 2,
  57. "2-6": 13,
  58. "6-2": 9,
  59. "6-5": 8
  60. }
Add Comment
Please, Sign In to add comment