Complexity-based code embeddings
Rares Folea, Radu Iacob, Emil Slusanschi, Traian Rebedea
TL;DR
The paper addresses algorithm identification from code by exploiting dynamic runtime behavior rather than static representations. It introduces a framework built on the r-Complexity concept and Big $r$-Theta complexity classes to generate 36-dimensional dynamic code embeddings from perf-based metrics. Empirical results on Codeforces data show that both tree-based classifiers and XGBoost achieve high F1 scores for binary and multi-label labeling, validating the effectiveness of the approach. The work offers a generalizable pathway for mapping algorithms to embeddings, with potential applications in plagiarism detection, software optimization, and malware analysis.
Abstract
This paper presents a generic method for transforming the source code of various algorithms to numerical embeddings, by dynamically analysing the behaviour of computer programs against different inputs and by tailoring multiple generic complexity functions for the analysed metrics. The used algorithms embeddings are based on r-Complexity . Using the proposed code embeddings, we present an implementation of the XGBoost algorithm that achieves an average F1-score on a multi-label dataset with 11 classes, built using real-world code snippets submitted for programming competitions on the Codeforces platform.
