给定带有平行边的有向图,我需要找到输入中第一个和最后一个节点之间的路径数。允许多次遍历相同的边缘,并且平行边缘计为不同的路径。
我解决问题的方法是考虑节点s和节点t之间不等于k的路径数。具有N个节点的图中最长的简单路径具有N-1个顶点,因此如果没有循环,则path_count(s,t,n-1)和path_count(s,t,3n-3)应该相等。 3n -3基本上是最长的简单路径的遍历,第二次遍历原点而另一次遍历目标,通过两次到达目标来建立循环。
我已经编写了一些代码来实现它。我使用一个名为lookup的向量来存储中间结果以加快速度。以下是我的想法:
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction = 0.5)
config = tf.ConfigProto(gpu_options = gpu_options)
server = tf.train.Server(..., config=config)
问题是我有一些给定的测试用例,以及我自己编写的一些测试用例。我的解决方案在我的测试用例和一些小型测试用例上取得了成功,但在我无法手动调试的大型测试用例(100个节点,数千个顶点)上失败了。我也尝试过在同一个测试用例中失败的DFS的不同想法,让我相信我从根本上不了解这个问题。有什么想法吗?
谢谢。