0
해시 테이블 조회에 사용하기 위해 빠른 해시 함수를 찾고 있습니다. 입력은 재귀 양식 f (x, y)의 표현식으로 구성됩니다. 여기서 x와 y는 두 개의 인수 또는 변수가있는 함수가 될 수 있습니다. 몇 가지 예 :특정 시나리오에 대한 빠른 해시 함수
- B (b (b (b, b), b), b)
- foo에 (바, 바)
- A (A (A, a)는 (a (a, a), a))
이 표현식은 최대 200.000 자까지 입력 할 수 있지만 수천 개의 표현식을 동일한 테이블에 해시해야합니다.
입력 내용은 표현식의 처음 10 자와 전체 표현식의 길이로만 구성됩니다. A, B 및 C는 각각 541, 733 및 941입니다. 이 알고리즘은 몇 가지 최악의 경우 (첫 번째 예제와 같이 길고 반복적 인 중첩 루프)에 대해 100ms 미만으로 실행되지만 많은 충돌이 발생하고 O (1) 검색에 더 가까워 질 수 있는지 알고 싶습니다 이 경우에도 마찬가지입니다.
왜 당신이 그것을 읽을 때 (모든 문자를 사용하여) 전체 식의 해시를 계산하지? 읽는 것은 어쨌든 모든 문자를 볼 것을 요구합니다. – kraskevich
등식 접두사 또는 테이블 용량이 부족하여 충돌이 있습니까? 표준 문자열 해시를 사용하지 않는 이유가 있습니까? –
@ILoveCoding 'getline'또는 이와 유사한 것을 사용하여 읽을 수 있습니다. 따라서 내부적으로 모든 문자를 반복합니다. – BartoszKP