golang을 사용하여 약간 불완전한 이진 조각을 정렬 할 수있는 방법을 찾으려고합니다. 다음 4 개의 슬라이스는 모두 서로 다른 오프셋으로 올바르게 정렬됩니다. 그러나 모든 비트가 동일하지 않으므로 (아래에 표시) 원시 조각을 비교할 수 없습니다. 여기골란에서 정수의 여러 슬라이스 시퀀스 정렬
func main() {
// Match all three slices up (ignoring occasional errors)
s1 := []int16{0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1}
s2 := []int16{ /* */ 0, 1, 1, 0, 0, 0, 1, 1, 1, 1}
// ^ ^
s3 := []int16{0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1}
// ^
s4 := []int16{ /* */ 0, 0, 0, 1, 1, 1, 0, 0}
slices := make([][]int16, 3)
slices = append(slices, s1, s2, s3, s4)
offsets := forgivingSyncHere(slices)
}
그것은 당신의 목표는 당신의 "비용"을 최소화하는 것입니다 어디에 "비용"기능이 무엇인지에 따라 달라집니다 https://play.golang.org/p/zqJ_4qLc8O
일반적으로 [DNA 정렬] (https://en.wikipedia.org/wiki/Sequence_alignment)과 비슷한 문제입니다. 이러한 문제를 해결하는 알고리즘은 다소 복잡합니다. –