Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let nodes = [1, 2, 3, 4, 5]
- let edges = ['1-3', '1-4', '2-1', '2-3', '2-4', '3-2', '3-5', '4-2', '4-5']
- let nodeWeights = {1: 20, 2: 30, 3: 25, 4: 50, 5: 45}
- let edgeWeights = {
- '1-3': 3,
- '1-4': 5,
- '2-1': 2,
- '2-3': 9,
- '2-4': 4,
- '3-2': 1,
- '3-5': 2,
- '4-2': 8,
- '4-5': 6
- }
- let clusters = {
- 1: [1],
- 2: [2],
- 5: [5],
- 6: [3, 4]
- }
- let mergeHash = { 3: 6, 4: 6 }
- let newNodes = []
- let newNodeWeights = {}
- for (let key in clusters) {
- newNodes.push(key)
- newNodeWeights[key] = 0
- for (let nodeID of clusters[key]) {
- newNodeWeights[key] += nodeWeights[nodeID]
- }
- }
- let newEdges = []
- let newEdgeWeights = {}
- for (let edgeKey of edges) {
- let [i, j] = edgeKey.split('-').map(x => parseInt(x))
- if (mergeHash[i]) {
- i = mergeHash[i]
- }
- if (mergeHash[j]) {
- j = mergeHash[j]
- }
- let newKey = i + '-' + j
- if (!newEdges.includes(newKey)) { newEdges.push(newKey) }
- if (newEdgeWeights[newKey]) {
- newEdgeWeights[newKey] += edgeWeights[edgeKey]
- } else {
- newEdgeWeights[newKey] = edgeWeights[edgeKey]
- }
- }
- {
- "1-6": 8,
- "2-1": 2,
- "2-6": 13,
- "6-2": 9,
- "6-5": 8
- }
Add Comment
Please, Sign In to add comment