Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr sbarca ufficialmente in Italia con tre modelli elettrici premium, X, 7X e 001, distribuiti da Jameel Motors su una rete di 52 punti vendita già attivi. La Zeekr X parte da 39.900 euro, la 7X da 54.100: piattaforma a 800V, chip Snapdragon di ultima generazione, ricarica ultraveloce e un'autonomia dichiarata fino a 615 km WLTP. Le prime consegne sono previste a metà aprile
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


Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
Le 10 migliori offerte Amazon di Pasqua:...
Nuove fotografie dagli astronauti di Art...
La toilette della capsula Orion Integrit...
GeForce NOW: ecco tutte le novità in arr...
Il Realme 16 5G debutta sul mercato glob...
HONOR svela tre nuovi tablet: il più int...
Tineco Floor One S9 Master: aspira e pul...
Vivo X300 Ultra, il lancio globale è ini...
Offerte robot aspirapolvere Amazon: ECOV...
L'AI genera codice in 8 minuti e i senio...
Ring Intercom Audio a 44,99€ su Amazon: ...
Apple iPhone 16 crolla a 689€: ecco perc...
Google Pixel 9 a 449,90€ con caricatore ...
Ecco la top 7 delle offerte Amazon, aggi...
Ex ingegnere ammette il sabotaggio: migl...
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: 22:40.


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