C++ 中的计数-最小草图2025 年 5 月 15 日 | 阅读 3 分钟 引言Count-Min Sketch 是一种概率数据结构,用于在大数据流中进行近似计数查询。它在有限的内存空间下高效地估计数据流中元素的频率。 本质上,Count-Min Sketch 由一个二维计数器数组组成。哈希函数用于将流中的元素映射到此数组中的位置。通常使用多个哈希函数,每个哈希函数确定数组中的不同列。当一个元素到达流中时,它在每一行中对应的计数器都会递增。 Count-Min Sketch 背后的主要思想是,通过使用多个哈希函数并为每个元素维护多个计数器,冲突是不可避免的,但对于任何给定元素,所有计数器中的最小值往往能很好地近似其真实频率。通过调整数组的宽度和深度,用户可以控制准确性和内存使用之间的权衡。 程序输出 Count of item 42: 7 Count of item 55: 3 说明 Count-Min Sketch 类:代码定义了一个名为 CountMinSketch 的 C++ 类。该类表示 Count-Min Sketch 数据结构。
宽度和深度:这些变量代表 Count-Min Sketch 的宽度和深度,控制其内存使用和准确性。 计数:这是一个二维向量,表示 sketch 中的计数器数组。 哈希函数:此向量包含 `std::hash
构造函数初始化宽度、深度和计数数组。 它还用深度数量的哈希函数填充 hash_functions 向量。
更新方法将一个项目及其计数作为输入。 它使用每个哈希函数对项目进行哈希,并更新计数数组中相应的计数器。
查询方法将一个项目作为输入,并返回其计数的估计值。 它使用每个哈希函数对项目进行哈希,并检索所有哈希函数中的最小计数。
在 main 函数内部,使用指定的宽度和深度创建 CountMinSketch 实例。 sketch 使用项目 42 和 55 的计数进行更新。 调用查询方法来估计这些项目的计数,并打印结果。 复杂度分析时间复杂度 更新操作 使用项目计数更新 sketch 的时间复杂度为 O(d),其中 ? d 是 sketch 的深度。 这是因为,对于每个哈希函数(其中有 d 个),更新涉及恒定时间操作以递增相应的计数器。 查询操作 查询 sketch 中项目计数的时间复杂度也为 O(d)。 类似于更新操作,对于每个哈希函数,查询涉及访问相应的计数器并找到最小值。 空间复杂度 Count-Min Sketch 的空间复杂度由其数据结构的大小决定,其中包括
|
数学中最著名的方面之一,可能仅次于自然数,可能在密码学、数论和计算数学等学科中有如此多的应用。在特殊素数族列表和关系中,Wagstaff 素数占有一席之地……
7 分钟阅读
在本文中,我们将讨论 Golomb 序列的应用和示例。什么是 Golomb 序列?Golomb 序列是一个非递减整数序列,其中序列中第 n 个位置的整数是整数 n 在该序列中出现的次数……
5 分钟阅读
引言 当数学家或程序员关心时,他们经常发现数字具有令人愉悦的特性。圣埃克苏佩里数(Saint-Exupéry Numbers)就是一个这样的数字类别,以《小王子》作者安托万·德·圣埃克苏佩里(Antoine de Saint-Exupéry)的奇思妙想和深刻想象力而致敬……
阅读9分钟
标准模板库 (STL) 是现代 C++ 软件开发的核心部分,它提供了一套强大、有用、通用的数据结构来简化开发。在各种 STL 容器中,std::deque(双端队列的缩写)是一种特别高效且...
18 分钟阅读
引言“星形数”是指一种形数,它表示一个中心化的六角星,一个六角星。这些数字属于更广泛的数字类别,它们在视觉上形成几何图案。第 n 个星形数可以使用特定公式计算,并且...
阅读9分钟
基于时间的键值存储提供了一种数据结构,使用户能够存储键值对以及时间戳信息。该设计使用户能够获取在特定时间点记录的键值,适用于缓存、版本控制系统和事件日志记录等应用……
阅读 4 分钟
在本文中,我们将讨论如何在 C++ 中检查给定的摩尔斯电码是否有效。但在讨论其实现之前,我们必须了解摩尔斯电码。什么是摩尔斯电码?摩尔斯电码是一种传输文本信息的方法。它以...的形式出现。
阅读 4 分钟
为了弄清楚标准输入(std::cin)的输入操作是否失败,请使用 C++ 函数 std::cin.fail()。它通常用于在输入操作执行后确定其是否成功。(std::ios::failbit, std::ios::badbit, std::ios::eofbit)输入状态标志:...
阅读 3 分钟
C++ 数据类型定义 C++ 中的数据类型对变量可以存储的不同信息种类进行分类。不同的数据类型具有不同的属性,例如它们可以保存的值范围以及它们可以执行的操作。整数 (int)、字符 (char)、浮点数......
阅读9分钟
在本例中,我们将讨论一个问题。问题陈述:假设我们有一个 n × n 的字符网格,其中包含星号 (*) 和点 (.)。除两个单元格外,所有单元格都用点表示。我们需要将另外两个单元格标记为角点以创建...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India