10 진수를 2 진수 형식으로 변환하려고하지만 여전히 거리 정보를 유지하려고합니다. 유클리드 공간에서 10-2 = 8과 같은 이진 경우, 해밍 (1010-0010) = 1, 분명히 거리 정보가 많이 손실되었습니다. 10을 이진 형식으로 변환 할 수있는 가능한 방법이 있습니까? 그러나 해밍 거리 메트릭에서 거리 속성을 계속 유지합니까? 순진한 방법은 해밍입니다 (1111111111-0000000011) = 8 ...십진수를 이진 형식으로 변환하지만 거리 속성을 유지하는 방법은 무엇입니까?
답변
d(x,y) = |x-y|
의 비 음수 정수의 미터 공간에서 기본적으로 유일한 거리 보존 맵은 다음과 같은 비트 벡터의 미터 공간에 해당합니다. 해밍 거리.
d(x,0) = x
이므로 x
의 변환에 x
비트가 설정되어 있어야합니다. 마찬가지로 x<y
인 경우 x
의 변환에 설정된 비트는 y
의 변환에서 설정된 비트의 서브 세트 여야합니다.
그래서 여러분이 만든 것은 기본적으로 비트 벡터와 해밍 거리의 공간에서 작업해야하는 유일한 옵션입니다.
답장을 보내 주셔서 감사합니다. 실제로 정보를 잃지 않고 변환하는 최선의 방법이라고 생각합니다. 나는 약간의 거리를 잃을 수 있다고 생각하지만, 아마도 더 좋은 코딩 방법을 찾으려고 노력할 것이다. 고맙습니다. –
@Hx : 만약 당신이 이것을 수행함으로써 어떤 프로그래밍 문제를 해결하려했는지에 대한 별도의 질문으로 생각한다면, 당신은 유용한 반응을 얻을 것이라고 생각합니다. – Hurkyl
이진수로 변환하면 정보가 손실되지 않았습니다. 1010 - 0010은 여전히 1000입니다. 숫자 값 대신 1000의 popcount를 계산하여 정보를 잃었습니다. – Hurkyl