Algorithm 如何通过实验模拟和比较各种图形周期检测算法?

Algorithm 如何通过实验模拟和比较各种图形周期检测算法?,algorithm,graph,cycle-detection,Algorithm,Graph,Cycle Detection,我研究了有向图中循环检测算法的各种算法,如增量方式搜索、强连通组件、BFS、双向搜索等。现在我想对其进行模拟并比较性能。每当我插入边缘时,我调用循环检测函数 所以,我的问题是我应该考虑什么样的数据集。如果我考虑随机图,那么什么是评价各种算法的标准。一些随机图可能是巨大的;但它们可能会在几次迭代中导致循环。如果有人能建议如何进行这项工作,那将是很有帮助的 另外,为了比较性能,删除循环然后再次继续插入是否有意义。一旦终止,比较所有实现的执行时间?这实际上取决于您这样做的目的。一般来说,有许多随机图生

我研究了有向图中循环检测算法的各种算法,如增量方式搜索、强连通组件、BFS、双向搜索等。现在我想对其进行模拟并比较性能。每当我插入边缘时,我调用循环检测函数

所以,我的问题是我应该考虑什么样的数据集。如果我考虑随机图,那么什么是评价各种算法的标准。一些随机图可能是巨大的;但它们可能会在几次迭代中导致循环。如果有人能建议如何进行这项工作,那将是很有帮助的


另外,为了比较性能,删除循环然后再次继续插入是否有意义。一旦终止,比较所有实现的执行时间?

这实际上取决于您这样做的目的。一般来说,有许多随机图生成方法,但可以说最著名的是。但是请注意,对于一个有n个顶点的图来说,它没有一个圈,它最多必须有n-1条边,所以这样的随机图生成器将有一个高概率的圈。因此,根据具体情况,您可能会发现最好保持图形尽可能稀疏(即允许很少的边)。

这实际上取决于您这样做的目的。一般来说,有许多随机图生成方法,但可以说最著名的是。但是请注意,对于一个有n个顶点的图来说,它没有一个圈,它最多必须有n-1条边,所以这样的随机图生成器将有一个高概率的圈。因此,根据具体情况,您可能会发现最好保持图形尽可能稀疏(即允许少量边)。

但要比较不同算法的性能,应考虑最坏情况,即插入更多边。另外,为了比较性能,删除循环然后再次继续插入是否有意义。一旦终止,比较所有实现的执行时间?但是为了比较不同算法的性能,应该考虑最坏的情况,即更多的边缘插入。另外,为了比较性能,删除循环然后再次继续插入是否有意义。一旦终止,比较所有实现的执行时间?