1 / 20

ALGORITMI

a. ALGORITMI. Definizione di algoritmo. L’algoritmo è un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in tempo finito. Esempio di algoritmo.

tariq
Download Presentation

ALGORITMI

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. a ALGORITMI

  2. Definizione di algoritmo L’algoritmo è un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in tempo finito.

  3. Esempio di algoritmo Mettiamo in evidenza i punti fondamentali che caratterizzano un algoritmo. (per esempio le istruzioni per l’utilizzo di un flacone di shampoo) Passo 1: Bagna i capelli; Passo 2: Insapona i capelli; Passo 3: Risciacqua i capelli; Passo 4: Insapona i capelli; Passo 5: Risciacqua i capelli; Passo 6: Stop, lavaggio dei capelli terminato.

  4. L’algoritmo d’ordinamento Algoritmo che viene utilizzato per elencare gli elementi di un insieme secondo una sequenza stabilita da una relazione d'ordine, in modo che ogni elemento sia minore (o maggiore) di quello che lo segue.

  5. Esistono vari tipi d’ordinamento Selectionsort; Insertionsort; Bubblesort; Quicksort; Mergesort; Heapsort; Countinssort; Bucketsort.

  6. SelectionSort L'algoritmo seleziona di volta in volta il numero minore nella sequenza di partenza e lo sposta nella sequenza ordinata; di fatto la sequenza viene suddivisa in due parti: la sottosequenza ordinata, che occupa le prime posizioni dell'array, e la sottosequenza daordinare, che costituisce la parte restante dell'array (non dipende dall’input ma dalla dimensione dell’array). Dovendo ordinare un arrayA di lunghezza n, si fa scorrere l'indice i da 1 a n-1 ripetendo i seguenti passi: si cerca il più piccolo elemento della sottosequenza A[i..n]; si scambia questo elemento con l'elemento i-esimo

  7. Esempio di SelectionSort

  8. InsertionSort L'algoritmo solitamente ordina la sequenza sul posto. Si assume che la sequenza da ordinare sia partizionata in una sottosequenza già ordinata, all'inizio composta da un solo elemento, e una ancora da ordinare. Alla k-esima iterazione, la sequenza già ordinata contiene k elementi. In ogni iterazione, viene rimosso un elemento dalla sottosequenza non ordinata (scelto, in generale, arbitrariamente) e inserito (da cui il nome dell'algoritmo) nella posizione corretta della sottosequenza ordinata, estendendola così di un elemento. Per fare questo, un'implementazione tipica dell'algoritmo utilizza due indici: uno punta all'elemento da ordinare e l'altro all'elemento immediatamente precedente. Se l'elemento puntato dal secondo indice è maggiore di quello a cui punta il primo indice, i due elementi vengono scambiati di posto; altrimenti il primo indice avanza. Il procedimento è ripetuto finché si trova nel punto in cui il valore del primo indice deve essere inserito. Il primo indice punta inizialmente al secondo elemento dell'array, il secondo inizia dal primo. L'algoritmo così tende a spostare man mano gli elementi maggiori verso destra.

  9. Esempio di InsertionSort

  10. BubbleSort  Il suo funzionamento è semplice: ogni coppia di elementi adiacenti della lista viene comparata e se essi sono nell'ordine sbagliato vengono invertiti. L'algoritmo scorre poi tutta la lista finché non vengono più eseguiti scambi, situazione che indica che la lista è ordinata.

  11. Esempio di bubbleSort

  12. QuickSort L'idea base può esprimersi agevolmente in termini ricorsivi. Ad ogni stadio si effettua un ordinamento parziale di una sequenza di oggetti da ordinare. Assunto un elemento come perno dello stadio, si confrontano con esso gli altri elementi e si posizionano alla sua sinistra i minori e a destra i maggiori, senza tener conto del loro ordine. Dopo questo stadio si ha che il perno è nella sua posizione definitiva.

  13. Esempio di QuickSort

  14. MergeSort Se la sequenza da ordinare ha lunghezza 0 oppure 1, è già ordinata. Altrimenti: La sequenza viene divisa in due metà (se la sequenza contiene un numero dispari di elementi, viene divisa in due sottosequenze di cui la prima ha un elemento in più della seconda) Ognuna di queste sottosequenze viene ordinata, applicando ricorsivamente l'algoritmo Le due sottosequenze ordinate vengono fuse. Per fare questo, si estrae ripetutamente il minimo delle due sottosequenze e lo si pone nella sequenza in uscita, che risulterà ordinata

  15. Esempio di MergeSort

  16. HeapSort In uno mucchio decrescente (utilizzato per ordinare ad esempio un array in senso crescente) ogni nodo padre contiene un valore maggiore o uguale a quello dei suoi due figli diretti, di conseguenza risulterà maggiore anche di tutti i nodi che si trovano nel sottoalbero di cui esso è la radice; questo non implica affatto che nodi a profondità maggiore contengano valori minori di quelli a profondità minore.

  17. Esempio di HeapSort

  18. CountingSort L'algoritmo conta il numero di occorrenze di ciascun valore presente nell'array da ordinare, memorizzando questa informazione in un array temporaneo di dimensione pari all'intervallo di valori. Il numero di ripetizioni dei valori inferiori indica la posizione del valore immediatamente successivo. Si calcolano i valori massimo, , e minimo, , dell'array e si prepara un array ausiliario C di dimensione pari all'intervallo dei valori con C[i] che rappresenta la frequenza dell'elemento i+minimo nell'array di partenza A. Si visita l'array A aumentando l'elemento di C corrispondente. Dopo si visita l'array C in ordine e si scrivono su A, C[i] copie del valore i+minore .

  19. Esempio di CountingSort

  20. BucketSort L'intervallo dei valori, noto a priori, è diviso in intervalli più piccoli, detti cesti. Ciascun valore dell'array è quindi inserito nel cesto a cui appartiene, i valori all'interno di ogni cesto vengono ordinati e l'algoritmo si conclude con la concatenazione dei valori contenuti nei cesti. ____1° parte____ ____2°parte____

More Related