여러 날의 과제 문제


10

과제 문제로 줄일 수있는 문제가 있습니다. (이전 질문에서 나는 그것을 수행하는 방법을 발견했습니다.)

이것은 비용 함수 c ( i , j ) 뿐만 아니라 에이전트 세트 와 태스크 세트를 가지고 있음을 의미 합니다 . 총 비용이 최소화되도록 과제를 찾아야합니다.(나는,제이)

헝가리어 알고리즘은 최소한의 최적의 솔루션 찾을 수 영형(4) . 나에게 좋은 소리.

나의 새로운 문제는 : 주어진 일수가 있습니다. 나는 모든 과제가 매일 수행 되고 어떤 요원도 동일한 과제를 두 번 수행하지 않도록 매일 과제 할당 문제를 해결해야한다 .

내가 시도한 것 : 매일 헝가리어 알고리즘을 별도로 실행하고 전날의 결과를 기반으로 가능한 조합 수를 제한 할 수 있습니다. 그러나 이것은 나중에 우리를 곤경에 빠지게 할 것인데, 아마도 가능한 해결책을 찾는 것이 불가능할 것입니다.

또 다른 아이디어는 현지 검색을 통합하여 전날의 의사 결정을 변경하는 것입니다. 그러나 나는 우리가 이것에 의존 할 수 없다고 생각합니다.

내가 직면해야 할 문제 사례는 어딘가에있을 것입니다 . 비용 행렬 는 동일한 값이 많이 있습니다 (예 : 대부분 1 또는 무한대, 2 또는 3에 불과). 따라서 헝가리어 알고리즘에는 하루 동안 다른 최적의 솔루션을 만들 수있는 공간이 많이 있습니다.|A|=|T|=500C(i,j)

몇 가지 아이디어를 듣거나 문제에 대한 좋은 해결책을 찾는 방법을 조언합니다. 미리 감사드립니다.


1
이것은 좋은 질문입니다! 최소 비용 흐름, Hall의 결혼 정리 및 최대 이분법 일치를 사용하는 것이 좋습니다.
피터 쇼어

답변:


6

다항식 시간에는이 방법이 있습니다. 알고리즘을 스케치합니다 (역순으로 ... 2 단계를 먼저 수행하고 1 단계를 2 단계로 수행).

  1. 우리는 일련의 찾아 낼 수있는 경우에 에이전트 작업 쌍 ( I , J를 ) 이러한 각 작업 정확히에서 케이 쌍을, 각 에이전트는 정확히에 케이 쌍을, 어떤 쌍은 한 번 이상, 우리가 찾을 수 있습니다 더 나타납니다 케이 할당 함께 이것들을 커버케이(i,j)kkk 에이전트 작업 쌍. 우리는 최대 이분자 매칭 알고리즘을 반복해서 사용하여 해당 이분 그래프에서 완벽한 매칭을 찾고 그래프에서 해당 할당을 제거합니다. 홀의 결혼 정리는 우리가 이것을 할 수 있도록 보장합니다.nk

  2. 최소 비용 흐름을 사용하여 1 단계에서와 같이 최소 비용의 에이전트 작업 쌍을 찾을 수 있습니다 . 소스와 네트워크 고려 , 싱크 t 작업의 각 에이전트와 각, 그리고 노드를. 용량이 k 이고 비용이 0 인 각 에이전트에 소스를 연결하십시오 . 용량 k 의 가장자리 와 비용이 0 인 각 작업을 싱크에 연결합니다 . 이제 용량 1 의 가장자리 와 비용 c ( i , j )를 사용하여 에이전트 i 를 태스크 j에 연결하십시오.nks케이0케이0나는제이1(나는,제이). 이 네트워크의 최소 비용 흐름은 통합적이어야합니다 (모든 용량이 통합적이므로 최적의 통합 최소 비용 흐름이 있음을 암시하는 이론이 있음). 따라서 각 에이전트 작업 에지의 흐름 이고 또는 1 . 흐름이 1 인 모서리 ( i , j )1 단계에서 쌍 세트를 형성합니다.01(나는,제이)1

최소 비용 흐름을 해결할 수있는 많은 알고리즘이 있습니다 . 선형 프로그래밍의 특별한 경우입니다. 크기 문제의 경우 스케치하는 알고리즘은 다항식 시간뿐만 아니라 실용적이어야합니다.


마지막 질문 : 2 단계의 최소 비용 흐름 알고리즘 (시작을 위해 사이클 취소를 선택했습니다)은 최적의 솔루션을 제공합니다. 1 단계의 최대 일치 알고리즘이이를 수행합니다. 이것이 반드시 전체 솔루션이 최적이라는 것을 의미합니까? 내 생각에 문제는 NP-Complete이라는 것이 었습니다.
Patrick Schmidt

1
전체 솔루션이 최적입니다. 조합 최적화 과정에서 할당하는 것이 좋은 질문입니다.
피터 쇼어
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.