[PYTHON] Junior High School Committee (Network X Version)

Problem

Lösen Sie auf der Grundlage der Wünsche des Schülers das "Problem der Zuweisung von Klassenmitgliedern" als passendes Problem.

Referenz

Politik

Dieses Mal werden wir es als passendes Problem lösen. Wenn die erforderliche Anzahl von Mitgliedern n beträgt, muss dazu die Anzahl der Knoten für dieses Mitglied auf n erhöht werden. Da es auf Maximales Gewicht, maximales Übereinstimmungsproblem eingestellt ist, wird das Gewicht w in "40 - w" konvertiert.

Lass uns lösen

import networkx as nx

lst = [['Taprice', 'Disziplinarausschuss', 10], ['Aoba', 'Klassensprecher', 10], ['Kaguya', 'Disziplinarausschuss', 10],
       ['Chino', 'Klassensprecher', 10], ['Spiegel', 'Disziplinarausschuss', 10],
       ['Taprice', 'Klassensprecher', 30], ['Aoba', 'Bibliothekskommission', 30], ['Kaguya', 'Bibliothekskommission', 30],
       ['Chino', 'Disziplinarausschuss', 30], ['Spiegel', 'Klassensprecher', 30]]
need = {"Klassensprecher": 1, "Bibliothekskommission": 2, "Disziplinarausschuss": 2}
g = nx.Graph()
lst2 = [(s, f'{c}{i}', 40 - w) for s, c, w in lst for i in range(need[c])]
g.add_weighted_edges_from(lst2)
print(nx.max_weight_matching(g, maxcardinality=True))

Ausgabe

{('Kaguya', 'Bibliotheksausschuss 1'),
 ('Chino', 'Klassenvertreter 0'),
 ('Bibliotheksausschuss 0', 'Aoba'),
 ('Disziplinarkommissar 0', 'Spiegel'),
 ('Disziplinarkommissar 1', 'Taprice')}

Ich habe die gleiche Lösung wie der Originalartikel und der oben genannte.

Ergänzung

Matching wird in vielen Teilen der Gesellschaft eingesetzt. Zum Beispiel wird es auf der Website des Lehrers vorgestellt, der das Matching unten studiert (Stable Matching) (https: :) anstelle von Weight Matching. //qiita.com/SaitoTsutomu/items/2ec5f7626054f4b4de63)).

Referenz: https://www.nii.ac.jp/faculty/informatics/yokoi_yu/

Dieses Mal habe ich es mit networkx.max_weight_matching (Edmonds-Methode) gelöst, aber bei der Lösung eines echten Problems kann das mathematische Optimierungsmodell das Modell flexibler erstellen und [schneller berechnen](https: / /qiita.com/SaitoTsutomu/items/7fd199a95d78a6f3b741).

Recommended Posts

Junior High School Committee (Network X Version)
SIR-Modell, das auch Schüler der Mittelstufe verstehen können
Lassen Sie uns ein automatisches Faktorisierungsgerät / Junior High School Mathematics Vol.1 erstellen