我研究了有向图中的循环检测算法的各种算法,如增量方式搜索、强连通分量、BFS、双向搜索等。现在我想模拟它并比较性能。每当我插入边缘时,我都会调用循环检测功能。
所以,我的问题是我应该考虑什么样的数据集。如果我考虑随机图,那么评估各种算法的标准应该是什么。一些随机图可能很大;但它们可能会导致几次迭代中的循环。如果有人可以建议如何去做这将是有帮助的。
另外,为了比较性能,删除循环然后再次继续插入是否有意义。一旦它终止,比较所有实现的执行时间?
我研究了有向图中的循环检测算法的各种算法,如增量方式搜索、强连通分量、BFS、双向搜索等。现在我想模拟它并比较性能。每当我插入边缘时,我都会调用循环检测功能。
所以,我的问题是我应该考虑什么样的数据集。如果我考虑随机图,那么评估各种算法的标准应该是什么。一些随机图可能很大;但它们可能会导致几次迭代中的循环。如果有人可以建议如何去做这将是有帮助的。
另外,为了比较性能,删除循环然后再次继续插入是否有意义。一旦它终止,比较所有实现的执行时间?
这真的取决于你这样做的目的。一般来说,有很多随机图生成方法,但可以说最著名的是Erdos-Renyi。但是请注意,对于具有 n 个顶点的图没有循环,它必须最多具有 n - 1 条边,因此此类随机图生成器将具有高概率的循环。根据您的具体情况,您可能会发现最好使图形尽可能稀疏(即允许很少的边)。