Sto provando a calcolare la complessità di NPath all'interno di una funzione, ma non sono sicuro di quali parti conto.
La mia comprensione è che sommerà:
- Se
- Else
- Altrimenti se
- Cambia
- Caso
- default
- Do
- Mentre
È corretto? O mi sto perdendo qualcosa?
Devi anche includere operatori come &&
||
e ? :
, poiché questi stessi possono produrre percorsi di esecuzione alternativi.
La complessità di NPath è la somma delle possibili rotte attraverso il tuo codice (ignorando i cicli).
La complessità dipende quindi dalla struttura del tuo codice piuttosto che dai token:
if (x) {
if (y) {
// Do something
} else {
// Do something else
}
} else {
// Do something even more else
}
Ha 3 possibili percorsi che possono essere eseguiti, in base ai valori di x e y.
Man mano che nidifichi più profondamente le strutture di controllo, il numero di possibili percorsi aumenta esponenzialmente.
Sfiorare questo codice: link darà un'idea della complessità del calcolo della complessità: -)
Leggi altre domande sui tag optimization