Załóżmy, że mam 400 studentów (na dużym uniwersytecie), którzy muszą wykonać projekt informatyczny i że muszą pracować samodzielnie (bez grupy studentów). Przykładem projektu może być „wdrożenie algorytmu szybkiej transformacji Fouriera w fortranie” (wiem, że to nie brzmi seksownie, ale to upraszcza moje pytanie). Jestem korektorem i chcę wysyłać procedury, aby sprawdzić, czy istnieją grupy studentów, które zaproponowały wdrożenie, które są „zbyt podobne, aby można je było naprawdę samodzielnie napisać”.
Jest to bez nadzoru wyszukiwanie klastrów. Myślę, że pytanie dotyczy raczej tego, które atrybuty użyć, a nie jakiego algorytmu klastrowania użyć. Pierwszą rzeczą, którą bym zrobił, to histogram litera po literze. Idealnie, ponieważ oszuści są mądrzejsi, w końcu spróbuję dobrze dobranych losowych kombinacji liter, aby sprawdzić, czy istnieje dobre dopasowanie histogramu litery (z permutacją). Również, że nie badają struktury kodu, tylko marginesowy rozkład liter ... jakie masz rozwiązanie? czy istnieje oprogramowanie lub pakiety dedykowane temu problemowi? (właściwie w dawnych czasach nauczyciele informatyki twierdzili, że mają tego typu narzędzie, ale teraz podejrzewam, że mieli coś bardzo prostego)
Wydaje mi się, że prawnik zajmujący się opracowywaniem oprogramowania ma tego typu problemy (nie z 1000 studentów, ale z 2 dużymi kodami ... co utrudnia sprawę)?
źródło
Ze świata antyplagiatowego wcześniej spotkałem się z pojęciem „Graph Isomorphism”. Może też na to spojrzysz.
LCS - Możliwa jest także najdłuższa wspólna sekwencja. Ale spróbuj porównać wszystkie te rozwiązania i zobacz, co jest najlepsze :)
źródło