05: Relazioni di Ricorrenza

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Qual è il compito principale dell'algoritmo Quick-Sort?

  • Ordinare un vettore di elementi. (correct)
  • Cercare un elemento specifico all'interno di un vettore.
  • Copiare un array in un altro.
  • Comprimere i dati in un file.

Nel caso peggiore, il perno di Quick-Sort è sempre il medesimo valore del sottovettore.

False (B)

Che funzione ha il partizionamento nell'algoritmo Quick-Sort?

Riorganizzare gli elementi attorno a un perno.

Il numero di operazioni effettuato da Partition può essere considerato come _______.

<p>TP(n) = an</p> Signup and view all the answers

Abbina le seguenti variabili e costanti con le loro descrizioni:

<p>a = Costante che rappresenta il numero di operazioni in Partition. b = Costante che rappresenta un fattore di costo aggiuntivo. c = Costante che rappresenta il tempo di esecuzione per n=1. T(n) = Tempo di esecuzione per n elementi.</p> Signup and view all the answers

Qual è la complessità temporale nel caso peggiore per la ricerca binaria?

<p>Θ(log n) (C)</p> Signup and view all the answers

Un vettore con un solo elemento è considerato ordinato.

<p>True (A)</p> Signup and view all the answers

Cos'è l'algoritmo Merge-sort?

<p>Un algoritmo di ordinamento che divide un vettore in due parti e le ordina ricorsivamente.</p> Signup and view all the answers

La relazione di tempo di esecuzione nel caso peggiore per la ricerca binaria è T(n) = ___(n) + d log2 n.

<p>c</p> Signup and view all the answers

Abbina i termini con le loro definizioni:

<p>C = Costante di tempo di esecuzione nel caso base d = Tempo di fusione delle parti in Merge-sort log2 n = Numero di suddivisioni necessarie per trovare un elemento T(1) = Tempo di esecuzione per un vettore con un elemento</p> Signup and view all the answers

Quale affermazione descrive meglio la divisione in Merge-sort?

<p>Le parti sono sempre di dimensioni uguali (D)</p> Signup and view all the answers

Il tempo di esecuzione T(n) è sempre maggiore di T(1).

<p>True (A)</p> Signup and view all the answers

In una ricerca binaria, se l'elemento cercato è maggiore di A[m], allora si effettua la ricerca nell'array da ___ a j.

<p>m + 1</p> Signup and view all the answers

Quale tra i seguenti è un algoritmo di ordinamento di complessità $n \log n$?

<p>Merge Sort (C)</p> Signup and view all the answers

La relazione di ricorrenza a partizione costante implica che l'input diminuisca di un certo fattore ad ogni chiamata ricorsiva.

<p>False (B)</p> Signup and view all the answers

Qual è la formula per il fattoriale in un algoritmo ricorsivo?

<p>Fattoriale(n) = n * Fattoriale(n - 1)</p> Signup and view all the answers

La complessità degli algoritmi ricorsivi è spesso espressa attraverso una relazione di __________.

<p>ricorrenza</p> Signup and view all the answers

Abbina gli algoritmi con le loro caratteristiche:

<p>Fattoriale = Relazione di ricorrenza a partizione costante Merge Sort = Algoritmo di ordinamento ricorsivo Quick Sort = Algoritmo di ordinamento a partizione Relazione di ricorrenza a partizione bilanciata = Diminuisce l'input di un certo fattore</p> Signup and view all the answers

Quale dei seguenti è un esempio di relazione di ricorrenza a partizione bilanciata?

<p>$T(n) = 2T(n/2) + n$ (B), $T(n) = T(n/2) + n$ (D)</p> Signup and view all the answers

Il numero di operazioni eseguite da un algoritmo ricorsivo può essere espresso tramite una semplice relazione di ricorrenza.

<p>True (A)</p> Signup and view all the answers

Che cosa rappresenta la variabile T(n) in un algoritmo ricorsivo?

<p>Il numero di operazioni eseguite dall'algoritmo per un input di dimensione n.</p> Signup and view all the answers

