根据条件列表为变量赋值的算法

问题描述 投票:0回答:1

我希望创建一个Python脚本,它将获取任意变量之间的任意关系列表,并为它们分配与给定的所有比较相匹配的整数,或者告诉您哪里存在一些不可能的逻辑(如果给定的话)。 例如,输入:

A > B > C >= D
D > E
C > E * 2

将返回

D=1, C=1, B=2, A=3, E=0
。 而 A > B > C > A 只会告诉您 A > B 和 B > A 不能同时为真。请注意,它应该能够识别那些不与其直接邻居相关的循环依赖类型。

这样一种用不那么琐碎的数据集来做到这一点的算法是否已经存在?我自己花了一段时间寻找一个算法,但找不到比听起来更接近我正在寻找的东西的算法有用但最终实际上并不相关。

python algorithm
1个回答
0
投票

这是一个带有约束的最小化的例子。 您想要最小化所有受约束的数字,例如

  • A>0
  • B>0
  • A-B>=1
  • ......

(答案是

A=1
B=0
)。

你的例子都是线性的,这使得这是一个更简单的“线性最小化”问题。您需要回顾您的问题并决定在最终情况下它是否会继续呈线性,如果不是,这将成为一个更困难的“非线性最小化”问题。

无论哪种方式,这些优化问题都有详细记录的算法,例如参见 scipy.optimize,其中包括线性和非线性约束。

© www.soinside.com 2019 - 2024. All rights reserved.