Scheda: Complessità temporale Big O

Ripasso sulla complessità temporale Big O, utile per studenti di maturità in informatica. Le schede coprono definizioni, esempi e notazioni essenziali per affrontare l'esame.

EdoardoGallo·40 schede·40 domande
maturitàcomputer_sciencealgorithms
0
Lo so
1 / 40
0
Sto imparando
Fronte

Che cosa rappresenta Big O?

Tocca per girare
Retro

Big O è una notazione utilizzata per descrivere la complessità temporale di un algoritmo, rappresentando il suo comportamento al crescere dell'input.

Tocca per girare
Lo so
Sto imparando

Quiz(40 domande)

Domanda 1 di 40

1. Che cosa rappresenta la notazione Big O?

Termini in questo set(40)

Concetti di base(16)

Che cosa rappresenta Big O?

Big O è una notazione utilizzata per descrivere la complessità temporale di un algoritmo, rappresentando il suo comportamento al crescere dell'input.

Definisci la complessità temporale.

La complessità temporale è una misura di quanto tempo impiega un algoritmo per completare la sua esecuzione in funzione della dimensione dell'input.

Vero o falso: Big O misura solo il tempo di esecuzione.

Falso: Big O misura sia il tempo di esecuzione che la memoria utilizzata da un algoritmo.

Completa la frase: Big O è limitato da...

...un valore superiore che rappresenta il tempo massimo di esecuzione in relazione alla dimensione dell'input.

Qual è il significato di O(1)?

O(1) indica una complessità costante, dove il tempo di esecuzione non cambia al variare della dimensione dell'input.

Confronta O(n) e O(n^2).

O(n) è lineare e cresce proporzionalmente all'input; O(n^2) è quadratica e cresce con il quadrato dell'input.

Che cosa significa O(log n)?

O(log n) rappresenta una complessità logaritmica, comune in algoritmi di ricerca binaria, dove il tempo di esecuzione cresce lentamente con l'aumento dell'input.

Causa → Effetto: Aumentare l'input in O(n^3).

Aumentare l'input porta a un aumento cubico del tempo di esecuzione dell'algoritmo.

Definisci il termine 'asintotico'.

Asintotico si riferisce al comportamento di un algoritmo quando la dimensione dell'input tende all'infinito, utile per analizzare la complessità con Big O.

Qual è l'importanza di Big O negli algoritmi?

Big O aiuta a confrontare l'efficienza di diversi algoritmi e a scegliere il migliore in base alla complessità temporale.

Vero o falso: O(n) è sempre migliore di O(n^2).

Vero: O(n) è più efficiente poiché il tempo di esecuzione cresce meno rapidamente rispetto a O(n^2).

Qual è la relazione tra complessità e ottimizzazione?

Una minore complessità temporale significa algoritmi più veloci e migliori prestazioni, facilitando l'ottimizzazione del codice.

Che cosa indica O(n log n)?

O(n log n) è una complessità comune in algoritmi di ordinamento efficienti, come il mergesort, dove il tempo di esecuzione è più rapido di O(n^2).

Quali sono i limiti della notazione Big O?

Big O non considera fattori costanti e non fornisce informazioni su casi migliori o peggiori, solo sul comportamento asintotico.

Esempio pratico: O(n) con un loop.

In un ciclo che scorre un array di dimensione n, il tempo di esecuzione è O(n), poiché esegue n operazioni.

O(1) vs O(n): quale è più veloce?

O(1) è più veloce di O(n) poiché il tempo di esecuzione rimane costante indipendentemente dalla dimensione dell'input.

Tipi di complessità(12)

Complessità costante

La complessità costante è O(1)\displaystyle O(1). Significa che il tempo di esecuzione non varia con l'aumento dell'input.

Complessità logaritmica

La complessità logaritmica è O(extlogn)\displaystyle O( ext{log} n). Tipicamente si verifica in algoritmi di ricerca binaria.

Comp. lineare vs comp. quadratica

Comp. lineare: O(n)\displaystyle O(n), comp. quadratica: O(n2)\displaystyle O(n^2). La quadratica cresce molto più rapidamente con n.

