03: Ordinamento

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 numero massimo di confronti richiesti dalla ricerca binaria?

  • log2 n (correct)
  • n!
  • n
  • 2n

La ricerca binaria può essere utilizzata su un vettore non ordinato.

False (B)

Qual è la complessità temporale degli algoritmi di ordinamento quadratici nel caso peggiore?

O(n^2)

L'algoritmo _____ scambia elementi per creare una parte ordinata del vettore.

<p>Insertion-sort</p> Signup and view all the answers

Abbina gli algoritmi di ordinamento alle loro descrizioni:

<p>Insertion-sort = Inserisce elementi nella parte ordinata Selection-sort = Seleziona il minimo e lo scambia Trivial-Sort = Genera tutte le permutazioni Bubble-sort = Scambia elementi adiacenti se non ordinati</p> Signup and view all the answers

Quale tra i seguenti algoritmi non è un algoritmo di ordinamento quadratico?

<p>Quick-sort (A)</p> Signup and view all the answers

Il numero di permutazioni è commisurato a n^2.

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

Qual è l'idea principale della Insertion-sort?

<p>Mantenere una parte ordinata e inserire l'elemento successivo nella posizione corretta.</p> Signup and view all the answers

Qual è il numero massimo di volte che la riga 3 viene eseguita nel caso peggiore?

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

Il tempo di esecuzione nel caso peggiore di questo algoritmo è lineare.

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

Qual è la forma generale del tempo di esecuzione Tcp(n)?

<p>Tcp(n) = an² + bn + c</p> Signup and view all the answers

Il tempo di esecuzione nel caso peggiore è proporzionale a __________.

<p>n²</p> Signup and view all the answers

Abbina ciascuna riga con il numero di volte che viene eseguita:

<p>Riga 3 = ti Riga 4 = ti - 1 Riga 5 = ti - 1 Riga 2 = n - 1</p> Signup and view all the answers

Quale espressione rappresenta il tempo di esecuzione nel caso peggiore?

<p>Tcp(n) = an² + bn + c (A)</p> Signup and view all the answers

Il numero di volte che la riga 4 viene eseguita è uguale a ti.

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

La riga 2 viene eseguita con i = 2, 3,..., n, cioè __________ volte.

<p>n - 1</p> Signup and view all the answers

Qual è la forma generale del tempo di esecuzione nel caso migliore di Selection Sort?

<p>Tcm(n) = an + b (C)</p> Signup and view all the answers

Nel caso migliore, l'algoritmo Selection Sort è quadratico.

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

Qual è l'invariante del ciclo esterno in Selection Sort?

<p>Il sottovettore A[1..i − 1] è ordinato.</p> Signup and view all the answers

Il tempo di esecuzione Tcm(n) è espresso come _________ per grandi valori di n.

<p>proporzionale ad an</p> Signup and view all the answers

Abbina i passaggi di Selection Sort con le loro descrizioni:

<p>Passo 1 = Inizializza i e imposta k = i Passo 2 = Cerca il minimo in A[i..n] Passo 3 = Scambia A[i] con A[k] Passo 4 = Incrementa i per migliorare la parte ordinata</p> Signup and view all the answers

Quale affermazione è vera riguardo al ciclo interno di Selection Sort?

<p>Il ciclo interno cerca sempre il minimo. (A)</p> Signup and view all the answers

Selection Sort può ordinare un vettore in meno di n scambi.

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

Qual è il ruolo dell'istruzione if A[k] > A[j] nel ciclo interno?

<p>Controlla se il valore corrente A[j] è il minimo.</p> Signup and view all the answers

Quale invariante è mantenuta nel ciclo esterno dell'Insertion-Sort?

<p>Il sottovettore A[1..i – 1] è ordinato. (C)</p> Signup and view all the answers

L'algoritmo Insertion-Sort è basato su un approccio di divisione e conquista.

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

Qual è il valore iniziale di i nel ciclo esterno durante l'Insertion-Sort?

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