Quale delle seguenti affermazioni è vera riguardo il Teorema Master?

<p>Fornisce un limite superiore in senso O per una relazione di ricorrenza. (D)</p> Signup and view all the answers

La relazione $T(n) = aT(n/b) + cn^{eta}$ è una forma standard per il Teorema Master.

<p>True (A)</p> Signup and view all the answers

In che modo la notazione $O(n ext{ log } n)$ è significativa per Quick-Sort?

<p>Rappresenta la complessità temporale ottimale di Quick-Sort nel caso medio.</p> Signup and view all the answers

Il valore $eta$ nella relazione $T(n) = aT(n/b) + cn^{eta}$ rappresenta il ________.

<p>potere</p> Signup and view all the answers

Abbina i seguenti simboli con i loro significati corrispondenti:

<p>$a$ = Numero di sottoproblemi $b$ = Dimensione dei sottoproblemi $c$ = Costo dell'operazione non ricorsiva $eta$ = Potere del termine non ricorsivo</p> Signup and view all the answers

Qual è il valore di $ rac{d}{ ext{log } b}$ se $d = 1$ e $b = 2$?

<p>0.5 (A)</p> Signup and view all the answers

La formula $D(n) = T(n)/(n + 1)$ è usata per normalizzare la funzione T.

<p>True (A)</p> Signup and view all the answers

Qual è la condizione affinché $T(n) ext{ sia } O(n^{ ext{log } a / ext{log } b})$?

<p>$ ext{log } a / ext{log } b &gt; eta$</p> Signup and view all the answers

Qual è la complessità temporale del Merge-Sort?

<p>Θ(n log n) (A)</p> Signup and view all the answers

Nel caso migliore, la complessità temporale di Quick-Sort è Θ(n log n).

<p>True (A)</p> Signup and view all the answers

Che tipo di relazione di ricorrenza descrive la complessità di Merge-Sort?

<p>T(n) = 2T(n/2) + bn + c</p> Signup and view all the answers

La complessità temporale di Merge-Sort è (blank).

<p>Θ(n log n)</p> Signup and view all the answers

Abbina i seguenti metodi di ordinamento con le loro complessità temporali:

<p>Merge-Sort = Θ(n log n) Quick-Sort = Θ(n log n) (caso migliore) Bubble-Sort = Θ(n^2) Insertion-Sort = Θ(n^2)</p> Signup and view all the answers

Quale termine è dominante nella complessità di Merge-Sort?

<p>bn log n (D)</p> Signup and view all the answers

La relazione di ricorrenza di Merge-Sort include un termine constante solo per n=1.

<p>False (B)</p> Signup and view all the answers

Quale metodo di analisi viene utilizzato per calcolare la complessità di Merge-Sort?

<p>Metodo dell'iterazione</p> Signup and view all the answers

Qual è l'ordine di complessità temporale nel caso peggiore di Quick-Sort?

<p>O(n^2) (B)</p> Signup and view all the answers

La relazione di ricorrenza $T(n) = T(n - 1) + an + b$ indica un algoritmo di complessità quadratica.

<p>True (A)</p> Signup and view all the answers

Quale è il risultato finale di $T(n)$ dopo $n - 1$ iterazioni, secondo la relazione di ricorrenza analizzata?

<p>c + a(n - i) + (n - 1)b</p> Signup and view all the answers

La relazione di ricorrenza di ordine costante fornisce una ricetta per trovare un limite superiore in senso _____ .

<p>O</p> Signup and view all the answers

Abbina le seguenti variabili con le loro descrizioni:

<p>T(n) = Tempo di esecuzione totale an = Costo associato all'operazione di ordinamento b = Costo costante per ogni iterazione c = Valore iniziale di T(1)</p> Signup and view all the answers

Dopo $k$ iterazioni, quale delle seguenti espressioni rappresenta correttamente $T(n)$?

<p>T(n - k) + a(n - i) + kb (D)</p> Signup and view all the answers

