Supposons que j'ai 400 étudiants (c'est dans une grande université) qui doivent faire un projet d'informatique et qu'ils doivent travailler seuls (pas de groupe d'étudiants). Un exemple de projet pourrait être laissé "implémenter un algorithme de transformée de Fourier rapide dans fortran" (je sais, cela ne semble pas sexy mais cela rend ma question plus simple). Je suis le correcteur et je veux envoyer des routines pour vérifier s'il y a des groupes d'étudiants qui ont proposé une implémentation qui est "trop similaire pour être écrite de manière vraiment indépendante".
Il s'agit d'une recherche non supervisée de clusters. Je pense que la question porte davantage sur les attributs à utiliser que sur l'algorithme de clustering à utiliser. La première chose que je ferais est un histogramme lettre par lettre. Idéalement, puisque les tricheurs sont plus intelligents que cela, j'essaierais éventuellement des permutations aléatoires bien choisies de lettres pour voir s'il existe une bonne correspondance de l'histogramme des lettres (avec permutation). Aussi que ceux qui n'explorent pas la structure du code, seulement la distribution marginale des lettres ... quelle solution avez-vous? Existe-t-il des logiciels ou des packages dédiés à ce problème? (En fait, à l'époque, les professeurs d'informatique affirmaient qu'ils avaient ce type d'outil, mais je soupçonne maintenant qu'ils avaient quelque chose de très simple)
Je suppose que l'avocat des développements logiciels a également ce type de problèmes (pas avec 1000 étudiants, mais avec 2 gros codes ... ce qui rend les choses plus difficiles)?
la source
Du monde de l'anti plagiat, je suis déjà tombé sur la notion de "Graph Isomorphism". Vous pouvez peut-être y jeter un coup d'œil aussi.
LCS - La plus longue séquence commune est également possible. Mais essayez de comparer toutes ces solutions et voyez ce qui est le meilleur :)
la source