L'invariante del ciclo interno afferma che i vettori A[1..j - 1] e A[j..i] sono ordinati e __________.

<p>∀l, 1 ≤ l ≤ j − 1, ∀k, j + 1 ≤ k ≤ i, A[l] ≤ A[k]</p> Signup and view all the answers

Abbina le seguenti variabili ai loro significati nel contesto dell'Insertion-Sort:

<p>i = Indice del ciclo esterno j = Indice del ciclo interno A = Array da ordinare n = Numero di elementi nell'array</p> Signup and view all the answers

Quanto tempo richiede l'esecuzione della riga i all'interno dell'Insertion-Sort?

<p>ci unità di tempo per ogni esecuzione. (D)</p> Signup and view all the answers

Al termine del ciclo esterno, l'array è garantito di essere ordinato.

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

Cosa deve avvenire affinché il ciclo interno dell'Insertion-Sort termini?

<p>A[j - 1] ≤ A[j] o j = 1</p> Signup and view all the answers

Qual è l'invariante dei cicli interni dell'algoritmo Selection-Sort?

<p>A[k] è il minimo in A[i..j − 1] (D)</p> Signup and view all the answers

L'algoritmo Selection-Sort è corretto se l'invariante del ciclo interno viene mantenuta.

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

Qual è la complessità temporale del Selection-Sort nel caso peggiore?

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

L’algoritmo Selection-Sort aggiorna l’indice del minimo ogni volta che la condizione _____ risulta sempre vera.

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

Abbina i componenti dell'algoritmo alle loro funzioni:

<p>A[k] = Minimo in A[i..j − 1] j = n + 1 = Condizione per uscita dal ciclo i = Indice corrente dell'elemento c1, c2, c3 = Unità di tempo per il conteggio delle righe</p> Signup and view all the answers

Quale delle seguenti righe non conta nel tempo di esecuzione di Selection-Sort?

<p>Riga 6 (D)</p> Signup and view all the answers

La complessità temporale di Selection-Sort aumenta linearmente con il numero di elementi.

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

Che cosa accade se j viene incrementato in ogni iterazione del ciclo interno?

<p>Consente di analizzare tutti gli elementi dal minimo al massimo.</p> Signup and view all the answers

Il tempo di esecuzione del Selection-Sort dipende dal numero di elementi del _____ .

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

Abbina le varie righe del Selection-Sort con il loro scopo:

<p>Riga 1 = Inizializzazione Riga 4 = Aggiornamento indice del minimo Riga 3 = Confronto Riga 2 = Incremento dell'indice</p> Signup and view all the answers

Qual è il valore assegnato a c1, c2, c3, c4, c5 e c8 nel conteggio del tempo di esecuzione?

<p>1 (D)</p> Signup and view all the answers

Il ciclo interno dell'algoritmo Selection-Sort ha sempre il valore di j uguale a n.

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

Qual è l'importanza dell'invariante nel ciclo di Selection-Sort?

<p>Assicura la correttezza dell'algoritmo mantenendo il minimo.</p> Signup and view all the answers

La forma polinomiale del tempo di esecuzione è di _____ grado rispetto a n.

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

Flashcards

Problema di ordinamento

Il problema di ordinamento (sorting) consiste nel riorganizzare gli elementi di un vettore in modo tale che siano disposti in ordine crescente (o decrescente).

Ricerca binaria

La ricerca binaria (ricerca dicotomica) è un algoritmo che trova un elemento specifico in un vettore ordinato in tempo logaritmico. Dividendo il vettore a metà ad ogni passo, cerca l'elemento nel sottovettore corretto.

Insertion sort

Insertion sort è un algoritmo di ordinamento che inserisce ogni elemento, a partire dal secondo, nella posizione corretta nella parte già ordinata del vettore.

Selection sort

Selection sort è un algoritmo di ordinamento che cerca il minimo elemento nel vettore e lo scambia con l'elemento in prima posizione. Poi ripete questa operazione per il resto del vettore, trovando il minimo tra gli elementi rimanenti.

Signup and view all the flashcards

