Torna indietro   Hardware Upgrade Forum > Software > Programmazione

In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi
Abbiamo assemblato e provato la Fiido Nomads Pro, evoluzione del modello da trekking già presente nella gamma, che migliora in tutto, soprattutto grazie al motore centrale, fluido e potente. Ottima app, costruzione solida e prezzo ok completano il quadro
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
Lo chassis in Ceraluminium è il cuore di questo notebook in edizione 2026, un modello pensato per garantire produttività con le tipiche applicazioni di produttività personale e capace di offrire un'autonomia di funzionamento lontano dalla presa di corrente da riferimento. Potenza, facilità di trasporto e costruzione robusta tutto in un notebook compatto.
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare
MSI PRO MAX 341QPXW14G è un monitor ultrawide da 34 pollici che porta la tecnologia QD-OLED di quinta generazione in un contesto principalmente orientato alla produttività. La qualità dell'immagine è elevatissima, il formato 21:9 è ideale per il multitasking e la dotazione di porte trasforma il monitor in un vero hub per Mac, PC e dispositivi mobili. Il limite principale è invece il refresh rate di soli 144 Hz, che lo allontana dai giocatori competitivi più esigenti
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-12-2005, 10:21   #1
*MATRIX*
Senior Member
 
Iscritto dal: Aug 2005
Messaggi: 439
Complessità di tempo ciclo for

Ciao raga sapreste dirmi qual'è la complessità di una procedura che al suo interno ha due cicli for non annidiati??? Non so se è 0(n) oppure 0(n^2)
grazie per le risposte bye bye
*MATRIX* è offline   Rispondi citando il messaggio o parte di esso
Old 06-12-2005, 10:56   #2
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Immagino che i cicli for di cui parli servano a far qualcosa, e che tu stia cercando di valutare, appunto, detta complessita'.

Cmq se non sono annidati, e' O(n).
Il fatto che siano due cicli non annidati, altro non fa che cambiare una costante, che come ben sai viene 'annegata' nell'operatore in questione

High Flying
Sottovento
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 06-12-2005, 11:07   #3
*MATRIX*
Senior Member
 
Iscritto dal: Aug 2005
Messaggi: 439
Cmq scusami avevo sbaglito a scrivere il mio dubbio era tra O(n) e 2*0(n)
*MATRIX* è offline   Rispondi citando il messaggio o parte di esso
Old 06-12-2005, 12:07   #4
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Nessuna scusa, mica hai offeso qualcuno
Cmq e' O(n)
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 06-12-2005, 19:21   #5
*MATRIX*
Senior Member
 
Iscritto dal: Aug 2005
Messaggi: 439
grazie
*MATRIX* è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 07:49   #6
leadergl
Senior Member
 
Iscritto dal: May 2003
Messaggi: 1113
Quote:
Originariamente inviato da *MATRIX*
Cmq scusami avevo sbaglito a scrivere il mio dubbio era tra O(n) e 2*0(n)

diciamo che 2O(n) non si può dire...poichè O(n) è una stima asintotica della complessità, esempio:

Se il calcolo della complessità delle varie parti di un algoritmo era: 3N + 5N + 2 allora la sua complessità era O(n).

Mentre se veniva, ad esempio, 3N + 5N + N^2 + 2 allora la complessità ora O(n^2).

Questo per dire che quando si parla in termini di complessità asintotiche, nelle loro tipologie, si da una stima...un po come quando dici "equazioni di primo grado" ed "equazioni di secondo grado", indichi una categoria ma non sono tutte uguali.
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC
leadergl è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 10:25   #7
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Esattamente. Poi c'è anche da dire che se il primo ciclo è O(n) e il secondo è O(m), la complessità sarà O(n + m).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 19:33   #8
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
Quote:
Originariamente inviato da cdimauro
Esattamente. Poi c'è anche da dire che se il primo ciclo è O(n) e il secondo è O(m), la complessità sarà O(n + m).


supponendo che il numero di esecuzioni del primo ciclo for sia dell'ordine O(n) e che quello del secondo sia di O(m) la complessità totale è dell'ordine di O(n * m).
poi se m si può approssimare ad n possiamo dire che a complessità è di O(n^2)
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 20:50   #9
beppegrillo
Senior Member
 
L'Avatar di beppegrillo
 
Iscritto dal: Mar 2004
Messaggi: 1455
Ma infatti anche a me risulta sia O(n^2)..
__________________
Ciao ~ZeRO sTrEsS~
beppegrillo è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 21:12   #10
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
Quote:
Originariamente inviato da beppegrillo
Ma infatti anche a me risulta sia O(n^2)..
ripeto che non è O(n^2)... è O(n^2) solo se m è dello stesso ordine di grangezza di n, cioè se m è teta grande di n.
se vogliamo proprio fare i pignoli la complessità dell'algoritmo rispetto ad n e m che sono riepsttivamente l'ordine di grandezza del numero di esecuzioni del primo for e di quello annidato può essere di uno di questi casi:

