2012-11-02 2 views
3

음 일반적으로 해시 함수가 고유 번호를 생성하는지 궁금합니다. 대략적인 비교에 사용할 수있는 해시 함수가 있습니까? 내가 패턴 인식에 대해 생각하고 있기 때문에비교를위한 해시 함수

그래서 예를

6 7 8 9 10 11 23 40 10 
5 8 10 9 9 12 24 40 20 would match 

25 7 12 9 10 12 90 90 would not match 

위해 나는이 궁금해하고있다. 찾을 수있는 일치율을 줄 수있는 수학이 있는지 궁금합니다. C#을 프로그래밍 언어로 사용.

약간의 설명, 먼저 내가 잡으려는 것의 동의어를 설명하겠습니다. 물방울이 떨어지지 만 일정한 흐름이 아님을 상상해보십시오. 측정 도구 또한 완벽하지 않습니다. 그래서 지금은 물방울의 차이를 타이밍을 내리고 있습니다. 이것은 일련의 측정입니다. 19 ~ 25 개의 작은 물방울을 말합니다. 예를 들어, 카메라를 가지고 촬영 한 적이있는 그러한 시리즈를 한 번에 측정 할 수 있습니다.

다음 시리즈가 시작될 때이 "시리즈"를 가지고있는 것을 알고 싶습니다. 시리즈가 서로 다르거 나 같거나 시리즈 간 시간차가있을 수 있습니다. 측정 도구는 시작이나 끝을 감지하지 못합니다. 시리즈에서는 한 번에 19 또는 25 회의 측정을 수행합니다.

나는이 방향, 어쩌면 퍼지 논리, 신경망 patern 탐지, 거리 벡터와 함께 갈지 모르겠다. 거기에 많은 방법으로 솔기가 있지만, 나는 더 단순한 무언가가 될 줄 알았는데 (나는 생각하고 있었다. 해시 같은 것이지만 어쩌면 다른 것임).

+0

내가 거기에이 작업을 수행 할 수있는 퍼지 로직 알고리즘이있을거야,하지만 난 해싱 당신을 도울 것입니다 생각하지 않습니다. 이것은 저렴한 알고리즘 (아마도 해싱만큼 싸지는 않습니다)이 될 수는 없습니다 – corsiKa

+1

정수를 엄격하게 사용하는 경우 거리 계산식의 일부 형식을 사용하여 두 점 사이의 거리를 계산하고 인쇄하는 것이 좋습니다. 해시는 데이터의 세계적으로 유일한 지문을 만드는 데 사용되며 유사한 입력을 비교하면 대부분의 해시가 적용되는 것에 위배됩니다. – Grambot

+4

해시 함수는 일반적으로 비슷한 데이터가 가능한 한 멀리 해시되도록 설계됩니다. 그것은 당신이 찾고있는 알고리즘이 아닙니다. – Bobson

답변

0

해시 함수는 특정 값을 식별하는 데 사용할 수 있습니다 (고유하지 않음). 그것들은 일의가있는 것이 보증되지 않습니다 (더 좋은 말로, 어떤 다른 값은 동일한 해시 코드를 가질 것이라는 보장이 있습니다). 값의 작은 편차는 결과적으로 완전히 다른 해시 코드가됩니다 (@Bobson이 이미 언급했듯이). 해시 코드의 또 다른 용도는 일정 시간에 두 값의 동등성을 찾는 것입니다.

값을 살고있는 도메인을 알고 있으면 원하는대로 할 수있는 해시 코드 함수를 디자인 할 수 있습니다.하지만이를 위해서는 수학적 배경이 필요합니다.

내가 아는 한 예제에 대한 해시 함수는 없습니다.

여기에 정수에 대한 또 다른 아이디어가 있으며, 10의 모듈러스 연산을 사용하고 각 숫자 사이의 절대 차이를 계산하십시오. 이렇게하면 '차이'가 아닌 두 숫자 사이의 '거리'를 계산할 수 있습니다. 나는 한 번 비슷한 문자열을 서로 가까이에 문자열을 찾을 않았다.

일부 의사 코드 :

int Distance(int x, int y) 
{ 
    int result = 0; 
    while ((x > 0) && (y > 0)) 
    { 
     result += abs(x%10 - y%10); 
     x /= 10; 
     y /= 10; 
    } 
    return result; 
} 

void Caller() 
{ 
    int distance = Distance(123, 456); 

    if (distance == 0) write("x and y are equal"); 
    else write("the relative distance between x and y = " + distance.ToString())' 
} 
+0

왜 modulo 10?을 궁금해합니다. 나는 modulo를 약간 생각했지만 예를 들면 다음과 같습니다. 68 72가 일치하지 않을 수 있지만 72 76이 일치하지만, patern 검색에 사용할 수 있는지 궁금 해서요. 일련 번호와 비슷합니다. 일부 센서 판독 값을 사용하고 패턴을 감지 할 수 있는지 궁금합니다. – user613326

+1

@ user613326 - http://math.stackexchange.com/에서 정수 세트의 패턴 검색을위한 좋은 알고리즘을 찾으러가는 것이 좋습니다. – Bobson

+0

@ user613326 모든 기본 작업이 수행됩니다. 10은 아주 자연스럽게 나온다. 또 다른 할 일은 가장 중요한 ditig로부터의 거리만큼 숫자 사이의 차이를 가중하는 것입니다. 기준과 동일한 인수로 가중치를 계산하면 거리가 차이와 같아집니다 (따라서이 알고리즘의 목표를 우회합니다.) – PapaAtHome