Caso peggiore

Il caso peggiore è una situazione in cui un algoritmo richiede il maggior tempo di esecuzione. Per la ricerca in un vettore non ordinato, il caso peggiore si verifica quando l'elemento cercato si trova nell'ultima posizione.

Signup and view all the flashcards

Permutazione

Una permutazione di un vettore è una riorganizzazione dei suoi elementi in un ordine diverso.

Signup and view all the flashcards

Analisi della complessità

L'analisi della complessità di un algoritmo studia il numero di operazioni eseguite dall'algoritmo al crescere della dimensione dell'input.

Signup and view all the flashcards

Invariante

Un invariante è una condizione che rimane vera durante l'esecuzione di ogni fase di un algoritmo. L'invariante di insertion sort afferma che la parte sinistra del vettore è sempre ordinata.

Signup and view all the flashcards

ti

Il numero di volte che la riga 3 del codice viene eseguita per un dato valore di i.

Signup and view all the flashcards

Caso peggiore (cp) per Insertion Sort

Il caso peggiore per l'algoritmo di ordinamento che comporta il maggior numero di scambi e, quindi, un tempo di esecuzione più lungo.

Signup and view all the flashcards

Riga 3 del codice

L'esecuzione del codice comporta un'iterazione del ciclo esterno (riga 2) e un numero di iterazioni del ciclo interno (riga 3) che varia a seconda del valore di i.

Signup and view all the flashcards

Tcp(n)

L'espressione matematica per calcolare il tempo di esecuzione dell'algoritmo nel caso peggiore.

Signup and view all the flashcards

Complessità temporale di Insertion Sort nel caso peggiore

Il tempo di esecuzione dell'algoritmo nel caso peggiore è proporzionale al quadrato del numero di elementi del vettore.

Signup and view all the flashcards

Riga 4 del codice

La riga 4 viene eseguita ti-1 volte per un dato valore di i, ovvero una volta in meno rispetto alla riga 3.

Signup and view all the flashcards

Comportamento asintotico di Insertion Sort

Il tempo di esecuzione dell'algoritmo è proporzionale al quadrato del numero di elementi del vettore per valori grandi di n.

Signup and view all the flashcards

Algoritmo quadratico

L'algoritmo ha una complessità temporale quadratica, ovvero il tempo di esecuzione cresce in modo quadratico con la dimensione dell'input N.

Signup and view all the flashcards

Invariante di un ciclo

L'invariante di un ciclo è una condizione che è vera all'inizio del ciclo e che rimane vera dopo ogni iterazione del ciclo.

Signup and view all the flashcards

Invariante del ciclo esterno di Insertion Sort

L'invariante del ciclo esterno dell'Insertion Sort è che il sottovettore A[1..i-1] è ordinato.

Signup and view all the flashcards

Invariante del ciclo interno di Insertion Sort

L'invariante del ciclo interno dell'Insertion Sort è che i vettori A[1..j-1] e A[j..i] sono ordinati e che ogni elemento in A[1..j-1] è minore o uguale a qualsiasi elemento in A[j+1..i].

Signup and view all the flashcards

Inizializzazione dell'invariante del ciclo esterno di Insertion Sort

L'inizializzazione dell'invariante del ciclo esterno avviene quando i = 2, quindi il sottovettore A[1..i-1] contiene solo il primo elemento e, quindi, è ordinato.

Signup and view all the flashcards

Mantenimento dell'invariante del ciclo esterno di Insertion Sort

Il mantenimento dell'invariante del ciclo esterno avviene quando il ciclo interno inserisce correttamente A[i] nella sua posizione, mantenendo ordinato il sottovettore A[1..i-1].

Signup and view all the flashcards

Uscita dell'invariante del ciclo esterno di Insertion Sort

L'uscita dell'invariante del ciclo esterno avviene quando i = n+1, quindi l'invariante implica che l'intero vettore è ordinato.

Signup and view all the flashcards

Inizializzazione dell'invariante del ciclo interno di Insertion Sort

