Graph 一种最小遍历节点数的最短路径算法

Graph 一种最小遍历节点数的最短路径算法,graph,shortest-path,dijkstra,Graph,Shortest Path,Dijkstra,我正在寻找Dijkstra的算法实现,它还考虑了遍历的节点数 我的意思是,一个典型的Dijkstra算法,在计算从节点a到节点B的最短路径时,考虑了连接节点的边的权重。我想在其中插入另一个参数。我希望算法也能为遍历的节点数赋予一些权重 因此,在某些值下,从A到B计算的最短路径不一定是最短路径,而是经过的节点数最少的路径 有什么想法吗 干杯, 研发部 编辑: 我道歉。我应该解释得更清楚些。比如说,从 (A,B)是A->C->D->E->F->B,总共覆盖10个单元 但是我想让算法得出路线A->M-

我正在寻找Dijkstra的算法实现,它还考虑了遍历的节点数

我的意思是,一个典型的Dijkstra算法,在计算从节点a到节点B的最短路径时,考虑了连接节点的边的权重。我想在其中插入另一个参数。我希望算法也能为遍历的节点数赋予一些权重

因此,在某些值下,从A到B计算的最短路径不一定是最短路径,而是经过的节点数最少的路径

有什么想法吗

干杯,
研发部

编辑:
我道歉。我应该解释得更清楚些。比如说,从
(A,B)是A->C->D->E->F->B,总共覆盖10个单元
但是我想让算法得出路线A->M->N->B,总共覆盖12个单位。

所以,我想要的是,能够给节点的数量赋予一些权重,而不仅仅是连接节点的距离。

我将在这里讨论一个肢体,但是你试过a*算法吗?我可能理解错了你的问题,但这似乎是你想做什么的一个很好的起点

检查:*\u搜索\u算法


还有一些伪代码可以帮助你:)

我想在这里讨论一下,但是你试过a*算法吗?我可能理解错了你的问题,但这似乎是你想做什么的一个很好的起点

检查:*\u搜索\u算法


这里也有一些伪代码可以帮助您:)

您可以这样做,即调整边的权重始终为1,这样您可以遍历5个节点,并且距离为“5”。在这一点上,算法将是相同的,优化遍历的节点数,而不是遍历的距离

如果需要某种混合,则需要确定遍历节点和距离的重要性。计算中使用的权重应类似于:

weight=节点重要性*1+(1-节点重要性)*距离


其中node_重要性是一个百分比,用于衡量距离是一个因素,最小节点遍历是重要的。尽管您可能需要将距离规格化为平均值1。

您可以这样做,即调整边的权重始终为1,这样您就可以遍历5个节点,并且距离为“5”。在这一点上,算法将是相同的,优化遍历的节点数,而不是遍历的距离

如果需要某种混合,则需要确定遍历节点和距离的重要性。计算中使用的权重应类似于:

weight=节点重要性*1+(1-节点重要性)*距离


其中node_重要性是一个百分比,用于衡量距离是一个因素,最小节点遍历是重要的。虽然您可能需要将距离标准化为1的平均值。

如果我正确理解了这个问题,那么最好的类比就是用于找到最佳网络路径

在网络通信中,不仅可以选择最短的路径,还可以选择具有多个跳数(节点)的路径,因此可能由于节点连接而导致失真、干扰和噪声

因此,最佳路径计算包含最小化变量的函数,例如距离和跳数(节点)

您必须导出一个函数方程,该方程可以将距离和节点计数与质量联系起来

假设某件事
1跳计数变化=5单位距离
(这意味着5单位距离或1个节点变化的影响相同)

因此,为了使损失最小化,可以在线性方程中使用它。
最小化(距离+跳数)

其中hopcount可以表示为距离。

如果我正确理解了这个问题,那么它最好的类比就是用于找到最佳网络路径

在网络通信中,不仅可以选择最短的路径,还可以选择具有多个跳数(节点)的路径,因此可能由于节点连接而导致失真、干扰和噪声

因此,最佳路径计算包含最小化变量的函数,例如距离和跳数(节点)

您必须导出一个函数方程,该方程可以将距离和节点计数与质量联系起来

假设某件事
1跳计数变化=5单位距离
(这意味着5单位距离或1个节点变化的影响相同)

因此,为了使损失最小化,可以在线性方程中使用它。
最小化(距离+跳数)

其中hopcount可以表示为距离。

让我演示一下,向所有边添加一个常量值可以更改哪个路由是“最短的”(边的总重量最小)

这是原始图形(三角形):

从A到B的最短路径是通过C。现在将常数2添加到所有边。最短路径变成了从A直接到B的单步(由于我们为使用附加边引入了“惩罚”)


请注意,使用的边数(不包括起始节点)与访问的节点数相同。

让我演示一下,向所有边添加一个常量值可以更改哪个路由是“最短的”(边的总重量最小)

这是原始图形(三角形):

从A到B的最短路径是通过C。现在将常数2添加到所有边。最短路径变成了从A直接到B的单步(由于我们为使用附加边引入了“惩罚”)

请注意,所使用的边数(不包括起始节点)与边数相同
A-------B
 \  5  /
2 \   / 2
   \ /
    C