Graph 一种最小遍历节点数的最短路径算法
我正在寻找Dijkstra的算法实现,它还考虑了遍历的节点数 我的意思是,一个典型的Dijkstra算法,在计算从节点a到节点B的最短路径时,考虑了连接节点的边的权重。我想在其中插入另一个参数。我希望算法也能为遍历的节点数赋予一些权重 因此,在某些值下,从A到B计算的最短路径不一定是最短路径,而是经过的节点数最少的路径 有什么想法吗 干杯,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-
研发部 编辑:
我道歉。我应该解释得更清楚些。比如说,从
(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