zoukankan      html  css  js  c++  java
  • 浅谈启发式合并

    浅谈启发式合并

    本篇随笔简单浅谈一下启发式合并。


    启发式合并的概念

    顾名思义,启发式合并解决的是合并类的问题。

    现在给一个最基本的合并问题。

    我们要把(N)个集合,总共(M)个元素合并成一个大集合。

    很容易得出,最坏的情况下需要合并(N)次,每次合并(M)个元素,也就是(O(MN))的时间复杂度。

    (一个集合有所有元素,然后傻呵的一直把这个最大的往空集里合并,合并了(N)次)

    然后我们想,这种合并策略山P就山P在把最大的往小的里合并。

    同样的问题,如果我们把小的往大的里合,是不是就快很多?

    看看这个思路,是不是很像拍脑门临时得出来的?

    是不是很受启发?

    好了,它就叫启发式合并。

    其思路是:每次把较小集合往较大集合里合并。

    其原理是,因为是较小集合往较大集合里合,于是较小集合的元素个数被扩充了至少一倍,也就是变成了原来的二倍多,这样的话,我们就能保证,最坏的合并次数是(O(log N))


    启发式合并的应用

    在刚刚讲过的概念中,我们可以得知启发式合并是对数据结构的一种合并,比如多棵树、集合、线性数据结构等等。

    当然我们最常见的还是并查集的启发式合并优化。

    在此不过多赘述,具体的应用请读者通过具体题目自行体会。

  • 相关阅读:
    图形验证码---pillow
    vue富文本编辑器vue-quill-editor
    django邮件发送
    Django REST Framework JWT
    jwt验证
    使用django的用户表进行登录管理
    [转]CSRF漏洞详细说明
    Django框架10
    Django框架09
    Django框架08
  • 原文地址:https://www.cnblogs.com/fusiwei/p/13653748.html
Copyright © 2011-2022 走看看