常用且有用的Graph功能?

时间:2010-03-18 00:14:59

标签: function graph

我正在为我的uni项目实现一个简单的Graph库,因为这是我第一次处理图形,我想知道你们认为哪些函数对Graph实现最常用和最有用。

到目前为止,我有这个:

  • graphInitialize()
  • graphInsertVertex()
  • graphRemoveVertex()
  • graphGetVertex()
  • graphGetVertexValue()(尚未实现,不确定我是否需要它)
  • graphInsertEdge()
  • graphRemoveEdge()
  • graphLinkVertices()(这为双向图调用graphInsertEdge两次)
  • graphUnlinkVertices()(这为双向图调用了两次graphRemoveEdge)
  • graphDestroy()

我知道我错过了一个确定最短路径的功能,但我最后还是离开了...

你认为我缺少任何常见/有用的功能吗?

4 个答案:

答案 0 :(得分:1)

一般来说:

  • getVertexCount
  • getEdgeCount
  • transposeGraph(反向所有边缘)
  • getEdgeWeight
  • setEdgeWeight

更多算法内容:

  • countConnectedComponents
  • countStronglyConnectedComponents
  • computeAllPairsShortestPath
  • computeShortestPath(source,sink)
  • computeSingleSourceShortestPath(源)
  • computeMaxFlow(source,sink)
  • isTree
  • isBipartite
  • isAcyclic
  • topologicSort
  • getDiameter
  • getPrincipleVertex

......这可以永远持续下去。

答案 1 :(得分:1)

要考虑的其他一些事项:

  • 向节点或边添加属性,例如加权。
  • 您创建的是什么类型的图表?定向,无向等......
  • 也许方法可以为您提供有关图表的一般信息?节点数,边数等
  • 我可以轻松获得节点的程度吗?
  • 您可以检查图表中是否已有节点或边缘吗?

我建议看看其他一些图库。以下是一些:

答案 2 :(得分:1)

您可能会发现有用的内容取决于您将使用该库的内容......

您可能会发现一些有用的东西 -

  • 返回触及顶点的所有边
  • 的函数
  • 一个函数,它返回连接到具有一条边的顶点
  • 的所有顶点
  • dikjstra algorithm

某些应用程序要求每个边或顶点都具有某些属性,例如distanceweight。当然,你总是可以在Edge和Vertex类中添加越来越多的成员,但是有一些方法可以做到这一点,而不会使用你可能不需要使用的东西来混乱你的类。

答案 3 :(得分:0)

作为旁注,如果您以OOP样式编写库,则可以在所有方法上删除“graph”前缀,因为它将是多余的。否则,如果这是一个过程库,那么您可能需要定义命名空间。