def laplace(self, b): self.histogram = LaplaceMechanism(self.histogram, b)
class Node: def __init__(self, start_id, size, parent_id, histogram, level = None): ''' @summary: Node Constructor @param start_id: Root结点为0 @param size: 项总数(包含&) @param parent_id: Root结点为-1 @param histogram: 对应可能孩子结点计数 @param level: 树层数, Root为1 ''' self.start_id = start_id self.histogram = histogram # 记录父结点 self.parent_id = parent_id self.childrens = np.array([None] * size) # 标记扰动计数为哪一种类型, 以决定 epsilon # True: 噪音计数 # False: 预测计数, epsilon 有节省(由于最初始由噪音计数计算得来, 满足E-DP) self.noised = bitarray([True] * size) # 标记是否已发布 - children # bitarray 用以初始化 0/1 self.released = bitarray([False] * size) self.size = size self.level = level self.left_level = None self.eps = None def laplace(self, b): self.histogram = LaplaceMechanism(self.histogram, b) def releaseAll(self): self.released = bitarray([True] * self.size) def hasReleasedItem(self): ''' @summary: 判断Item是否存在发布 ??? @return: True when any bit(存在) in "released" is True. @retype: boolean ''' return self.released.any() def areAllItemsReleased(self): ''' @summary: 判断是否完全发布 ??? @return: True when all bits in "released" are True. @rtype: boolean ''' return self.released.all() def __repr__(self): ''' @summary: 与反引号操作符(``)相同, 以字符串的方式获取对象的内容/类型/数值属性等信息 @note 区别内建函数str(), 得到的字符串可读性好(被print调用) - x.__repr__ <=> repr(x) - eval(repr(object)) == object @ Return: the canonical string representation of the object @rtype: str ''' return self.histogram.__repr__() def __len__(self): return len(self.histogram)
class Node: def __init__(self, start_id, size, parent_id, histogram, level=None): ''' @summary: Node Constructor @param start_id: Root结点为0 @param size: 项总数(包含&) @param parent_id: Root结点为-1 @param histogram: 对应可能孩子结点计数 @param level: 树层数, Root为1 ''' self.start_id = start_id self.histogram = histogram # 记录父结点 self.parent_id = parent_id self.childrens = np.array([None] * size) # 标记扰动计数为哪一种类型, 以决定 epsilon # True: 噪音计数 # False: 预测计数, epsilon 有节省(由于最初始由噪音计数计算得来, 满足E-DP) self.noised = bitarray([True] * size) # 标记是否已发布 - children # bitarray 用以初始化 0/1 self.released = bitarray([False] * size) self.size = size self.level = level self.left_level = None self.eps = None def laplace(self, b): self.histogram = LaplaceMechanism(self.histogram, b) def releaseAll(self): self.released = bitarray([True] * self.size) def hasReleasedItem(self): ''' @summary: 判断Item是否存在发布 ??? @return: True when any bit(存在) in "released" is True. @retype: boolean ''' return self.released.any() def areAllItemsReleased(self): ''' @summary: 判断是否完全发布 ??? @return: True when all bits in "released" are True. @rtype: boolean ''' return self.released.all() def __repr__(self): ''' @summary: 与反引号操作符(``)相同, 以字符串的方式获取对象的内容/类型/数值属性等信息 @note 区别内建函数str(), 得到的字符串可读性好(被print调用) - x.__repr__ <=> repr(x) - eval(repr(object)) == object @ Return: the canonical string representation of the object @rtype: str ''' return self.histogram.__repr__() def __len__(self): return len(self.histogram)