Załóżmy, że otrzymaliśmy N zadań i pracowników K do wykonywania tych zadań. Ale do niektórych prac potrzebujemy 2 pracowników, podczas gdy dla niektórych potrzebujemy tylko jednego. Również pracownicy nie mogą wykonywać wszystkich zadań. Na przykład pracownik 1 może wykonywać zadania 1,2 i 5, a nie zadania 3 i 4. Także jeśli zatrudniamy pracownika 1 do wykonania zadania 1, to chcemy, aby wykonał zadania 2 i 5, ponieważ już mu zapłaciliśmy.Węgierski algorytm z wieloma zadaniami
Załóżmy na przykład, że mamy 5 stanowisk pracy i 6 pracowników. Do zadań 1,2 i 4 potrzebujemy 2 mężczyzn, natomiast do zadań 3 i 5 potrzebujemy tylko jednego. A oto lista zadań, które może wykonać każdy pracownik, i płaca, której potrzebuje.
Worker 1 can do jobs 1,3,5 and he requires 1000 dollars.
Worker 2 can do jobs 1,5 and he requires 2000 dollars.
Worker 3 can do jobs 1,2 and he requires 1500 dollars.
Worker 4 can do jobs 2,4 and he requires 2500 dollars.
Worker 5 can do jobs 4,5 and he requires 1500 dollars.
Worker 6 can do jobs 3,5 and he requires 1000 dollars.
Po trochę obliczeń i logicznego myślenia, możemy stwierdzić, że mamy do zatrudniania pracowników 1,3,4 i 5, co oznacza, że płaca minimalna musimy zapłacić to: 1000 + 1500 + 2500 + 1500 = 5500 dolarów.
Ale jak możemy znaleźć skuteczny algorytm, który wyprowadzi tę kwotę? To jakoś przypomina mi węgierski algorytm, ale wszystkie te dodatkowe ograniczenia uniemożliwiają zastosowanie go.
Czy rzeczywiście potrzebujesz rozwiązać ten problem? Wygląda to na zadanie domowe i próbujesz przeprowadzić złożoną optymalizację. Jeśli tak, zrób to powoli/prosto i włącz go. Podejrzewam, że ta dyskusja będzie złożona i/lub czasochłonna. –
@MooingDuck To nie jest zadanie domowe, to poprzednie pytanie konkursowe. – Stefan4024
"Jeśli zatrudnimy pracownika 1 do wykonania pracy 1, chcemy, aby wykonał pracę 2 i 5, ponieważ już mu zapłaciliśmy". Czy nie zapłaciłbyś mu osobno za każdą pracę? Czy możesz powiedzieć, że wykona wszystkie trzy prace za 1000 $? – Yay295