傅里叶-莫茨金消元法
简介¶
傅里叶 - 莫茨金消元法(原名 Fourier-Motzkin Elimination,简称 FME 算法)是一种用于从线性不等式中消除变量的数学方法。
它的命名源自于在 1827 年和 1936 年独立发现该算法的 Joseph Fourier 和 Theodore Motzkin 的姓氏。
消元步骤¶
从线性不等式中消除一组变量,是指通过将关系式中的若干个元素有限次地变换,消去其中的某些元素,从而解决问题的一种方法。
如果线性不等式中的所有变量都被消除,那么我们会得到一个常不等式。因为当且仅当原不等式有解时,消元后的不等式才为真,消除所有变量可用于检测不等式系统是否有解。
考虑一个含
- 形式为
x_{r}\geq b_{i}-\sum _{k=1}^{r-1}a_{ik}x_{k} 1 n_{A} n_{A} j x_{r}\geq A_{j}(x_{1},\dots ,x_{r-1}) - 形式为
x_{r}\leq b_{i}-\sum _{k=1}^{r-1}a_{ik}x_{k} 1 n_{B} n_{B} j x_{r}\leq B_{j}(x_{1},\dots ,x_{r-1}) - 不包含
x_{r} \phi
因此原系统等价于
消元包括产生一个等价于
不等式
等价于对于
因此,我们将原系统
例题¶
考虑以下不等式系统:
为了消除
这样我们得到两个
现在我们有了一个新的少了一个变量不等式系统。
时间复杂度¶
在
可以使用线性规划 (Linear Programming, LP) 检测不必要的约束。
应用¶
信息论的可实现性证明保证了存在性能良好的编码方案的条件。这些条件通常使用线性不等式系统描述。系统的变量包括传输速率和附加辅助速率。通常,人们旨在仅根据问题的参数(即传输速率)来描述通信的基本限制,因此述辅助率需要消除上。而我们正是通过傅立叶 - 莫茨金消元法来做到这一点的。
实现¶
在编程语言中,Racket,一种基于 Lisp 的多范式编程语言在 fme - Fourier-Motzkin Elimination for Integer Systems) 中对 FME 算法做了简单函数代数实现。
参考资料与拓展阅读¶
- [1]Rui-Juan Jing, Marc Moreno-Maza, Delaram Talaashrafi, "Complexity Estimates for Fourier-Motzkin Elimination", Journal of Functional Programming 16:2 (2006) pp 197-217.
- [2]Fourier–Motzkin elimination - Wikipedia
- [3]Fourier-Motzkin elimination and its dual
- [4]GE Liepins,Fourier-Motzkin elimination for mixed systems, 1983
build本页面最近更新:,更新历史
edit发现错误?想一起完善? 在 GitHub 上编辑此页!
people本页面贡献者:OI-wiki
copyright本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用