03: Ordinamento
46 Questions
0 Views

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

    Description

    Questo quiz mette alla prova la tua conoscenza sugli algoritmi di ordinamento e sulla ricerca binaria. Affronta domande riguardanti la complessità temporale, gli algoritmi quadrati e i principi fondamentali della ricerca. Scopri quanto conosci degli algoritmi essenziali nella programmazione.

    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
    Use Quizgecko on...
    Browser
    Browser