Esempio di complessità cubica

Un algoritmo di ordinamento come il 'bubble sort' ha una complessità cubica di O(n3)\displaystyle O(n^3) in scenari particolari.

Qual è la complessità di ricerca lineare?

La ricerca lineare ha complessità O(n)\displaystyle O(n). Controlla ogni elemento uno per uno.

Complessità logaritmica è sempre migliore?

Vero. Gli algoritmi logaritmici sono più efficienti rispetto a quelli lineari per quantità elevate di dati.

Esempio di complessità costante

Accesso a un elemento in un array ha complessità O(1)\displaystyle O(1), perché non dipende dalle dimensioni dell'array.

Quando si verifica la complessità quadratica?

La complessità quadratica O(n2)\displaystyle O(n^2) si verifica in algoritmi che confrontano tutti gli elementi tra loro.

Complessità lineare

La complessità lineare è O(n)\displaystyle O(n). Rappresenta algoritmi che operano in proporzione all'input.

Vero o falso: O(n2)\displaystyle O(n^2) è più veloce di O(n)\displaystyle O(n)?

Falso. O(n)\displaystyle O(n) è più veloce di O(n2)\displaystyle O(n^2) per grandi valori di n.

Cosa indica O(1)\displaystyle O(1)?

O(1)\displaystyle O(1) indica che il tempo di esecuzione rimane costante, indipendentemente dalla grandezza dell'input.

Comp. cubica è più lenta di...

Comp. quadratica. O(n3)\displaystyle O(n^3) cresce più rapidamente rispetto a O(n2)\displaystyle O(n^2) con l'aumento di n.

Esempi pratici(12)

Ricerca binaria

Ha complessità O(extlogn)\displaystyle O( ext{log } n), utile per cercare in liste ordinate.

Ordinamento per inserimento

Ha complessità O(n2)\displaystyle O(n^2) nel caso peggiore. Adatto per piccole liste.

Vero o Falso: O(n)>O(extlogn)\displaystyle O(n) > O( ext{log } n)

Vero. La crescita lineare è sempre maggiore rispetto a quella logaritmica.

Esempio di complessità costante.

Accesso a un elemento in un array: O(1)\displaystyle O(1). Sempre lo stesso tempo.

Confronta ricerca lineare e ricerca binaria.

Ricerca lineare: O(n)\displaystyle O(n) Ricerca binaria: O(extlogn)\displaystyle O( ext{log } n) La binaria è più veloce.

Esempio di algoritmo quadratico.

Ordinamento per bolle ha complessità O(n2)\displaystyle O(n^2). Inefficiente per grandi liste.

Scrivi la complessità dell'algoritmo di Merge Sort.

Merge Sort ha complessità O(nextlogn)\displaystyle O(n ext{ log } n). Efficiente per ordinare.

Vero o Falso: O(n2)\displaystyle O(n^2) è migliore di O(n)\displaystyle O(n)

Falso. O(n)\displaystyle O(n) è sempre migliore, cresce più lentamente.

Esempio di complessità logaritmica.

Trovare un elemento in una lista ordinata: O(extlogn)\displaystyle O( ext{log } n).

Cosa determina la complessità di un algoritmo?

La quantità di operazioni in relazione alla dimensione dei dati.

Esempio di algoritmo cubico.

Calcolo di tutte le combinazioni in un array: O(n3)\displaystyle O(n^3), inefficiente.

Effetto di aumentare n su O(n2)\displaystyle O(n^2)

Incrementa il tempo di esecuzione quadraticamente, rallenta significativamente.

Domande in questo set(40)

1. Che cosa rappresenta la notazione Big O?

A.La complessità temporale di un algoritmo.
B.La quantità di memoria usata da un algoritmo.
C.Il numero di linee di codice in un programma.
D.La velocità di esecuzione in termini di clock.

2. Qual è la complessità temporale di un algoritmo che accede a un elemento specifico in una lista collegata?

A.O(n)
B.O(1)
C.O(n^2)
D.O(log n)

