当前位置: 首页 > wzjs >正文

郑州建设工程交易中心网站微信广告平台

郑州建设工程交易中心网站,微信广告平台,网站建设怎么翻译,惠州模板网站建设在空间复杂度中的 O(m) 和 O(n) 是算法复杂度分析中的符号,用来描述数据结构或算法在不同输入规模下对内存的消耗趋势。以下是它们的详细解释: 1. O 符号的含义 O(大O符号) 是算法复杂度分析中的符号,表示渐进上界&…

在空间复杂度中的 O(m) 和 O(n) 是算法复杂度分析中的符号,用来描述数据结构或算法在不同输入规模下对内存的消耗趋势。以下是它们的详细解释:


1. O 符号的含义

  • O(大O符号) 是算法复杂度分析中的符号,表示渐进上界,即描述算法或数据结构的资源消耗(时间或空间)随输入规模增长的趋势

  • 例如:

    • O(n) 表示资源消耗与输入规模 n 成线性关系。

    • O(1) 表示资源消耗是常量,与输入规模无关。

    • O(m) 表示资源消耗与参数 m 的规模直接相关。


2. m 和 n 的具体含义

在不同的数据结构中,m 和 n 代表不同的输入参数:

布隆过滤器(Bloom Filter)的 O(m)
  • m:布隆过滤器中位数组的长度(即二进制位的数量)。

    • 例如,若位数组长度为 1000,则 m = 1000

    • 空间复杂度为 O(m),表示内存占用与位数组长度成正比。

HashSet 的 O(n)
  • n:集合中实际存储的元素数量

    • 例如,若集合中有 100 个元素,则 n = 100

    • 空间复杂度为 O(n),表示内存占用与元素数量成正比。


3. 为什么布隆过滤器的空间复杂度是 O(m)

  • 数据结构:布隆过滤器使用一个二进制位数组(Bit Array)来存储信息。

  • 内存占用

    • 每个元素通过哈希函数映射到位数组的 k 个位置,并将这些位置置为 1。

    • 总内存消耗仅取决于位数组长度 m(与哈希函数数量和元素数量无关)。

    • 例如:

      • m = 1000 → 需要 1000 个二进制位(约 125 字节)。

      • m = 1,000,000 → 需要 1,000,000 个二进制位(约 125 KB)。

示例对比
数据结构存储 100 万个元素空间复杂度
布隆过滤器约 1 MB(假设 m=8,000,000)O(m)
HashSet约 40 MB(存储对象引用)O(n)

4. 为什么 HashSet 的空间复杂度是 O(n)

  • 数据结构:HashSet 内部通常使用哈希表(Hash Table)实现,存储每个元素的引用。

  • 内存占用

    • 每个元素需要存储其实际内容(如对象地址或值)。

    • 总内存消耗与元素数量 n 成正比

    • 例如:

      • 存储 100 个字符串,每个字符串占用 20 字节 → 总内存为 100 × 20 = 2000 字节。


5. m 和 n 的关系

在布隆过滤器中,m 和 n 的取值会影响误判率:

  • 数学关系

    复制

    m = - (n × ln p) / (ln 2)^2
    • n:预期存储的元素数量。

    • p:允许的误判率(例如 1%)。

    • m:根据 n 和 p 计算出的最优位数组长度。

示例
  • 若需存储 n = 1,000,000 个元素,允许误判率 p = 1%

    复制

    m ≈ - (1e6 × ln 0.01) / (ln 2)^2 ≈ 9,585,059 bits ≈ 1.14 MB

6. 总结

符号含义数据结构示例场景
O算法复杂度的渐进上界通用描述时间或空间增长趋势
m布隆过滤器的位数组长度布隆过滤器m=1,000,000 bits
n集合中实际存储的元素数量HashSet/数据库n=100,000 个元素
  • 布隆过滤器:用极小的 O(m) 空间换取高效的查询(允许一定误判)。

  • HashSet:用较大的 O(n) 空间保证精确查询(无误判)。


7. Java 代码中的 m 和 n

以下代码片段展示了布隆过滤器中 m 和 n 的实际应用:

java

复制

public class BloomFilter<T> {private final BitSet bitSet;  // 位数组,长度 mprivate final int size;        // m 的值private final ToIntFunction<T>[] hashFunctions;public BloomFilter(int size, ToIntFunction<T>... hashFunctions) {this.size = size;         // 初始化 mthis.bitSet = new BitSet(size);this.hashFunctions = hashFunctions;}public void add(T item) { /* 向位数组中插入元素 */ }public boolean mightContain(T item) { /* 检查元素是否存在 */ }
}
  • size 对应布隆过滤器的 m(位数组长度)。

  • 实际插入的元素数量对应 n(例如插入 1000 个元素时,n = 1000)。


通过合理选择 m 和哈希函数数量,布隆过滤器可以在极小的内存占用下(如 1MB)处理海量数据(如 100 万元素),而传统哈希表可能需要数百 MB 内存。

http://www.dtcms.com/wzjs/509261.html

相关文章:

  • java电子商务网站建设小程序流量点击推广平台
  • 神华集团两学一做网站谷歌推广哪家好
  • jsp开发网站西安seo专员
  • 温州网站制作建设免费的api接口网站
  • 公司网站建设需要哪些内容游戏推广可以做吗
  • 购物网站开发技术做外贸网站的公司
  • wordpress 自动安装广州四楚seo顾问
  • 国外服务器有哪些新手seo要学多久
  • 网站标题前的小图标怎么做seo教程排名第一
  • 做教育培训网站泰安网站优化公司
  • 做网站需要学些什么软件网络推广是做什么的
  • 做铝材什么什么网站好江苏seo团队
  • 做虾苗网站有哪些流程中国体育新闻
  • 郑州网站制作怎么样网站查询网
  • 电子商务网站建设和管理的意义kol推广是什么意思
  • 电子商务课程视频咖啡seo是什么意思
  • 武汉企业网站推广外包优化大师免费下载
  • 如何看一个网站的好坏百度站长之家
  • 网站基础建设一般多少钱12345浏览器
  • 网站建设网站管理哪个搜索引擎最好用
  • 网站建设公司业务培训专注网络营销推广公司
  • 杭州网站建设是什么武汉大学人民医院怎么样
  • 网站运营与管理实训报告网站推广的途径有哪些
  • 做外链的网站如何开发微信小程序
  • 加速wordpress插件承德seo
  • 武汉傅友建设集团网站如何投放网络广告
  • 公司网站建设属于什么费用成都seo优化推广
  • 河北网站制作公司哪家专业上海seo推广整站
  • 企业网站托管外包方案公司企业网站制作需要多少钱
  • 企事业网站建设广州市网络seo外包