小编Ali*_*isa的帖子

如何找到地铁或铁路网络的最小转账数量?

我知道Dijkstra的算法可以找到两个节点之间的最小距离(或者在地铁站的情况下).我的问题是关于找到两个站之间的最小转移次数.而且,在所有最小传输路径中,我想要具有最短时间的传输路径.

现在,为了找到最小传输路径,我使用了应用于地铁线路的专用BFS,但它不能保证找到的路径是所有其他最小传输路径中最短的路径.

我在想,也许修改Dijkstra的算法可能有所帮助 - 通过启发式地为每次转移添加权重(时间),这样就可以阻止算法转移到不同的行.但在这种情况下,我需要根据经验找到转移权重.

除了问题:

我建议每次算法想要转移到不同的地铁线路时添加"惩罚".在这里,我解释一下我对此的一些担忧.

我把这个问题推迟了几天,今天又回到了它.在再次查看问题后,看起来像在车站上进行Dijkstra算法并确定转移发生的位置很难,这并不像人们想象的那么明显.

这是一个例子:如果在这里我有一个局部图(只有4个站)和他们的地铁线:A(红色),B(红色,蓝色),C(红色),D(蓝色).让A站成为源.连接是:
---- D(蓝色) - B(蓝色,红色) - A(红色) - C(红色)-----

如果我遵循Dijkstra算法:最初我将A放入队列,然后在第一次迭代中将A出列并查看其邻居:B和C,我根据权重AB和AC更新它们的距离.现在即使B连接两条线,此时我也不知道是否需要在B处进行传输,因此我不会为传输添加"惩罚".假设AB <AC之间的距离,这导致B的下一次迭代出列.它的邻居是D,只是在这一点上我看到转移必须在B处进行.但是B已经被处理(出列)了.小号

所以我不确定这种"延迟"在确定传输需求时会如何影响算法的完整性.有什么想法吗?

algorithm graph

8
推荐指数
1
解决办法
3399
查看次数

如何按Silverlight中的第一个字母对列表中的项目进行分组?

我有一个ListBox,我绑定了一个排序的字符串列表.我想显示带有分隔符(标题)的列表,宣布新信件 - 类似于iPhone上的"联系人"列表.

有人知道如何实现这一目标吗?也许使用ListBox不是正确的想法.

我正在使用适用于Windows Phone 7的VS Express 2010执行此操作.

c# silverlight listbox windows-phone-7

2
推荐指数
1
解决办法
3261
查看次数

标签 统计

algorithm ×1

c# ×1

graph ×1

listbox ×1

silverlight ×1

windows-phone-7 ×1