拉格朗日分解、元启发式算法与混合方法在文档重建中的应用
1. 引言
在法医学和调查科学领域,常常需要重建被破坏纸质文档上隐藏的信息。通常,纸张会被撕毁,或者更专业地使用适当的粉碎设备,将其粉碎成细条、小矩形或六边形等几何形状。本文聚焦于条带粉碎文本文件的重建(RSSTD)。
人工重建原始文档以恢复丢失信息的过程,会因碎片的形状、大小和数量而变得非常耗时,甚至几乎无法完成。因此,自动重建过程是理想的选择。自动重建方法首先需要使用高端扫描仪扫描碎片来获取条带,然后应用模式识别和图像处理任务,识别扫描条带的边界框和方向,并收集背景/纸张颜色、文本颜色等有用特征信息。接着,利用这些属性对可能属于同一原始文档页面的条带进行聚类。然而,这种系统存在两个缺点:一是聚类后无法直接得知条带如何拼接成原始页面;二是若许多具有相同或相似特征的页面被粉碎,聚类方法只能略微缩小问题规模,甚至可能失效,如表格、表单等规则结构的文档。
2. 相关研究工作
虽然RSSTD不仅对情报机构和法医学有重要意义,也受到不同科学界的关注,但专门针对该主题的研究并不多。
- 拼图自动求解 :与RSSTD相关但又有很大不同。拼图的每个碎片形状大多独特,在重建过程中可以很好地利用其几何信息,并且拼图碎片上的图像和颜色信息也能被有效利用。
-
手动撕裂纸张文档的重建
:
- Justino等人提取碎片边缘特征,通过迭代匹配特征将碎片拼接在一起,但该方法仅适用于单页最多15个碎片的小实例。
- Schüller提出使用整数线性规划方法精确重建手动撕裂的文档,该技术仅依赖从碎片中提取的几何信息,专注于待重建页面的边界,但同样局限于小实例。
- De Smet尝试利用回收碎片堆叠中的相对顺序信息,但该方法仅适用于无缺失碎片且碎片顺序完美的情况,未说明如何适应非理想情况。
-
条带粉碎文档的重建
:
- Skeoch专注于条带粉碎文档的重建,主要讨论扫描过程和纸张条带的相关属性,并提出了一种遗传算法,包括交叉和变异算子以及生成初始解的启发式方法,不过该方法更适用于图像重建,因为图像有大量不同颜色和柔和的颜色过渡。
- Ukovich等人尝试使用MPEG - 7描述符对属于同一张纸的条带进行聚类,并引入了背景和文本颜色、行间距和行数等特征,讨论了聚类方法的潜力。
- Morandell将RSSTD表述为与旅行商问题(TSP)相关的组合优化问题,并提出了使用元启发式算法(如变邻域搜索、迭代局部搜索和模拟退火)解决该问题的基本思路,其结果为本文的研究提供了动力。
3. 问题的形式化定义
将RSSTD定义为一个组合优化问题。给定一个由n个矩形且大小几乎相等的纸条组成的有限集合S,这些纸条是由一张或多张纸粉碎而成。在本文中,不考虑纸条的宽度,假设所有纸条的高度相同。若高度不同,可使用聚类方法进行预处理,将高度相同的纸条集合作为输入。
由于大多数文档(尤其是办公室中使用碎纸机处理的文档)背面是空白的,为简化模型,仅考虑扫描纸条的正面,但该模型可直接扩展以处理双面文档。同时,忽略输入实例中所有无有用信息的纸条,即完全空白的纸条以及边框空白但内部非空的纸条。这样做有两个好处:一是消除了空白纸条任意交换带来的对称性;二是显著缩小了搜索空间。
RSSTD的解x = ⟨π, o⟩由集合S中元素的排列π : S →{1, …, n}和向量o = ⟨o1, …, on⟩∈{up, down}n组成,其中os表示纸条s的方向:
[
o_s =
\begin{cases}
\text{up} & \text{如果纸条s以原始方向放置}\
\text{down} & \text{如果纸条s旋转180°}
\end{cases}
]
使用成本函数c(s, s′, os, os′) ≥ 0来近似衡量两个纸条s和s′在原始文档中并排且按os和os′方向排列的可能性。值为0表示接触边界完全匹配,值越大表示边界差异越大。总体目标是找到一个解(排列和相应的方向向量),使以下总成本最小化:
[
obj(x) = obj_l + \sum_{i = 1}^{n - 1} c(\pi_i, \pi_{i + 1}, o_i, o_{i + 1}) + obj_r
]
其中:
[
obj_l = c(\beta, \pi_1, o_{\beta}, o_1)
]
[
obj_r = c(\pi_n, \beta, o_n, o_{\beta})
]
β是一个额外的人工空白纸条,插入到待重建页面的开头和结尾。由于大多数情况下原始纸张的左右边缘是空白的,插入β可以避免出现正确解的第一个和最后一个纸条并排的情况。因为β是空白的,其方向oβ不产生影响。
成本函数c(s, s′, os, os′)的定义是解决RSSTD的关键部分,它需要具有斜对称性质,即纸条s′放在纸条s右侧的成本与将两个纸条旋转180°后纸条s放在纸条s′右侧的成本相同。
在考虑解决RSSTD的方法之前,证明了RSSTD是NP难问题。任何对称旅行商问题(TSP)实例都可以通过为每个城市引入一个纸条,并根据TSP的距离定义成本函数c(s, s′, os, os′)(忽略方向)转换为RSSTD实例。选择任意一个城市作为RSSTD的人工空白纸条β,对应左右边缘。这样得到的RSSTD实例的最优解显然对应于原始TSP的最优解。
4. 转化为旅行商问题
为了通过TSP算法找到RSSTD的解,将RSSTD转化为TSP。首先将RSSTD表示为非对称广义旅行商问题(AGTSP),然后再将AGTSP转化为TSP。
4.1 表述为非对称广义旅行商问题
在非对称广义旅行商问题(AGTSP)中,给定一个有向图G = (V, A),其中V是节点集,A是弧集,并且V被划分为m个不相交的非空簇Ci(i = 1, …, m)。每条弧a ∈ A都有一个正权重wa。AGTSP的可行解是一个包含在A中的回路T,它访问每个簇Ci中的恰好一个节点,同时最小化回路中所有弧的权重之和。
将RSSTD表述为AGTSP的步骤如下:
1. 为每个纸条s ∈ S引入一个簇Cs,该簇由两个顶点vU_s和vD_s组成,分别代表纸条s的两种可能方向。
2. 为虚拟空白纸条β引入一个簇Cβ,并在该簇中插入一个顶点vβ。由于β是空白的,不需要方向信息。
3. 每对纸条(s, s′)会产生八条弧,代表它们之间的可能排列方式。例如,弧(vD_s, vU_s′)表示纸条s′放在纸条s右侧,此时纸条s旋转180°,纸条s′正立放置。
以下是该转化过程的mermaid流程图:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([开始]):::startend --> B(引入簇Cs):::process
B --> C(引入簇Cβ):::process
C --> D(生成弧):::process
D --> E([结束]):::startend
通过这些步骤,将RSSTD问题转化为了AGTSP问题,为后续使用TSP算法求解奠定了基础。这种转化方式利用了TSP领域已有的成熟算法和技术,有望为RSSTD问题提供更高效的解决方案。同时,将RSSTD问题形式化和转化的过程,也有助于更深入地理解问题的本质和复杂度,为进一步的研究和优化提供了理论支持。
拉格朗日分解、元启发式算法与混合方法在文档重建中的应用
5. 成本函数的定义
成本函数 (c(s, s’, o_s, o_{s’})) 在解决 RSSTD 问题中起着至关重要的作用,它需要准确衡量两个纸条在原始文档中相邻且按特定方向排列的可能性。以下是一些可能的定义方式及其特点:
| 成本函数定义方式 | 描述 | 优点 | 缺点 |
|---|---|---|---|
| 基于颜色匹配 | 计算两个纸条相邻边界的颜色差异,差异越小,成本越低 | 直观易懂,实现简单 | 对于颜色相似但内容不同的情况可能不准确 |
| 基于文本特征匹配 | 分析相邻边界的文本特征,如字符、单词的连续性等 | 能更好地反映文本内容的连贯性 | 对文本识别的准确性要求高,计算复杂度可能较大 |
| 混合特征匹配 | 综合考虑颜色、文本特征等多种因素 | 结合了多种方法的优点,提高准确性 | 实现复杂,需要调整多个参数 |
6. 解决方案
为了解决 RSSTD 问题,提出了两种主要的解决方案,同时还引入了半自动化系统以提高实际应用效果。
6.1 转化为 TSP 求解
将 RSSTD 转化为 TSP 后,可以使用现有的 TSP 算法进行求解,如链式 Lin - Kernighan 启发式算法。具体步骤如下:
1.
问题转化
:按照第 4 节的方法将 RSSTD 转化为 AGTSP,再转化为 TSP。
2.
选择 TSP 算法
:选择合适的 TSP 算法,如链式 Lin - Kernighan 启发式算法。
3.
求解 TSP
:使用选定的算法求解转化后的 TSP 问题。
4.
还原解
:将 TSP 的解还原为 RSSTD 的解,即得到纸条的排列和方向。
6.2 变邻域搜索(VNS)方法
提出了一种特定的变邻域搜索方法,其步骤如下:
1.
初始化
:随机生成一个初始解。
2.
邻域结构定义
:定义多种邻域结构,如交换两个纸条的位置、改变纸条的方向等。
3.
搜索过程
:在当前解的邻域中搜索更优解,如果找到更优解,则更新当前解;否则,切换到下一个邻域结构继续搜索。
4.
终止条件
:达到预设的迭代次数或满足其他终止条件时,停止搜索。
以下是变邻域搜索方法的 mermaid 流程图:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([开始]):::startend --> B(初始化解):::process
B --> C(定义邻域结构):::process
C --> D(搜索邻域):::process
D --> E{找到更优解?}:::process
E -- 是 --> F(更新解):::process
F --> G{满足终止条件?}:::process
E -- 否 --> H(切换邻域结构):::process
H --> D
F --> G
G -- 否 --> D
G -- 是 --> I([结束]):::startend
6.3 半自动化系统
由于上述两种方法的目标函数存在一定的不完美性,导致实际应用存在限制,因此引入了半自动化系统。该系统在优化过程中集成了用户交互,具体步骤如下:
1.
初始求解
:使用上述两种方法之一得到一个初始解。
2.
用户交互
:将初始解展示给用户,用户可以根据自己的经验和判断对解进行调整。
3.
再次优化
:将用户调整后的解作为新的初始解,再次使用上述方法进行优化。
4.
重复步骤 2 和 3
:直到得到满意的结果。
7. 结果分析
通过实际测试,上述两种方法(转化为 TSP 求解和变邻域搜索方法)都能优于文献中的现有算法。然而,由于目标函数的不完美性,它们在实际应用中仍存在一定的局限性。
半自动化系统的实际效果非常出色,对于困难的实例,只需少量的用户交互就能快速解决。这表明该系统有效地结合了机器的计算能力和人类的经验、知识和直觉,为 RSSTD 问题提供了一种高效的解决方案。
8. 总结与展望
本文针对条带粉碎文本文件的重建(RSSTD)问题,提出了两种解决方案:将其转化为 TSP 求解和使用变邻域搜索方法。这两种方法在一定程度上优于现有算法,但由于目标函数的不完美性,存在实际应用的限制。
为了克服这些限制,引入了半自动化系统,该系统集成了用户交互,在实际应用中取得了优异的效果。未来,可以进一步研究更准确的目标函数,以提高算法的性能。同时,可以扩大测试实例的规模,验证算法在更复杂情况下的有效性。还可以考虑将更多的人工智能技术引入到重建过程中,如深度学习方法,以提高重建的准确性和效率。
超级会员免费看
3039

被折叠的 条评论
为什么被折叠?



