양수 시퀀스를 n 개의 하위 시퀀스로 세그먼트 화하는 알고리즘을 찾고 있습니다. 각 부분 집합의 숫자 합계의 표준 편차가 최소화되도록각 부분 집합의 숫자 합계의 표준 편차를 최소화하기 위해 숫자 시퀀스를 n 개의 하위 집합으로 나누는 데 사용할 알고리즘
는는 각 서브 시퀀스의 번호 순서는 원래의 시퀀스 예
의 순서와 동일 할 필요가있다 :
가정하자 I는 시퀀스가 {1,1,1,1,1 , 1,10,1}로 나눌 수 있습니다.
최적의 솔루션은 {1,1,1,1,1,1}, {10,1} 일 것입니다.
첫 번째 하위 시퀀스의 합은 6이고 두 번째 하위 시퀀스의 합은 입니다. 두 숫자의 표준 편차는 ~ 3.5이며 이는 가능한 최저입니다.
시퀀스가 {4,1,1,1,1,6}인데 3 개의 서브 시퀀스로 나누고 싶다고 가정 해 보겠습니다.
최적의 솔루션은 {4}, {1,1,1,1}, {6}
입니다. 서브 시퀀스의 합은 4, 4, 6입니다.
3 개의 숫자의 표준 편차 ~ 1.15입니다. 가능한 한 가장 낮습니다.
가장 좋은 알고리즘은 시퀀스의 각 숫자의 누적 합계를 찾고 [totalSum/numSubsequences]의 각 간격으로 시퀀스를 나누는 것입니다.
예를 들어, 시퀀스 {4,1,1,1,1,6}이 주어진 경우, 각 시퀀스 번호의 누적 합계는 {4,5,6,7,8,14}입니다. 시퀀스의 모든 숫자의 합은 14이므로 3 개의 하위 시퀀스가 필요하므로 전체가 14/3 = 4.66 및 2 * 14/3 = 9.333333에 도달하면 시퀀스를 분할해야합니다.
그러나 누적 합계가 4.66 인 실제 위치는 없습니다. 첫 누적 합계는 4이고 다음 누적 합계는 5입니다. 따라서 반올림해야합니까, 반올림해야합니까? 이 경우 4로 반올림하면 최적의 솔루션이 제공되지만 항상 그런 것은 아닙니다. 내가 생각할 수있는 최선의 방법은 올림과 올림의 모든 조합을 시도하는 것이지만 O (2^numSubsequences) 복잡성을 초래합니다.
이것은 기존의 알고리즘을 적용 할 수있는 유형의 것으로 보이지만 내 인터넷 검색은 실패했습니다. 나는 Partition Problem을 알고 있는데 NP 완성형이지만 순서가없는 순서를 다루지 만 정렬되지 않은 집합을 처리합니다.
도움을 주시면 감사하겠습니다.
{1,1,1,1,1,1,1,2,2}는? {1,1,1,1,1,1,2}와 {10}에서 파티션을 나누고 더 낮은 표준 편차를 얻을 수 있습니까? 하위 시퀀스의 순서를 지정하지 않았거나 모든 하위 시퀀스를 지정하지 않았습니다. – florin
예, 주문을 보존해야합니다. 서브 시퀀스는 연결될 때 원래 시퀀스와 동일하도록 정렬되어야합니다. 따라서 하위 시퀀스를 다시 연결하여 원래 시퀀스를 형성 할 수 없으므로 예제가 작동하지 않습니다. 그것을 생각하는 또 다른 방법은 n-1 'splitpoints'를 원래의 순서로 찾는 것입니다. – kwyjibo
시퀀스의 길이는 얼마나됩니까? – EvilTeach