阿神2017-04-18 10:01:45
저는 알고리즘 바보이지만 사용 가능한 컴퓨팅 리소스가 있으므로 원래 아이디어(폭력적인 브레인리스 병렬 컴퓨팅 흐름)를 따르고 질문의 예를 수행하겠습니다.
으아악run.py
간단한 포인트 데이터 생성
으아악글쎄, 10000
작동하는 candidates.txt
과 1000000
bg_db.txt
작동하는
를 만들고 실행하여 시간을 확인합니다.
주제의 실제 데이터는 수천만행candidates.txt
이고 시간은 bg_db.txt
16*1000/(60*24) = 11.11
으로 단순 추정하면 11일입니다. 사용된 노드 구성
으아악
巴扎黑2017-04-18 10:01:45
@무합지존의 아이디어를 바탕으로 두 배의 공백과 4비트를 사용하여 4가지 유형의 문자를 표현하면 일관성 없는 문자 번호에 대한 후속 검색을 단순화할 수 있습니다.
伊谢尔伦2017-04-18 10:01:45
아이디어는 다음과 같습니다.
첫 번째: 예를 들어 4개의 서로 다른 데이터를 비교합니다.
**TGACGGGTGACACCCA(문자열의 특정 4개 위치에서 문자 삭제), 문자 길이를 다음으로 변경합니다. 16, 완전히 동일한 문자열 일치
맵 등을 사용하여 TGACGGGTGACACCCA를 키 값으로 저장하고, 차이점 4가지를 값으로 저장
두 번째: 3개의 서로 다른 데이터 비교
위 내용을 바탕으로 위의 값을 비교하여 길이가 3인 동일한 문자열을 비교합니다
등등
黄舟2017-04-18 10:01:45
4개의 문자를 00, 01, 10, 11로 단순화하는 아이디어를 제공하세요.
비교할 때 XOR을 먼저 수행하여 동일하면 00이 되고, 동일하지 않으면 01, 10, 11이 됩니다.
그런 다음 XOR 결과의 인접한 각 쌍에 대해 OR을 수행하면 00이 0이 되고 01, 10 또는 11이 1이 됩니다. 마지막으로 1의 수를 센다. 모두 비트 연산이므로 이론적으로는 매우 빠릅니다.
근데 제가 C를 못 배워서 코드를 못 올리네요.