친구가 O (n^3) 시간보다 더 잘 해결할 수 있다고 말한 퍼즐을 나에게주었습니다.가장 겹치는 오버랩 작업 찾기
각각 시작 시간과 종료 시간이 설정된 n 개의 작업 집합 (매우 겹치는 부분)이 있으면 모든 작업에 해당 작업이 포함되거나 해당 작업과 겹치는 작업을 포함하는 가장 작은 하위 집합을 찾습니다.
최적의 솔루션은 가장 겹쳐져 있지 않은 겹쳐진 부분을 선택하여 솔루션 세트에 추가 한 다음 표시하고 겹치는 것입니다. 모든 작업이 표시 될 때까지 반복하십시오.
가 알아내는하는 일,이가 O을, 자국을 업데이트하기 위해, 작업이 선택 될 때마다 다시 수행한다 (N- (N^2) (O) 간단한 인접 행렬을 가장 도장이 overlappers이다 갖는다^3).
더 좋은 솔루션이 있습니까?
당신의 솔루션은 탐욕스럽고 언제나 사실이 아니며 (나는 실패한 사례를 줄 수 있음), 더 나은 복잡성으로 구현 될 수도 있습니다. –
@izomorphius 그것은 욕심이 많다. 그러나 나는 그것이 최적이 아닌 것을 증명할 수 없었다. 어떤 아이디어가 더 나은 복잡성을 가진 솔루션입니까? – kwiqsilver
나는 탐욕 스럽지만 그것이 정확하지 않다는 것을 안다. 예 : 간격 : (0, 2), (1, 4), (3,6), (5,8), (7, 10). 첫 번째 단계 간격 (1,4), (3,6), (5,8) 모두 두 가지를 모두 포함하므로 둘 중 하나를 선택할 수 있지만 가장 좋은 대답은 (1,4) 및 (5)를 선택하면됩니다. , 8). 대부분의 간격을 포함하는 간격이 고유하게 식별되는 예가 있지만 여전히 최상의 솔루션에는 포함되지 않지만 생각하기가 조금 더 어렵습니다. 당신이 주장한다면 나는 하나를 주려고 노력할 것입니다. –