Предположим, у меня 400 студентов (это в большом университете), которые должны заниматься компьютерными проектами, и что они должны работать в одиночку (без группы студентов). Примером проекта может быть «реализация алгоритма быстрого преобразования Фурье в Фортране» (я знаю, это не звучит сексуально, но это упрощает мой вопрос). Я корректор, и я хочу отправить процедуры, чтобы проверить, есть ли группы студентов, которые предложили реализацию, которые «слишком похожи, чтобы быть действительно независимыми».
Это неконтролируемый поиск кластеров. Я думаю, что вопрос больше в том, какие атрибуты использовать, а не в том, какой алгоритм кластеризации использовать. Первое, что я бы сделал, - это гистограмма по буквам. В идеале, так как читеры умнее этого, я бы в конечном итоге попробовал правильно подобранные случайные перестановки букв, чтобы посмотреть, существует ли хорошее совпадение гистограммы букв (с перестановкой). Кроме того, те, кто не изучает структуру кода, а только предельное распределение букв ... какое решение у вас есть? Существуют ли программы или пакеты, предназначенные для этой проблемы? (на самом деле в мои старые времена преподаватели информатики утверждали, что у них есть такой инструмент, но теперь я подозреваю, что у них было что-то очень простое)
Думаю, у юриста из разработчиков программного обеспечения тоже есть проблемы такого типа (не с 1000 студентами, а с двумя большими кодами ... что еще сложнее)?
источник
Из мира анти-плагиата я раньше сталкивался с понятием «Изоморфизм графов». Может быть, вы тоже можете посмотреть на это.
LCS - возможна также самая длинная общая подпоследовательность. Но попробуйте сравнить все эти решения и посмотреть, что лучше :)
источник