C# 更改基本Dijkstra以实现传输路由?

C# 更改基本Dijkstra以实现传输路由?,c#,algorithm,graph-algorithm,C#,Algorithm,Graph Algorithm,我使用Dijkstra来寻找最短路径。找到路径后,我需要找出哪些机构经过哪些站点,然后为这些机构建立独特的路线 我有以下课程: public class Stop() { public string Name {get; set;} } public class Line() { public int Number {get; set;} public int Agency {get; set;} public List<LineStop> St

我使用Dijkstra来寻找最短路径。找到路径后,我需要找出哪些机构经过哪些站点,然后为这些机构建立独特的路线

我有以下课程:

public class Stop() 
{
    public string Name {get; set;}
}

public class Line() 
{
    public int Number {get; set;}
    public int Agency {get; set;}
    public List<LineStop> Stops {get; set;}
}

public class LineStop() 
{
    public Stop Stop {get; set;}
    public int Sequence {get; set;}
}

public class Path() 
{
    public List<Stop> Stops {get; set;}
}
公共类停止()
{
公共字符串名称{get;set;}
}
公共类行()
{
公共整数{get;set;}
公共int代理{get;set;}
公共列表停止{get;set;}
}
公共类LineStop()
{
公共停止{get;set;}
公共整数序列{get;set;}
}
公共类路径()
{
公共列表停止{get;set;}
}
Path
是算法返回的最短路径<代码>停止是该路径上的停止<代码>线路是由特定机构完成的路线。不同的旅行社可以走同一条路线或部分路线。每一行都是独一无二的
LineStop
是该特定行的所有站点的列表。也可能有两个不同的机构为同一条线路提供服务

找到路径后,第二个算法应该通过路径的站点,并根据代理机构及其线路构建路线

目前,搜索不需要依赖于时间

这样的第二个算法应该在Dijkstra中实现,还是应该将第二个算法分开,并在路径搜索后执行


关于这第二种算法的样子有什么想法吗?

我将构建另一个图,其中两个
停止
s A-B通过一条边连接,如果有一个机构有一条
线连接这些点。在新图形上运行dijkstra,然后使用it@Benj你能再详细一点吗?因此,如果我的最短路径只有5个站点,我是否应该用这5个站点构建一个新的图表,并根据停在这些站点的代理创建边?想法是修改您的初始图表。也就是说,现在有了一个图,其中顶点表示城市,边表示街道。您可以按如下方式构建一个新图形:顶点表示城市。两个城市
(V1,V2)在V
'有一个机构提供从V1到V2的路径'
。在这个(并且只有这个)修改过的图上运行Dijkstra。然后,您的
是一系列机构-
路径
s,由修改后的graph@Benj所以(V1,V2)之间的边将是不同机构的权重?是的,您根据机构可以提供的成本(美元、时间等)对它们进行权重计算,并且您的算法选择最便宜(或最短)的边。我的意思是,你必须根据一些标准进行优化