Exemplo n.º 1
0
 def __init__(self, n, delta):
     delta_filter = delta / 2.0
     delta_decode = delta / 2.0
     self.s = 3 * (1 - int(math.ceil(math.log(delta_filter, 2))))
     self.k = (1 + int(math.ceil(math.log(n))))
     # print "RecGeneral({0})".format(self.k)
     self.n = n
     self.h = HashK(n**3, self.s)
     self.sketch = [
         RecS(self.n, self.s, delta_decode) for i in xrange(self.k)
     ]
 def __init__(self, n, delta):
     delta_filter = delta / 2.0
     delta_decode = delta / 2.0
     self.s = 3 * (1 - int(math.ceil(math.log(delta_filter, 2))))
     self.k = (1 + int(math.ceil(math.log(n))))
     # print "RecGeneral({0})".format(self.k)
     self.n = n
     self.h = HashK(n**3, self.s)
     self.sketch = [RecS(self.n, self.s, delta_decode) for i in xrange(self.k)]
Exemplo n.º 3
0
 def __init__(self, n, s, delta):
     delta_collision = delta / 2.0
     self.cnt = 0
     self.n = n
     self.s = s
     self.k = 1 - 2 * int(math.ceil(math.log(delta_collision, 2)))
     # print "RecS({0}, {1})".format(self.s, self.k)
     delta_decoder = delta / (2.0 * self.k * self.s)
     self.sketch = [[Rec1(n, delta_decoder) for j in xrange(2 * s)]
                    for i in xrange(self.k)]
     self.hashes = [HashK(2 * s) for i in xrange(self.k)]
Exemplo n.º 4
0
class RecGeneral:
    def __init__(self, n, delta):
        delta_filter = delta / 2.0
        delta_decode = delta / 2.0
        self.s = 3 * (1 - int(math.ceil(math.log(delta_filter, 2))))
        self.k = (1 + int(math.ceil(math.log(n))))
        # print "RecGeneral({0})".format(self.k)
        self.n = n
        self.h = HashK(n**3, self.s)
        self.sketch = [
            RecS(self.n, self.s, delta_decode) for i in xrange(self.k)
        ]

    def copy(self):
        result = RecGeneral(self.n, 1.0)
        result.s = self.s
        result.k = self.k
        result.n = self.n
        result.h = self.h
        result.sketch = [self.sketch[i].copy() for i in xrange(self.k)]
        return result

    def update(self, ind, val):
        for i in xrange(self.k):
            if self.h.at(ind) % (2**i) == 0:
                self.sketch[i].update(ind, val)

    def sample(self):
        for i in xrange(self.k):
            result = self.sketch[self.k - 1 - i].recover()
            if len(result) > 0:
                ind = random.choice(result.keys())
                return ind, result[ind]
        return 0, 0

    def sum(self, rhs):
        result = self.copy()
        result.sketch = [
            self.sketch[i].sum(rhs.sketch[i]) for i in xrange(rhs.k)
        ]
        return result
class RecGeneral:
    def __init__(self, n, delta):
        delta_filter = delta / 2.0
        delta_decode = delta / 2.0
        self.s = 3 * (1 - int(math.ceil(math.log(delta_filter, 2))))
        self.k = (1 + int(math.ceil(math.log(n))))
        # print "RecGeneral({0})".format(self.k)
        self.n = n
        self.h = HashK(n**3, self.s)
        self.sketch = [RecS(self.n, self.s, delta_decode) for i in xrange(self.k)]

    def copy(self):
        result = RecGeneral(self.n, 1.0)
        result.s = self.s
        result.k = self.k
        result.n = self.n
        result.h = self.h
        result.sketch = [self.sketch[i].copy() for i in xrange(self.k)]
        return result
    
    def update(self, ind, val):
        for i in xrange(self.k):
            if self.h.at(ind) % (2**i) == 0:
                self.sketch[i].update(ind, val)

    def sample(self):
        for i in xrange(self.k):
            result = self.sketch[self.k - 1 - i].recover()
            if len(result) > 0:
                ind = random.choice(result.keys())
                return ind, result[ind]
        return 0, 0

    def sum(self, rhs):
        result = self.copy()
        result.sketch = [self.sketch[i].sum(rhs.sketch[i]) for i in xrange(rhs.k)]
        return result