L'inizializzazione dell'invariante del ciclo interno avviene quando j = i, quindi il sottovettore A[1..j-1] è vuoto e il sottovettore A[j..i] contiene un solo elemento. L'invariante è vero perché un vettore di un elemento è ordinato e non c'è nessun elemento in A[j+1..i].

Signup and view all the flashcards

Mantenimento dell'invariante del ciclo interno di Insertion Sort

Il mantenimento dell'invariante del ciclo interno avviene in due modi: 1. Se A[j-1] è minore o uguale a A[j] (o j = 1), il ciclo interno termina e l'invariante è vero perché il sottovettore A[1..i] è ordinato. 2. Se A[j-1] è maggiore di A[j], viene fatto uno scambio tra A[j-1] e A[j]. L'invariante rimane vero perché lo scambio mantiene ordinato il sottovettore A[1..j-1] e continua ad essere vero per il sottovettore A[j..i].

Signup and view all the flashcards

Caso migliore (cm)

Nel caso migliore, il tempo di esecuzione di un algoritmo è proporzionale alla dimensione dell'input. Ad esempio, se l'input è un vettore di 'n' elementi, il tempo di esecuzione è proporzionale a 'n'.

Signup and view all the flashcards

Tempo di esecuzione lineare

Il tempo di esecuzione di un algoritmo nel caso migliore può essere espresso come una funzione lineare della dimensione dell'input 'n'. Questo significa che il tempo di esecuzione aumenta linearmente con 'n'.

Signup and view all the flashcards

Invariante di Selection sort

L'invariante di Selection sort assicura che, ad ogni passo, la parte ordinata del vettore contiene i 'i-1' elementi più piccoli del vettore originale, mentre la parte non ordinata contiene gli elementi rimanenti.

Signup and view all the flashcards

Ciclo interno di Selection sort

Il ciclo interno di Selection sort trova l'indice 'k' dell'elemento minimo nella parte non ordinata del vettore.

Signup and view all the flashcards

Ciclo esterno di Selection sort

Il ciclo esterno di Selection sort itera su ogni elemento del vettore, a partire dal primo.

Signup and view all the flashcards

Scambio di elementi in Selection sort

Dopo aver trovato l'indice 'k' dell'elemento minimo, la riga 8 di Selection sort scambia l'elemento in posizione 'i' con l'elemento in posizione 'k'.

Signup and view all the flashcards

Correttezza di Selection sort

La dimostrazione della correttezza di Selection sort si basa sull'invariante del ciclo. L'invariante garantisce che la parte ordinata del vettore sia sempre ordinata correttamente e che contenga gli elementi più piccoli del vettore originale.

Signup and view all the flashcards

Invariante del ciclo interno - Selection Sort

Nell'algoritmo Selection Sort, l'invariante del ciclo interno afferma che l'elemento A[k] è il minimo tra gli elementi del sottovettore A[i..j-1].

Signup and view all the flashcards

Inizializzazione dell'invariante

L'invariante del ciclo interno viene inizializzato impostando k=i e j=i+1, il che è banale poiché il minimo tra un solo elemento è l'elemento stesso.

Signup and view all the flashcards

Mantenimento dell'invariante

Nell'algoritmo Selection Sort, l'ipotesi induttiva è che l'invariante sia vero prima di eseguire il corpo del ciclo interno. Dopo aver confrontato A[k] con A[j], si aggiorna k se A[j] è più piccolo. Quindi j viene incrementato, mantenendo vera la condizione di minimo.

Signup and view all the flashcards

Invariante all'uscita del ciclo interno

Quando il loop interno termina (j = n+1), l'invariante implica che A[k] è il minimo in A[i..n], dimostrando che l'algoritmo funziona correttamente.

Signup and view all the flashcards

Complessità temporale del caso peggiore

La complessità temporale del Selection Sort, nel caso peggiore, è di O(n^2).

Signup and view all the flashcards

Caso peggiore in Selection Sort

Nel caso peggiore, l'indice del minimo in A[i..n] viene aggiornato ad ogni iterazione del ciclo interno.

