您将获得以下公式:
formula(1,[d,g],h)
formula(2,[f,h],i)
formula(3,[a,d],f)
formula(4,[b,c],a)
找到公式列表L,以找到给定c,b,d的f。
一些解释:
每个公式都有一个索引作为括号中的第一项。
方括号中的值表示您需要知道的值才能获得括号中的最后一项。
此特定问题的解决方案是:L = [4,3]
开头的值是:c,b,d
应用公式4(需要[b,c]并同时拥有它们)之后,您将得到:c,b,d,a(因为a是公式4的“输出”)
然后,对公式3重复相同的操作,并得到值f作为输出,即可解决问题。
让我画一个简单的图更好地解释这种情况:
- / | c, b, d
- 4 | c, b, d, a
- 3 | c, b, d, a, f
因此L = [4,3]
在右侧,您可以看到应用每个公式后知道的值,而在左侧,则有我们使用过的公式。
我正在尝试为python中的此类问题编写一个求解器,但这出来的任务相当艰巨,所以... StackOverflow我选择了您!
请不要与我联系以获取更多信息。
答案 0 :(得分:1)
那是DAG!您的公式描述了依赖关系。例如,公式(3,[a,d],f)表示f取决于a&d。转换为a -> f
和d -> f
。其他公式也是该图的一部分。
在图(b,c,d)中为您提供了一些已知的源节点。还有一个目标节点(f)。
您需要做的是从任何已知节点中进行图搜索,直到到达目标节点为止。您可以通过深度优先搜索,宽度优先搜索等来执行此操作。请参见:https://www.redblobgames.com/pathfinding/grids/graphs.html