如何表示和导航这类数据?

时间:2018-02-26 13:08:22

标签: python graph

我正在使用一个小函数列表,并想记住并“导航”它们。所有函数都被视为黑盒子,至少有一个参数和至少一个输出。这些功能的一个例子如下:

A -> f1() -> B
C -> f2() -> D
B -> f3() -> E
F -> f4() -> D
A,D -> f5() -> G
H -> f6() -> C,F

在程序中插入这些功能的特性后,我希望能够询问软件“我可以获得给定的A?”并接收答案“是应用 f1()然后 f3()”或“您无法通过此输入获得”。

我考虑创建一个图形,其中节点是输入/输出(A,B,C,D,E ....),边缘是函数,然后尝试在输入和所需的输出之间找到路径。如果函数只接受一个输入并且只返回一个输出,则此方法有效。

我正在使用Python,因此首选使用此语言的解决方案。

总结:如何以一种允许我查找给定输入的方式存储示例中的函数我可以获得一些输出?

如果您认为有必要,请随意编辑以提高可读性。

1 个答案:

答案 0 :(得分:0)

您的目标肯定是图形问题。但是,请注意,如果您允许图表更深入:A - > f1() - > B - > f3() - >例如,E组合可以迅速变得非常大。没有简单的解决方案。

简而言之,您必须创建一个图形,然后探索图形,寻找从x1到x2的路径。也许你可以看一下graphDB,比如Neo4J或GraphDB。也许python lib NetworkX也能够完成这项工作。