Quick-Sort è un algoritmo di ordinamento con complessità di $n^2$ in tutti i casi.

<p>False (B)</p> Signup and view all the answers

Qual è il valore di $T(1)$ secondo la relazione di ricorrenza analizzata?

<p>c</p> Signup and view all the answers

Flashcards

Relazione di ricorrenza

Una relazione di ricorrenza descrive il numero di operazioni eseguite da un algoritmo ricorsivo in funzione della dimensione dell'input. È utile per analizzare la complessità di algoritmi ricorsivi.

Relazione di ricorrenza a partizione costante

In una relazione di ricorrenza a partizione costante, ogni chiamata ricorsiva riduce la dimensione dell'input di una quantità costante. Ad esempio, calcolare il fattoriale di un numero, dove ad ogni chiamata ricorsiva si riduce l'input di 1.

Relazione di ricorrenza a partizione bilanciata

In una relazione di ricorrenza a partizione bilanciata, ogni chiamata ricorsiva riduce la dimensione dell'input di un fattore costante. Ad esempio, l'algoritmo di merge-sort, dove ad ogni chiamata ricorsiva si divide l'input a metà.

Metodo iterativo

Il metodo iterativo risolve una relazione di ricorrenza espandendo ricorsivamente la formula fino a ottenere un'espressione che non contiene più chiamate ricorsive. In questo modo, il numero di operazioni può essere calcolato in modo diretto.

Signup and view all the flashcards

Merge-sort

Merge-sort è un algoritmo di ordinamento che divide l'input in due metà, ordina le due metà ricorsivamente, e poi le unisce in una singola sequenza ordinata.

Signup and view all the flashcards

Quick-sort

Quick-sort è un algoritmo di ordinamento che sceglie un elemento pivot, partiziona l'input in base al pivot, ordina ricorsivamente le due sottosequenze e poi le unisce.

Signup and view all the flashcards

Procedura Partition

La procedura Partition è utilizzata per posizionare il "perno" al suo posto corretto nel vettore. Gli elementi minori del perno vengono spostati a sinistra e quelli maggiori a destra del perno. Il risultato è un vettore suddiviso in due sotto-vettori.

Signup and view all the flashcards

Complessità della procedura Partition

Il numero di operazioni eseguite dalla procedura Partition è proporzionale alla dimensione del sottovettore che deve riorganizzare. La complessità è indicata da TP(n) = an, dove n è la dimensione del sottovettore e a è una costante.

Signup and view all the flashcards

Caso peggiore di Quick-Sort

Nel caso peggiore, il "perno" scelto è sempre l'elemento minimo o massimo del sottovettore. In tal caso, una sola chiamata ricorsiva viene eseguita per ogni livello della ripartizione. Questo porta ad una maggiore complessità, con la relazione di ricorrenza T(n) = T(n-1) + an + b, dove a e b sono costanti.

Signup and view all the flashcards

Applicazioni di Quick-Sort

L'algoritmo Quick-Sort può essere utilizzato per ordinare qualsiasi tipo di dati, come numeri, stringhe o oggetti. La sua efficienza dipende dalla scelta dei pivot e dall'implementazione della procedura Partition.

Signup and view all the flashcards

Metodo dell'iterazione

Un metodo per risolvere le relazioni di ricorrenza che consiste nell'espandere la relazione ricorsivamente fino a raggiungere un caso base.

Signup and view all the flashcards

Caso base

Il caso base è il punto di arresto per la ricorsione. È il punto in cui la funzione non si chiama più ricorsivamente.

Signup and view all the flashcards

Ordine di una relazione di ricorrenza

L'ordine di una relazione di ricorrenza è il numero di termini precedenti usati per calcolare il termine corrente.

Signup and view all the flashcards

Notazione O

La notazione asintotica che indica un limite superiore per la funzione. Una funzione f(n) è O(g(n)) se esiste una costante c e un valore n0 tale che f(n) ≤ c*g(n) per tutti gli n ≥ n0.

Signup and view all the flashcards

Tempo di esecuzione di QuickSort nel caso peggiore