3. Qual è la complessità temporale della ricerca binaria?

A.O(log n)
B.O(n)
C.O(n^2)
D.O(1)

4. Quale delle seguenti affermazioni è vera riguardo alla complessità temporale?

A.È indipendente dalla dimensione dell'input.
B.Si misura solo in secondi.
C.Rappresenta il tempo di esecuzione in funzione dell'input.
D.Non può essere calcolata per ricorsione.

5. Un algoritmo di ricerca binaria ha quale complessità temporale?

A.O(n)
B.O(log n)
C.O(n^2)
D.O(1)

6. Qual è la complessità nel caso peggiore dell'ordinamento per inserimento?

A.O(n^2)
B.O(n log n)
C.O(log n)
D.O(n)

7. Vero o falso: O(n^2) è più efficiente di O(n).

A.Vero
B.Falso
C.Solo in casi specifici
D.Non si può dire

8. Qual è la definizione di complessità quadratica?

A.O(1)
B.O(n)
C.O(n^2)
D.O(log n)

9. Vero o Falso: La complessità O(n) è sempre maggiore di O(log n).

A.Vero
B.Falso
C.Dipende dai dati
D.Solo per n > 10

10. Qual è il significato di O(log n)?

A.Rappresenta una crescita esponenziale.
B.Rappresenta una crescita logaritmica.
C.Indica un tempo costante.
D.Indica una complessità quadratica.

11. Quale delle seguenti affermazioni è vera riguardo a O(1)?

A.Indica crescita lineare.
B.Indica crescita quadratica.
C.Indica tempo costante.
D.Indica crescita logaritmica.

12. Qual è un esempio di complessità costante?

A.Accesso a un elemento in un array
B.Ordinamento di una lista
C.Ricerca in una lista non ordinata
D.Calcolo della somma di una lista

13. Cosa succede a un algoritmo in O(n^3) quando si aumenta l'input?

A.Aumenta in modo lineare.
B.Aumenta in modo quadratico.
C.Aumenta in modo cubico.
D.Rimane costante.

14. In quale situazione si può osservare una complessità cubica?

A.Ordinamento mediante bubble sort
B.Ricerca lineare
C.Accesso a un array
D.Ordinamento mediante quicksort

15. Confrontando ricerca lineare e ricerca binaria, quale ha una complessità maggiore?

A.Ricerca lineare: O(n)
B.Ricerca binaria: O(n)
C.Entrambi hanno la stessa complessità
D.Ricerca binaria: O(n^2)

16. Qual è la differenza principale tra O(n) e O(n log n)?

A.O(n log n) è più veloce di O(n).
B.O(n) è sempre più efficiente di O(n log n).
C.O(n log n) è quadratica.
D.O(n) è logaritmica.

17. Quale delle seguenti complessità è più efficiente per grandi input?

A.O(n)
B.O(n^2)
C.O(log n)
D.O(n^3)

18. Qual è la complessità dell'algoritmo di ordinamento Merge Sort?

A.O(n log n)
B.O(n^2)
C.O(log n)
D.O(n)

19. Vero o falso: Big O considera anche i fattori costanti.

A.Vero
B.Falso
C.Solo in alcuni casi
D.Non si applica

20. Se un algoritmo ha complessità O(n^2), quale delle seguenti affermazioni è corretta?

A.È sempre più veloce di O(n).
B.Cresce più rapidamente con l'aumento di n.
C.È equivalente a O(n).
D.Cresce più lentamente di O(n).

21. Vero o Falso: O(n^2) è migliore di O(n).

A.Falso
B.Vero
C.Solo per piccole n
D.Non si può comparare

22. Quale delle seguenti complessità è considerata la migliore?

A.O(1)
B.O(n^2)
C.O(n log n)
D.O(n)

23. Cosa indica una complessità lineare?

A.O(1)
B.O(log n)
C.O(n)
D.O(n^2)

24. Quale di queste situazioni rappresenta una complessità logaritmica?

A.Trovare un elemento in una lista ordinata
B.Calcolare la somma di tutti gli elementi
C.Ordinare una lista
D.Contare gli elementi in un array

