我需要一个有效的数据结构建议,以适合我在约束条件下计算有向图内部路径成本的问题,即许多路径有时共享同一子路径,而我不想对其进行两次计算。
这些列表中的每个数字都指向有向图内的一个节点。每行描述一条路径:
guard let user = userName.text else { return }
guard let password = password.text else { return }
let credentials = SyncCredentials.usernamePassword(username: user, password: password)
let syncURL = URL(string: "\(Constants.REALM_URL)/~/Pictu")!
SyncUser.logIn(with: credentials, server: Constants.AUTH_URL) { user, error in
if let error = error {
print("User Error: \(error.localizedDescription)")
}
if let user = user {
let realmConfig = user.configuration(realmURL: syncURL)
Realm.asyncOpen(configuration: realmConfig) { realm, error in
if let realm = realm {
print("Realm Open")
self.realm = realm
} else if let error = error {
print("Realm Error: \(error.localizedDescription)")
}
}
}
}
在此示例中可以看到,许多路径沿途共享相同的节点子集。 (还有许多其他路径(此处未显示)不共享子路径。)
我想计算每个路径的“最优性”,即沿途的权重之和或乘积。在遍历每条路径时,这些权重对于我的图可以看作是恒定的。
要清楚:我想避免在此示例中为所有所示路径计算从节点121到节点141的路径权重,因为两个节点之间权重的这些乘/加是相同的(直到节点141) )在显示的每个路径中...
我对数据结构的建议和解释感到满意,为什么所提到的数据结构最适合我的需求。 如果您也有库建议,则最好使用C / C ++或Python。