def lnfaSub(mu, sigma, m, ssize, nodes): cn = [2,2,2]; ft=[]; fit =[]; g = [[1,2],[0,2],[0,1]]; ft.append(r.lognormvariate(mu,sigma)); Fit = ft[0]; fit.append(Fit) ft.append(r.lognormvariate(mu,sigma)); Fit += ft[1]; fit.append(Fit) ft.append(r.lognormvariate(mu,sigma)); Fit += ft[2]; fit.append(Fit) for j in range(3,ssize): g.append([]); cn.append(m); for i in range(m): prob=r.uniform(0,Fit); n = binsearch(prob, fit, j); cn[n] += 1; g[n].append(j); g[j].append(n); ft.append(r.lognormvariate(mu,sigma)); Fit += ft[j]; fit.append(Fit) for j in range(ssize, nodes): print j; nn1=r.sample(xrange(0,j),ssize); fft=[]; ffit = []; FFit = 0; for i in range(0, ssize): fft.append(ft[nn1[i]]); FFit += fft[i]; ffit.append(FFit); g.append([]); cn.append(m); for i in range(m): prob=r.uniform(0, FFit); n = binsearch(prob, ffit, ssize); cn[nn1[n]] += 1; g[nn1[n]].append(j); g[j].append(nn1[n]); ft.append(r.lognormvariate(mu,sigma)); Fit += ft[j]; fit.append(Fit) return g, cn, ft
def lnfa(mu, sigma, m, perc, nodes): cn = [1, 1] ft = [] fit = [] g = [[1], [0]] ft.append(r.lognormvariate(mu, sigma)) Fit = ft[0] fit.append(Fit) ft.append(r.lognormvariate(mu, sigma)) Fit += ft[1] fit.append(Fit) for j in range(2, 1000): g.append([]) cn.append(m) for i in range(m): prob = r.uniform(0, Fit) n = binsearch(prob, fit, j) cn[n] += 1 g[n].append(j) g[j].append(n) ft.append(r.lognormvariate(mu, sigma)) Fit += ft[j] fit.append(Fit) for j in range(1000, nodes): j #ssize = int(perc*j); ssize = 1000 nn1 = r.sample(xrange(0, j), ssize) fft = [] ffit = [] FFit = 0 for i in range(0, ssize): fft.append(ft[nn1[i]]) FFit += fft[i] ffit.append(FFit) g.append([]) cn.append(m) ft.append(r.lognormvariate(mu, sigma)) Fit += ft[j] fit.append(Fit) for i in range(m): prob = r.uniform(0, FFit) n = binsearch(prob, ffit, ssize) cn[nn1[n]] += 1 g[nn1[n]].append(j) g[j].append(nn1[n]) return g, cn, ft
def lognormdd(mu, sigma, m, nodes): cn = [2, 2, 2] ft = [] fit = [] g = [[1, 2], [0, 2], [0, 1]] ft.append(r.lognormvariate(mu, sigma)) Fit = ft[0] fit.append(Fit) ft.append(r.lognormvariate(mu, sigma)) Fit += ft[1] fit.append(Fit) ft.append(r.lognormvariate(mu, sigma)) Fit += ft[2] fit.append(Fit) for j in range(3, nodes): g.append([]) cn.append(m) for i in range(m): prob = r.uniform(0, Fit) n = binsearch(prob, fit, j) cn[n] += 1 g[n].append(j) g[j].append(n) ft.append(r.lognormvariate(mu, sigma)) Fit += ft[j] fit.append(Fit) return g, cn, ft
def expo_search(arr, size, target): if (size == 0): print("Element not found") return -1 bound = 1 while (bound < size and arr[bound] < target): bound *= 2 #print("Searching for range in: ",bound) return bin_s.binsearch(arr, bound // 2, min(bound, size - 1), target)
def EqualFalse(self): for _list, key, index in (([0, 1, 2, 3, 4, 5], 3, 3), ([0, 1, 2, 3, 4, 5], 0, 0), ([0, 1, 2, 3, 4, 5], 4, 4), ([0, 1, 2, 3, 4, 5], 5, 5), ([0, 1, 2, 3, 4, 5], 1, 1), ([0, 1, 2, 3, 4, 5], 2, 2), ([0, 1, 2, 3, 4, 6], 6, 5), ([0, 1, 4, 7, 9, 10], 4, 2), ([0, 2, 53, 364, 1235, 23523], 2, 1), ([0, 2, 53, 364, 1235, 23523], 23523, 5)): result = bs.binsearch(_list, key) self.assertEqual(index, result)
def inRange(self): for _list, key, index in (([0, 1, 2, 3, 4, 5], 3, 3), ([0, 1, 2, 3, 4, 5], 0, 0), ([0, 1, 2, 3, 4, 5], 4, 4), ([0, 1, 2, 3, 4, 5], 5, 5), ([0, 1, 2, 3, 4, 5], 1, 1), ([0, 1, 2, 3, 4, 5], 2, 2), ([0, 1, 2, 3, 4, 6], 6, 5), ([0, 1, 4, 7, 9, 10], 4, 2), ([0, 2, 53, 364, 1235, 23523], 2, 1), ([0, 2, 53, 364, 1235, 23523], 23523, 5)): result = bs.binsearch(_list, key) self.assertIn(result, _list)
def NoneFalse(self): for _list, key, index in (([0, 1, 2, 3, 4, 5], 3, 3), ([0, 1, 2, 3, 4, 5], 0, 0), ([0, 1, 2, 3, 4, 5], 4, 4), ([0, 1, 2, 3, 4, 5], 5, 5), ([0, 1, 2, 3, 4, 5], 1, 1), ([0, 1, 2, 3, 4, 5], 2, 2), ([0, 1, 2, 3, 4, 6], 6, 5), ([0, 1, 4, 7, 9, 10], 11, None), ([0, 2, 53, 364, 1235, 23523], 2, 1), ([0, 2, 53, 364, 1235, 23523], 23523, 5)): result = bs.binsearch(_list, key) if key not in _list: self.assertEqual(key, result)
def lognormdd(mu, sigma, m, alpha, nodes): cn = [1,1]; ft=[]; fit =[]; g = [[1],[0]]; ft.append((r.lognormvariate(mu,sigma))**alpha); Fit = ft[0]; fit.append(Fit) ft.append((r.lognormvariate(mu,sigma))**alpha); Fit += ft[1]; fit.append(Fit) for j in range(2,nodes): g.append([]); cn.append(m); for i in range(m): prob=r.uniform(0,Fit); n = binsearch(prob, fit, j); cn[n] += 1; g[n].append(j); g[j].append(n); ft.append((r.lognormvariate(mu,sigma))**alpha); Fit += ft[j]; fit.append(Fit) return g, cn, ft
graph.add_vertices(2) graph.add_edges([(0, 1)]) ft.append((r.lognormvariate(mu, sigma))**alpha) Fit = ft[0] fit.append(Fit) ft.append((r.lognormvariate(mu, sigma))**alpha) Fit += ft[1] fit.append(Fit) for j in range(2, nodes): g.append([]) cn.append(m) graph.add_vertices(1) for i in range(m): prob = r.uniform(0, Fit) n = binsearch(prob, fit, j) cn[n] += 1 g[n].append(j) g[j].append(n) graph.add_edges([(n, j)]) ft.append((r.lognormvariate(mu, sigma))**alpha) Fit += ft[j] fit.append(Fit) igraph.plot(graph, 'a10.pdf', layout="fr", vertex_label=None, vertex_color="blue", vertex_size=7, edge_width=.1,
m=2; mu=0; sigma=10.; nodes=1000; cn = [1,1]; ft=[]; fit =[]; g = [[1],[0]]; graph = igraph.Graph() graph.add_vertices(2) graph.add_edges([(0,1)]) ft.append(r.lognormvariate(mu,sigma)); Fit = ft[0]; fit.append(Fit) ft.append(r.lognormvariate(mu,sigma)); Fit += ft[1]; fit.append(Fit) for j in range(2,nodes): g.append([]); cn.append(m); graph.add_vertices(1) for i in range(m): prob=r.uniform(0,Fit); n = binsearch(prob, fit, j); cn[n] += 1; g[n].append(j); g[j].append(n); graph.add_edges([(n,j)]) ft.append(r.lognormvariate(mu,sigma)); Fit += ft[j]; fit.append(Fit) igraph.plot(graph, layout="fr", vertex_label=None, vertex_size=4, edge_width=.2) igraph.plot(graph, layout="kk", vertex_label=None, vertex_size=5, edge_width=.3) igraph.plot(graph, layout="fr", vertex_label=None, vertex_size=5, edge_width=.3)
def testBinsearchKnownValues(self): for _list, key, index in self.knowValues: result = bs.binsearch(_list, key) self.assertEqual(index, result)
from binsearch import binsearch bs = binsearch() array = [1, 3, 5, 17, 25, 31, 33, 45, 55, 56, 57, 87, 90, 99] q = 1 print bs.search(array, q) == 0 q = 5 print bs.search(array, q) == 2 q = 87 print bs.search(array, q) == 11 q = 99 print bs.search(array, q) == 13 q = 6 print bs.search(array, q) == -1 q = 60 print bs.search(array, q) == -1