Il tempo richiesto per il caso peggiore dell'algoritmo QuickSort.

Signup and view all the flashcards

Bubble Sort

Un algoritmo di ordinamento che confronta e scambia elementi adiacenti fino a quando l'array non è ordinato.

Signup and view all the flashcards

Ricerca binaria ricorsiva

Un algoritmo di ricerca binaria ricorsivo che trova la posizione di un elemento in un array ordinato.

Signup and view all the flashcards

Caso peggiore per la ricerca binaria ricorsiva

Il caso peggiore per la ricerca binaria ricorsiva si verifica quando l'elemento cercato non è presente nell'array.

Signup and view all the flashcards

Complessità temporale della ricerca binaria ricorsiva

La complessità temporale del caso peggiore della ricerca binaria ricorsiva è logaritmica rispetto alla dimensione dell'array.

Signup and view all the flashcards

Dividi l'array

Dividere un array in due metà bilanciate.

Signup and view all the flashcards

Ordina le metà

Ordinare le due metà dell'array utilizzando ricorsivamente il merge sort.

Signup and view all the flashcards

Unisci le metà

Unire le due metà ordinate in un unico array ordinato.

Signup and view all the flashcards

Complessità temporale del merge sort

Il merge sort è un algoritmo di ordinamento efficiente con una complessità temporale logaritmica.

Signup and view all the flashcards

Relazione di ricorrenza per Merge-Sort

La complessità di Merge-Sort è descritta da una relazione di ricorrenza che rappresenta il tempo necessario per ordinare un array di dimensione n. La relazione è composta da due casi: quando l'array ha un solo elemento (n=1), il tempo necessario è costante (a). Altrimenti, l'array viene diviso in due sottoarray di dimensioni n/2 e il tempo richiesto è la somma del tempo necessario per ordinare i due sottoarray (2T(n/2)), più il tempo necessario per combinare i due sottoarray ordinati (bn + c). La relazione di ricorrenza è quindi T(n) = a se n=1, altrimenti T(n) = 2T(n/2) + bn + c.

Signup and view all the flashcards

Metodo dell'iterazione per Merge-Sort

Il metodo dell'iterazione consiste nell'espandere la relazione di ricorrenza scrivendola ripetutamente per un numero di iterazioni fino a raggiungere un caso base. Questo metodo permette di esprimere la complessità temporale di Merge-Sort in funzione di n, la dimensione dell'array.

Signup and view all the flashcards

Complessità temporale di Merge-Sort

Dopo k ≤ log2 n iterazioni, il termine dominante e quindi la complessità temporale di Merge-Sort è T(n) = Θ(n log n). Questo risultato indica che Merge-Sort ha una complessità temporale logaritmica rispetto alla dimensione dell'array.

Signup and view all the flashcards

Caso migliore di Quick-Sort

Il caso migliore di Quick-Sort si verifica quando il partizionamento divide il vettore in due parti uguali. In questo caso, la complessità temporale di Quick-Sort è uguale a quella di Merge-Sort, ovvero Θ(n log n).

Signup and view all the flashcards

Complessità logaritmica

Il tempo necessario per ordinare un array è proporzionale alla dimensione dell'array moltiplicato per il logaritmo della dimensione dell'array.

Signup and view all the flashcards

Esprimere la complessità temporale di Merge-Sort in funzione di n

Il metodo dell'iterazione permette di scrivere la complessità temporale di Merge-Sort in funzione di n, la dimensione dell'array.

Signup and view all the flashcards

Termine dominante nella complessità di Merge-Sort

Il termine dominante nella complessità temporale di Merge-Sort è bn log2 n, che indica la crescita logaritmica della complessità rispetto alla dimensione dell'array.

Signup and view all the flashcards

bn log2 n

Il termine bn log2 n indica che la complessità aumenta logaritmicamente con la dimensione dell'array.

Signup and view all the flashcards

Relazione di ricorrenza con partizione bilanciata

