• 浅谈启发式合并


    浅谈启发式合并

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


    启发式合并的概念

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

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

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

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

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

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

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

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

    是不是很受启发?

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

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

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


    启发式合并的应用

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

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

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

  • 相关阅读:
    一次函数(好难的一次函数)
    脱水缩合(大搜索)
    背单词
    仙人掌(cactus)
    LYK 快跑!(LYK别打我-)(话说LYK是谁)
    巧克力棒
    选数字(贪心+枚举)
    看程序写结果(program)
    np问题
    IUYYLIUIU
  • 原文地址:https://www.cnblogs.com/fusiwei/p/13653748.html
Copyright © 2020-2023  润新知