STRUTTURE NON LINEARI



Похожие документы
MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

La struttura dati ad albero binario

Alberi binari. Ilaria Castelli A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

Corrispondenze e funzioni

Organizzazione degli archivi

Algoritmi e strutture dati. Codici di Huffman

Definizione di nuovi tipi in C

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

Esempi di funzione. Scheda Tre

1. PRIME PROPRIETÀ 2

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa.

Lezione 8. La macchina universale

I tipi di dato astratti

LE FUNZIONI A DUE VARIABILI

B+Trees. Introduzione

Grafi. Moreno Marzolla Dip. di Informatica Scienza e Ingegneria Università di Bologna. moreno.marzolla@unibo.it

Funzioni in C. Violetta Lonati

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Progetto di Reti di Telecomunicazione Modelli in Programmazione Lineare Problemi di flusso

Macchine sequenziali

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

(anno accademico )

Esercizi Capitolo 6 - Alberi binari di ricerca

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

Progetto di Reti di Telecomunicazione Modelli in Programmazione Lineare Problemi di Network design

Algoritmi e Strutture Dati

Anno 1. Le relazioni fondamentali (equivalenza, d'ordine, inverse, fra insiemi)

Ricorsione in SQL-99. Introduzione. Idea di base

Semantica Assiomatica

b i 1,1,1 1,1,1 0,1,2 0,3,4

Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

STRINGHE di un ALFABETO. Consideriamo un alfabeto di simboli V V è un insieme finito e non vuoto. Alfabeto della lingua inglese I={a,b,c,..

Alcuni Preliminari. Prodotto Cartesiano

Lezione 1. Gli Insiemi. La nozione di insieme viene spesso utilizzata nella vita di tutti i giorni; si parla dell insieme:

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

TSP con eliminazione di sottocicli

Il Metodo Branch and Bound

Appunti di Algoritmi e Strutture Dati. Grafi. Gianfranco Gallizia

4. Operazioni elementari per righe e colonne

Planning as Model Checking Presentazione della Tesina di Intelligenza Artificiale

Gestione Turni. Introduzione

Rappresentazione grafica di entità e attributi

I PROBLEMI ALGEBRICI

Il tipo di dato astratto Pila

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

SCHEDA M MOSAICI CLASSIFICARE CON LA SIMMETRIA

Teoria degli insiemi

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Laboratorio di Algoritmi e Strutture Dati

L amministratore di dominio

Anno 3. Funzioni: dominio, codominio e campo di esistenza

Comparatori. Comparatori di uguaglianza

Reti sequenziali sincrone

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

ALGEBRA DELLE PROPOSIZIONI

Le Macchine di Turing

Modellazione dei dati in UML

4 3 4 = 4 x x x 10 0 aaa

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

1 Giochi a due, con informazione perfetta e somma zero

Operazioni sui database

3 GRAFICI DI FUNZIONI

LE FUNZIONI E LE LORO PROPRIETÀ

4. Operazioni aritmetiche con i numeri binari

Soluzione dell esercizio del 2 Febbraio 2004

Reti di Telecomunicazione Lezione 8

Protezione. Protezione. Protezione. Obiettivi della protezione

LINGUAGGI DI PROGRAMMAZIONE

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Osservazioni sulla continuità per le funzioni reali di variabile reale

Albero semantico. Albero che mette in corrispondenza ogni formula con tutte le sue possibili interpretazioni.

Appunti sulla Macchina di Turing. Macchina di Turing

Alberi binari di ricerca

Lezioni di Matematica 1 - I modulo

COEFFICIENTI BINOMIALI

Progettazione del Software A.A.2008/09

CONCETTO DI LIMITE DI UNA FUNZIONE REALE

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Intelligenza Artificiale

Fasi di creazione di un programma

Algoritmi e Strutture Dati

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Appunti di Sistemi Elettronici

Analisi dei requisiti e casi d uso

Anno 5 4. Funzioni reali: il dominio

Транскрипт:

PR1 Lezione 13: STRUTTURE NON LINEARI Michele Nappi mnappi@unisa.it www.dmi.unisa.it/people/nappi Per la realizzazione della presentazione è stato utilizzato in parte materiale didattico prodotto da Oronzo Altamura, Maria Francesca, Costabile e Floriana Esposito, Università degli Studi di Bari.

Indice Astrazione e Specifiche Esempi di Specifiche Assiomatiche: Vettori e Liste Generalità su grafi e alberi. Alberi binari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi binari. M. Nappi/PR1 2

Astrazione Dati e Funzionale L astrazione di dati ricalca ed estende il concetto di astrazione funzionale. Così come l'astrazione funzionale permette di ampliare l'insieme dei modi di operare sui dati, cioè gli operatori sui tipi di dati già disponibili, l astrazione di dati permette di ampliare i tipi di dati disponibili attraverso l'introduzione sia di nuovi tipi di dati che di nuovi operatori. L astrazione funzionale stimola gli sforzi per evidenziare operazioni ricorrenti o ben caratterizzate all interno della soluzione di un problema. L astrazione di dati sollecita ad individuare le organizzazioni dei dati più adatte alla soluzione del problema. M. Nappi/PR1 3

Astrazione Dati e Funzionale Un'astrazione di dati consente una estensione dell algebra dei dati disponibile in un linguaggio di programmazione. Cosa e un algebra? È un sistema matematico costituito da un dominio, cioè un insieme di valori e da un insieme di funzioni applicabili su tali valori. Un algebra dei dati può essere definita come costituita da: Una famiglia di insiemi (insieme di dati) Una famiglia di operatori sui dati (operatori) Un repertorio di simboli (o nomi) per indicare l insieme di dati Un repertorio di simboli (o nomi) per indicare gli operatori Un repertorio di simboli (detti costanti) per indicare elementi singoli degli insiemi di dati M. Nappi/PR1 4

Astrazione Dati e Funzionale Un astrazione di dati è costituita da una specifica e da una realizzazione: La Specifica ha il compito di descrivere sinteticamente il tipo dei dati e gli operatori che li caratterizzano La Realizzazione stabilisce come i dati e gli operatori vengono ricondotti ai tipi di dati e agli operatori già disponibili M. Nappi/PR1 5

Le Specifiche Assiomatiche Specifica Sintattica determina: l ELENCO dei nomi dei domini e delle operazioni i DOMINI di partenza e di arrivo per ogni nome di operatore M. Nappi/PR1 6

Le Specifiche Assiomatiche Specifica Semantica assegna: un INSIEME ad ogni nome di tipo introdotto nella Specifica Sintattica una FUNZIONE ad ogni nome di operatore, esplicitando le seguenti condizioni sui domini precondizione, che definisce quando l operatore è applicabile postcondizione, che stabilisce la relazione tra argomenti e risultato M. Nappi/PR1 7

Il tipo astratto Vettore: Una Specifica Assiomatica M. Nappi/PR1 8

Il tipo astratto Lista Una lista è una sequenza di elementi di un certo tipo, in cui è possibile aggiungere o togliere elementi. Per far questo occorre specificare la posizione relativa all interno della sequenza nella quale il nuovo elemento va aggiunto o nella quale il vecchio elemento va tolto. A differenza del array, che è una struttura a dimensione fissa dove è possibile accedere direttamente ad ogni elemento specificandone l indice, la lista è a dimensione variabile e si può accedere direttamente solo al primo elemento della lista. Per accedere ad un generico elemento, occorre scandire sequenzialmente gli elementi della lista. M. Nappi/PR1 9

Il tipo astratto Lista: Una Specifica Assiomatica Specifica sintattica Tipi: lista, tipoelem, booleano Operatori: CREALISTA: ( ) lista LISTAVUOTA: (lista) booleano INSERISCI: (tipoelem, lista) lista CANCELLA: (lista) lista PRIMOLISTA: (lista) tipoel M. Nappi/PR1 10

Il tipo astratto Lista: Una Specifica Assiomatica Specifica semantica Tipi: lista = insieme delle sequenze L=a1,a2,,an di tipo tipoelem booleano = insieme dei valori di verità {vero,falso} M. Nappi/PR1 11

Il tipo astratto Lista: Una specifica assiomatica Specifica semantica Operatori: CREALISTA()=L Post: L = ^, la sequenza vuota LISTAVUOTA(L)=b Post: b=vero, se L=^; b=falso, altrimenti INSERISCI(el,L)=L Pre: L = a1, a2,, an n>=0 Post: L = el, a1, a2,, an M. Nappi/PR1 12

Il tipo astratto Lista: Una specifica assiomatica Specifica semantica Operatori: CANCELLA(L)= L Pre: L = a1, a2,, an n>0 Post: L = a2,, an PRIMOLISTA(L)= el Pre: L = a1, a2,, an n>0 Post: el = a1 M. Nappi/PR1 13

Il tipo astratto Lista: Realizzazione // prototipi lista crealista(void); typedef struct nodo *lista; typedef struct nodo { tipoelem val; lista next; } nodo; int listavuota(lista L); lista cancella (lista L); lista inserisci(tipoelem val, lista L); tipoelem primolista (lista L); M. Nappi/PR1 14

I Grafi Una relazione tra due insiemi U e V è un sottoinsieme A di UxV La descrizione di A in forma diagrammatica si ottiene congiungendo elementi di U con elementi di V. La rappresentazione che si ottiene e detta grafo (bipartito). M. Nappi/PR1 15

I Grafi U V A UxU. In tal caso gli elementi di u vengono scritti una sola volta e viene segnata una freccia sulla congiunzione da ui a uj per quelle coppie <ui,uj > A. Si parla in questo caso di grafo orientato. Gli elementi u U sono detti nodi o vertici del grafo orientato. La linea di congiunzione è detta arco. Se <ui,uj > sono congiunti tanto attraverso l arco (i,j) quanto attraverso l arco (j,i) si potrà utilizzare una unica connessione senza freccia: l arco incide sui due nodi e si parla di grafo non orientato. M. Nappi/PR1 16

I Grafi Un grafo orientato G è una coppia <N,A> dove N è un insieme finito non vuoto (insieme di nodi) e A NxN è un insieme finito di coppie ordinate di nodi, detti archi (o spigoli o linee). Se < ui, uj > A nel grafo vi è un arco da ui ad uj Nell esempio N= {u1,u2,u3}, A= {(u1,u1),(u1,u2),(u2,u1),(u1,u3)}. M. Nappi/PR1 17

I Grafi In un grafo orientato G un cammino è una sequenza di nodi u0, u1,.., uk tali che (ui, ui+1) A, per i = 0, 1, 2,, k-1. Il cammino parte dal nodo u0, attraversa i nodi u1,, uk-1, arriva al nodo uk, ed ha lunghezza uguale a k. Se non ci sono nodi ripetuti il cammino è semplice (ui u j per 0 j k ) Se u0=uk il cammino è chiuso. Un cammino sia semplice che chiuso è un ciclo. Un grafo è detto completo se per ogni coppia di nodi ui, uj N esiste un arco che va da ui ad uj (A = NxN) M. Nappi/PR1 18

I Grafi M. Nappi/PR1 19

Gli Alberi Il GRAFO è una struttura dati alla quale si possono ricondurre strutture più semplici: LISTE ed ALBERI L ALBERO è una struttura informativa per rappresentare: partizioni successive di un insieme in sottoinsiemi disgiunti organizzazioni gerarchiche di dati procedimenti decisionali enumerativi M. Nappi/PR1 20

Gli Alberi M. Nappi/PR1 21

Gli Alberi M. Nappi/PR1 22

Gli Alberi M. Nappi/PR1 23

Gli Alberi Proprietà Un albero e un grafo aciclico, in cui per ogni nodo esiste un solo arco entrante (tranne che per la radice che non ne ha nessuno) Un albero è un grafo debolmente connesso Se esiste un cammino che va da un nodo u ad un altro nodo v, tale cammino è unico In un albero esiste un solo cammino che va dalla Radice a qualunque altro nodo Tutti i nodi di un albero t (tranne la radice) possono essere ripartiti in insiemi disgiunti ciascuno dei quali individua un albero: dato un nodo u, i suoi discendenti costituiscono un albero detto sottoalbero di radice u M. Nappi/PR1 24

Gli Alberi La natura ricorsiva degli alberi Un albero può essere definito ricorsivamente Un albero e un insieme di nodi ai quali sono associate delle informazioni Tra i nodi esiste un nodo particolare che e la radice (livello 0) Gli altri nodi sono partizionati in sottoinsiemi che sono a loro volta alberi (livelli successivi): Vuoto o costituito da un solo nodo (detto radice) Oppure è una radice cui sono connessi altri alberi M. Nappi/PR1 25

Gli Alberi Alberi Binari Sono particolari alberi ordinati in cui ogni nodo ha al più due figli e si fa sempre distinzione tra il figlio sinistro, che viene prima nell ordinamento e il figlio destro. Nell esempio gli alberi sono etichettati con interi e con caratteri Un albero binario è un grafo orientato che o è vuoto o è costituito da un solo nodo o è formato da un nodo n (detto radice) e da due sottoalberi binari, chiamati rispettivamente sottoalbero (o figlio) sinistro e sottoalbero (o figlio) destro M. Nappi/PR1 26

Gli Alberi M. Nappi/PR1 27

Gli Alberi M. Nappi/PR1 28

Gli Alberi M. Nappi/PR1 29

Gli Alberi M. Nappi/PR1 30

Gli Alberi L algebra che abbiamo presentato ovviamente rappresenta una scelta precisa di progetto: enfatizzare la natura ricorsiva degli Alberi e di costruire l albero binario dal basso verso l alto, cioè dal livello delle foglie verso la radice. Non sempre questa scelta è opportuna: soprattutto se l albero è usato per rappresentare un processo decisionale è preferibile un algebra che preveda di costruire l albero dall alto verso il basso, inserendo prima la radice e poi i nodi figli via via. In tal caso, mentre rimangono validi gli operatori creabinalbero, binalberovuoto, binradice, binpadre, figliosinistro, figliodestro, sinistrovuoto, destrovuoto, cancsottobinalbero Andrebbe sostituito l operatore di costruzione con tre operatori nuovi, uno dedicato all inserimento della radice e gli altri due dedicati all inserimento del figlio sinistro e del figliodestro. M. Nappi/PR1 31

Gli Alberi M. Nappi/PR1 32

Algoritmi di Visita La visita di un albero consiste nel seguire una rotta di viaggio che consenta di esaminare ogni nodo dell albero esattamente una volta. Visita in pre-ordine: si applica ad un albero non vuoto e richiede dapprima l analisi della radice dell albero e, poi, la visita, effettuata con lo stesso metodo, dei due sottoalberi, prima il sinistro, poi il destro Visita in post-ordine: si applica ad un albero non vuoto e richiede dapprima la visita, effettuata con lo stesso metodo, dei sottoalberi, prima il sinistro e poi il destro, e, in seguito, l analisi della radice dell albero Visita simmetrica: richiede prima la visita del sottoalbero sinistro (effettuata sempre con lo stesso metodo), poi l analisi della radice, e poi la visita del sottoalbero destro M. Nappi/PR1 33

Algoritmi di Visita M. Nappi/PR1 34

Algoritmi di Visita visita in preordine l albero binario t { se l albero non è vuoto allora visita la radice di t visita in preordine il sottoalbero sinistro di t visita in preordine il sottoalbero destro di t fine } M. Nappi/PR1 35