这是我的问题。我有一系列建筑物不同部分的照片,我需要将它们链接在一起。之后,我需要按顺序显示每张照片,以显示从 A 点到 B 点的路径……即,从教室到防火梯。
我做了一些研究,我相信无向无权图应该可以解决问题。
因为我在这方面没有太多经验。我想知道如何将照片存储在数据结构中,是否有任何库可以完成这项工作?
这是我的问题。我有一系列建筑物不同部分的照片,我需要将它们链接在一起。之后,我需要按顺序显示每张照片,以显示从 A 点到 B 点的路径……即,从教室到防火梯。
我做了一些研究,我相信无向无权图应该可以解决问题。
因为我在这方面没有太多经验。我想知道如何将照片存储在数据结构中,是否有任何库可以完成这项工作?
是的,您需要应用一些可以为您解决问题的算法。
你可以使用这个很棒的库:
解决这部分问题。
至于存储数据的方式,您需要定义顶点(照片)和顶点之间的边,例如(照片 A-照片 B)、(照片 A-照片 C)等。
您必须从数据库中恢复该信息并在 quickgraph 中加载相应的结构并让它为您找到路径。
这里有大量的文档和示例:
对于与此类似的东西,我使用了:
IEdge<T>
(T 应该是您的照片 ID 类型、int 或其他类型) - 表示照片(地点)之间的边缘AdjacencyGraph<T,MyRelation>
. 您使用可用的 MyEdges 加载它(这是有向图)FloydWarshallAllShortestPathAlgorithm<T, MyRelation>
然后你必须:
该算法允许您指定可以从给定照片(边缘)到哪些照片,假设它们之间的距离相似,但您必须定义所有路线(从 A 到 B,从 B 到 A 等等) . 那是 OP 的“未加权”部分。如果您的情况不同,则必须阅读文档。
UnDirected
如果您希望将 A 添加到 B 也将 B 添加到 A,您可以实现一个图形。它可以节省一些代码行,但我通常更喜欢自己添加所有可能性。更容易想到“从图书馆我可以去 A 通道和 B 通道。从 B 通道到图书馆和实验室”等等,试图想到所有的边缘。
您可以在数据库中创建两个表:
这很容易维护和实施。