1

我正在创建一个用于实现图形算法的 C++ 库。我正在考虑“Graph”类的适当表示。

有两种主要类型的图(定向/非定向)和表示(列表/矩阵)。

我对算法没有问题……但我想提出一个合适且健壮的数据结构(如果需要,包括类的继承序列)。

目前我没有使用任何特殊的数据结构来表示图,静态方法有作为输入参数的关联、邻接...矩阵。

此类应保留图形的两种表示形式还是仅保留一种表示形式,并在两种表示形式之间具有转换函数?哪个可能是首选?

许多人使用不同的方法解决了这个问题。

4

2 回答 2

3

在重新发明轮子之前,您可以先看看boost::graph。不要忘记捆绑属性

于 2011-04-13T19:33:25.183 回答
2

你这样做是为了上课还是作为学习练习?因为如果不是,正如你所指出的,这个问题已经解决了很多次。当人们浏览各种解决方案时,就会意识到存在一些问题,即使是这样的:

  • 有向/无向图
  • 将用户数据与节点和边相关联
  • 稀疏图与密集图
  • 大图与小图
  • 模板 vs 非模板
  • 对其他包的依赖

等等...

尝试查看一些最流行的实现:

https://stackoverflow.com/questions/2751826/which-c-graph-library-should-i-use

于 2011-04-13T19:35:14.443 回答