Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR 200 Lite, lo smartphone economico per ritratti, selfie, e non solo. La recensione
HONOR 200 Lite, lo smartphone economico per ritratti, selfie, e non solo. La recensione
HONOR 200 Lite si presenta come uno smartphone completo e versatile a un prezzo molto competitivo. Caratteristiche interessanti sono il generoso display AMOLED da 2000 nits e la fotocamera principale da 108MP con tre lunghezze focali simulate per i ritratti. A coronare il pacchetto un'esperienza software completa grazie a MagicOS 8.0 e, in questo momento, una promozione lancio che permette di risparmiare 40€ sul listino ufficiale
MG4, due settimane al volante dell'elettrica popolare: pregi, difetti e autonomia
MG4, due settimane al volante dell'elettrica popolare: pregi, difetti e autonomia
Abbiamo guidato per circa due settimane la MG4 Electric, l'auto elettrica cinese del rinato marchio europeo, che offre specifiche interessanti ad un prezzo competitivo
Tre giorni in Finlandia con OnePlus Watch 2 Nordic Blue. La nostra prova a temperature estreme
Tre giorni in Finlandia con OnePlus Watch 2 Nordic Blue. La nostra prova a temperature estreme
Siamo volati a Helsinki, in Finlandia, per testare a fondo il nuovo OnePlus Watch 2 Nordic Blue Edition. L'orologio ci ha convinti durante i test invernali a Helsinki, grazie al design raffinato, alle prestazioni impeccabili, alla resistenza agli ambienti estremi e all'ottima autonomia garantita dalla modalità intelligente.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-10-2017, 18:19   #1
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
[C++] costo algoritmico

ciao,
non è per un compito in classe ma una verifica per un mio programma; sto decidendo se adottare questa soluzione in luogo di una ricorsiva ma volevo capirne il costo algoritmico. Non so però se ho messo i costi in modo corretto, n sta per quante volte viene eseguita la riga di codice, 1 per una sola volta.
Mi chiedo se alla fine il costo è n^2

Codice:
1: Struct *Nodo = PrimoNodoAlbero();
n: while(Nodo)
   {
n:   if(Nodo)
     {
n:    p = Nodo->Parent;
n:    s = Nodo->Testo;
n:    while(p)
n:    {
n:      s+= p->Testo;
n:      p = p->Parent;
      }
    }

n:    stampa(s);
n:    Nodo = Nodo->ProssimoNodo();
n:    s="";
  }
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2017, 18:31   #2
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
Quote:
Originariamente inviato da Antonio23 Guarda i messaggi
doppio loop, costo O(N^2)
ricordavo una cosa del genere ma necessitavo di una conferma, grazie. Mi chiedo però, come mai se invece di innestare 2 while creo due funzioni distinte i tempi migliorano. Ho provato con 1 milione di nodi per vedere delle differenze: 17 minuti quella ricorsiva contro 30 minuti di quella simile all'esempio che ho postato. Potrebbero essere furbate del compilatore oppure, che richiamando una funzione da un'altra ed usando pesantemente lo stack ne benifeciano i tempi di esecuzione?

E' meglio se scrivo il codice per la seconda versione così si capisce di più

Codice:
AggiungiSlash(string S1, string S2)
{
   if(UltimoCarattere(S1) != '\\')
      retStr = S1 + '\\' + S2;
   else
      retStr = S1 + S2;
   return retStr;
}

/* ----------------------------------------------------------------------- */
OttieniNodo(struct Nodo)
{        
   if(Nodo)
   {
      struct *p = Nodo->Parent;
      retStr = Nodo->Testo;
      while(p)
      {
         retStr = AggiungiSlash(p->Text, retStr);
         p = p->Parent;
      }
    }
   return retStr;
}
/* ----------------------------------------------------------------------- */
main()
{
   struct Nodo = PrimoNodoAlbero(); // from the first node to last
   while(Nodo)
   {
      stampa(OttieniNodo(Nodo));
      Nodo = Nodo->ProssimoNodo();
    }
}

Ultima modifica di misterx : 30-10-2017 alle 18:48.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2017, 05:45   #3
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
Quote:
Originariamente inviato da Antonio23 Guarda i messaggi
una cosa e' la complessita' teorica dell'algoritmo, un'altra sono "il numero di cicli" della tua implementazione su una particolare architettura. per dare una risposta completa dovresti osservare l'assembly prodotto dal compilatore, capire quali ottimizzazioni sta facendo, etc.
di sicuro c'è di mezzo qualche ottimizzazione; ma a colpo d'occhio, non ti sembra che anche la seconda versione sia una O(N^2)?
misterx è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR 200 Lite, lo smartphone economico per ritratti, selfie, e non solo. La recensione HONOR 200 Lite, lo smartphone economico per ritr...
MG4, due settimane al volante dell'elettrica popolare: pregi, difetti e autonomia MG4, due settimane al volante dell'elettrica pop...
Tre giorni in Finlandia con OnePlus Watch 2 Nordic Blue. La nostra prova a temperature estreme Tre giorni in Finlandia con OnePlus Watch 2 Nord...
Lenovo Factory Tour: siamo entrati nella fabbrica ungherese che produce PC, storage e server Lenovo Factory Tour: siamo entrati nella fabbric...
Acer Nitro V 15, alla prova il notebook gaming essenziale con RTX 4050 Laptop Acer Nitro V 15, alla prova il notebook gaming e...
Il nuovo canale "Eagle No Limits&qu...
In primo piano: come ATAP ha migliorato ...
Hyundai Connected Mobility: nuova piatta...
Oracle annuncia che annuncerà Cod...
Uscirà prima la GeForce RTX 5090 ...
Cooler Master MasterBox 600: flessibilit...
Google Pixel 7a, 8 e 8 Pro sono ancora i...
Gli auricolari Google Pixel Buds Pro cos...
Viva.com ora supporta anche pagamenti tr...
Ferrari Elettrica: "abbiamo trovato...
Hades 2 già rilasciato su PC in E...
Ecco i 5 bestseller su Amazon: iPad, sma...
Microsoft sfida i giganti dell'IA con MA...
Consiglio dei Ministri: "basta foto...
MediaTek Dimensity 9300+ ufficiale con s...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:35.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Served by www1v