Сравнение исходных текстов программ путем выравнивания последовательностей токенов
В настоящее время весьма актуальна проблема обнаружения заимствований в текстах. В данной работе был модифицирован один из известных алгоритмов выравнивания последовательностей биополимеров для того, чтобы сравнивать исходные тексты программ и выявлять в них похожие фрагменты. Входными данными этого алгоритма являются исходные тексты программ, которые рассматриваются как последовательности символов. Лексические домены при этом соответствуют алфавиту имволов, составляющих эти последовательности. Алгоритм был реализован в виде программы, его работа продемонстрирована на фрагментах кода, написанных на языке Scheme. В статье обсуждаются перспективы и ограничения применения алгоритма.
Авторы
Тэги
Тематические рубрики
Предметные рубрики
В этом же номере:
Резюме по документу**
Сравнение исходных текстов программ путем выравнивания…
УДК 004.02
Сравнение исходных текстов программ путем
выравнивания последовательностей токенов
А.В. Дубанов
МГТУ им. <...> В данной работе был модифицирован один из известных алгоритмов выравнивания
последовательностей биополимеров для того, чтобы сравнивать исходные
тексты программ и выявлять в них похожие фрагменты. <...> Лексические домены при
этом соответствуют алфавиту символов, составляющих эти последовательности. <...> Алгоритм был реализован в виде программы, его работа продемонстрирована
на фрагментах кода, написанных на языке Scheme. <...> Ключевые слова: заимствование кода, выравнивание последовательностей,
наибольшая общая подпоследовательность, динамическое программирование, лексический
анализ, функциональное программирование. <...> Проблема поиска некорректных заимствований (в том
числе в исходных кодах программ) является весьма злободневной задачей <...> В практике кафедры «Теоретическая информатика и компьютерные
технологии» эта задача систематически возникает при
проверке домашних заданий, результаты которых должны быть представлены
в виде программ на языках программирования высокого
уровня, и имеет целью выявление случаев «списывания». <...> Для решения
этой задачи требуется разработать средства для сравнения исходных
текстов, позволяющие находить похожие или идентичные фрагменты
в исходных кодах программ, оценивать степень обнаруженного сходства
и наглядно представлять результат сравнения. <...> Очевидно, что такая задача является обобщением задачи нахождения
наибольшей общей подпоследовательности в двух последовательностях
символов. <...> Различные методы нахождения наибольших общих
или идентичных подпоследовательностей в исходном коде реализованы
в ряде компьютерных программ «антиплагиата», наиболее известной
из которых является MOSS [2]. <...> Среди удачных приемов следует отметить сравнение
не отдельных литер, а токенов. <...> Это позволяет сделать <...>
** - вычисляется автоматически, возможны погрешности
Похожие документы: