Original title:
Automata Theory Used to Detect Plagiarism
Translated title:
Automata Theory Used to Detect Plagiarism
Authors:
Beňuš, Alexej ; Havel, Martin (referee) ; Meduna, Alexandr (advisor) Document type: Bachelor's theses
Year:
2024
Language:
eng Publisher:
Vysoké učení technické v Brně. Fakulta informačních technologií Abstract:
[eng][cze]
{Bakalářská práce se zabývá hledáním a rozpoznáváním plagiátorství v programovacím jazyce C++. Jaké metody existují, které jsou nejefektivnější a zároveň ukazuje slabiny těchto metod. Samotný program je naprogramován v C++, s využitím nástroje Clang pro generaci abstraktních syntaktických stromů. Vygenerované stromy se nadále porovnávají různými metodami - statistickou, která počítá a porovnává počty programovacích konstrukcí, algoritmy pro řetězcové porovnávání jako Levenshteinova vzdálenost a nejdelší společný podřetězec a konečně porovnávání stromů, která se soustředí na metodu porovnávání pomocí hashování stromů. Hlavní zaměření práce bylo na strukturální porovnávání C++ programů. Je uvedeno a otestováno několik různých porovnávacích metod. Je také uvedeno nastavení dalších parametrů pro zpřesnění detekce. Po dokončení porovnání, je vypsáno skóre, které podle definované funkce rozhodne zda jsou soubory plagiátorství nebo nikoliv. Také jsou shrnuty některé problémy a slepé uličky v rámci implementace a detekce.
The bachelor's thesis addresses the detection and recognition of plagiarism in the C++ programming language. Which algorithms exist, which methods are the most effective and also showing their weaknesses. The program itself is coded in C++, utilizing Clang for the generation of abstract syntax trees. Generated trees are compared different techniques - statistic comparison utilizing counting and comparing number of coding constructs, string difference operations like Levenshtein distance and longest common substring and finally tree comparison operations which goes deep into comparison of trees using hashes. Main focus was on the structural comparison of C++ programs. Multiple comparison techniques are presented with testing and results. Additional parameters like minimum match size are also presented to make the comparison more precise. After comparison is done, score is presented and with defined functions it is shown if files are or are not plagiarism. Some problems with detection and implementation are also summarized in the text.
Keywords:
abstraktní syntaktické stromy; C++; Clang; detekce; Levenshteinova vzdálenost; plagiátorství; abstract syntax tree; C++; Clang; detection; Levenshtein distance; plagiarism
Institution: Brno University of Technology
(web)
Document availability information: Fulltext is available in the Brno University of Technology Digital Library. Original record: https://hdl.handle.net/11012/249401