Introduzione agli Algoritmi e alle Strutture Dati

Slides:



Advertisements
Presentazioni simili
Alberi binari Definizione Sottoalberi Padre, figli
Advertisements

Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Esercizi su alberi binari
Algoritmi e strutture Dati - Lezione 7
Esercizi su alberi binari
MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Prof.ssa Rossella Petreschi Lezione del 29/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 19 del testo Cormen, Leiserson, Rivest,
Prog21 Alberi binari (radicati e ordinati) Il figlio destro della radice La radice Il figlio sinistro della radice Il padre del nodo 5.
Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)
Huffman Canonico: approfondimento. Come abbiamo visto, Huffman canonico ci permette di ottenere una decompressione più veloce e con un uso più efficiente.
Fondamenti di Informatica A - Massimo Bertozzi LE RAPPRESENTAZIONI CONCATENATE.
Prof.ssa Rossella Petreschi Lezione del 3/12/2013 del Corso di Algoritmica GRAFI e PLANARITA’ Lezione n°15.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Somme prefisse Lezione n°2.
Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Dudo.
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Inserzione e Cancellazione
Unità di apprendimento 1
Branch and Bound Lezione n°19 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Dizionari alberi bilanciati.
Alberi di ricerca di altezza logaritmica
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Lezione n°7 Prof.ssa Rossella Petreschi
Alberi binari Definizione Sottoalberi Padre, figli
IL CONCETTO DI ALGORITMO
10. Programmazione Ricorsiva Ing. Simona Colucci
Lezione n°15 Prof.ssa Rossella Petreschi
Correzione 1° Esonero Lezione n°13
B-alberi e alberi autoaggiustanti
La gestione degli insiemi disgiunti
Organizzazione fisica
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Usi (meno scontati) della visita DFS
Strutture informative
Lezione n°4 Prof.ssa Rossella Petreschi
K4 è planare? E K3,3 e K5 sono planari? Sì!
Algoritmi e Strutture Dati
Dizionari alberi bilanciati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Lezione n°6 Prof.ssa Rossella Petreschi
Schema generale, visita in ampiezza e profondità.
Alberi n-ary Lezioni di C.
Algoritmi e Strutture Dati
Usi (meno scontati) della visita DFS
APPUNTI SUL LINGUAGGIO C
Progettare algoritmi veloci usando strutture dati efficienti
Ottimizzazione distribuita
Estensione di strutture dati e
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Algoritmi e Strutture Dati
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
LINGUAGGIO C Alberi e livelli
Alberi di ricerca Lezione n°4
APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
concetti ed applicazioni
Insiemi disgiunti.
Algoritmi e Strutture Dati
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Transcript della presentazione:

Introduzione agli Algoritmi e alle Strutture Dati Alberi Dr. Emanuela Merelli

Argomenti della lezione Tipi di Dato Astratto Albero Concetto di Struttura dati dinamiche Lista non lineare

Lista Lineare è un insieme ordinato di n elementi, tutti dello stesso tipo T, ogni elemento ha un predecessore e un successore Proprietà: X1 è il primo elemento della lista Xi è preceduto da xi-1 e seguito da xi+1 Xn è l’ultimo elemento della lista N= lunghezza della lista N=0  Lista Vuota A B C E D L(A, B, C, D) Relazione di precedenza: per accedere ad un elemento si deve accedere a tutti quelli che lo precedono

Lista Non Lineare è una lista i cui elementi possono essere a loro volta una lista A D E B C L(D (C ( A, B), E))

Lista non Lineare come Tipo di Dato Astratto Dominio dei valori Insieme dinamico basato su elementi di tipo omogeneo Operazioni su Lista non Lineare Creazione della lista non lineare Inserire di un elemento Visita dell’albero

Alberi Un albero è un insieme finito di elementi detti nodi di cui uno è chiamato radice. I rimanenti elementi, se esistono, formano insiemi disgiunti chiamati sottoalberi della radice, ciascuno dei quali è ancora un albero Livello 1 A D Livello 2 B C Livello 3 E F G H I

Alberi Grado di un nodo è il numero di sottoalberi di quel nodo. Un nodo di grado 0 è detto nodo terminale o foglia. Un nodo X è discendente di un nodo Y se esiste una successione di nodi x1  x2 , … xn tale che Y=x1  x2 , … xn = X e xi+1 è discendente diretto di xi. Tale successione prende il nome di cammino. Lunghezza del cammino è il numero di nodi del cammino meno uno. Livello di un nodo X è uguale ad i+1 se i è il livello del padre di X Altezza di un albero è il livello massimo delle foglie

Esempi di utilizzo di alberi Problemi di classificazione vertebrati mammiferi uccelli rettili anfibi pesci

Problemi di decisione Problema delle 8 monete Data 8 monete, ne potrebbe esistere una falsa di diverso peso, utilizzando una bilancia a due piatti, individuare con sole 3 pesate la moneta falsa, e qualora esista se pesa di più o di meno delle altre 123 : 345 < 1l 2l 3l 4p 5p 6p > 1p 2p 3p 4l 5l 6l = 7l 8p 7P 8l 14 : 25 7 : 8 14 : 25 < > > < > < = = = 7 : 1 1 : 4 1 : 3 5 : 2 1 : 4 5 : 2 7 : 1 1 : 3 8l 7p = 2p 4l > 3p 6l 5l 1p 1l 5p < = 6p 3l 4p 2l 7l 8p = > < = < = > = > < = =

Alberi Binari Definiamo un albero binario ricorsivamente. Un albero binario è una struttura definita su un insieme finito di elementi detti nodi, che può essere o Vuoto, non contiene nodi È composto da tre insieme disgiunti di nodi: una radice, un albero binario di sinistra e un albero binario di destra A B C D F G

Criteri di attraversamento di alberi Visita in ordine anticipato Visita in ordine differito Visita in ordine simmetrico

Visita in ordine anticipato Esamina la radice (se N>0 visita sottoalberi) Visita il sottoalbero di sinistra in ordine anticipato Visita il sottoalbero di destra in ordine anticipato A (A,B,D,C,F,G) B C D F G

Visita in ordine simmetrico Visita il sottoalbero di sinistra in ordine simmetrico Esamina la radice (se N>0 visita sottoalberi) Visita il sottoalbero di destra in ordine simmetrico A (D,B,A,F,C,G) B C D F G

Visita in ordine differito Attraversa sottoalbero sinistro in ordine differito Attraversa sottoalbero destro in ordine differito Esamina radice A (D,B,F,G,C,A) B C D F G

Allocazione di alberi in memoria Un albero binario di ricerca viene allocato in memoria come una lista non lineare dove ogni elemento ha il formato seguente: Type nodo = RECORD Type Albero=ARRAY[1..n} inf: CHAR; dx: ^ nodo; sx:^ nodo nodo= RECORD END; inf : CHAR; dx:INTEGER; sx:INTEGER inf sx(p) dx(p) p Allocazione Dinamica\ Allocazione Statica\

Algoritmo per creare ricorsivamente un albero binario VAR Radice:^nodo; valore:CHAR; Radice:=nil; WRITELN(“inserisci lista di caratteri, per terminare 0”); READLN(valore); WHILE valore <> “0” DO BEGIN crea(radice, valore); readln(valore) END; WRITELN(“visita anticipata”); anticipata(radice); WRITELN (“visita differita”); differita(radice); WRITELN(“visita simmetrica”); simmetrica(radice); END. Esercizio Progettare le procedure ricorsive: crea, anticipata, differita e simmetrica