2012-01-17 56 views
0

我需要你的建议,关于如何为我的应用程序实现一个不断增加的编号系统。 我的应用程序建立一个图表,其顶点唯一枚举为 整数。 我目前面临的问题是可以用int或long表示的最大数字, 对图形可容纳的顶点数量造成上限。实现一个不断增加的编号系统

所有的意见都欢迎在这里。

由于

+2

许多语言都支持表示任意精度整数的BigInteger类型或类。你使用哪种语言?你正在处理的值的范围是什么? – templatetypedef 2012-01-17 11:13:53

+0

@templatetypedef,我的应用程序是用C++编写的。 这样一个编号系统需要没有上限,这样我的应用程序才能理想地生成新的顶点,只要内存足够。 – 2012-01-17 11:20:04

+0

你的图有多少个顶点?除非你的图表从不具有边缘,否则实际上你在用完整数之前可能会耗尽内存。 – DSM 2012-01-17 11:22:16

回答

1

使用64位整数(java的:长,C/C++:长长)。

您可能没有足够的内存来存储2^63个图形节点,所以您不需要更多。请记住:如果每个节点都存储自己的索引,那么在第一次碰撞之前,使用32位索引变量将需要16千兆字节的内存。

+0

16 GB对于高端集群来说并不是那么大,并且随着程序执行的进行,大部分顶点将被销毁。 – 2012-01-17 11:35:40

+0

这改变了一些情况。然而;你仍然需要写至少16GB的内存,直到你的计数器回绕(即使你不需要同时使用它们)。 – jakob 2012-01-17 16:00:54

+0

您是否知道更改图形的次数以及每次更改创建多少个节点的上限? – jakob 2012-01-17 16:06:20