Algorithm 是否有通过顺序应用已知因果元组实现目标的既定算法?

Algorithm 是否有通过顺序应用已知因果元组实现目标的既定算法?,algorithm,simulation,Algorithm,Simulation,假设我想创建一个名为g的虚构产品 我知道: a+b=c x+y=z and finally that c+z=g 很明显,如果我从产品开始 a,b,x,y 我可以通过三个步骤创建g: a+b=c x+y=z c+z=g 因此,实现目标的简单算法可能是: 对于实现目标所需的每个组件(这里是c和z),递归地查找可以创建该组件的因果元组 但这种算法也有缺陷 例如,假设我的因果元组是: a+b=c x+y+c=z (NOTE THE EXTRA 'c' REQUIRED!!) c+z=g 现在,

假设我想创建一个名为
g
的虚构产品

我知道:

a+b=c
x+y=z
and finally that
c+z=g
很明显,如果我从产品开始

a,b,x,y
我可以通过三个步骤创建
g

a+b=c
x+y=z
c+z=g
因此,实现目标的简单算法可能是:

对于实现目标所需的每个组件(这里是
c
z
),递归地查找可以创建该组件的因果元组

但这种算法也有缺陷

例如,假设我的因果元组是:

a+b=c
x+y+c=z (NOTE THE EXTRA 'c' REQUIRED!!)
c+z=g
现在,当我运行我的朴素算法时,我会这样做

a+b=c
x+y+c=z (Using up the 'c' I created in the previous step)
c+z=g (Uh oh! I can't do this because I don't have the 'c' any more)
这似乎是一个相当基本的研究领域——我们如何结合已知的原因和影响来达到一个目标——所以我怀疑这方面的工作一定已经完成了,但我环顾四周,什么也找不到,我真的不知道现在该去哪里找


非常感谢您的帮助

假设使用一种产品会消耗其中一种产品,然后可以通过生产该产品的第二种产品来替代,我将通过给每种产品一个成本并找出如何将最终产品的成本降至最低来对此进行建模。在这种情况下,我认为这与最小化每种产品的成本是一样的,因为最小化投入的成本不会增加任何产出的成本。你最终得到了大量的方程,比如

a=最小值(b+c、d+e、f+g)

式中,a是可以以替代方式生产的产品的成本,一种方式消耗单位的成本为b和c,另一种方式消耗单位的成本为d和e,另一种方式消耗单位的成本为f和g,依此类推。关联图中可能存在循环

解决这一问题的一种方法是,首先将成本无限分配给所有最初未作为投入(有成本)提供的产品,然后反复降低成本,其中方程式显示了一种计算成本小于当前成本的方法,跟踪因未考虑投入或成本降低而导致的重新计算。在每一个阶段,我都会考虑最小的投入或重新计算的价值的结果,而第二个组成部分破坏了联系,这就等于生产税。计算产生的输出总是至少与任何输入一样大,因此新产生的值总是大于考虑的重新计算值,并且在每个阶段考虑的重新计算值从不减少,这应该减少重复的重新计算

另一种方法是将其转化为线性规划,并将其投入到高度优化的保证多项式时间(至少在实践中)线性规划求解器中

a=最小值(b+c、d+e、f+g)

变成

a=b+c-x

a=d+e-y

a=f+g-z

x>=0

y>=0

z>=0


最小化和(x+y+z+…)

期望的维度是多少(您期望有多少个产品?)如果这个数字非常小,递归(和动态规划)解决方案可以很好地解决这个问题。是你追求的基础。一种能支持这种信息系统的程序设计语言。你还应该看看和。关于
大脑是如何运转的
,那么你正在从a步入a。任何一种方式都足以让你进入你所追求的领域。你能详细说明你所说的效果、原因和步骤吗?它是否像实现“g”所需的“c”和“z”先决条件?我认为可以将它们表示为有向未加权图。因此,A->C,B->C,X->Z,Y->Z,C->Z,C->G,Z->G。然后您可以从G开始执行,以找到正确的依赖顺序。您必须调整它以使其支持此“have go”逻辑,因此您可能必须确保没有节点被两条边重用。谢谢您的回答!这对我来说相当先进,我不熟悉线性规划的求解器,但它给了我一些很好的方向,我将在深入研究时回到它。我想,至少在实践中,我在提到线性规划之前描述的那种更新方法将在可接受的时间内解决这个问题。我认为,当方程中的所有系数都>=1时,情况就是这样,如上所述。我提到线性规划主要是为了在数学上证明,这种看待成本的方法会导致一个可处理的问题,同时仍然希望线性规划的全面通用性是不必要的。