condition = True while (condition): # initialize again parameters partitionArray = tempPartitionArray.copy() for i in range(0, partitionSize): dict[i] = 0 part = [] indexer = [] # create partition buckets for i in range(0, partitionSize): p = [] for z in range(0, len(partitionArray)): id = Handler.partitionRandom(adjecencyMatrix, indexer, partitionSize) indexer.append(id) if (Handler.edgeConectivity(adjecencyMatrix, part, id) == 0): part.append(p) dict[i] = pickMatrix[id][id] part[i].append(id) break else: indexer.pop() tempPartitionSize = 0 while (len(partitionArray) != len(indexer)): cont = 0 for k in range(0, len(partitionArray)): if (k in indexer): continue max, id = 0, -1 # dictionary upper bound dicUpper = 0
# choose the partition to merge begin part = [] indexer = [] for i in range(0, partitionSize): p = [] if i == 0: part.append(p) id = Handler.partitionRandom(partitionArray, indexer) part[i].append(partitionArray[id]) del partitionArray[id] else: indexer = [] for z in range(0, len(partitionArray)): id = Handler.partitionRandom(partitionArray, indexer) indexer.append(id) if (Handler.edgeConectivity(G, part, partitionArray[id], data) == 0): part.append(p) part[i].append(partitionArray[id]) del partitionArray[id] break tempPartitionSize = 0 while (len(partitionArray) != 0): cont = 0 for k in partitionArray: max, id = 0, -1 #dictionary upper bound dicUpper = 0 for v in range(0, partitionSize): dicUpper += dict[v] dicUpper = dicUpper / partitionSize