如何确定依赖图解决方案是否正确



我创建了一个类,它接受一个有向图,该图中的一个顶点,并输出一个可接受的顶点序列,以通向该顶点。

  • A - B>
  • C ->
  • B - D>
  • C - D>

顶点D的两个可能序列是:

  • -> B -> C> D
  • -> C> B -> D

现在,我需要设计一个测试来确定我的程序给出的解决方案是否正确。

任何想法?

您可以使用基于圈复杂度的算法来计算应该找到的路径数量,这将是一个很好的完整性检查-特别是如果您有一个非常大的图,获得正确的路径数量将令人放心(尽管显然不能保证路径本身是正确的!)。从广义上讲,它是边的数量减去节点的数量——你会在维基百科页面上看到细微的差别。

你的问题很普遍。基本上有两种相似且简单的方法来处理它:

  • 将节点序列放入集合中,检查集合大小,是否包含所有序列

  • 根据一些已知的算法对序列进行排序(例如,通过比较一个节点接着另一个节点)。

在Java中这意味着:

  • 为节点序列实现equalshashCode(如果这类似于List<Node>,则为Node实现equalshashCode),并将它们放在HashSet中。然后简单地检查集合是否有正确的大小和包含两个路径。

  • 使节点序列为Comparable并排序。然后顺序总是已知和固定的。在您的情况下,只需逐个比较相应的节点

相关内容

最新更新