Complexitatea algebrică este o ramură a teoriei complexității computaționale care se ocupă de polinoame. A fost creată în principal datorită lucrării lui F. Strassen [1] [2] [3] .
Complexitatea algebrică a unui polinom , care se notează cu , este lungimea celui mai scurt program neramificat care calculează [4] . Un program non-ramificat este o secvență de funcții definită după cum urmează:
, … , …unde și sunt polinoame de gradul I. Lungimea unui program neramificat este numărul de termeni din secvența . Un program neramificat de lungime calculează un polinom dacă .
Se consideră operația de înmulțire a unei matrice pătrate cu elemente constante: printr-un vector .
Complexitatea aditivă a unei matrice pătrate este lungimea celei mai scurte secvențe de funcții care calculează produsul unui vector și un rând de tabel și sunt definite după cum urmează: , ..., , ... unde și sunt constante.
Clasa VP este mulțimea tuturor familiilor de polinoame pentru care . De exemplu, problema calculării determinantului unei matrice aparține clasei VP. Clasa de complexitate computațională VP este un analog algebric al clasei P din teoria complexității computaționale [6] .
O clasă VNP include o familie de polinoame dacă are o familie de polinoame din clasa VP astfel încât . Însumarea se efectuează pe toți vectorii de zerouri și unități de lungime și este egală cu valoarea coordonatei --a a vectorului e. De exemplu, problema calculării permanentei unei matrice aparține clasei VNP. Clasa de complexitate computațională VNP este un analog algebric al clasei NP din teoria complexității computaționale.