2013-07-08 10 views
6

Der ungarische Algorithmus löst das Zuweisungsproblem in Polynomialzeit. Angesichts von Arbeitern und Aufgaben und einer n × n-Matrix, die die Kosten für die Zuordnung eines jeden Arbeiters zu einer Aufgabe enthält, kann er die kostenminimierende Zuweisung finden.Kann ich den ungarischen Algorithmus verwenden, um die maximalen Kosten zu finden?

Ich möchte die Wahl treffen für welche Kosten maximal ist? Kann ich das mit ungarischer oder ähnlicher Methode machen? Oder kann das nur exponentiell gemacht werden?

+0

was Ungarisch ist? – alvas

+1

@ 2er0 http://en.wikipedia.org/wiki/Hungarian_algorithm –

+0

danke für die Klarstellung =) – alvas

Antwort

3

Wie David sagte in dem Kommentar:

Multiply the cost matrix by -1 for maximization. 
10

Wikipedia sagt:

Wenn das Ziel die Zuordnung zu finden ist, der die maximal Kosten ergibt, das Problem verändert werden kann, um die Einstellung zu passen durch jeden durch die Kosten abgezogen mit den maximal Kosten Kosten ersetzen .

Also wenn ich richtig verstehe: unter all den Kosten, die Sie als Eingabe haben, finden Sie den maximalen Wert. Dann ersetzen Sie jede Kosten x durch max - x. Auf diese Weise haben Sie immer noch positive Kosten und Sie können den ungarischen Algorithmus ausführen.

Anders gesagt: Ungarisch versucht, die Zuweisungskosten zu minimieren. Wenn Sie also nach dem Maximum suchen, können Sie die Kosten umkehren: x -> -x. Einige Implementierungen (wissen nicht, ob alle oder irgendwelche) erfordern jedoch positive Zahlen. Die Idee ist also, jeder Kosten einen konstanten Wert hinzuzufügen, um positive Zahlen zu haben. Dieser konstante Wert ändert die resultierende Affektation nicht.

+0

kannst du das mit einem Beispiel erklären? – codersofthedark

+0

@UtxD meine letzte Änderung ansehen. Was verstehst du nicht? Ich habe momentan nicht die Zeit, ein vollständiges Beispiel zu schreiben und ich denke nicht, dass es notwendig ist. –

+0

Der Wikipedia-Eintrag sagt, dass Sie nichtnegative Kosten benötigen, aber das ist wahrscheinlich nicht wahr für die meisten Implementierungen (obwohl die resultierende Monotonitätseigenschaft für die Analyse geeignet ist). –

Verwandte Themen