[PYTHON] Comité du premier cycle du secondaire (version Réseau X)

problème

Sur la base des souhaits de l'élève, résolvez le «problème de l'affectation des membres de la classe» comme un problème d'appariement.

référence

politique

Cette fois, nous allons le résoudre comme un problème de correspondance. Pour ce faire, lorsque le nombre requis de membres est n, il est nécessaire d'augmenter le nombre de nœuds pour ce membre à n. De plus, comme il est défini sur Problème de correspondance maximum du poids maximum, le poids w est converti en "40 --w".

Résolvons

import networkx as nx

lst = [['Taprice', 'Comité de discipline', 10], ['Aoba', 'Représentant de classe', 10], ['Kaguya', 'Comité de discipline', 10],
       ['Chino', 'Représentant de classe', 10], ['miroir', 'Comité de discipline', 10],
       ['Taprice', 'Représentant de classe', 30], ['Aoba', 'Commission de la bibliothèque', 30], ['Kaguya', 'Commission de la bibliothèque', 30],
       ['Chino', 'Comité de discipline', 30], ['miroir', 'Représentant de classe', 30]]
need = {"Représentant de classe": 1, "Commission de la bibliothèque": 2, "Comité de discipline": 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))

production

{('Kaguya', 'Comité de la bibliothèque 1'),
 ('Chino', 'Représentant de classe 0'),
 ('Comité de la bibliothèque 0', 'Aoba'),
 ('Commissaire disciplinaire 0', 'miroir'),
 ('Commissaire disciplinaire 1', 'Taprice')}

J'ai eu la même solution que l'article original et ce qui précède.

Supplément

L'appariement est utilisé dans de nombreuses parties de la société. Par exemple, il est introduit sur le site de l'enseignant qui étudie le matching suivant (Stable matching) (https :: //qiita.com/SaitoTsutomu/items/2ec5f7626054f4b4de63)).

Référence: https://www.nii.ac.jp/faculty/informatics/yokoi_yu/

Cette fois, je l'ai résolu avec networkx.max_weight_matching (méthode Edmonds), mais lors de la résolution d'un problème réel, le modèle d'optimisation mathématique peut créer le modèle de manière plus flexible et [peut calculer plus rapidement](https: / /qiita.com/SaitoTsutomu/items/7fd199a95d78a6f3b741).

Recommended Posts

Comité du premier cycle du secondaire (version Réseau X)
Modèle SIR que même les élèves du premier cycle du secondaire peuvent comprendre
Créons un dispositif de factorisation automatique / Junior High School Mathematics Vol.1