Handle di Funzioni Università degli Studi di Milano
|
|
- Tommaso Moroni
- 5 anni fa
- Visualizzazioni
Transcript
1 Handle di Funzioni Versioni recenti di Matlab definiscono in modo pieno il tipo funzione, permetto di assegnare a variabili valori di tipo funzione definire funzioni che ricevono parametri di tipo funzione Valori di tipo funzione denotati da variabili dette handle (riferimento / maniglia)
2 Handle di Funzioni A un handle possono essere assegnati valori di tipo funzione in due modi 1. Indicando il nome di una funzione esistente (definita dall utente o predefinita) >> seno=@sin ; >> seno(pi/2) ans = 1 2. Mediante la definizione ex novo di una funzione anonima >> sq=@(x)x^2; >> sq(8) ans = 64 >> sq=@(x,y)x^2+2*y; >> d=[1 2 3]; >> sq(2,6) >> sq=@(x,y)sum(x)+2*y; ans = 16 >> sq(d,6) ans = 18
3 Handle di Funzioni Sintassi di tipo funzione: lista dei parametri di ingresso, tra parentesi tonde 3 espressione che dà il risultato come funzione degli ingressi Se il parametro attuale di una funzione f è di tipo funzione, allora il parametro formale è una handle può essere usato per invocare la funzione passata tramite il parametro La funzione f è una funzione di ordine superiore
4 Handle di Funzioni Esempio Funzione (di ordine superiore) function [vout]=map(f, vin) applica a tutti gli elementi di vin la funzione f, restituisce la lista dei risultati function [vout]=map(f, vin) for i=1:length(vin) vout(i)=f(vin(i));
5 Handle di Funzioni Altro esempio Funzione (di ordine superiore) function [x]=acc(f, a, u) applica cumulativamente l operazione binaria f (con elemento neutro u) a tutti gli elementi di a restituisce in x il risultato f(...f( f(u, a(1)), a(2) ).., a(length(a))) Uso di acc function [x]=acc(f, a, u) x=u; for i=1:length(a) x=f(x, a(i)); Funzione (ordinaria) function [s]=sommatoria(a) calcola la sommatoria degli elementi di a function [s]=sommatoria(a) som=@(x,y)x+y; s=acc(som,a,0);
6 Liste concatenate La lista concatenata è una struttura che organizza i dati in maniera sequenziale. Mentre gli elementi di un array sono accessibili direttamente, gli elementi di una lista devono essere acceduti sequenzialmente: se voglio accedere all i-esimo elemento devo scandire la lista dal primo all (i 1) esimo elemento. Mentre le dimensioni di un array sono rigide, le dimensioni di una lista variano dinamicamente, tramite le operazioni di inserimento e cancellazione di elementi.
7 Liste concatenate L implementazione di liste può avvenire in vari modi, molto naturale l'uso dei puntatori Inoltre dipe dalle operazioni da svolgere sulla lista Che in MATLAB non esistono Bisogna trovare un altro sistema...
8 Liste concatenate Operazioni 1. Creazione: crea una lista vuota 2. Inserimento: inserisce un nuovo elemento nella lista. Se fatto in testa alla lista costa O(1) 3. Ricerca: scorre la lista per cercare uno specifico elemento mediante la chiave; se tale elemento esiste, ne ritorna la posizione nella lista 4. Cancellazione: Si ricerca l'elemento da cancellare nella lista, lo si rimuove, si raccordano le due sottoliste 5. Stampa: scorre la lista e ne stampa tutti gli elementi 6. Inserimento in posizione i: Inserisce il nuovo elemento nella posizione i della lista; in coda se i > size
9 Liste concatenate in Matlab function listobject = lista_concatenata(values) % values è una generica matrice, reshape la vettorizza data = reshape(values,1, []); % 1 prima dimensione, [] per la seconda listobject = struct('display',@display_list,... % handle di funzioni function display_list() % definizioni delle funzioni innestate.. function add(key).
10 Liste concatenate in Matlab function display_list() % visualizza tutti gli elementi della lista for i = 1:length(data) disp(data(i)); function add(values) % aggiunge gli elementi in values (vettore) in testa alla lista data = [values, data]; function add_after(values, index) % aggiunge gli elementi in values (vettore) a partire dalla posizione index, o in coda se index > size index = min(index, length(data)); data = [data(1:index), values, data(index+1:)];
11 Liste concatenate in Matlab function delete_element(key) % cancella l'elemento di chiave key n = numel(data); for i=1:n if data(i) == key; data(i) = []; % cancella solo il primo trovato break; function res = search_element(key) % cerca l'elemento di chiave key n = numel(data); res = []; for i=1:n if data(i) == key; % se ce n'è più di uno li trova tutti res = [res i];
12 Struttura dati Pila Pila: insieme di elementi gestiti secondo una politica LIFO (Last In First Out) l ultimo elemento inserito è il primo estratto Dati: una sequenza S di n elementi Operazioni: 1.isEmpty() boolean restituisce true se S è vuota, false altrimenti 2.push(elem e) aggiunge e come ultimo elemento di S 3.pop() elem toglie da S l ultimo elemento e lo restituisce 4.top() elem restituisce l ultimo elemento di S (senza eliminarlo)
13 Struttura dati Pila function listobject = pila(values) % values è una generica matrice, reshape la vettorizza data = reshape(values,1,[]); listobject = struct('isempty',@pila_vuota,... 'top',@top_elem,... 'push',@push_elem,... 'pop',@pop_elem); function res = pila_vuota() % Displays the data in the list res = numel(data) == 0; function push_elem(key) data = [key data]; function key = top_elem() if ~pila_vuota() key = data(1); else key = -1; %marker value function key = pop_elem() if ~pila_vuota() key = data(1); data = data(2:numel(data)); else key = -1; %marker value % chiude la funzione pila
14 Coda con priorità Una coda con priorità è una struttura dati che rappresenta insieme finito S di oggetti sul quale è definita una funzione priorità p(s) (esempio l'ordine sulle chiavi) L'elemento con maggiore priorità è sempre in testa alla coda Sulla coda sono definite le seguenti operazioni: 1.MAXIMUM(A): ritorna l elemento a massima priorità, ossia quello in testa. 2.EXTRACT_MAX(A): estrae l elemento con massima priorità, successivamente la coda va sistemata 3.INSERT(A, p): inserisce un nuovo elemento p nella coda.
15 Coda con priorità Con l'implementazione dello Heap mediante vettore A possiamo realizzare una coda a priorità efficiente MAXIMUM(A) ha un tempo di esecuzione costante, O(1) MAXIMUM(A) return A[1] EXTRACT_MAX(A) ha un tempo di esecuzione O(log(n)), dovuto alla chiamata HEAPIFY. EXTRACT_MAX(A) if heapsize[a] < 1 then error heap underflow max A[1] A[1] A[heapsize[A]] heapsize[a] heapsize[a] 1 HEAPIFY(A,1) return max
16 Coda con priorità HEAP-INSERT(A, KEY) : Inserisce il nuovo elemento con chiave KEY nella coda (alla fine) e deve far sì che sia rispettata la proprietà della coda. Ha un tempo di esecuzione O(log(n)), nel caso peggiore si risale l albero dalla foglia alla radice. HEAP-INSERT(A, key) heapsize[a] heapsize[a] + 1 i heapsize[a] % inserisce nell'ultimo livello prima posizione da sinistra while i > 1 and A[PARENT(i)] < key % risale finché non trova una chiave >= key do A[i] A[PARENT(i)] i PARENT(i) while A[i] key
17 Coda con priorità function codaobject = coda_priorita(values) % values è una generica matrice, reshape la vettorizza data = reshape(values,1,[]); heapsize = length(data); data = buildheap(data); codaobject = struct('insert',@insert_codapr,... 'maximum',@maximum,... 'extract_maximum',@extract_maximum,... function insert_codapr(key) heapsize = heapsize + 1; i = heapsize; while i>1 && data(floor(i/2)) < key data(i) = data(floor(i/2)); i = floor(i/2); data(i) = key;
18 Coda con priorità function rmax = maximum() if(heapsize >= 1) rmax = data(1); else disp('coda vuota'); function [rmax] = extract_maximum() if(heapsize >=1) rmax = data(1); data(1) = data(heapsize); heapsize = heapsize - 1; data = heapify(data,1,heapsize); else disp('coda vuota'); rmax = 0; function res = size() res = heapsize; % della coda function A = buildheap(a).. function A = heapify(a,i, heapsize)..
19 Esercizi Esercizio 1. Implementare in MATLAB la struttura dati lista ordinata, una lista concatenata in cui gli elementi sono memorizzati in maniera ordinata (crescente o decrescente) Esercizio 2. Scrivere un programma MATLAB che legge dal file dati.txt dei valori numerici e li inserisce in una pila. Il programma deve fornire poi all'utente 4 possibili funzionalità: 1. Inserire un nuovo valore 2. Visualizzare l'elemento in cima alla pila 3. Estrarre un valore 4. Controllare che ci siano elementi Il programma deve uscire solo quando l'utente digita 'esci'
20 Esercizi Esercizio 3. Scrivere un programma MATLAB che riceve le richieste di sussidio e le memorizza in una coda a priorità. Ogni richiesta è formata da nome (stringa) e da un indicatore economico (scalare) che rappresenta anche la priorità della richiesta. Il programma deve fornire poi all'utente 4 possibili funzionalità: 1. Inserire una nuova richiesta 2. Visualizzare il numero di richieste esistenti 3. Estrarre la richiesta con minimo indicatore economico 4. Visualizzare la richiesta con minimo indicatore Il programma deve uscire solo quando l'utente digita 'esci' Esercizio 4. Implementare una versione della coda con priorità che utilizza un vettore, anziché uno heap, per implementare le operazioni richieste. Confrontare i tempi di esecuzione delle due versioni di coda con operazioni di inserimento e operazioni di estrazione del massimo parto da una coda con 1000 elementi.
Dato un insieme S di n elementi totalmente ordinato, l'algoritmo di ordinamento detto HeapSort ha le seguenti caratteristiche:
Heapsort Dato un insieme S di n elementi totalmente ordinato, l'algoritmo di ordinamento detto HeapSort ha le seguenti caratteristiche: T(n) = O(n log(n)) Alg. Ordinamento ottimale Ordina in loco (niente
DettagliCode a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una
Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una relazione d ordine. Sono definite almeno le seguenti operazioni:
DettagliAlgoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
DettagliAlgoritmi e Strutture Dati
Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Il concetto di dato Il concetto
DettagliAlgoritmi e Strutture Dati
Strutture Elementari Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 29 ottobre 2008 Strutture Dati Astratte Il concetto di dato Il concetto
DettagliIn questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.
In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni
DettagliInformatica B
Informatica B 2016-2016 Esercitazione IV Variabili funzione & Funzioni di Ordine Superiore Alessandro A. Nacci alessandro.nacci@polimi.it - www.alessandronacci.it 1 Ripasso Facciamo un ripasso di quanto
DettagliSpesso sono definite anche le seguenti operazioni:
Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una relazione d ordine. Sono definite almeno le seguenti operazioni:
DettagliListe con sentinella. intlist *createlist(void){ intlist *q = malloc(sizeof(intlist)); if(!q) { exit(-1); } q->next = q->prev = q; return q; }
Liste con sentinella Un ulteriore semplificazione delle operazioni sulle liste si ottiene utilizzando un elemento sentinella (dummy) che non contiene informazione, ma serve a segnalare la fine e l inizio
DettagliAlgoritmo di ordinamento sul posto che ha tempo di esecuzione :
QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : O(n2 ) nel caso peggiore O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior algoritmo
DettagliProblemi di ordinamento
Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata
DettagliHeap Ordinamento e code di priorità. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 9
Heap Ordinamento e code di priorità Heap: definizione Definizione. Uno Heap (binario) è un albero binario finito i cui vertici sono etichettati da elementi di un insieme linearmente ordinato (chiavi),
DettagliHeap, heapsort e code a priorità. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino
Heap, heapsort e code a priorità Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Heap Definizione: albero binario con proprietà strutturale: quasi completo (tutti i livelli completi,
DettagliTIPO DI DATO ASTRATTO
TIPO DI DATO ASTRATTO Tipo di dato astratto Esempio: Vogliamo rappresentare un sistema di prenotazione di esami universitari. Dati immagazzinati: prenotazioni esami Operazioni supportate: prenota(esame,
DettagliIn questa lezione. Code di priorità. [CLRS01] cap. 6 da pag. 114 a pag Prof. E. Fachini - Intr. Alg. lunedì 17 settembre 2012
In questa lezione Code di priorità [CLRS01] cap. 6 da pag. 114 a pag. 117 1 Coda di priorità: cos è? Una coda di priorità è una struttura dati dinamica che permette di gestire dei dati con chiave numerica,
DettagliQuickSort Università degli Studi di Milano
QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : - O(n 2 ) nel caso peggiore - O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior
DettagliIl vettore e la lista concatenate (o catena) sono due esempi di strutture interne.
Strutture dati PILA e CODA Le strutture dati si dividono in interne e astratte. Quelle astratte sono rappresentazioni dei dati di un problema che rispecchiano le proprietà dei dati e le relazioni usate
DettagliAlbero binario: Ogni nodo ha zero, uno, o due successori (ordinati)
Heap 1 Vittorio Maniezzo - Università di Bologna Alberi binari Albero binario: Ogni nodo ha zero, uno, o due successori (ordinati) Albero binario completo: Tutte le foglie hanno la stessa profondità e
DettagliCode a priorità. Progettazione di Algoritmi Matricole congrue a 1. Docente: Annalisa De Bonis
Code a priorità Progettazione di Algoritmi 2018-19 Matricole congrue a 1 Docente: Annalisa De Bonis 26 Coda a priorità Una coda a priorità è un collezione di elementi a ciascuno dei quali è assegnata una
DettagliProgrammare. Compilatori e interpreti. Editor :: vi. Hello1.c. #include <stdio.h> >> cc Hello1.c. main() { printf( \n Hello World!
Programmare Hello1.c #include printf( \n Hello World! \n ); >> cc Hello1.c >> a.out Hello World! >> Hello1.c = file sorgente per scriverlo occorre un editor cc = compilatore per altri linguaggi
Dettaglitipi di dato astratti
tipi di dato astratti A. FERRARI ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità che dipendono esclusivamente dalla semantica
DettagliIn questa lezione Strutture dati elementari: Pila Coda
In questa lezione Strutture dati elementari: Pila Coda 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni che li modificano (insiemi dinamici). Le
DettagliADT Coda con priorità
Code con priorità ADT Coda con priorità Una coda con priorità è una struttura dati dinamica che permette di gestire una collezione di dati con chiave numerica. Una coda con priorità offre le operazioni
DettagliAlgoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Capitolo 4 - Strutture di dati elementari This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit
DettagliSOMMARIO STACK. STACK: specifica STACK
SOMMARIO STACK Pila (stack): una struttura dati lineare a cui si può accedere soltanto mediante uno dei suoi capi per memorizzare e per estrarre dati. Specifica (descrizione). Implementazione (realizzazione).
DettagliAlgoritmi e Strutture Dati
Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta
DettagliHeap e code di priorità
Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010
DettagliIL CONCETTO DI LISTA!
Liste semplici Obiettivi: Discutere la realizzazione collegata (puntatori a strutture) di liste semplici Introdurre l ADT lista semplice e le operazioni tipiche su essa 1 IL CONCETTO DI LISTA Una lista
DettagliTipi di dato e Strutture dati elementari
Tipi di dato e Strutture dati elementari Ing. Paolo Craca Anno accademico 2007/2008 Tipi di dato e Strutture dati elementari 1 / 40 Cosa vedremo in questo seminario 1 Introduzione 2 Pile 3 Code 4 5 Bibliografia
DettagliInformatica 3. LEZIONE 13: Liste doppie, pile e code. Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda
Informatica 3 LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Informatica 3 Lezione 13 - Modulo 1 Free list Free list Le funzioni di sistema
Dettaglilezione 9 min-heap binario Heap e Alberi posizionali generali
lezione 9 Heap e Alberi posizionali generali min-heap binario Un min-heap è un albero binario quasi completo in cui ogni nodo i diverso dalla radice soddisfa la seguente proprietà: il valore memorizzato
DettagliHeap e Code di Priorità
Heap e Code di Priorità heap heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. ogni nodo contiene una chiave maggiore o eguale di quelle presenti negli eventuali figli non
DettagliEsercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list
Esercitazione: Implementazione in linguaggio C dell ADT Stack con l utilizzo di linked list Laboratorio di Programmazione Introduzione un ADT (Abstract Data Type) è un modello (formale) che generalizza
DettagliAlgoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari
Algoritmi e Strutture Dati Capitolo 3 Strutture dati elementari Gestione di collezioni di oggetti Tipo di dato: Specifica una collezione di oggetti e delle operazioni di interesse su tale collezione (es.
DettagliAlgoritmi e Strutture Dati
Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 6 novembre 2008 Heap binari: definizione Un heap binario è una albero binario quasi completo
DettagliInsiemi Dinamici. Operazioni tipiche (S:struttura, x: riferimento(puntatore) alla chiave, k: chiave)
Insiemi Dinamici Insiemi che possono essere modificati Elementi: oggetti = eventualmente: chiavi + (eventuali) dati satellite; l insieme delle chiavi puo essere totalmente ordinato Operazioni tipiche (S:struttura,
DettagliDiagrammi 2D e 3D Funzioni di ordine superiore
Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 13 Gennaio 2017 Obiettivi Funzioni di ordine superiore Diagrammi 2D e 3D 2 Sommatoria
DettagliAlgoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari
lgoritmi e Strutture Dati Capitolo 3 Strutture dati elementari Gestione di collezioni di oggetti Tipo di dato: Specifica una collezione di oggetti e delle operazioni di interesse su tale collezione (es.
DettagliInformatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list
LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Lezione 13 - Modulo 1 Free list Politecnico di Milano - Prof. Sara Comai 1 Politecnico di
DettagliAlgoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Code di priorità (Heap e heap_sort) m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi,
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 25 Le liste in C struct nodo { int info; struct nodo *next; }; typedef struct nodo Nodo; typedef Nodo *PNodo; Inserimento in ordine
DettagliFondamenti di Informatica
Strutture dati complesse Esempi di strutture dati complesse analizzate in questa lezione: Fondamenti di Informatica 21. Strutture di dati complesse in C++ Array di puntatori Pila (Stack) Coda (queue) Liste
DettagliFondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati
Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario
DettagliLaboratorio di Programmazione Lezione 3. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 3 Cristian Del Fabbro Prossima lezione GIOVEDÌ 12 NOVEMBRE ORE 14:00 Array a.k.a. vettore Un array è una collezione ordinata di dati omogenei (cioé sono tutti dello
DettagliARRAY E LISTE. Ivan Lanese
ARRAY E LISTE Ivan Lanese Argomenti Array Liste Array: esercizi Uno studente è rappresentato da un nome, un numero di matricola e da un array di voti. Scrivere una funzione che dato un array di studenti,
DettagliAlgoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc
Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc Algoritmi e Strutture di Dati I 2 Oggetti e puntatori Un oggetto è un area di memoria
DettagliEsercitazioni di Algoritmi e Strutture Dati
Esercitazioni di Algoritmi e Strutture Dati II esercitazione, 14/03/2016 Tong Liu 1 SOLUZIONE DEL COMPITO PRECEDENTE Definire e inizializzare un array di N numeri interi *distinti* (la scelta di N e degli
DettagliLa struttura dati CODA
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta
DettagliListe concatenate. Violetta Lonati
Liste concatenate Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 2 novembre 2017 Violetta Lonati Liste
DettagliLABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica. Algoritmi ricorsivi
LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna Partiamo da un
DettagliDiagrammi 2D e 3D Funzioni di ordine superiore
Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 24 Agosto 2015 Obiettivi Diagrammi 2D e 3D Funzioni di ordine superiore 2 Diagrammi
DettagliIn questa lezione. Costruire un max-heap. [CLRS01] cap. 6 par Prof. E. Fachini - Intr. Alg.
In questa lezione Costruire un max-heap [CLRS01] cap. 6 par. 6.3!1 Heapsort: analisi Heapsort(A) Build-Max-Heap(A) for i = A.length downto 2 do scambia A[1] e A[i] A.heap-size = A.heap-size - 1 Max-Heapify
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 25 ADT (Abstract Data Types) tipo di dato astratto Un ADT è un modello matematico con una collezione di operatori definiti su tale
DettagliStrutture dati elementari. Vittorio Maniezzo - Università di Bologna
Strutture dati elementari 1 Vittorio Maniezzo - Università di Bologna Pile (Stacks) Dati: un insieme S di elementi. Operazioni: PUSH, POP PUSH: inserisce un elemento in S POP: restituisce l ultimo elemento
DettagliListe, Pile e Code. 1. L ADT Lista. Liste Pile e Code Pag. 1/18
Liste Pile e Code Pag. 1/18 Liste, Pile e Code Le liste, le pile e le code rappresentano tre ADT elementari che ricorrono frequentemente nella vita reale. Esempi usuali di una lista, una pila ed una coda
DettagliPile e code. ADT e strutture dati per la rappresentazione di sequenze ad accesso LIFO e FIFO
Pile e code ADT e strutture dati per la rappresentazione di sequenze ad accesso LIFO e FIFO Le Pile Una pila è una struttura dati lineare, alla quale gli elementi possono essere aggiunti o sottratti da
Dettaglialgoritmi e strutture di dati
algoritmi e strutture di dati tipi astratti di dato (pile, code, liste implementate tramite array) m.patrignani nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright
DettagliIl TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3
Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali
DettagliDefinizione informale
Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali
DettagliDefinizione informale. Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche
Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali
DettagliAlgoritmi e Programmazione Avanzata. Pile e code. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario ADT Pile Code. A.A. 2001/2002 APA - 2 1 Sommario ADT Pile Code. A.A. 2001/2002 APA - 3 ADT Le regole che
DettagliOrario delle lezioni LABORATORIO TEORIA. mercoledì. martedì aula P/4. lab Turing. Strutture Dati
Orario delle lezioni LABORATORIO martedì 15.00-18.00 TEORIA mercoledì 16.00 18.00 lab Turing aula P/4 Libro di testo Data Structures & Algorithms in Java Michael T. Goodrich Roberto Tamassia John Wiley
DettagliPile e code. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Pile e code Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario ADT Pile Code. A.A. 2002/2003 APA - Pile e code 2 Politecnico di Torino Pagina 1 di 23 Sommario
DettagliLaboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ Heap e Heapsort Algoritmi di ordinamento Insertion Sort Quicksort Heapsort Insertion Sort L
DettagliAlberi Binari Alberi Binari
Alberi Binari Alberi Binari Un albero binario è una collezione di elementi organizzati in modo non sequenziale secondo un grafo aciclico caratterizzato da Radice Due sotto-alberi (il sotto-albero destro
DettagliAlgoritmi e strutture dati
Algoritmi e strutture dati Argomenti Strutture dati elementari e loro implementazioni in Java: Vettori Liste Stack (Pile) Queue (Code) Esempi di applicazione Tipo di dato astratto Tipo di dato astratto
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 33 Le liste in C struct nodo { int info; struct nodo *next; }; typedef struct nodo Nodo; typedef Nodo *PNodo; Pila (Stack ) La struttura
DettagliAlgoritmi e Strutture Dati. HeapSort
Algoritmi e Strutture Dati HeapSort Selection Sort: intuizioni L algoritmo Selection-Sort scandisce tutti gli elementi dell array a partire dall ultimo elemento fino all inizio e ad ogni iterazione: Viene
DettagliStrutture dati elementari
Strutture dati elementari 1 Vittorio Maniezzo - Università di Bologna Pile (Stacks) Dati: un insieme S di elementi. Operazioni: PUSH, POP PUSH: inserisceun elementoin S POP: restituiscel ultimoelementoinseritoe
DettagliArgomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto
Argomenti della lezione Introduzione agli Algoritmi e alle Strutture Dati Operazioni su Liste Dr. Emanuela Merelli Tipi di Dato Astratto Lista Lineare Pila Coda Concetto di Struttura dati dinamiche Lista
DettagliGli heap. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino
Gli heap Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino 1 a.a. 2001/2002 Sommario Gli heap L algoritmo Heapsort Le code con priorità. 2 a.a. 2001/2002 Matteo SONZA
DettagliProf. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1
Operazioni sulle liste Definiamo una serie di procedure e funzioni per operare sulle liste. Usiamo liste di interi per semplicità, ma tutte le operazioni sono realizzabili in modo del tutto analogo su
DettagliLa Struttura Dati Pila
La Struttura Dati Pila La pila o stack è una particolare struttura dati in cui l'inserimento e la cancellazione sono consentite solo in una specifica posizione, chiamata cima (top) dello stack. La gestione
DettagliStruttura dati Dizionario
Struttura dati Dizionario Un dizionario è : un insieme di coppie (elemento, chiave) Sul campo chiave è definita una relazione d'ordine totale Su cui definiamo le seguenti operazioni: insert(elem e, chiave
DettagliIn questa lezione Alberi binari di ricerca
In questa lezione Alberi binari di ricerca!1 Dizionari Un dizionario è una struttura dati costituita da un insieme con le operazioni di inserimento, cancellazione e verifica di appartenenza di un elemento.
DettagliStrutture dati dinamiche
Strutture dati dinamiche - Liste concatenate - Pile -> LIFO (last in first out) - Code -> FIFO (first in first out) - Alberi binari: gestione dati in algoritmi complessi Liste Concatenate Formata da elementi
DettagliDiagrammi 2D e 3D Funzioni di ordine superiore
Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 16 Gennaio 2015 Logistica 2 Logistica 3 Logistica Solo più una lezione! Resto esercitazioni
DettagliProva di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE
Prova di Algoritmi e s.d. (1o anno) 17 Settembre 2002 TESTO e RISPOSTE Esercizio 1 (punti 7 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali).
DettagliInformatica 3. LEZIONE 16: Heap - Codifica di Huffmann. Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann
Informatica 3 LEZIONE 16: Heap - Codifica di Huffmann Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann Informatica 3 Lezione 16 - Modulo 1 Heap e code di priorità Introduzione
DettagliAlgoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1
Algoritmi (9 CFU) (A.A. 2009-10) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1 Overview Definiamo la struttura dati heap Operazioni di costruzione e gestione di un heap Algoritmo Heapsort Code
DettagliLa programmazione nel linguaggio C
Cancellazione : versione ricorsiva Sfruttiamo la visione ricorsiva della struttura dati per realizzare la cancellazione in modo ricorsivo 1. la cancellazione della vuota non richiede alcuna azione 2. la
DettagliAlgoritmi e Strutture di Dati
Algoritmi e Strutture di Dati Tipi astratti di dato (pile e code realizzate tramite array) m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright
DettagliLa struttura dati PILA
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati PILA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una pila (o stack) è una struttura dati astratta
DettagliAlgoritmi stabili e instabili
Algoritmi stabili e instabili Laboratorio di Calcolo Numerico 13 Marzo 2018 Vettori in MATLAB Finora abbiamo pensato alle variabili utilizzate come semplici valori numerici (variabili scalari). In realtà,
DettagliNella scorsa lezione: Array multidimensionali. Mappa di memorizzazione. Esempio: ordinamento di parole. Argomenti di main.
Nella scorsa lezione: Array multidimensionali. Mappa di memorizzazione. Esempio: ordinamento di parole. Argomenti di main. Puntatori a funzioni. Array di puntatori a funzioni. Esempio: ordinamento di parole
DettagliPILE E CODE. Pile (stack):
PILE E CODE Sono tipi di dato che consentono di rappresentare sequenze di elementi in cui gli inserimenti e le cancellazioni sono eseguiti con particolari modalita` (politiche o discipline). Pile (stack):
DettagliFondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
DettagliAlgoritmi e Strutture Dati. Strutture Dati Elementari
Algoritmi e Strutture Dati Strutture Dati Elementari Insiemi Un insieme è una collezione di oggetti distinguibili chiamati elementi (o membri) dell insieme. a S significa che a è un membro de (o appartiene
DettagliSommario. Le strutture dati elementari per implementare sequenze: Vettori Liste
Sequenze Sommario Le strutture dati elementari per implementare sequenze: Vettori Liste Strutture dati elementari Le strutture dati vettore e lista sono fra le strutture dati più usate e semplici Il loro
Dettagli4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste
4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1
DettagliPrima prova in itinere di Informatica 3 IOL Prof.ssa Sara Comai A.A dicembre 2004
Prima prova in itinere di Informatica 3 IOL Prof.ssa Sara Comai A.A. 2004-2005 3 dicembre 2004 Esercizio 1 - sintassi Si descrivano i diagrammi sintattici oppure l'ebnf per descrivere semplici espressioni
DettagliLaboratorio di Algoritmi e Strutture Dati. Code con Priorità
Laboratorio di Algoritmi e Strutture Dati Code con Priorità Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso
DettagliRicerca. Per ricerca si intende il procedimento di localizzazione di una particolare informazione in un elenco di dati.
Ricerca Per ricerca si intende il procedimento di localizzazione di una particolare informazione in un elenco di dati. Il problema della ricerca in termini generali : dato un insieme D = {a 1,a 2,...,a
DettagliCONCRETE (interne): è la effettiva implementazione della struttura nel linguaggio e relativa allocazione in memoria della struttura astratta
STRUTTURE DI DATI DINAMICHE Le strutture dati sono insiemi di dati caratterizzati dalle proprietà logiche e dalla loro forma di aggregazione (vettore, matrice, pila, coda ); le possiamo analizzare da un
Dettagli