代码之家  ›  专栏  ›  技术社区  ›  Rocco Mancin

如何表示和导航此类数据?[已关闭]

  •  0
  • Rocco Mancin  · 技术社区  · 7 年前

    我正在处理一系列小功能,希望记住并“导航”它们。所有函数都被视为黑匣子,并且至少有一个参数和一个输出。这些功能的示例如下:

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

    在程序中插入这些函数的特征后,我希望能够询问软件“我能获得给定的E吗?”并收到回答“是申请” f1() 然后 f3() 或“您无法通过此输入获得”。

    我考虑创建一个图,其中节点是输入/输出(a、B、C、D、E…)边是函数,然后尝试在输入和设计输出之间找到路径。如果一个函数只接受一个输入,只返回一个输出,则此操作有效。

    我正在使用Python,因此最好使用这种语言的解决方案。

    总结: 如何在示例中存储函数,使我能够发现如果给定一些输入,我可以获得一些输出?

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   Jonathan DEKHTIAR    7 年前

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

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