2013-03-05 3 views
2

나는 예를 들어, 여러 클래스 속성의 고유, 사람이 읽을 수있는 ID를 만들 싶습니다 독특한 사람이 읽을 수있는 ID는

Class A contains property c,d,e 
Class B contains property f,g 

그래서 하나 개의 ID가

c=1 
d=2 
e=3 
f=4 
g=5 

동안을 나타내는 것 다른 ID가 나타납니다

c=7 
d=3 
e=4 
f=0 
g=11 

인수의 경우 속성은 정수입니다 (EDIT : 범위 내에서 편집 0에서 1000까지). 실제로 실제로는 수레와 현이 될 수도 있습니다.

나는이 값들을 사람이 읽을 수있는 짧은 ID로 결합하는 방법을 찾고 있습니다. 또한 ID에서 속성을 재구성 할 수 있기를 원합니다. 또한 가능하다면 속성의 작은 차이로 인해 ID의 차이가 작아야합니다. 여기

내가 생각 것이 무엇 예입니다 작은 & 사람이 읽을 수 : H5RT33

은 그런 일에 대한 알고리즘이 있습니까?

편집 : 나는 "당신이 읽을 수있는 것은 무엇입니까?"와 같은 질문을 예기하면서 ID 예제를 적었습니다. 설명하기가 어렵다는 것을 알게되었습니다. 예를 들어 MD5는 그렇지 않지만 "트리"와 같은 실제 단어는 필요하지 않습니다. 주어진 ID는 중간에 다소 있지만 6 자로 제한하거나 대문자와 숫자로만 제한하지 않았습니다.

또한 "정수는 0-1000 사이의 정수"를 의미하는 동안 정수에 대해 이야기했습니다.

답변

3

원본 변환과 변환의 정보 내용이 동일하다는 것을 의미하는 역전승 변환 (bijection)이 필요합니다. H5RT33에서와 같이 대문자 만 사용하는 6 자리 영숫자 코드는 36 가능한 값을가집니다. 즉, 정보의 비트는 6 * log236 = 31.1입니다. 반면에 5 (32 비트) 정수에는 5 * 32 = 180 비트가 포함되어 있습니다 (물론 정수에 제한된 범위가없는 경우는 제외). 그리고 꽤 많은 정보를 담고있는 부동 소수점 숫자와 문자열을 인코딩하고 싶다고합니다.

엄격한 정보 이론적 인 근거에서 모든 요구 사항을 충족하는 데 어려움을 겪을 것입니다.

+0

감사합니다. bijection 키워드는 나를 올바른 방향으로 인도합니다. 나는 ID 형식에 관한 나의 질문을 편집 할 것이다. – marimba

관련 문제