Si riferisce a un algoritmo ricorsivo che divide l'input in sottoproblemi di dimensioni uguali ad ogni passo. Ad esempio, merge sort divide l'input in due metà ad ogni chiamata ricorsiva.

Signup and view all the flashcards

Relazione di ricorrenza a partizione non bilanciata

Un tipo di relazione di ricorrenza che descrive il comportamento di algoritmi come QuickSort, che suddividono l'input in due sottoproblemi di dimensioni non necessariamente uguali, ma che si avvicinano a un rapporto costante

Signup and view all the flashcards

Complessità temporale

Esprime il tempo di esecuzione di un algoritmo in funzione del numero di operazioni, in relazione alla dimensione dell'input.

Signup and view all the flashcards

Limite superiore asintotico

Un limite superiore per la complessità temporale di un algoritmo, espresso nella notazione O (grande O). Indica il comportamento asintotico dell'algoritmo per dimensioni di input molto grandi. Ad esempio, l'algoritmo di merge sort ha una complessità temporale O(n log n), dove n è la dimensione dell'input.

Signup and view all the flashcards

Complessità O(n log n)

indica che la complessità temporale dell'algoritmo è proporzionale alla dimensione dell'input moltiplicata per il logaritmo della dimensione dell'input. Ad esempio, l'algoritmo di merge sort ha una complessità temporale O(n log n).

Signup and view all the flashcards

Study Notes

Relazioni di Ricorrenza e Algoritmi di Ordinamento

  • Lo studio si concentra sulla complessità di algoritmi ricorsivi e sull'analisi di algoritmi di ordinamento con complessità n log n.
  • Gli argomenti includono: relazioni di ricorrenza (a partizione costante e bilanciata), teoremi relativi, metodo iterativo, merge-sort e quick-sort.
  • La complessità di algoritmi ricorsivi può essere espressa attraverso relazioni di ricorrenza.
  • Le relazioni di ricorrenza si distinguono in due casi:
    • Partizione costante: la chiamata ricorsiva riduce la dimensione dell'input di una costante.
    • Partizione bilanciata: la chiamata ricorsiva riduce la dimensione dell'input di un fattore costante (ad esempio dimezzandola).
  • Esempio di relazione di ricorrenza: la funzione fattoriale può essere descritta con T(n) = 1 + T(n-1) per n>1 e T(n) = 1 per n<2.
  • Il metodo dell'iterazione è un metodo per risolvere le relazioni di ricorrenza: si sviluppa la relazione fino a trovare la soluzione.
  • Il metodo della sostituzione: si ipotizza una soluzione e si applica il principio di induzione per verificarne la correttezza.

Relazione di Ricorrenza a Partizione Costante

  • Un esempio è il calcolo del fattoriale.
  • Se n<2, l'operazione è di costo 1.
  • Se n>=2, l'operazione richiede il calcolo del fattoriale di n-1, più un'operazione di costo 1 (T(n)=1+T(n-1)).

Algoritmo di Quick-Sort

  • L'idea di Quick-Sort: si sceglie un elemento come perno e si ri-organizzano gli altri elementi dividendo il problema in due parti più piccole.
  • Il partizionamento richiede tempo proporzionale a n.
  • Nel caso peggiore, la relazione è di tipo quadratico (O(n^2)).

Algoritmo Merge-Sort

  • L'idea del Merge-Sort:
    • Divide il problema in sotto-problemi più piccoli finché ogni sotto-problema ha un solo elemento (che è ordinato).
    • Combina i sotto-problemi ordinati in sotto-vettori via via più grandi.
  • La fusione richiede tempo proporzionale alla dimensione dei sotto-vettori da fondere.
  • La complessità di merge-sort è di tipo logaritmico (O(n log n)) sia nel caso migliore che in quello peggiore.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Recurrence Relations Quiz
3 questions

Recurrence Relations Quiz

PleasurableParadise avatar
PleasurableParadise
Solving Recurrence Relations Quiz
5 questions
Math Sequences and Recurrence Relations
28 questions
Use Quizgecko on...
Browser
Browser