我有各种类型的互连节点的树结构。每个节点都会跟踪它所连接的节点。在这个结构中,我需要找到最长的未连接链或相同类型节点的路径。
我已经阅读了图表和广度/深度优先搜索,但这些并不能完全满足我的需求。 (他们会找到一个链,但也包括起始节点和目标节点之间的所有死端分支)
是否存在用于此目的的现有算法?
答案 0 :(得分:0)
如果“链”是指连接组件,那么
假设您的图表有边E和顶点V.
迭代边缘,删除连接不同类型节点的所有边。这是O(| E |)。
使用深度优先或广度优先查找连接的组件。这是O(| E | + | V |)。
最大的连通组件将是同类型节点中最长的链。
如果通过链表示简单循环(启动,停止在同一节点,不重新访问任何节点),那么这是NP完成。如果连接的组件很小,那么它应该是可行的。
如果用链表示简单路径,那么这就是NP-Hard。