25. Cosa indica O(n^2)?

A.Un algoritmo con complessità costante.
B.Un algoritmo di ordinamento efficiente.
C.Un algoritmo con complessità quadratica.
D.Un algoritmo che cresce linearmente.

26. Quale affermazione è falsa riguardo a O(n)?

A.È più veloce di O(n^2).
B.È una complessità lineare.
C.È uguale a O(log n).
D.Cresce con l'aumento di n.

27. Cosa determina la complessità di un algoritmo?

A.Il numero di operazioni rispetto alla dimensione dei dati
B.Il tipo di dati elaborati
C.La velocità del computer
D.Il linguaggio di programmazione utilizzato

28. Che cosa significa 'asintotico' in riferimento alla complessità?

A.Si riferisce a una misura temporale.
B.Descrive il comportamento al tendere dell'input all'infinito.
C.Indica una crescita esponenziale.
D.Non ha significato particolare.

29. Quando un algoritmo ha complessità O(n^2)?

A.Quando confronta ogni elemento con ogni altro.
B.Quando accede a un elemento in un array.
C.Quando utilizza una ricerca binaria.
D.Quando ha una crescita costante.

30. Qual è un esempio di algoritmo cubico?

A.Calcolo di tutte le combinazioni in un array
B.Ordinamento per selezione
C.Ricerca lineare
D.Accesso a un elemento in una lista

31. Qual è un esempio pratico di O(n)?

A.Scorrere un array di dimensione n.
B.Eseguire una ricerca binaria.
C.Calcolare la somma di n numeri senza loop.
D.Ordinare un array di n elementi.

32. Qual è la complessità di una ricerca lineare?

A.O(1)
B.O(log n)
C.O(n)
D.O(n^2)

33. Qual è l'effetto di aumentare n su un algoritmo con complessità O(n^2)?

A.Rallenta significativamente il tempo di esecuzione
B.Non ha effetto
C.Aumenta linearmente il tempo di esecuzione
D.Rallenta solo leggermente

34. Quale delle seguenti affermazioni è corretta su O(n log n)?

A.È più veloce di O(n^2) in generale.
B.È equivalente a O(n).
C.Rappresenta una complessità costante.
D.Indica un comportamento esponenziale.

35. Cosa rappresenta la notazione O(n^3)?

A.Crescita lineare.
B.Crescita logaritmica.
C.Crescita cubica.
D.Crescita costante.

36. Quale di queste affermazioni è vera riguardo alle complessità temporali degli algoritmi?

A.L'ordinamento per bolle ha complessità O(n^2).
B.La ricerca binaria richiede O(n) operazioni.
C.L'accesso a un elemento in una lista collegata ha complessità O(1).
D.Il Merge Sort è inefficiente per elenchi di grandi dimensioni.

37. In che modo si confrontano O(n) e O(1) in termini di prestazioni?

A.O(n) è più veloce di O(1).
B.O(1) è più veloce di O(n).
C.Sono equivalenti.
D.O(n) è sempre migliore.

38. Quali fattori possono influenzare la scelta di un algoritmo in base alla complessità?

A.Solo il tempo di esecuzione.
B.Solo la memoria utilizzata.
C.Entrambi, tempo e memoria.
D.Nessuno di questi.

39. Quale delle seguenti complessità temporali rappresenta un algoritmo che esegue un numero costante di operazioni indipendentemente dalla dimensione dell'input?

A.O(1)
B.O(n)
C.O(n^2)
D.O(log n)

40. Se un algoritmo ha una complessità O(n^2), quale effetto si può aspettare all'aumentare della dimensione dell'input?

A.Il tempo di esecuzione rimane costante.
B.Il tempo di esecuzione cresce linearmente.
C.Il tempo di esecuzione cresce quadraticamente.
D.Il tempo di esecuzione diminuisce.

Set correlati

Crea il tuo set di studio

Carica un PDF, incolla le tue note o descrivi un argomento – l'IA genera schede, quiz e altro in pochi secondi.