2012-01-17 3 views
0

내 응용 프로그램에 계속해서 늘어나는 번호 체계를 구현하는 방법에 대한 제안이 필요합니다. 내 응용 프로그램은 정점이 정수로 고유하게 열거 된 그래프를 작성합니다. 현재 직면하고있는 문제는 int 또는 long으로 표현할 수있는 최대 숫자 인 이며 그래프에 적용 할 수있는 꼭지점 수의 상한선을 나타냅니다.계속 증가하는 번호 체계 구현

모든 의견을 환영합니다.

감사

+2

많은 언어가 임의 정밀도 정수를 나타내는 BigInteger 형식 또는 클래스를 지원합니다. 어떤 언어를 사용하고 있습니까? 당신이 다루는 가치의 범위는 무엇입니까? – templatetypedef

+0

@templatetypedef, 내 응용 프로그램은 C++로 작성되었습니다. 이러한 번호 매기기 시스템은 상한이 없어야 응용 프로그램에서 메모리가 충분하면 영원히 새로운 정점을 생성 할 수 있습니다. –

+0

그래프에 몇 개의 정점이 있습니까? 그래프에 모서리가 없으면 실제로 정수가 모두 소진되기 전에 메모리 부족 현상이 발생할 수 있습니다. – DSM

답변

1

를 사용하여 64 비트 정수 (자바 : 긴, C/C++ : 오래 오래).

어쨌든 2^63 그래프 노드를 저장할 메모리가 충분하지 않으므로 더 이상 필요하지 않습니다.

기억 : 모든 노드가 자체 인덱스를 저장하는 경우 첫 번째 충돌을 얻기 전에 32 비트 인덱스 변수를 사용하려면 16GB 메모리가 필요합니다.

+0

16 GB는 하이 엔드 클러스터에 비해 그리 크지 않으며 대부분의 정점은 프로그램 실행이 진행됨에 따라 파괴됩니다. –

+0

상황이 조금 바뀝니다. 하나; 카운터가 끝날 때까지 (비록 동시에 모두 필요하지 않더라도) 최소한 16Gb의 메모리까지 _write_해야합니다. – jakob

+0

그래프를 변경 한 횟수와 매번 변경 될 때마다 생성하는 노드의 수에 대한 상한을 알고 있습니까? – jakob