形式化规模最优排序网络:提取经过认证的证明检查器
1. 引言
排序网络是一种面向硬件的算法,用于使用预定的比较序列对固定数量的输入进行排序。它由一个基本运算符——比较器构建而成。比较器读取两个通道上的值,并在必要时交换它们,以确保较小的值始终位于预定通道上。独立值对之间的比较可以并行执行,主要有两个优化问题:一是对 n 个输入进行排序所需的比较器数量(最优规模问题);二是对 n 个输入进行排序所需的计算步骤数(最优深度问题),本文主要关注前者。
对于最优规模问题,不同输入数量的求解方法不同:
- 输入数量不超过 4 时,简单的信息论论证即可。
- 输入数量为 5 时,状态空间较小,可通过手动检查和对称论证来穷尽。
- 输入数量为 7 时,所有已知的最优性证明都使用计算机程序来消除近 $10^{20}$ 个长度为 15 的比较器序列搜索空间中的对称性,并证明不存在这种规模的排序网络。
- 输入数量为 9 时,经过 50 年才证明已知规模为 25 的排序网络是最优的。
- 输入数量为 6、8 和 10 时,通过理论论证获得最优性结果。
证明中使用了生成 - 剪枝算法来展示排序网络的规模最优性。该算法不仅证明了对 9 个输入进行 25 次比较的最优性,还直接确认了所有较小输入数量的情况。剪枝步骤包含一个昂贵的测试,用于判断两个比较器序列中的一个是否可以被忽略。此测试经常失败,且会以指数级的次数重复,每次调用在最坏情况下需要遍历 n 个元素的所有排列。
本文描述了最优规模排序网络理论的 Coq 形式化,并从中提取一个实现生成 - 剪枝的经过认证的检查器,以确认这些结果的有效性。为了获得可行的运行时间,在提取的经过认证的
超级会员免费看
订阅专栏 解锁全文

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



