1 / 17

GLI ALGORITMI VISIBILE SUL BLOG gabotb@wordpress.com

GLI ALGORITMI VISIBILE SUL BLOG gabotb@wordpress.com. INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T. INNANZITUTTO COSA E’ UN ALGORITMO … .

metta
Download Presentation

GLI ALGORITMI VISIBILE SUL BLOG gabotb@wordpress.com

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. GLI ALGORITMI VISIBILE SUL BLOGgabotb@wordpress.com INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T

  2. INNANZITUTTO COSA E’ UN ALGORITMO … • Un algoritmo è un procedimento formale che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile mediante un algoritmo si dice ”computabile”. Il termine algoritmo deriva dalla trascrizione latina del nome di un matematico arabo – medioevale, al-Khwarizmi, che è considerato uno dei primi autori ad aver fatto riferimento a questo concetto. • Questo può anche essere considerato un insieme di azioni (o istruzioni) che, eseguite secondo un ordine prestabilito, permettono di trovare il risultato cercato sulla base dei dati in ingresso

  3. QUANTI TIPI DI ALGORITMI CONOSCIAMO E ANDREMO AD ANALIZZARE ? INNANZITUTTO VA DETTO CHE SI DIVIDONO IN BASE ALL’ ORDINE CHE SI VUOLE DARE ALLE INFORMAZIONI • Quicksort • Heapsort • Mergesort • Countingsort • Bubblesort • Selectionsort • Insertionsort

  4. Quicksort • Ordina i dati suddividendo il problema in problema più semplici In altre parole diciamo che la base del suo funzionamento è l'utilizzo ricorsivo della procedura “partition” : preso un elemento da una struttura dati (es. array) si pongono gli elementi minori a sinistra rispetto a questo e gli elementi maggiori a destra. • Il Quicksort, termine che tradotto letteralmente in italiano indica ordinamento rapido, è un algoritmo di ordinamento che ha, in generale , prestazioni migliori tra quelli basati su confronto. È stato ideato da Charles Antony Richard Hoare nel 1961.

  5. Heapsort • Algoritmo che inserisce a destra dell’ elenco il valore piu semplice • L' heapsort è un algoritmo di ordinamento iterativo ed “in-place” proposto da Williams nel 1964, che si basa su strutture dati ausiliarie . • L' heapsort per eseguire l'ordinamento, utilizza una struttura chiamata heap(dall’ inglese mucchio); un heap è rappresentabile con un albero binario in cui tutti i nodi seguono una data proprietà, detta priorità. Esso è completo almeno fino al penultimo livello dell'albero e ad ogni nodo corrisponde uno ed un solo elemento.

  6. Mergesort • Unisce due elenchi già ordinati ai dati per ordinarli in un’unica lista • Concettualmente, l'algoritmo funziona nel seguente modo: Se la sequenza da ordinare ha lunghezza 0 oppure 1, è già ordinata. Altrimenti: La sequenza viene divisa (divide) 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(impera) Le due sottosequenze ordinate vengono fuse (combina). Per fare questo, si estrae ripetutamente il minimo delle due sottosequenze e lo si pone nella sequenza in uscita, che risulterà ordinata • Fu inventato da John von Neumann nel 1945.

  7. Countingsort • Ordina i dati paragonabili uno alla volta e li confronta con un valore numerico . • Il Countingsort è un algoritmo di ordinamento per valori numerici interi con complessità di tipo lineare. L'algoritmo si basa sulla conoscenza a priori dell'intervallo in cui sono compresi i valori da ordinare .

  8. In questo caso , diversamente dagli altri si propone un esempio piu specifico , e non in riferimento ad un programma . Nonostante ciò capiamo dalla descrizione precedente cosa vogliamo intendere con “counting sort” …

  9. Bubblesort • Confronta i dati e mette quello di valore minore a sinistra dell’elenco •  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. • L'algoritmo deve il suo nome al modo in cui gli elementi vengono ordinati, con quelli più piccoli che "risalgono" verso le loro posizioni corrette all'interno della lista . In particolare, alcuni elementi attraversano la lista velocemente , altri più lentamente: i primi sono in gergo detti "conigli" e sono gli elementi che vengono spostati nella stessa direzione in cui scorre l'indice dell'algoritmo, mentre i secondi sono detti "tartarughe" e sono gli elementi che vengono spostati in direzione opposta a quella dell'indice.

  10. Selectionsort • Scrive per ordinare pochi elementi , ordina i dati assegnando un minore tra quelli che rimangono • L'ordinamento per selezione (selectionsort) è un algoritmo di ordinamento che opera ”in place” ed in modo simile all'ordinamento per inserzione . L'algoritmo è di tipo non adattivo, ossia il suo tempo di esecuzione non dipende dall'input ma dalla dimensione dell'array! • 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 da ordinare, che costituisce la parte restante dell'array.

  11. Insertionsort • Ordina i maggiori a destra e i minori alla sinistra • L'Insertionsort , in italiano ordinamento a inserimento, è un algoritmo relativamente semplice per ordinare un array . Possiamo constatare che non è molto diverso dal modo in cui un essere umano ordina un mazzo di carte. Esso è un algoritmo in place, cioè ordina l'array senza doverne creare una copia, risparmiando memoria. Pur essendo molto meno efficiente di algoritmi più avanzati , può avere alcuni vantaggi: ad esempio, è semplice da implementare ed è efficiente per insiemi di partenza che sono quasi ordinati.

  12. Per esempio … • functioninsertionSort(array A) fori ← 1 to length[A] do value ← A[i] j ← i-1 while j >= 0 and A[j] > value do A[j + 1] ← A[j] j ← j-1 A[j+1] ← value

More Related