Fondamenti di Informatica

Slides:



Advertisements
Presentazioni simili
Fondamenti di Informatica
Advertisements

Premessa: si assume di aver risolto (correttamente
Strutture dati per insiemi disgiunti
Ordinamento ottimo Ricerca
Alberi binari Definizione Sottoalberi Padre, figli
Il problem-solving Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino.
Fondamenti di Informatica1 Gestione della memoria I sistemi di memoria possono essere suddivisi in: –memoria interna al processore –memoria principale.
Estendere i linguaggi: i tipi di dato astratti
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.
Algoritmi Avanzati Grafi e Alberi
Rappresentazione di grafi
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Strutture dati elementari
Alberi binari di ricerca
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Esercizi su alberi binari
Alberi binari Definizione della struttura dati: struct tree { };
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 19/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi e Strutture Dati
Visite di grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Un albero è un grafo.
IFTS2002 Acq. Dati Remoti: INFORMATICA
Algoritmi e strutture dati
tipo astratto, implementazione, algoritmi
Algoritmi e Strutture Dati
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Esercizi su alberi binari
Heap binari e HeapSort.
MS-WINDOWS Corso di Introduzione allInformatica Esercitatore: Agostino Forestiero.
Microsoft Word Nozioni Avanzate Corso di Introduzione allInformatica Esercitatore: Agostino Forestiero.
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
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.
Strutture dati per insiemi disgiunti
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 K 4 è planare? Sì!
Algoritmi e Strutture Dati
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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
Grafi Rappresentazione mediante liste di adiacenza:
Esercizi su alberi binari di ricerca
Alberi binari Definizione della struttura dati: struct tree { };
11/10/2004Introduzione all'Informatica1 Che cose lInformatica Computer ScienceLInformatica (Computer Science) non è soltanto La scienza e la tecnologia.
Corso di Informatica 2 a.a. 2003/04 Lezione 6
ALGORITMI a.
Corso di Introduzione all’Informatica
Alberi CORDA – Informatica A. Ferrari Testi da
Corso di Introduzione all’Informatica
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Alberi Alberi radicati : alberi liberi in cui un vertice è stato scelto come radice. Alberi liberi : grafi non orientati connessi e senza cicli. Alberi.
Algoritmi e Strutture Dati Strutture Dati Elementari.
MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche
Olimpiadi di Informatica 2010 Giornate preparatorie
Compitino del 2004 Alberi Generici. Idea Si vuole un tipo di dato astratto che definisca una struttura ad albero in cui nodi e foglie hanno associato.
Capitolo 11 Visite di grafi Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
ASD a.a.2010/2011- Lezione 12 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi Backtracking/ Branch and Bound Lezione n°12.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Albero ricoprente di costo minimo Lezione n°12.
1 MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche classe 4° INDUSTRIALE INFORMATICA Focus on.
Transcript della presentazione:

Fondamenti di Informatica Gli alberi E' un tipo di dato astratto che rappresenta relazioni gerarchiche tra oggetti Le relazioni esplicate sono tra: genitori figli fratelli Radice, foglie Alberi binari, N-ari Fondamenti di Informatica

Fondamenti di Informatica Gli alberi binari Ogni nodo ha al massimo 2 figli Sui figli è definito un ordinamento Ogni figlio può essere la radice di un nuovo albero binario Vantaggio: migliorare l'efficenza della visita di una lista Fondamenti di Informatica

Fondamenti di Informatica Gli alberi binari Metodi: test_albero_vuoto: alb_bin  boolean costruisci: alb_bin x nodo x alb_bin alb_bin radice: alb_bin  nodo sinistro: alb_bin  alb_bin destro: alb_bin  alb_bin Fondamenti di Informatica

Fondamenti di Informatica Gli alberi binari Algoritmi di visita: visita in preordine (ABCD) visita in postordine (BDECA) visita simmetrica (BADCE) A B C D E Fondamenti di Informatica

Alberi binari: rappr. sequenziale Utilizza array di lunghezza predefinita radice in prima posizione figli in posizione (2i) e (2i+1) Alberi completi Per gli alberi non completi serve un tag booleano che indica se il nodo esiste Fondamenti di Informatica

Alberi binari: rappr. sequenziale 1 A true 2 B true A 3 C true 4 false B C 5 false 6 D true D E 7 E true Fondamenti di Informatica

Alberi binari: rappr. sequenziale Svantaggi: utilizzo elevato memoria operazioni in inserimento complesse (richiedono spostamenti nell'array) Vantaggi: accesso semplice (anche per elementi ad una specifica profondità) Fondamenti di Informatica

Alberi binari: rappresentazione collegata Ogni elemento della lista contiene: un atomo (la radice dell'albero) una lista (sottoalbero sinistro) una lista (sottoalbero destro) ( A (B () () ) ( C (D () () ) (E () () ) ) ) Fondamenti di Informatica

Alberi binari: rappr. collegata mediante array Array a tre valori: indice sottoalbero sinistro valore del nodo indice sottoalbero destro Serve una variabile inizio per definire l'indice della radice all'interno dell'array Fondamenti di Informatica

Alberi binari: rappr. collegata mediante array 1 D A 2 5 A 3 3 1 C 6 B C 4 5 B 6 E D E Inizio = 2 Fondamenti di Informatica

Alberi binari: rappr. collegata mediante puntatori Ogni nodo viene rappresentato con tre campi: l'informazione associata al nodo un puntatore al sottoalbero di sinistra un puntatore al sottoalbero di destra Fondamenti di Informatica

Alberi binari: rappr. collegata mediante puntatori B B C C D E D E Fondamenti di Informatica

Fondamenti di Informatica Esercizio Data in ingresso una rappresentazione parentetica di un albero, generare l'albero corrispondente utilizzando la rappresentazione collegata sia mediante array che mediante puntatori Fondamenti di Informatica

Alberi binari di ricerca Problema: memorizzare grosse quantità di dati soggetti a frequenti operazioni di ricerca Soluzione: utilizzo di alberi di ricerca in cui il valore di un nodo è per definizione maggiore o uguale di quello dei nodi del sottoalbero sx, e minore del sottoalbero dx Fondamenti di Informatica

Alberi binari di ricerca Vantaggi: minor complessità Requisiti: profondità ridotta dell'albero alberi bilanciati bilanciamento dell'albero Fondamenti di Informatica

Fondamenti di Informatica Alberi n-ari Non hanno limiti sul numero di figli Generalmente: visita solo preordine e postordine rappresentazione mediante lista rappresentazione mediante albero binario (miglior sfruttamento della memoria) rappresentazioni tramate (per ottimizzare certe operazioni) Fondamenti di Informatica

Fondamenti di Informatica I grafi Strutture che rappresentano relazioni binarie su un insieme di elementi (grafi orientati) E' necessario definire politiche di visita (in presenza di cicli è possibile raggiungere nodi già visitati; serve un tag di visita) Fondamenti di Informatica

Visita in profondità di un grafo Depth first serach: analoga alla visita in preordine 2 1 3 4 7 1 3 4 6 5 7 2 6 5 Fondamenti di Informatica

Visita in ampiezza di un grafo Breadth first serach: analoga alla visita in postordine 2 1 3 4 7 7 5 6 4 2 3 1 6 5 Fondamenti di Informatica

Rappresentazione dei grafi Per rappresentare un grafo esistono diverse possibilità: matrice delle adiacenze liste dei successori lista doppia Fondamenti di Informatica

Matrice delle adiacenze La matrice è così definita: tante righe e colonne quanti sono i nodi del grafo gli elementi della matrice sono di tipo booleano il generico elemento ei,j è definito: true, se esiste un arco tra il nodo i e il nodo j false, altrimenti Fondamenti di Informatica

Matrice delle adiacenze 1 2 3 4 5 6 7 1 0 0 1 0 0 0 0 2 1 0 1 0 0 0 0 3 0 1 0 1 0 0 0 4 0 0 0 0 0 1 1 5 0 0 0 0 0 0 0 6 0 0 1 1 1 0 0 7 1 0 0 0 0 0 0 1 3 4 7 5 6 2 Fondamenti di Informatica

Matrice delle adiacenze Se i valori dei nodi non sono numerici, serve una corrispondenza tra nodi (ad es. stringhe) con gli indici "Vettore dei nodi" A S R V K P E 1 2 3 4 5 6 7 A E V K P R S Fondamenti di Informatica

Matrice delle adiacenze Se anche gli archi sono etichettati, gli elementi della matrice non saranno booleani, ma del tipo usato per le etichette Fondamenti di Informatica

Matrice delle adiacenze Vantaggi: semplice accesso diretto alle informazioni sugli archi (meccanismi di accesso ad una matrice) Svantaggi: numero massimo di nodi del grafo occupazione in memoria pari a N2 l'analisi di un nodo richiede una scansione Fondamenti di Informatica

Matrice delle adiacenze: rappresentazione compatta Generalmente la matrice delle adiacenze è sparsa, quindi si può usare: la rappresentazione compatta usata per le matrici sparse una nuova rappresentazione che evidenzia solo gli archi nodo di part: 1 2 2 3 3 4 4 6 6 6 7 nodo di arr: 3 1 3 2 4 6 7 3 4 5 1 Fondamenti di Informatica

Fondamenti di Informatica Liste di successori Si associa ad ogni nodo una lista semplice, realizzata mediante rappresentazione collegata In ogni lista si memorizza l'insieme dei successori del nodo senza un ordinamento particolare I nodi sono in corrispondenza con gli archi per cui si possono memorizzare anche evenuali etichette Fondamenti di Informatica

Fondamenti di Informatica Liste di successori 1 3 0 2 1 3 0 1 3 4 7 5 6 2 3 2 4 0 4 6 7 0 5 6 3 4 5 0 7 1 0 Fondamenti di Informatica

Fondamenti di Informatica Liste di successori Vantaggi: migliore occupazione della memoria: proporzionale a N+M più efficiente determinare la lista dei successori Svantaggi: verifica di un arco tra i e j è poco agevole l'utilizzo di un vettore per le info sui nodi Fondamenti di Informatica

Fondamenti di Informatica Liste doppie Si utilizza una lista per memorizzare le informazioni dei nodi Vantaggi: il numero di nodi non ha un limite massimo Svantaggi: l'accesso ai nodi è più complesso Fondamenti di Informatica

Percorso minimo in un grafo Problema: dato un grafo con archi etichettati con valore interi positivi, si trovi il percorso più breve tra due nodi Soluzione: proposta da Dijkstra Fondamenti di Informatica