- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我知道 Dijkstra 算法可以找到两个节点(或者在地铁站的情况下)之间的最小距离。我的问题虽然涉及找到两个站点之间的最小传输次数。此外,在所有最小传输路径中,我想要时间最短的路径。
现在为了找到一条最小换乘路径,我使用了一个专门应用于地铁线路的 BFS,但它不能保证找到的路径是所有其他最小换乘路径中最短的。
我在想,也许修改 Dijkstra 的算法可能会有所帮助 - 通过试探性地为每次传输添加权重(时间),这样它会阻止算法传输到不同的线路。但在这种情况下,我需要凭经验找到转移权重。
问题补充:
有人建议我在每次算法想要换乘不同的地铁线路时添加一个“惩罚”。在这里,我解释了我对此的一些担忧。
我把这个问题搁置了几天,今天又回来了。再次查看问题后,似乎在站点上执行 Dijkstra 算法并找出传输发生的位置很难,它并不像人们想象的那么明显。
举个例子:如果这里我有一个部分图表(只有 4 个站点)和它们的地铁线路:A(红色)、B(红色、蓝色)、C(红色)、D(蓝色)。设A站为源。连接是:
---- D(蓝)- B(蓝、红)- A(红)- C(红)-----
如果我遵循 Dijkstra 算法:最初我将 A 放入队列,然后在第一次迭代中将 A 出列并查看其邻居:B和C,我根据权重A-B和A-C更新它们的距离。现在即使 B 连接两条线,此时我也不知道如果我需要在 B 进行转账,那么我不添加转账的“罚款”。假设 A-B < A-C 之间的距离导致 B 的下一次迭代出队。它的邻居是 D 并且只有在这个我看到转移必须在 B 进行。但是 B 已经被处理(出队)。 S
所以我不确定这种在确定传输需求时的“延迟”将如何影响算法的完整性。有什么想法吗?
最佳答案
您可以将每个权重设为一对:(# of transfers, time)
。您可以以明显的方式添加这些权重,并按字典顺序比较它们(首先比较传输次数,使用时间作为决胜局)。
当然,正如其他人所提到的,使用 K * (# of transfers) + time
对于一些足够大的 K 会产生相同的效果,只要你知道最大先验时间并且你不知道不要用完您的重量存储空间。
关于algorithm - 如何找到地铁或铁路网络的最少换乘次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3137548/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!