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_Traveling Salesman - Fatal编程技术网

Algorithm 计算所有双音路径

Algorithm 计算所有双音路径,algorithm,traveling-salesman,Algorithm,Traveling Salesman,我试图计算给定点集的所有双音路径 给N分 我猜有O(n!)条可能的路径 推理 您可以从起始位置选择n个点。从这里你有n-1个点,然后n-2个点…这似乎等于n 这个推理正确吗?你可以用好的旧动态规划来解决这个问题 让Count(top,bottom)为不完整的巡更次数,这样top是最右边的顶行点,bottom是最右边的点,top左边的所有点都是bottom,并且已经在轨迹中 现在,Count(i,j)=Count(k,j),其中k={i-1}U{l:l 这是O(n^3)复杂性 如果要枚举所有双音路

我试图计算给定点集的所有双音路径

给N分

我猜有O(n!)条可能的路径

推理

您可以从起始位置选择n个点。从这里你有n-1个点,然后n-2个点…这似乎等于n


这个推理正确吗?

你可以用好的旧动态规划来解决这个问题

让Count(top,bottom)为不完整的巡更次数,这样top是最右边的顶行点,bottom是最右边的点,top左边的所有点都是bottom,并且已经在轨迹中

现在,Count(i,j)=Count(k,j),其中k={i-1}U{l:l 这是O(n^3)复杂性


如果要枚举所有双音路径,请与Count一起跟踪所有路径。在更新步骤中,适当地追加路径。但这需要大量内存。如果不想使用大量内存,请使用递归(同样的想法。对点进行排序。在每个递归点处,要么将新点放在顶部分叉点,要么放在底部分叉点,然后检查是否有交叉点)

您可以使用好的旧动态规划来解决它

让Count(top,bottom)为不完整的巡更次数,这样top是最右边的顶行点,bottom是最右边的点,top左边的所有点都是bottom,并且已经在轨迹中

现在,Count(i,j)=Count(k,j),其中k={i-1}U{l:l 这是O(n^3)复杂性


如果要枚举所有双音路径,请与Count一起跟踪所有路径。在更新步骤中,适当地追加路径。但这需要大量内存。如果不想使用大量内存,请使用递归(相同的想法。对点进行排序。在每个递归点上,要么将新点放在顶部分叉点,要么放在底部分叉点,然后检查是否有交叉点)

什么让你认为它是O(n!)?据我所知,每个点有两种选择:在上路径或下路径上。当然,每个点的决定不是独立的。因此最多可以有2^n条路径。你的意思是?我相信不是图中的每一条哈密顿路径都形成双音圈,因此这些圈的数量严格小于路径的数量。ar你在寻找最大双音圈的数目吗?如果你在寻找同样是哈密顿量的双音圈,肯定有些(完整的)图没有这样的双音圈。如果你只关心一个算法的答案,我认为这个问题更适合于你认为它是O(n!)?据我所知,每个点有两种选择:在上路径或下路径上。当然,每个点的决定不是独立的。因此最多可以有2^n条路径。你的意思是?我相信不是图中的每一条哈密顿路径都形成双音圈,因此这些圈的数量严格小于路径的数量。ar你在寻找最大双音圈的数目吗?如果你在寻找同样是哈密顿量的双音圈,当然有一些(完整的)图形没有这样的双音循环。如果你只关心算法的答案,我认为这个问题更适合于如何给出所有双音路径?@BlueRaja DannyPflughoeft如果你想打印所有路径,你需要将所有临时路径存储到每个点。我不知道你为什么会得到两个向上投票?枚举和计算ar对于两个不同的问题,有时不需要枚举来计算某件事情的数量,而OP似乎在寻找枚举。我也看不出你将如何使用计数方法枚举路径?@SaeedAmiri查看关于枚举的最后一段。保留所有部分路径的列表。我看到了,但我不知道你是如何做到的?这如何为你提供所有双音路径?@BlueRaja DannyPflughoeft如果你想打印所有路径,你需要存储所有临时路径直到每个点的路径。我不知道为什么会有两个向上投票?枚举和计数是两个不同的问题,有时不需要枚举来找出某个东西的计数,似乎OP在寻找枚举。(正如他在O(n!)猜测中提到的)。此外,我看不出您将如何使用Count方法枚举路径?@SaeedAmiri查看关于枚举的最后一段。保留所有部分路径的列表。我看到了,但我不知道您是如何做到的?