Для оценки оригинальности решения задачи в программировании можно использовать следующие подходы:
- Экспертный анализ. 1 Преподаватель самостоятельно просматривает решение и выносит вердикт о качестве решения. 1
- Тестирование. 1 Исходный код запускают на заранее заданном наборе входных данных, а по завершении работы программы её вывод сравнивают с эталонным результатом. 1
- Анализ на основе семантической сети. 1 Для этого строят две семантические сети, основанные на программном коде, и вычисляют функцию подобия. 1 Она определяется как отношение суммы размеров подграфов, составленных из общих элементов семантических сетей, к сумме размеров исследуемых сетей. 1 Такой подход позволяет автоматически проверять решение на плагиат. 1
- Подсчёт метрик исходного кода. 2 С их помощью ищут дублирование программного кода, подсчитывая количество строк, вызовов функций, уровней вложенности блоков, используемых аргументов функции или локальных переменных и т. д.. 2
Также для оценки оригинальности решения задачи можно использовать алгоритмы на основе сравнения абстрактных синтаксических деревьев, токенов или графов зависимостей программ. 5