Hallo,
ich habe eine Algorithmus-Frage.
Folgendes Szenario:
Eine Anzahl von Personen, 22 Themen. Jede Person wählt mindestens 5 Themen aus, mindestens zwei davon müssen mit der Priorität "1" angegeben werden, die anderen können mit der Priorität "2" oder "0" angegeben werden.
Also könnte die SQL-Tabelle etwas so aussehen:
|ID|Name|#1|#2|#3|#4|#5|...|#22| //Kopf
|1 |Hans | |1 |2 |1 |0 | |2 | //Prioritäten,
| | = Thema nicht gewählt
|1| = erste Priorität
|2| = zweite Priorität
|0| = gewählt ohne Priorität
Nun geht es darum, die Personen möglichst so auf die Themen augzuteilen, dass:
-in allen Themen 16-22 Personen sind
-möglichst viele 1-en berücksichtigt werden
-möglichst keine Themen Personen zugeordnet werden, die dieses Thema überhaupt nicht oder nur mit 0 gewählt haben.
Ich habe mir folgenes Überlegt:
Zuerst wird von allen Themen die 1-en Anzahl gezählt, dann habe ich wie eine "Beliebtheitsfolge". Sollte es ein Fach mit gar keinen 1-en geben, werden in diesem Fach die 2-en gezählt und gerade fest zugeordnet. Die dann zugeordneten Personen werden in der Tabelle als "fest" gesetzt und alle Daten neu in das Skript geholt, es beginnt wieder von vorne...
Und wies weiter gehen soll weiss ich eben nicht
Wie würdet ihr das machen? Ich wäre sehr froh um Denkanstösse und möglichst auf dieses Szenario bezogene Algorithmen! (Sprache egal, ich werde es in SQL/php realisieren)
Liebe Grüsse und vielen Dank,
michi
ich habe eine Algorithmus-Frage.
Folgendes Szenario:
Eine Anzahl von Personen, 22 Themen. Jede Person wählt mindestens 5 Themen aus, mindestens zwei davon müssen mit der Priorität "1" angegeben werden, die anderen können mit der Priorität "2" oder "0" angegeben werden.
Also könnte die SQL-Tabelle etwas so aussehen:
|ID|Name|#1|#2|#3|#4|#5|...|#22| //Kopf
|1 |Hans | |1 |2 |1 |0 | |2 | //Prioritäten,
| | = Thema nicht gewählt
|1| = erste Priorität
|2| = zweite Priorität
|0| = gewählt ohne Priorität
Nun geht es darum, die Personen möglichst so auf die Themen augzuteilen, dass:
-in allen Themen 16-22 Personen sind
-möglichst viele 1-en berücksichtigt werden
-möglichst keine Themen Personen zugeordnet werden, die dieses Thema überhaupt nicht oder nur mit 0 gewählt haben.
Ich habe mir folgenes Überlegt:
Zuerst wird von allen Themen die 1-en Anzahl gezählt, dann habe ich wie eine "Beliebtheitsfolge". Sollte es ein Fach mit gar keinen 1-en geben, werden in diesem Fach die 2-en gezählt und gerade fest zugeordnet. Die dann zugeordneten Personen werden in der Tabelle als "fest" gesetzt und alle Daten neu in das Skript geholt, es beginnt wieder von vorne...
Und wies weiter gehen soll weiss ich eben nicht
Liebe Grüsse und vielen Dank,
michi