我获得了一个边缘列表(每个边缘都有一个'From'和'To'属性,用于指定它们连接的顶点。)
如果它们不在此(无向)图形中形成循环,或者返回形成循环的列表,我想要返回null。
有谁知道我会如何处理这样的问题?我很无能。
答案 0 :(得分:1)
我被教导这样做的方法包括存储一个访问过的顶点列表。
浏览图表,存储每个顶点并将其添加到列表中。每回合,将当前顶点与列表进行比较 - 如果它存在,则之前已经访问过它,因此处于循环中。
答案 1 :(得分:1)
此类算法称为Graph Cycle Detection Algorithms。根据应用程序的需要或问题的上下文,选择哪种算法有一些复杂性。例如,你想找到第一个周期,最短周期,最长周期,所有周期,图形是单向还是双向等?
有许多循环检测算法可供选择,这取决于需要和允许的计算复杂性以及循环的性质(例如,找到第一个,最长的等)。一些常见的算法包括以下内容:
您选择的具体算法取决于您的需求以及算法的效率。如果需要高效率,我建议查看一些关于该主题的学术文章,并比较和对比各种算法的一些权衡。