C# JSON中的最短路径查找器
我有一个JSON,如下所示-C# JSON中的最短路径查找器,c#,json,dijkstra,shortest-path,C#,Json,Dijkstra,Shortest Path,我有一个JSON,如下所示- [ { "From": "Sydney", "To": "Dubai", "Duration": 1 }, { "From": "Dubai", "To": "Venice", "Duration": 2 }, { "From": "Venice", "To": "Rio", "Duration": 3 }, { "From": "Venice", "
[
{
"From": "Sydney",
"To": "Dubai",
"Duration": 1
},
{
"From": "Dubai",
"To": "Venice",
"Duration": 2
},
{
"From": "Venice",
"To": "Rio",
"Duration": 3
},
{
"From": "Venice",
"To": "Sydney",
"Duration": 1
},
{
"From": "Sydney",
"To": "Rio",
"Duration": 7
}
]
我想在JSON中找到城市之间的最短路径。其想法是开发一种方法,只需输入一个城市名称,并显示到所有其他目的地的最短路径
假设我们提供了Sydney作为输入,我想要的输出是
Selected City: Sydney
To 1: Dubai, Smallest Path Length: 1, Path: Sydney, Dubai.
To 2: Venice, Smallest Path Length: 3, Path: Sydney, Dubai, Venice.
To 3: Rio, Smallest Path Length: 6, Path: Sydney, Dubai, Venice, Rio.
(N.B. Sydney-Rio is 7 hours long hence Sydney-Dubai-Venice-Rio
is the shortest route here which takes 2 hours).
我的尝试-
var json = [
{
"From": "Sydney",
"To": "Dubai",
"Duration": 1
},
{
"From": "Dubai",
"To": "Venice",
"Duration": 2
},
{
"From": "Venice",
"To": "Rio",
"Duration": 3
},
{
"From": "Venice",
"To": "Sydney",
"Duration": 1
},
{
"From": "Sydney",
"To": "Rio",
"Duration": 7
}
]
public string Path(string city, JObject json)
{
string result = null;
return result;
}
private void xBox_SelectedIndexChanged(object sender, EventArgs e)
{
Path(xBox.SelectedText, json);
}
现在开发一种方法来解决上述问题。。。。
但是怎么做呢?我在挠头 Dijkstra算法是一种用于查找图中节点之间最短路径的算法,该图可以表示,例如,道路网络。 尝试实现这个算法,如果你在某个地方遇到困难,请寻求建议。 您可以在此处阅读有关算法的内容: 以下是算法的步骤: 让我们开始的节点称为初始节点。让节点Y的距离为从初始节点到Y的距离。Dijkstra的算法将分配一些初始距离值,并尝试逐步改进它们 为每个节点指定一个暂定距离值:对于初始节点,将其设置为零,对于所有其他节点,将其设置为无穷大 将初始节点设置为当前节点。将所有其他节点标记为未访问。创建一个包含所有未访问节点的集,称为未访问集
对于当前节点,考虑所有未访问的邻居并计算它们的暂定距离。将新计算的暂定距离与当前指定的值进行比较,并指定较小的值。例如,如果当前节点A的距离标记为6,并且将其与邻居B连接的边的长度为2,则到B到A的距离将为6+2=8。如果B之前标记的距离大于8,则将其更改为8。否则,保留当前值
当我们考虑完当前节点的所有邻居后,将当前节点标记为已访问,并将其从未访问集中移除。已访问的节点将不再被检查 如果在规划两个特定节点之间的路由时目的地节点已被标记为已访问,或者如果在规划完整的遍历时未访问集合中的节点之间的最小暂定距离为无穷大;在初始节点和其余未访问的节点之间没有连接时发生,然后停止。算法已经完成 否则,选择标有最小暂定距离的未访问节点,将其设置为新的当前节点,然后返回步骤3您的代码在哪里?您肯定不想在JSON上进行路径查找吗?@puropoix如果可能的话,我是