Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.

Slides:



Advertisements
Presentazioni simili
Fondamenti di Informatica
Advertisements

Strutture dati per insiemi disgiunti
Fondamenti di Informatica1 Gestione della memoria I sistemi di memoria possono essere suddivisi in: –memoria interna al processore –memoria principale.
Analisi della complessità degli algoritmi
Procedure e funzioni A. Ferrari.
Chiamate a Procedure. Per lesecuzione di una procedura, un programma deve eseguire i seguenti sei passi: mettere i parametri in un posto dove la procedura.
Corso di Laurea in Informatica Corso di Laurea in Informatica Terzo anno 28/02/2008.
Corso di Laurea in Informatica Corso di Laurea in Informatica Terzo anno 17/03/2009.
Lez. 10a1 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Strategie per.
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Alberi binari di ricerca
Code con priorità Ordinamento
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Il problema del dizionario
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Usa la tecnica del.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
IFTS2002 Acq. Dati Remoti: INFORMATICA
CORSO DI PROGRAMMAZIONE II
Algoritmi e Strutture Dati (Mod. A)
Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.
Algoritmi e Strutture Dati III. Algoritmi di Ordinamento
Algoritmi di ordinamento
07/04/2003Algoritmi Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure.
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
memoria gestita staticamente:
MS-WINDOWS Corso di Introduzione allInformatica Esercitatore: Agostino Forestiero.
Microsoft Word Nozioni Avanzate Corso di Introduzione allInformatica Esercitatore: Agostino Forestiero.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Fondamenti di Informatica1 Software di base Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software.
Fondamenti di Informatica1 Linguaggi Classificati rispetto alle caratteristiche principali: –potere espressivo che influenza lo stile di programmazione.
Fondamenti di Informatica1 Realizzazione software Due fasi: 1. Specifica dell'algoritmo 1.a Definizione dei dati 1.b Definizione della modalità della loro.
Fondamenti di Informatica
Le funzioni.
Elementi di Informatica di base
INFORMATICA MATTEO CRISTANI.
Strutture dati per insiemi disgiunti
Radix-Sort(A,d) // A[i] = cd...c2c1
Parte 5 Laboratorio di Informatica Dott.ssa Elisa Tiezzi
Laboratorio di Informatica1 Parte 4 Laboratorio di Informatica Dott.ssa Elisa Tiezzi Dott.ssa Elisa Mori.
Corso di Introduzione all’Informatica
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
11/10/2004Introduzione all'Informatica1 Che cose lInformatica Computer ScienceLInformatica (Computer Science) non è soltanto La scienza e la tecnologia.
Complessità di un algoritmo
ALGORITMI a.
Corso di Introduzione all’Informatica
Algoritmi CHE COS’è UN ALGORITMO di ORDINAMENTO?
Array (ordinamento) CORDA – Informatica A. Ferrari.
Corso di Introduzione all’Informatica
ALGORITMO Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un formalismo che permette di rappresentare.
La ricorsione.
GLI ALGORITMI VISIBILE SUL BLOG INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Esercizio 14 – chiamata di una procedura Il codice deve: Passare due parametri alla procedura ‘salva’ Questa procedura deve salvare i due parametri nel.
Realizzazione software
Complessità Computazionale
Problema dell’Ordinamento. Problema dell’ordinamento Formulazione del problema –Si vuole ordinare una lista di elementi secondo una data proprietà P Esempio:
GLI ALGORITMI DI ORDINAMENTO
Divide et Impera Parte 11 - Risoluzione di problemi per divisione in sottoproblemi “bilanciati” Corso A: Prof. Stefano Berardi
Prof.ssa Rossella Petreschi Lezione del 17 /10/2014 del Corso di Algoritmica Lezione n°5.
Transcript della presentazione:

Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni dati) Esistono due possibilità: –Macro –Procedure

Fondamenti di Informatica2 Le macro Una macro è definita come un insieme di istruzioni (o blocco) Queste vengono sostituite all'interno del codice Servono per rendere più leggibile il codice e per facilitarne la modifica coerente #define MAX(a,b) (a>b ? a : b)

Fondamenti di Informatica3 Le procedure Una procedura è definita come un insieme di istruzioni (o blocco) Il controllo del flusso passa alla procedura ogni volta che viene invocata E' necessario un meccanismo per ritornare al punto chiamante Utilizzo dello stack (Stack Pointer)

Fondamenti di Informatica4 Procedure e funzioni La ripetizione di un segmento di codice può avere due obiettivi: –ripetere la stessa sequenza di operazioni –calcolare diversi valori, partendo da parametri diversi La differenza principale è: –la procedura non ritorna nessun valore –la funzione ritorna un valore (ad es void)

Fondamenti di Informatica5 Passaggio dei parametri Ogni procedura/funzione generalmente richiede un insieme di dati I dati devono essere accessibili: –in variabili globali –oppure sotto forma di parametri I parametri sono dati che vengono utilizzati dalla procedura; ad ogni chiamata possono assumere valori diversi

Fondamenti di Informatica6 Passaggio dei parametri I parametri possono essere passati in modi diversi: –per valore vengono effettuate delle copie dei valori; le copie sono usate dalla procedura che può anche modificarne il valore –per riferimento si passa il puntatore alle variabili; i valori possono essere modificati dalla procedura

Fondamenti di Informatica7 Side effects Se il passaggio dei parametri avviene per valore, l'effetto della procedura è limitato al valore che ritorna Se i parametri sono passati per riferimento, la procedura può avere effetti collaterali (side effects) –è un modo per far in modo che la procedura ritorni più di un valore

