Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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_Graph - Fatal编程技术网

Algorithm 最小化覆盖有向图中所有边的路由数

Algorithm 最小化覆盖有向图中所有边的路由数,algorithm,graph,Algorithm,Graph,概述 我有一个有向图,有大约35000个节点和大约400000条边。一个节点通常与多个节点相连。 一些边是单向的,而另一些边是双向的。 有些节点可以是源节点和/或汇节点,但决不能同时是源节点和/或汇节点 客观的 开发一种算法,该算法使用不同的源和汇对,最小化覆盖图所有边的路由数量;当然要保留这些路线 约束条件 在一条路由中,节点不能被访问多次,但它们可以出现在不同的路由中。 从一个连接多个节点的节点开始,算法只能向路由中添加一条从该节点开始的边。此路由中不能使用其他边缘 有一个简单的图形表示法。

概述 我有一个有向图,有大约35000个节点和大约400000条边。一个节点通常与多个节点相连。 一些边是单向的,而另一些边是双向的。 有些节点可以是源节点和/或汇节点,但决不能同时是源节点和/或汇节点

客观的 开发一种算法,该算法使用不同的源和汇对,最小化覆盖图所有边的路由数量;当然要保留这些路线

约束条件 在一条路由中,节点不能被访问多次,但它们可以出现在不同的路由中。 从一个连接多个节点的节点开始,算法只能向路由中添加一条从该节点开始的边。此路由中不能使用其他边缘

有一个简单的图形表示法。算法必须找到一些路径来覆盖所有边。最好找到最少的路径数

我不想使用暴力搜索所有可能的路径,因为这太慢了。 最好为每条路由使用不同的源和汇,这样如果它们没有共同的节点,就可以并行交叉


也许这个问题可以用解决,但我想不出一个算法来适应它。

如果有35k条边和400k个节点,其中一些节点没有任何边连接,因此连接所有节点的路由不可能存在。我假设这是一个打字错误,所以请修正。至于实际问题,你是对的!我忘了说一条边可以像hypergraph一样连接两个以上的节点。但是,当在计算路由时选择一条边时,它只能连接两个节点,这就像有一条复制的边,只能在一次使用,这使得事情。。。有趣的我现在想到的唯一一件事是带有快速故障检查的DFS,以验证是否有不再可以连接的节点。除此之外,您可以更改数据表示以最小化所需的运算符数量-我将尝试将边表示为零值节点,而不是一个值的原始节点,并为每个边节点到节点的连接创建边-这样,您需要找到一个总值等于起始节点数的路径。这只是一个松散的概念,但我希望它能有所帮助。谢谢你的回复!但是我认为这不是一个可行的方法。。由于图形基础设施的原因,无法找到覆盖所有节点的路径。一个节点可以连接到其他20个节点;从该节点开始,我只能选择一条边,其他边将无法读取,因为我无法创建循环。也许用另一种方式建模问题更好,通过用edge交换节点,解决方案是覆盖所有edge。。我会再写一次这篇文章