通过有向图计算和识别“理想的”路线

时间:2013-02-20 16:25:18

标签: graph-theory

原谅这个含糊不清的标题,自从我完成了与这个领域相关的任何数学课程已经有几年了,我的术语相当缺乏(我问这个问题的部分原因)。我确信有一个定义良好的算法/理论已经处理了我想要达到的目标,但是我无法确定这些词来找到它。

我会尝试描述我正在建模的情况:

鉴于一组项目[a,b,c,d,e,f],一个人可能会提供交易某些项目,例如我可以用“a”代替“b”,你可能会为“e”提供“2xc”。我可以挖掘所有这些交易并创建一个图表,概述所提供的选项。我有兴趣寻找特定的贸易路径,作为一个旁边的贸易路径,这将给我多余的项目 - 我认为这种事情必须已经存在于金融部门(再次,我错过了名称/经验数学)。

所以,如果我有“a”并想要“f”,我有以下路径:

a -> b, b -> f, c -> b, a-> 2(c), b -> a

我最终会

a -> b -> f

a -> (2)c -> b -> f    
      |
      c             (An additional c)

有些地方我可以反复循环,所以如果我使用b - >在上面的关系中,由于剩余的c项,我可以不断提取c。

我有理由相信我可以写一个程序来做这件事,但我非常喜欢理解像这样的问题背后的正确术语和方法。如果有人能够指出我正确的方向来阅读某个特定主题,或者如果有一个明显的名称我想要实现的目标,我将非常感激。

再次为这种含糊不清道歉。

1 个答案:

答案 0 :(得分:1)

听起来像是典型的state space search问题。像BFSiterative deepening这样的算法可以找到最短的交易系列,甚至可以产生所有可能性。

要应用这些算法,您必须重新定义图表。不使用带有边a的{​​{1}}和b之类的节点,而是定义一个状态空间,其中状态由每个元素a -> b的有限数量组成(在此case,一个四元组的整数就足够了)和一个后继函数 S ,它在给定状态的情况下应用所有可能的交易并构造一组后继状态。例如,伪Python表示法,

{a, b, c, f}

由于状态空间搜索是AI中的经典范例,因此大多数AI教科书都涵盖了它。特别是,我可以推荐AIMA by Russell and Norvig,它的前几章花了很多时间讨论状态空间搜索。