Fondamenti di Informatica8 Le procedure Annidamento: in una procedura può essere contenuta un'altra chiamata a procedura Limite sulla dimensione dello stack

Fondamenti di Informatica9 Le procedure Ricorsione: all'interno di una procedura avviene una chiamata alla procedura stessa Limite sulla dimensione dello stack Molti algoritmi sono basati sulla ricorsione

Fondamenti di Informatica10 La ricorsione Esempi: –somma di N dati –calcolo del fattoriale –calcolo dei primi N numeri primi –visita di un albero

Fondamenti di Informatica11 Algoritmi di ordinamento Basilare in molteplici applicazioni Esempio importante di algoritmi diversi per risolvere lo stesso problema Metodi di ordinamento interni: i dati risiedono nella memoria centrale (in un vettore; campo chiave) Confronto basato sull'efficienza

Fondamenti di Informatica12 Selectionsort Ordinamento per selezione Si sceglie il minimo del vettore e lo si scambia con la posizione corretta Complessità: O(n 2 ) I due cicli vengono sempre eseguiti, indipendentemente dalla configurazione dei dati

Fondamenti di Informatica13 Bubblesort Basato sulla considerazione che: e i e i+1 Confronta coppie adiacenti e eventualmente le scambia Dopo una scansione completa l'elemento minore è nella posizione corretta Termina quando sono terminati gli scambi (se è già ordinato serve solo un passo per la verifica) Complessità: O(n 2 )

Fondamenti di Informatica14 Mergesort Basato sulla fusione (merge) di due vettori ordinati: –la fusione ha complessità O(n) E' intrisecamente ricorsivo Vettore iterativamente diviso in 2 parti: –ordinamento e fusione Complessità O(n log 2 n)

Fondamenti di Informatica15 Mergesort Indipendente dalla configurazione in ingersso La ricorsione incrementa la complessità della gestione: –è consigliabile usare un programma non- ricorsivo Per ogni programma ricorsivo esiste un programma non-ricorsivo più efficiente

Fondamenti di Informatica16 Quicksort Si sceglie un elemento pivot e si suddivide il vettore in due: uno con el. minori, l'altro con el. maggiori o uguali del pivot Si procede iterativamente fino a vettori di 1 solo elemento La suddivisione ha complessità O(n) La complessità della parte ricorsiva dipende dalla scelta del pivot

Fondamenti di Informatica17 Quicksort Scegliendo come pivot l'elemento min o max, la complessità diventa O(n 2 ) Scegliendo come pivot l'elemento centrale, la complessità è O(n log 2 n) Il caso peggiore succede raramente E' più probabile il caso migliore E' usato per la semplicità e l'efficienza

Fondamenti di Informatica18 Limite inferiore della complessità Si considerano algoritmi la cui operazione fondamentale è il confronto tra elementi Problema: –è ricondotto alla ricerca di una specifica permutazione di n oggetti –esistono n! permutazioni diverse –tutte le permutazioni sono candidate –ogni passo dell'algoritmo serve per eliminare dei candidati

Fondamenti di Informatica19 Esempio La ricerca è rappresentabile graficamente con un albero binario: –la radice rappresenta tutte le permutazioni –ogni confronto suddivide le permutazioni La profondità dell'albero determina il numero massimo di confronti nel caso peggiore

Fondamenti di Informatica20 Esempio Ordinare {a1, a2, a3} Albero di risoluzione –3! = 6 permutazioni (6 foglie) –albero con profondità 3 Programma in C

Fondamenti di Informatica21 L'albero deve avere n! foglie In generale un albero binario con profondità i ha al più 2 i foglie Quindi per avere n! foglie, l'albero deve avere profondità p = log(n!) p = log(n!) ~ log(n/e) n =n log(n) - n log(e) = O(n log(n)) Il limite inferiore alla complessità è O(n log(n)) Limite inferiore della complessità

Fondamenti di Informatica22 Binsort Fin'ora gli algoritmi erano basati su operazioni di confronto Il binsort utilizza operazioni di indirizzamento con indici Sfrutta la conoscenza dell'intervallo di variabilità delle chiavi

Fondamenti di Informatica23 Binsort Si suppone che gli n elementi del vettore abbiano chiavi [1..n] Si scandisce un vettore e si spostano gli elementi in un altro Ha complessità O(n)

Fondamenti di Informatica24 Binsort Caso di più chiavi uguali: –utilizzo di una lista –al termine le liste vengono concatenate Complessità: –inserimento O(n) –concatenazione O(n) –totale O(n)

Fondamenti di Informatica25 Binsort E' il più efficiente se: –si utilizzano chiavi numeriche –l'intervallo di variabilità delle chiavi è noto –è possibile effettuare indirizzamenti con indici

Fondamenti di Informatica26 Considerazioni sulla scelta di un algoritmo Le caratteristiche di un algoritmo sono: –semplice, per facilitarne la comprensione, programmazione, e correzione –efficiente, cioè richiede una quantità limitata di risorse per l'esecuzione Le due caratteristiche si riferiscono a: –costo umano –costo di esecuzione

Fondamenti di Informatica27 Considerazioni sulla scelta di un algoritmo Non esistono regole per la scelta ottima Generalmente però: –si sceglie la prima regola quando si deve eseguire poche volte su insiemi ridotti di dati –si sceglie la seconda se il programma viene eseguito un grande numero di volte su insiemi estesi di dati

Fondamenti di Informatica28 Considerazioni Implementazione efficiente dell'algoritmo –sono state considerate solo le complessità –sono state eliminate le costanti moltiplicative Per scegliere l'implementazione migliore è necessario considerare tutto –ad esempio, gli algoritmi ricorsivi sono generalmente molto pesanti