숫자의 1 차원 배열이 있습니다. 배열 길이와 배열의 숫자 값은 모두 임의입니다. 숫자 값에 따라 배열을 k 개의 파티션으로 나누고 싶습니다. 30 %/30 %/20 %/20 %, 즉 상위 30 % 값, 다음 30 % 등으로 분산 된 4 개의 파티션을 원한다고 가정 해 봅시다. k와 분포의 백분율을 선택합니다. 또한 동일한 숫자가 배열에 두 번 이상 나타나면 두 개의 다른 파티션에 포함되어서는 안됩니다. 즉 위의 분배 비율은 엄격하지 않고 원하는 경우 "목표"또는 "시작 지점"입니다.숫자 클러스터링/파티셔닝 알고리즘
예를 들어, 내 배열이 ar = [1, 5, 5, 6, 7, 8, 8, 8, 8, 8]
이라고 가정 해 봅니다.
난 k = 4
선택하고 숫자 pA = pB = pC = pD = 25%
비율로 파티션 A, B, C 및 D에 분산되어야한다.
내가 위에서 준 제약을 감안할 때, 결과 파티션이 있어야한다 : 발생하는 (달성/수정) pcA = 10%, pcB = 20%, pcC = 20%, pcD = 50%
비율 내가 수정 된 K-이 필요하다는 것을 날 것으로 보인다와
A = [1] B = [5, 5] C = [6, 7] D = [8, 8, 8, 8, 8]
표준 알고리즘이 내 백분율 및/또는 동일한 값이 둘 이상의 클러스터/파티션에있을 수 없다는 요구 사항을 준수하지 않기 때문에 알고리즘을 의미합니다.
그래서 이런 종류의 클러스터링을위한 알고리즘이 있습니까?
4 개의 파티션을 지정하고 배열이 [1, 1, 1, 1, 1, 1, 8] 인 경우 어떻게됩니까? – Femaref
먼저 요구 사항을 명확하게하기 위해 몇 가지 예제를 만들어야합니다. 예를 들어'ar = [1,2,3,4,5,6,7,8,9,10]'일 때 k = 4, 25 % 분포에 대해 무엇을 기대합니까? –
특정 파티셔닝이 목표에 얼마나 근접했는지를 정량화하기위한 측정 방법을 정의해야합니다. 그러한 조치 없이는 어떤 솔루션이 "최상"인지 알 수 없습니다. 순진 방식 (원래 비율에 따라 파티션을 나누고 제약 조건을 수용하기 위해 파티션 경계를 이동)은 항상 솔루션을 제공 할뿐입니다. 얼마나 좋은지 모릅니다. – fmr