Complessità computazionale

MPG

Utente Attivo
544
4
Ciao a tutti. Il prof ha iniziato a spiegare la complessità computazionale (sono in 4 superiore) vorrei chiedervi se c'è qualche manuale o dove posso cercare online per capire meglio l'argomento. Vi ringrazio.
 

MPG

Utente Attivo
544
4
Ho capito su google ovvio che ho già cercato ma poichè ci sono miriadi di link, magari qualcuno di voi sa dirmi dove si trova qualcosa di esauriente e ben spiegato con esempi. Grazie.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Di risorse ne trovi un sacco, alcune sono però piuttosto formali.
Guarda ad esempio qui:




Se hai domande in merito a qualcosa, chiedi.
 
  • Mi piace
Reazioni: Moffetta88 e MPG

MPG

Utente Attivo
544
4
Scusate la materia è un po' ostica abbiamo iniziato cosi (calcolo complessità in numero passi base)':

i=0
while (i<n)
I++


assegnato 1 a i=0 (assignamento esterno)
n+1 a i<n (numero di test)
n*1 a i++ (assignamento interno)
Passi base= 2n+2


Passando a questo
int i=0; j=0; 1+1
for int h=2, h<=h+1; h++) 1+(n+1) +n
{
while (i<n+2)
n+2
{cout <<i<<endl; 1
i++; 1
}
j++, n++; n--;
1+1+1
}

dovrebbe venire (non pero' secondo i miei conti)
2+1+ (n+1)+n+[n+3+(n+2)(1+1)+1+1+1]
non capisco l'n+3 da dove viene....


infine questo: (pongo ad esempio n=2)

i=1; 1
while (i<n*n+1) n+3
{
i++
n+2
}

il risultato dovrebbe venire 2n^2+2 a me viene 1+n+3+n+2 =2n+6
Post unito automaticamente:

In attesa di avere indicazioni vostre anche questi due:

esercizio con
i=0
while (i<n)
{ i=i+1
j=j*3+42

}


assegnato 1 a i=0
n+1 a i<n
2*n come assegnamenti interni: questo non lo capisco!!!!
********************

Infine
i=0
while (i*1<n)
i=i+1


abbiamo
1 (i=0)
√ n+1 (i*i<n) in effetti ad esempio per n=9 il ciclo è effettuato 3 volte= √ 9)
poi è assegnato √ n a i=i+1 perchè???????
 
Ultima modifica:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Inizio a risponderti ad alcuni... non mi è proprio tutto chiarissimo ciò che hai scritto, comunque. Mi aspettavo anche più approssimazioni senza contare le operazioni costanti.

Ad ogni modo:

i=0
while (i<n)
{ i=i+1
j=j*3+42

}

assegnato 1 a i=0
n+1 a i<n
2*n come assegnamenti interni: questo non lo capisco!!!!

2*n perchè all'interno del ciclo hai 2 assegnamenti, e li ripeti n volte. Quindi 2*n.

Infine
i=0
while (i*1<n)
i=i+1


abbiamo
1 (i=0)
√ n+1 (i*i<n) in effetti ad esempio per n=9 il ciclo è effettuato 3 volte= √ 9)
poi è assegnato √ n a i=i+1 perchè???????

Il costo di i=i+1 non può essere N in quanto l'operazione viene ripetuta sqrt n volte; quindi il costo effettivo è sqrt n * 1 (l'assegnamento).

i=1; 1
while (i<n*n+1) n+3
{
i++
n+2
}

il risultato dovrebbe venire 2n^2+2 a me viene 1+n+3+n+2 =2n+6

La i non viene incrementata solo N volte, ma n*n volte, quindi n^2.
 
  • Mi piace
Reazioni: MPG

MPG

Utente Attivo
544
4
Grazie tante veramente!
giusto per essere certo:
1) nella prima risposta i due assignamenti sono ovviamente
i=i+1
j=j*3+42

(scusa la banalità della domanda..)
2) nella terza dovrebbe essere cosi?:

i=1; 1
while (i<n*n+1) n+3
{
i++
n^2
}

Perchè non viene sempre 2n^2+2 o sbaglio ?


3) riesci a spiegarmi anche questo?
Passando a questo
int i=0; j=0; 1+1
for int h=2, h<=h+1; h++) 1+(n+1) +n
{
while (i<n+2)
n+2
{cout <<i<<endl; 1
i++; 1
}
j++, n++; n--;
1+1+1
}

dovrebbe venire (non pero' secondo i miei conti)
2+1+ (n+1)+n+[n+3+(n+2)(1+1)+1+1+1]
non capisco l'n+3 da dove viene....
 
Ultima modifica:

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili