基于规则的标注算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于规则的标注算法

背景

最大化标注(The Label-Number Maximization Problem)

Find a maximum subset of the features,and for each of these features a label from its set of candidates, such that no two labels overlap

在待标记对象集合中找到一个最大的子集,这些点标注位置没有任何重叠

困难性

它是个NP-hard。很难在线性时间内找到解。退而求其次,通常求得一个可接受的较优解即可。

一个特殊情况,在所有对象都可以标注下的情况,可以转化成2sat算法,能够快速求得解。但这个方法不太通用。

常用的算法

更具每次运算结果是否一致,分为确定性算法和非确定性算法

确定性算法(deterministic algorithms)

贪心算法(Greedy algorithm)

非确定性算法(Non-deterministic algorithms)

模拟退火算法(Simulated Annealing)

遗传算法(Genetic Algorithm)

贪心算法的效率较高,但效果不是特别理想。模拟退火算法和遗传算法的效果较好,但需要较多次运算。前期试验过模拟退火算法,效果不错,但性能不太理想。

新的算法

最近发现一个基于规则的启发式算法, 参考《Three Rules Suffice for Good Label Placement》。整体效果比退火算法差一点,当比贪心算法强不少,效率在可以接受范围。算法分成两个阶段。第一阶段采用三个规则,尽可能的标注。这一阶段保证是最优的标注。第二阶段采用启发式方法去除冲突。并使用三个规则进行标注。这个阶段并没办法保证结果最优,除非找到一个最优的冲突移除方法。

三个规则

规则1如果点p有一个候选标注位置pi.和其它标注位置没有任何冲突,则pi就是点p的标注位置,删去点9的其它候选标注位置:

有一个为候选位置空,就放在那里

规则2如果点p有一个候选标注位置pi,pi只和点q的某一个候选标注位置qk冲突,而点q有一个候选标注位置qj(j!=k)只和点p的某一个候选位置pl(l!=i)重叠,则pi和qj分别为点p和q的标注位置,删去点p和点q的其他候选标注位置。

P有一个候选位置和q一个候选位置冲突q有一个候选位置和p一个候选位置冲突

规则3如果点p只剩下一个候选标注位置pi,和pi重叠的候选标注位置形成了一个小集团(集团内的候选标注位置相互冲突),则pi为点p的标注位置,删去所有和pi冲突的候选标注位置。

P只剩下一个候选位置,就放在这里。消除和他有冲突的候选位置

这三个规则可以保证是最优解。证明可参考《Three Rules Suffice for Good Label Placement》伪代码实现

第一阶段对所有点使用规则1 2 3判断。(当满足规则后,邻居需要重新判断)

第二阶段启发式消除冲突算法无法保证最优

while 还有相交的候选位置Do

f = 最多候选位置的待标注对象

删除f中冲突最多的获选位置c

对和c有冲突邻居使用规则1 2 3判断end

实验

初始状态

第一阶段

4 满足规则1 然后3 满足规则1

5 和

6 满足规则2

7 满足规则3 然后8满足规则1

第二阶段

只考虑剩余部分

消除冲突消除候选位置最多,冲突最多的位置

规则1生效

消除冲突

三规则不起作用,接着消冲突

规则1生效

最终结果

效率

第一阶段每个对象都需要判断一次,生效后没个邻居都要判断一次时间在O(n+k)。n为对象数,k为冲突对数。

第二阶段和冲突对是线性关系。

权重问题

待标注对象有权重。

规则三附加条件p是集团中权值最高的

标注位置有权重,右边好于左边。

规则一附加条件pi是p中权值最高的位置

规则二附加条件p i 和q j是结果得分最大的对

消除冲突的原则就选权值最低的对象冲突最多的位置

Improving Mapnik with Label Placement Algorithms Three Rules Suffice for Good Label Placement

相关文档
最新文档