- n ~ O(m) --> m ~ o(n) --> complessità O(n)
- n ~ m (teta grande di m, non c'è il simbolo sulla tastiera ) --> complessità O(n^2)
- n ~ o(m) --> m ~ O(n) --> complessità O(m)
- m ~ teta di log(n) --> complessità O(n * log(n))
- n ~teta di log(m) --> complessità O(m * log(m))

Ultima modifica di VegetaSSJ5 : 07-12-2005 alle 21:15.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 22:25   #11
fuocofatuo
Senior Member
 
L'Avatar di fuocofatuo
 
Iscritto dal: Nov 2005
Città: Bordeaux - France
Messaggi: 364
Ma lui ha detto che i cicli NON sono annidiati, perciò è corretto O(n+m).
__________________
- fuocofatuo -
fuocofatuo è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 22:46   #12
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
Quote:
Originariamente inviato da fuocofatuo
Ma lui ha detto che i cicli NON sono annidiati, perciò è corretto O(n+m).
hai ragione non avevo letto bene!
anche in questo caso però devo correggervi. per definizione, le notazioni di O (o grande), o (o piccolo) e § (scusate se la indico così, visto che non c'è il simbolo sulla tastiera, ma voglio intendere teta grande) non riguardano le costanti moltiplicative (figuriamoci quindi l'addizione...). questo vuol dire che se io ho un numero n scrivere O(n) e scrivere O(n*10000000000000000) è la stessa cosa in quanto queste sono notazione riferite a variabili che tendono a + infinito per cui qualsiasi costante moltiplicativa (che sia 9999999999 oppure 0,0000000000001) non avrebbe peso ai fini del calcolo dell'ordine di grandezza, che è il vero scopo per cui esistono queste notazioni.
in questo specifico problema quindi, la complessità dell'intero algoritmo è pari a:

- n ~ o(m) --> complessità O(m)
- m ~ o(n) --> complessità O(n)
- m ~ teta di log(n) --> complessità O(n)
- n ~ teta di log(m) --> complessità O(m)
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 22:56   #13
Brazorv
Member
 
Iscritto dal: Aug 2004
Messaggi: 156
Quote:
Originariamente inviato da VegetaSSJ5
hai ragione non avevo letto bene!
anche in questo caso però devo correggervi. per definizione, le notazioni di O (o grande), o (o piccolo) e § (scusate se la indico così, visto che non c'è il simbolo sulla tastiera, ma voglio intendere teta grande) non riguardano le costanti moltiplicative (figuriamoci quindi l'addizione...). questo vuol dire che se io ho un numero n scrivere O(n) e scrivere O(n*10000000000000000) è la stessa cosa in quanto queste sono notazione riferite a variabili che tendono a + infinito per cui qualsiasi costante moltiplicativa (che sia 9999999999 oppure 0,0000000000001) non avrebbe peso ai fini del calcolo dell'ordine di grandezza, che è il vero scopo per cui esistono queste notazioni.
in questo specifico problema quindi, la complessità dell'intero algoritmo è pari a:

- n ~ o(m) --> complessità O(m)
- m ~ o(n) --> complessità O(n)
- m ~ teta di log(n) --> complessità O(n)
- n ~ teta di log(m) --> complessità O(m)
secondo me stai facendo un pò di confusione. Tu stai parlando di costanti, ma in questo caso n ed m non sono costanti, ma sono le variabili che definiscono la complessità dell'algoritmo, per cui ha senso scrivere O(n+m).
Brazorv è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 23:05   #14
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
Quote:
Originariamente inviato da Brazorv
secondo me stai facendo un pò di confusione. Tu stai parlando di costanti, ma in questo caso n ed m non sono costanti, ma sono le variabili che definiscono la complessità dell'algoritmo, per cui ha senso scrivere O(n+m).
non ci siamo capiti, cerco di essere più chiaro...

- se n è minore di m (ovvero n~ o(m)) allora non ha senso sommare ad m che è di almeno un ordine di grandezza superiore un numero n di grandezza inferiore. si deduce che la complesità in questo caso è pari a O(m)
- se n è magigore di m (ovvero m~ o(n)) vale il discorso contrario e la complessità è O(n)
- se n e m sono dello stesso ordine di grandezza allora dire O(n+m) significherebbe dire O(2*n) oppure O(2*m) che secondo queste notazioni equivarrebbe a dire O(n) oppure O(m)

spero di essere stato più chiaro...

EDIT
se n e m sono dello stesso ordine di grandezza allora vorrebbe dire che O(n+m) è assimilabile a O(2*n) ma anche a O(10000000000*n) - con la stessa cosa che vale anche per m. quindi più in generale O(n+m) ~ O(k*n) ~ O(k*m) con k costante.

Ultima modifica di VegetaSSJ5 : 07-12-2005 alle 23:08.
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 23:16   #15
Brazorv
Member
 
Iscritto dal: Aug 2004
Messaggi: 156
Quote:
Originariamente inviato da VegetaSSJ5
non ci siamo capiti, cerco di essere più chiaro...

- se n è minore di m (ovvero n~ o(m)) allora non ha senso sommare ad m che è di almeno un ordine di grandezza superiore un numero n di grandezza inferiore. si deduce che la complesità in questo caso è pari a O(m)
- se n è magigore di m (ovvero m~ o(n)) vale il discorso contrario e la complessità è O(n)
- se n e m sono dello stesso ordine di grandezza allora dire O(n+m) significherebbe dire O(2*n) oppure O(2*m) che secondo queste notazioni equivarrebbe a dire O(n) oppure O(m)

spero di essere stato più chiaro...

EDIT
se n e m sono dello stesso ordine di grandezza allora vorrebbe dire che O(n+m) è assimilabile a O(2*n) ma anche a O(10000000000*n) - con la stessa cosa che vale anche per m. quindi più in generale O(n+m) ~ O(k*n) ~ O(k*m) con k costante.
tu fai delle supposizioni sulle variabili n ed m, ma ogni istanza del problema può avere diversi valori di n e di m, ed in generale noi non possiamo sapere che relazione ci sia tra n ed m. La notazione O(n+m) serve ad indicare che l'algoritmo dipende in modo lineare dai paramtri n ed m.
Brazorv è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 23:21   #16
VegetaSSJ5
Senior Member
 
L'Avatar di VegetaSSJ5
 
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
Quote:
Originariamente inviato da Brazorv
tu fai delle supposizioni sulle variabili n ed m, ma ogni istanza del problema può avere diversi valori di n e di m, ed in generale noi non possiamo sapere che relazione ci sia tra n ed m. La notazione O(n+m) serve ad indicare che l'algoritmo dipende in modo lineare dai paramtri n ed m.
si per questo si dovrebbe esaminare il problema, ma quello che ho detto rimane comunque vero, è matematica, mica un'opinione!
VegetaSSJ5 è offline   Rispondi citando il messaggio o parte di esso
Old 07-12-2005, 23:26   #17
Brazorv
Member
 
Iscritto dal: Aug 2004
Messaggi: 156
si dal punto di vista della complessità O(n) O(m) oppure O(n+m) sono tutti algoritmi lineari, il discorso che volevo fare io è che in questo caso è giusto scrivere O(n+m) perchè si specifica meglio da cosa dipende la complessità dell'algoritmo. Non è solo una questione matematica.
Brazorv è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2005, 16:09   #18
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da VegetaSSJ5
si per questo si dovrebbe esaminare il problema, ma quello che ho detto rimane comunque vero, è matematica, mica un'opinione!
Non c'è nulla da esaminare: non ti puoi mettere a vedere caso per caso.
Infatti la notazione che ho riportato è quella giusta quando si ha che la complessità (o velocità) di un algoritmo dipende da più variabili.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2005, 16:21   #19
beppegrillo
Senior Member
 
L'Avatar di beppegrillo
 
Iscritto dal: Mar 2004
Messaggi: 1455
Quote:
Originariamente inviato da beppegrillo
Ma infatti anche a me risulta sia O(n^2)..
avevo capito che si trattasse di due cicli for su n .
__________________
Ciao ~ZeRO sTrEsS~
beppegrillo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi In sella alla Fiido Nomads Pro: e-bike con motor...
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto ASUS Zenbook 14 (UX3480AA): tanta autonomia con ...
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare MSI PRO MAX: QD-OLED ultrawide per lavorare, cre...
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Arriva il portale di Google che smascher...
Gli iPhone 18 Pro non convincono: Apple ...
NVIDIA torna su macOS con un driver non ...
Engwe ha un modello che è il SUV ...
Le migliori offerte del weekend Amazon: ...
Cina e UE, intesa sulle auto ibride: Pec...
2 lavatrici slim COMFEE’ a 255€ o 280€ s...
Anche a ottobre tornano i coupon nascost...
Robot ECOVACS DEEBOT MINI a 198,98€ su A...
E-bike in offerta: una in stile Engwe a ...
Auricolari Motorola Moto Buds a 24,90€: ...
Tim Berners-Lee a Torino: 'Voglio un'IA ...
Ring ancora a prezzi super su Amazon: ci...
Batterie EV riconfigurabili: fino al 20%...
Tesla rinomina la guida assistita in Eur...
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: 13:07.


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