Signup and view all the flashcards

Unità di tempo

Il numero di operazioni eseguite da ciascuna riga del codice Selection Sort è considerato costante e pari ad 1.

Signup and view all the flashcards

Ordine di complessità del Selection Sort

La complessità temporale del Selection Sort è un polinomio di secondo grado in n, quindi possiamo dire che è O(n^2).

Signup and view all the flashcards

Study Notes

Ordinamento (algoritmi quadratici)

  • Obiettivi: Apprendere algoritmi di ordinamento quadratici, invarianti e analisi di complessità.
  • Argomenti: Ordinamento, Insertion-Sort, Selection-Sort, analisi di correttezza e complessità.

Problema dell'ordinamento (sorting)

  • Ricerca in vettori ordinati: La ricerca binaria su un vettore ordinato richiede al massimo log₂ n confronti.
  • Ricerca binaria (esempio):
    • Prevede un vettore ordinato.
    • Restituisce True se un elemento x è presente nel vettore, False altrimenti.
  • Ricerca sequenziale: Richiede, nel caso peggiore, n confronti per trovare l'elemento cercato in un vettore di n elementi.

Insertion-Sort

  • Idea: Ordina un vettore inserendo elementi nell'ordine corretto nella parte già ordinata.
  • Inizializzazione: La parte iniziale del vettore (A[1..i-1]) è considerata ordinata.
  • Ciclo esterno: Il ciclo esterno itera da i=2 fino a n.
  • Ciclo interno: Questo ciclo effettua scambi per mantenere l'ordine crescente nella parte ordinata del vettore.
  • Simulazione con (2, 6, 3, 1, 5, 4): L'algoritmo posiziona gradualmente gli elementi nella loro corretta posizione nella parte ordinata del vettore.

Dimostrazione della correttezza di Insertion-Sort

  • Invariante del ciclo esterno: Il sottovettore A[1..i-1] è ordinato.
  • Inizializzazione: Per i=2 è verificato dato che il sottovettore A[1..i-1] consiste di un solo elemento e quindi è ordinato.
  • Mantenimento: Se il sottovettore A[1..i-1] è ordinato al passaggio precedente, il ciclo interno fa lo scambio degli elementi per sistemare A[i] nella sua posizione corretta nel sottovettore ordinato.
  • All'uscita: Il vettore intero è ordinato.
  • Invariante del ciclo interno: Il sottovettore A[1..j-1] e A[j..i] sono ordinati e ogni elemento nel sottovettore A[1..j-1] è minore o uguale ad ogni elemento in A[j..i].

Tempo di esecuzione di Insertion-Sort

  • Caso peggiore: L'algoritmo è quadratico (proporzionale a n²).
  • Caso migliore: L'algoritmo è lineare (proporzionale a n).

Selection-Sort

  • Idea: Trova il minimo elemento del vettore e lo posiziona nella sua posizione corretta.
  • Ciclo esterno: Iterando da i=1 a n-1, la parte A[1..i-1] del vettore è già ordinata.
  • Ciclo interno: Trova il minimo elemento nel sottovettore A[i..n] e lo scambia con A[i].

Dimostrazione della correttezza di Selection-Sort

  • Invariante del ciclo esterno: Il sottovettore A[1..i-1] è ordinato e contiene i numeri più piccoli del vettore.
  • Invariante del ciclo interno: A[k] è il minimo elemento in A[i..j-1].
  • All'uscita: Il vettore è ordinato.

Tempo di esecuzione di Selection-Sort

  • Caso peggiore e migliore: L'algoritmo è quadratico (proporzionale a n²).

Studying That Suits You

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

Quiz Team

Related Documents

More Like This

Binary Search Trees
44 questions

Binary Search Trees

RefinedBowenite avatar
RefinedBowenite
Recover the BST Test
10 questions

Recover the BST Test

CleanlyThorium avatar
CleanlyThorium
Searching and Sorting Algorithms
5 questions
Use Quizgecko on...
Browser
Browser