2017-09-15 3 views
0

편집 거리가 최소 인 높은 임의의 시퀀스 (4 개의 다른 문자를 기반으로하는 20 자 긴 시퀀스)를 만들기위한 프로그램/스크립트를 만들어야합니다. 모든 시퀀스. "높음"은 최소 100,000 개의 시퀀스가 ​​될 수 있지만 가능하면 최대 1 백만 개입니다.최소 편집 시간과 함께 무작위 순서의 높은 nr을 만듭니다. 편집 거리 시간이 효율적입니다.

랜덤 20 글자 시퀀스를 생성하고 각 시퀀스에 대해 시퀀스와 이미 생성되고 저장된 다른 모든 시퀀스 간의 편집 거리를 계산하기 시작했습니다. 새 시퀀스가 ​​내 임계 값을 통과하면 저장하고 그렇지 않으면 무시합니다.

이해 하시겠지만이 수치는 더 많은 시퀀스 수에 대해 매우 나쁘게 조정됩니다. 최대 10k까지는 괜찮 으면 좋겠지 만 100k를 얻으려고하면 번거로워지기 시작합니다.

실제로 시퀀스를 한 번 생성하고 출력을 저장할 필요가 있기 때문에 속도면에서 까다로운 것은 아니지만 현재이 속도로 1 백만 개를 만들 수는 없습니다.

시퀀스를 만드는 것과 같이 프로세스 속도를 높이기위한 대안을 생각해 보려는 시도는 최소 ED의 "블록"이어서 결합은하지만 어떤 해결책도 제시하지 못했습니다.

궁금한 점이 있으시면 누구나 최소한의 ED로 더 많은 시간을 효율적으로 만들 수 있도록 스마트 한 아이디어/방법을 구현할 수 있습니까?

건배 JB

이것은 위키, 그 수정 작업 거리가 세 삽입, 결실, 치환 중 하나 인 것
+0

이러한 시퀀스를 무작위로 사용해야하지만 편집 거리가 가까운 곳에 사용해야하는 이유에 대한 간단한 (간단한) 문맥이 있습니까? 다른 각도에서 문제를 다루는 것이 현재 솔루션을 최적화하는 것보다 더 효과적 일 수 있습니다. – Bilkokuya

+0

물론 편집 거리는 주어진 임계 값보다 커야합니다 (이 경우> 4). 컨텍스트는 시뮬레이션에서 사용되는 DNA 시퀀싱 "바코드"입니다. 시퀀스는 유사하지 않아야하지만 ED> ~ 4가 필요합니다. 단 하나 또는 두 개의 문자로 대체 (오류 도입은 시뮬레이션 중에 도입됩니다) 내 시퀀스 집합의 다른 시퀀스와 동일하게 만듭니다. –

답변

0

; 시작 문자열에서 수행됩니다. 왜 체계적으로 문자열을 최대 N 개 편집 한 다음 한도에 도달하면 중지 문자열을 생성하지?

세대별로 올바른 편집 거리를 확인할 필요가 없습니다. 무작위성을 위해 숫자를 만들어 셔플 할 수 있습니다.

+0

고마워요,하지만 질문의 초기 공식이 명확하지 않다고 생각합니다. "최소"대신 "최소"를 사용해야했는데, 미안합니다. 나는 첫 번째 문장을 편집했다. 저는 여러분이 그 문제를 해석하여 시작 문자열과 관련하여 출력을 편집 거리가있는 시퀀스로 만들고 싶다고 생각합니다. 그렇지 않습니다. 출력 세트의 각 시퀀스가 ​​다른 시퀀스의> 4 편집 거리보다 길기를 바랍니다. 세트에서 무작위로 시퀀스를 선택하면 4 ED보다 가까운 다른 시퀀스를 찾을 수 없습니다. 세트 –