Thema:
Re:Threadnapping: Programmierfrage (Logik) flat
Autor: _bla_
Datum:06.02.20 21:30
Antwort auf:Re:Threadnapping: Programmierfrage (Logik) von rash65

>>>1) Erstelle eine Liste mit allen in Frage kommenden Gutachtern für jeden Prüfling
>>>2) Erstelle gleichzeitig für jeden Gutachter eine Liste seiner Prüflinge
>>>3) Solange mind 1 Gutachter mehr Prüflinge hat als akzeptabel:
>>>Für jeden überlasteten Gutachter
>>>- Finde unter seinen Prüflingen den mit den meisten möglichen Gutachtern
>>>- Entferne den überlasteten Gutachter aus der Liste
>>>- Repeat mit dem jetzt am meisten überlasteten Gutachter bis alles gut ist
>>>
>>>gesendet mit m!client für iOS
>>
>>Damit kannst du in eine Endlosschleife geraten, bei der einzelne Prüflinge immer im Kreis hin und her verschiebst. Den Prüfling mit den meisten möglichen Gutachtern zu verschieben ist halt eine reine Heuristik, die nicht immer die wirklich notwendigen Verschiebungen durchführt.
>>----------------------
>>Gesendet mit M! v.2.7.0
>
>Prüflinge werden ja dich nicht verschoben. Es wird nur für jeden Prüfling die Liste der möglichen Gutachter immer weiter verkleinert bis nichts mehr geht. Das sollte halbwegs nahe an das perfekte Ergebnis rankommen und ist supereinfach umzusetzen.


Ah, falsch verstanden. Ich denke aber das führt trotzdem leicht in Sackgassen bspw.:

Schritt 1:
Gutachter -> Prüfling (alle Kapazität 2)
1 -> X A B
2 -> Y A C
3 -> Z B C

Alle Gutachter gleich überlastet, für A, B und C gibt es jeweils 2 Möglichkeiten.
Algorithmus entfernt bspw. B von Gutachter 1

Schritt 2:
1 -> X A
2 -> Y A C
3 -> Z B C

Gutachter 2 und 3 überlastet, für A und C gibt es jeweils 2 Möglichkeiten, Algorithmus entfernt C von Gutachter 2


Schritt 3:
1 -> X A
2 -> Y A
3 -> Z B C

Gutachter 3 ist überlastet, jedoch gibt es für Z,B und C keinen anderen möglichen Gutachter mehr. Dafür gibt es für A zwei Möglichkeiten. Die triviale Lösung

1 -> X A
2 -> Y C
3 -> Z B

findet dein Algorithmus nicht unbedingt. Du musst da ganz schnell noch zusätzliche Regeln einführen, was du entfernst, wenn es mehrere scheinbar gleichwertige Entfernungskandidaten gibt oder zusätzliche Schritte einführen, die bspw. nach Schritt 1, A fest zu Gutachter 1 zuweisen und aus allen anderen Listen entfernen und selbst dann gibt es vermutlich Fälle in denen es schief geht.


< antworten >