Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 二部图的随机生成树_Algorithm_Random_Graph_Bipartite_Spanning Tree - Fatal编程技术网

Algorithm 二部图的随机生成树

Algorithm 二部图的随机生成树,algorithm,random,graph,bipartite,spanning-tree,Algorithm,Random,Graph,Bipartite,Spanning Tree,我正在使用元启发式方法编写一些代码,以找到固定费用运输问题(FCTP)的良好解决方案 我面临的问题是,基于为底层二部图找到生成树,生成一个初始解决方案 我希望它是一个随机生成树,这样我就可以对同一个问题多次运行这个过程,可能得到不同的解决方案 我做这件事有点困难。到目前为止,我采用的方法是对弧进行随机排列,然后遍历此列表,如果它不会创建循环,则按顺序将它们放入基中 我需要找到一个快速的方法来检查是否包括一个弧将创建一个循环。我不想“暴力”它,因为考虑到大问题实例,这种方法可能需要大量时间 假设A

我正在使用元启发式方法编写一些代码,以找到固定费用运输问题(FCTP)的良好解决方案

我面临的问题是,基于为底层二部图找到生成树,生成一个初始解决方案

我希望它是一个随机生成树,这样我就可以对同一个问题多次运行这个过程,可能得到不同的解决方案

我做这件事有点困难。到目前为止,我采用的方法是对弧进行随机排列,然后遍历此列表,如果它不会创建循环,则按顺序将它们放入基中

我需要找到一个快速的方法来检查是否包括一个弧将创建一个循环。我不想“暴力”它,因为考虑到大问题实例,这种方法可能需要大量时间

假设
A
是一个带有随机排列的弧的数组,您将如何进行选择过程


我已经在这方面工作了几个小时了,但我尝试过的都没有效果,大部分在应用上都是毫无意义的…

我经过长时间的研究后发现。我只需要随机化我调查图中节点的顺序。

Kruskals算法用于寻找最小生成树。快速循环检测实际上不是Kruskals算法的一部分。该算法使用的数据结构既能快速找到周期,又能以缓慢的原始尝试找到周期(但复杂度会有所不同)


然而,Kruskals算法在这里走上了正轨,因为它通常使用所谓的联合查找或不相交集数据结构来快速检测循环。这是wikipedia上Kruskals算法页面的一部分,您将需要它来实现您的算法。这在维基百科上也有链接:

我也只使用了顺序连接到生成林中的树的概念,直到只剩下一棵树;)