序列摊还分析与不相交结构启发式策略

摊还分析

摊还分析给出了连续n个操作的平均时间上限,结合问题特性,而不是简单n*最坏情形

  1. 聚合分析——T(n)/n,not worst T(1)
  2. 核算法——每次操作的给一个摊还代价\(\overline{ci}\),减去操作实际代价ci,存入信用\(\overline{ci}\)-ci,保证\(\sum_{1}^{n}(\overline{ci}-ci)\geq0\)
  3. 势能法——给过程中的数据结构赋予势能\(f(Di)\geq f(D_0)\),\(\sum_{1}^{n}\overline{ci}=\sum_{0}^{n}{ci}+f(D_i)-f(D_{i-1})=\sum_{1}^{n}ci+f(D_n)-f(D_0)\)

上述方法用在内存中动态表的扩张与收缩,插删代价为O(1),插入的代价为3
如何理解核算法中扩张时分配摊还代价3?
设已有a[1..m/2],插入a[m/2+i](i \(\in\)[1,m/2]),当前插入-1,为a[m/2+i]和a[i]在下一次扩张插入新表分别存入1个信用

启发式策略(heuristic)

是一类在求解某个具体问题时,在可以接受的时间和空间内能给出其可行解,但又不保证求得最优解(以及可行解与最优解的偏离)的策略的总称。许多启发式算法是相当特殊的,依赖于某个特定问题。启发式策略在一个寻求最优解的过程中能够根据个体或者全局的经验来改变其搜索路径,当寻求问题的最优解变得不可能或者很难完成时(e.g. NP-Complete 问题),启发式策略就是一个高效的获得可行解的办法。这是一类“problem specific”的策略

启发式算法(Heuristic Algorigthm)是一种基于直观或经验构造的算法,在可接受的花费(指计算时间、计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与最优解的偏离程度一般不可以事先预计。
启发式算法是一种技术,这种算法可以在可接受的计算费用内找到最好的解,但不一定能保证所得到解的可行性及最优性,甚至大多数情况下无法阐述所得解与最优解之间的近似程度。

元启发式策略(metaheuristic)

元启发式策略通常是一个通用的启发式策略,他们通常不借助于某种问题的特有条件,从而能够运用于更广泛的方面。元启发式策略通常会对搜索过程提出一些要求,然后按照这些要求实现的启发式算法便被称为元启发式算法。许多元启发式算法都从自然界的一些随机现象取得灵感(e.g. 模拟退火、遗传算法)。现在元启发式算法的重要研究方向在于防止搜索过早得陷入局部最优,已经有很多人做了相应的工作,例如禁忌搜索(tabu)和非改进转移(模拟退火)。这是一类“problem independent”的策略

元启发式算法(MetaHeuristic Algorigthm)是启发式算法的改进,它是随机算法与局部搜索算法相结合的产物,常见的启发式算法包括遗传算法、模拟退火算法、禁忌搜索算法及神经网络算法等。
新兴的元启发式算法有、粒子群优化算法、差分进化算法,蚁群优化算法、萤火虫算法、布谷鸟算法、和声搜索算法、差分进化算法、随机蛙跳算法、细菌觅食算法、蝙蝠算法的算法等

不相交结构

  • 集合:Make-set=O(1),UNION=O(n),FIND_SET=O(1)

链表

  • 较短的链表元素根节点指向较长链表根节点,MAKE-SETO(1),UNION=O(n^2),FIND_SET=O(1)
  • 加权合并启发式策略:长度为1合并,2合并,...,UNION=O(nlgn+m)

  • 两种启发式策略:合并时按秩,FIND-SET用路径压缩
  • MAKE-SET=O(1),UNION=O(1)(when x.rank<y.rank,x.p=y.p),

树的FIND-SET=O(m+f*\(log_{2+f/n}n\))

最近点对~组合几何

想法:输入集合P,按x坐标分成中线l\(\lceil |P|/2 \rceil\)的集合Pl,Pr
设递归得到的min{ans(pl),ans(pr)}=a,
假设ans(p)!=a,则一定有跨越中线的长度<a的点对,这些点对属于[xl-a,xl+a]区域
不妨x1\(\in\)Pl,且存在x2\(\in\)Pr使得x1x2<a,则x2出现在x\(\in\)[xl-a,xl+a],y\(\in\)[$y_x1,y_x1+a],
分析得这样的点至多7个,
所以对至多只要考虑[xl-a,xl+a]区域的7*n个顶点,T(n)=2T(2/n)+O(7n),解得T(n)=O(nlgn)

posted @ 2022-10-02 15:10  clfire  阅读(32)  评论(0编辑  收藏  举报