我有一个包含四个节点的图,每个节点代表一个位置,它们像二维网格一样布局。每个节点都有一个连接(边缘)给所有(根据位置)相邻的节点。每条边都有一个重量。在加权图中查找边缘
下面是由A,B,C,d和边缘的权重表示由数字指示的节点:
A 100 B
120 220
C 150 D
欲结构的容器和用于切换节点共享的算法最重的边缘。然后重置该边的重量。每次执行算法时,节点(位置)都不能切换一次以上。
例如,处理上面的,最高的权重是边缘BD,所以我们切换这些。由于没有节点可以多次切换,因此B或D中涉及的所有边都将被重置。
A D
120
C B
然后,下一个最高权重是唯一的边缘左侧,切换这些会给我们最终布局:C,d,A,B。
我目前正在运行一个相当可怕的实现。我存储一长串边缘,它们(可能)连接的节点持有四个值,其重量值和节点本身的位置。每次请求时,我都会循环整个列表。
我正在用C++写这篇文章,STL的某些部分可以帮助加快速度吗?另外,如何避免重复数据?节点位置当前在五个对象中。该节点本身和四个节点表示与它的连接。
总之,我想帮助:
- 可以这样的方式来构造,使得没有数据重复?
- 意识到这个问题?如果有任何这样的名字,告诉我,我可以谷歌的主题更多的信息。
- 快速算法总是很好。
假设边缘仅在网格位置之间正交连接,网格本身是正方形,则边缘的数量可以由2n(n + 1)给出,其中n = sizex-1 = sizey-1 ...如果它帮助。来源:http://www.research.att.com/~njas/sequences/A046092 – Mizipzor 2009-07-24 21:10:02