0

这是我的问题。我有一系列建筑物不同部分的照片,我需要将它们链接在一起。之后,我需要按顺序显示每张照片,以显示从 A 点到 B 点的路径……即,从教室到防火梯。

我做了一些研究,我相信无向无权图应该可以解决问题。

因为我在这方面没有太多经验。我想知道如何将照片存储在数据结构中,是否有任何库可以完成这项工作?

4

1 回答 1

1

是的,您需要应用一些可以为您解决问题的算法。

你可以使用这个很棒的库:

解决这部分问题。

至于存储数据的方式,您需要定义顶点(照片)和顶点之间的边,例如(照片 A-照片 B)、(照片 A-照片 C)等。

您必须从数据库中恢复该信息并在 quickgraph 中加载相应的结构并让它为您找到路径。

这里有大量的文档和示例:

对于与此类似的东西,我使用了:

  • MyEdges 类,它实现IEdge<T>(T 应该是您的照片 ID 类型、int 或其他类型) - 表示照片(地点)之间的边缘
  • Graph 类,它继承AdjacencyGraph<T,MyRelation>. 您使用可用的 MyEdges 加载它(这是有向图)
  • PathFinder 算法类:我继承自FloydWarshallAllShortestPathAlgorithm<T, MyRelation>

然后你必须:

  • 创建边缘(即从数据库中读取它们)
  • 实例化一个 Graph 类,并将所有边添加到它
  • 使用 PathFinder 构造函数,使用图形作为参数。这会找到路径。

该算法允许您指定可以从给定照片(边缘)到哪些照片,假设它们之间的距离相似,但您必须定义所有路线(从 A 到 B,从 B 到 A 等等) . 那是 OP 的“未加权”部分。如果您的情况不同,则必须阅读文档。

UnDirected如果您希望将 A 添加到 B 也将 B 添加到 A,您可以实现一个图形。它可以节省一些代码行,但我通常更喜欢自己添加所有可能性。更容易想到“从图书馆我可以去 A 通道和 B 通道。从 B 通道到图书馆和实验室”等等,试图想到所有的边缘。

您可以在数据库中创建两个表:

  • 照片(带身份证)
  • 路径(IdFrom 和 IdTo)

这很容易维护和实施。

于 2012-05-10T22:47:24.703 回答