Alberi e parentesi Lezione n°9

Slides:



Advertisements
Presentazioni simili
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 15/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Advertisements

Prof.ssa Rossella Petreschi Lezione del 29/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 19 del testo Cormen, Leiserson, Rivest,
Prof.ssa Rossella Petreschi Lezione del 5/12/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 11 del testo Anany Levitin “The design.
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.
Prof.ssa Rossella Petreschi Lezione del 29 /10/2014 del Corso di Algoritmica Lezione n°8.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Alberi autoaggiustanti
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°10 Prof.ssa Rossella Petreschi
Inserzione e Cancellazione
La rappresentazione delle informazioni
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Alberi di ricerca di altezza logaritmica
Analisi di sequenze di operazioni Union-Find
Lezione n°9 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Lezione n°7 Prof.ssa Rossella Petreschi
La funzione Path e le forme a cespuglio
Alberi binari Definizione Sottoalberi Padre, figli
Rappresentazione di alberi
Correzione 1° Esonero Lezione n°13
Rappresentazione di alberi binari
B-alberi e alberi autoaggiustanti
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Complessità ammortizzata degli algoritmi Union Find
La gestione degli insiemi disgiunti
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°4 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Rappresentazione dei Numeri
Algoritmi e Strutture Dati
UNION FIND Lezione n°8 Prof.ssa Rossella Petreschi
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Rappresentazione di alberi
Lezione n°6 Prof.ssa Rossella Petreschi
Introduzione agli Algoritmi e alle Strutture Dati
Definizione di linguaggio di programmazione
Alberi n-ary Lezioni di C.
Algoritmi e Strutture Dati
Backtracking Lezione n°13 Prof.ssa Rossella Petreschi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Progettare algoritmi veloci usando strutture dati efficienti
Estensione di strutture dati e
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Algoritmi e Strutture Dati
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
LINGUAGGIO C Alberi e livelli
Backtracking Lezione n°17 Prof.ssa Rossella Petreschi
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Unione per ranghi compressi
Programmazione e Laboratorio di Programmazione
Analisi ammortizzata Lezione n°2
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Algoritmi.
ALGORITMO E’ una successione finita di passi che consente di risolvere tutti i problemi di una classe e di determinare il risultato. Caratteristiche: Finito.
Transcript della presentazione:

Alberi e parentesi Lezione n°9 Prof.ssa Rossella Petreschi Lezione del 8 /11/2011 del Corso di Algoritmi e Strutture Dati Riferimenti: Paragrafo 4.3,4.4 del testo Crescenzi, Gambosi, Grossi “Strutture di dati e algoritmi” Edizioni: Addison Wesley ASD 2011/2012

Numero degli 1 in un fissato intervallo di b C(h,2h): riporta il numero di 1 contenuti nelle prime h posizioni di tutti i possibili segmenti elementari  C(h,2h)= k2k = ((logm) /2)2(logm)/2 = O( m1/2 logm) elementi di O(logk) bit ciascuno h=0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 h=1 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 h=2 0 0 1 1 1 1 2 2 1 1 2 2 2 2 3 3 h=3 0 1 1 2 1 2 2 3 1 2 2 3 2 3 3 4 Rank(b,6) = Rank’[1] + #1nei primi 3 elementi di b[4,7] = Rank’[1] + C[2,9] = 3 +1 =4 Dove Rank’[1] è il valore del Rank campionato più vicino a sinistra all’indice di cui si vuole calcolare il Rank; 9 è il numero decimale corrispondente al numero binario scritto in b nello intervallo [4,7] e la riga 2 indica che si debbono contare gli 1 nei primi 3 elementi in [4,7]. In generale Rank(b,i) = Rank’ [q] + C[r,s] dove q = ⎣i/k⎦ ed r = i-qk sono calcolabili in tempo O(1) e s??? ASD 2011/2012 2

Calcolo di s in O(1) Rank’ 3 5 6 6 6 m/k = 2m/logm j 1 2 3 4 5 b’(j) 14 9 8 0 0 0≤ b’(j) < m1/2 b(i) 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0…… k=1/2 logm bit i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20…… ---------------------------------------------------------------------------------------- Rank 1 2 3 3 4 4 4 5 6 6 6 6 6 6 6 6 6 6 6 6 6… Da cui Rank(b,i) = Rank’ [q] + C[r,b’[q+1]] Rank(b,6) = Rank’[1] + C[r,b’[q+1]] = Rank’[1] + C[2,b’[2]] = 3 +1 =4 ASD 2011/2012 3

2m è ancora troppo Dato un array di 256 bits i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20…… 32 interi di 8 bit ciascuno: b(i) 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0… mlogm Rank 1 2 3 3 4 4 4 5 6 6 6 6 6 6 6 6 6 6 6 6 6 i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20…… 8 interi di 8 bit ciascuno: b(i) 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0… 2m (k=logm/2) Rank’ 3 5 6 6 6 i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20…… 4 interi di 8 bit ciascuno: b(i) 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0… O(m/logm)(k=(log2m)/8) Rank” 5 6 ASD 2011/2012 4

..di conseguenza L’operazione di Rank(b,i) si esegue in tempo costante con l’aggiunta di o(m) bit ai bit richiesti dal vettore b Infatti: Lo spazio occupato da Rank” è O(m/logm)bit Lo spazio occupato da Rank’ è O(mloglogm/logm)bit Si partiziona b in blocchi da k = (log2m)/8 bit e per ciascuno di questi blocchi si costruisce l’array Rank’ relativo (così è garantito che ogni elemento di Rank’ richiede O(loglogm) bit dato che le somme parziali all’interno di ogni singolo blocco Rank’ possono aver valore al più k) Lo spazio occupato da C è O( m1/2 logm) O(log(logm/2)) bit Quindi aggiungiamo o(m) ai bit richiesti da b’ aggiungiamo Rank”(8i/log2m) al calcolo del Rank(b,i) Esempio: Rank(b,12) = Rank”(1) + Rank’(3) + C[0,b’[4]] = Rank”(1) + Rank’(3) + C[0,0] = 5 + 1 + 0 = 6 ASD 2011/2012 5

Alberi k-ari e ordinali alberi k-ari (o cardinali): ogni nodo ha k riferimenti ai figli, numerati da 0 a k (binari se da 0 a 2) alberi ordinali: ogni nodo memorizza solamente la lista dei figli, variabile da nodo a nodo. Esiste la memorizzazione binarizzata che associa ad ogni albero ordinale T un albero binario B costruito nel seguente modo: r è la radice sia in T che in B. Sia x un qualunque nodo in T non radice; in T, sia a il primo figlio a sx di x (se esiste) e b il fratello più vicino a dx (se esiste). In B, a e b saranno, rispettivamente, fs e fd di x. ASD 2011/2012 6

Parentesi bilanciate . a b dd b e gg e hh a cc ff . Un albero ordinale può essere codificato da una sequenza di parentesi bilanciate nella seguente maniera: ogni nodo è codificato da una coppia di parentesi bilanciate e i suoi figli sono ricorsivamente codificati ciascuno con una sequenza bilanciata di parentesi. . a b dd b e gg e hh a cc ff . ( ( ( ( ) ) ( ( ) ) ( ) ) ( ) ( )) a c f b e h d g ASD 2011/2012 7

Corrispondenza biunivoca Esiste una corrispondenza biunivoca tra Alberi binari (2-ari) di n nodi; Alberi ordinali di n+1 nodi ; Sequenze bilanciate di 2n parentesi E la cardinalità di questi tre insiemi è il numero di catalano di dimensione n : Cn = (2n su n)/(n+1) c . a b dd b e gg e hh a cc ff . ( ( ( ( ) ) ( ( ) ) ( ) ) ( ) ( ) ) NOTA: non si possono rappresentare direttamente alberi binari mediante parentesi perché non c’è modo di distinguere fs da fd a a c f b b e h d e f d g g h ASD 2011/2012 8

La funzione Match Rank (parentesi,l) = i Select (parentesi,i) = l . a b dd b e gg e hh a ee ff . ( ( ( ( ) ) ( () ) () ) () () ) .abdeghcf 1 1 1 10 0 1 10 0 10 0 10 10 0 nodi parentesi Ovvero le parentesi aperte (chiuse) sono identificate con 1 (0) Ogni nodo di indice i è posto in corrispondenza con l’indice della propria parentesi sinistra (left) tramite le funzioni rank e select: Rank (parentesi,l) = i Select (parentesi,i) = l Per individuare anche la parentesi destra (right), dobbiamo introdurre una nuova funzione Match Match (parentesi,l) = r Match (parentesi,r) = l ASD 2011/2012 9

Rappresentazione succinta tramite parentesi bilanciate tramite parentesi bilanciate si può, in tempo costante, con 2n +o(n) bit in totale, fornire informazioni basiche sull’albero tipo: calcolo della dimensione di un sottoalbero Select (parentesi, i) = l Match (parentesi, l) = r size (i) = Rank(parentesi, r) - Rank(parentesi,l) + 1 Rappresentazione succinta fondamentale per rappresentare in forma compatta alberi statici ASD 2011/2012 10

Applicazioni XML: linguaggio di marcatura che definisce particolari costrutti, i marcatori, usati per associare informazione ad una porzione di testo. XML è un meta linguaggio ovvero un insieme di regole con cui è possibile costruire i propri marcatori e stabilire come vadano usati ed ha il solo scopo di strutturare l’informazione aggiungendo metadati e di costituire il formato in cui il messaggio verrà trasmesso. La codifica XML non ha nulla a che vedere con le applicazioni che si occupano di inviare, ricevere e mostrare il messaggio stesso. Un documento XML è validato rispetto alla posizione e alla sintassi usata per i vari marcatori e non rispetto al tipo di marcatori usati. Quindi i marcatori sono informazioni testuali al pari delle altre da cui si distinguono solo per ragioni sintattiche, ne consegue che qualsiasi software capace di lavorare con file di testo è in grado di lavorare con XML Si sottolinea la differenza con un linguaggio di marcatura tipo HTML dove la marcatura ha lo scopo di far capire come un testo debba essere visualizzato da un browser ASD 2011/2012 11

XML Le regole fondamentali di composizione di un documento XML asseriscono che: Ogni documento XML deve essere preceduto da una dichiarazione Questa istruzione ha una sintassi diversa dagli altri marcatori ed ha lo scopo di dichiarare alle applicazioni che accederanno al documento che si tratta di un documento XML Ogni documento XML deve avere un marcatore che racchiude tutti gli altri Questo marcatore si chiama radice del documento I marcatori XML non possono essere sovrapposti <a> testo <b> testo </b> testo </a> CORRETTO <a> testo <b> testo </a> testo </b> INCORRETTO I marcatori vengono anche chiamati nodi Ne consegue che ogni documento XML può essere rappresentato come un albero dove: la radice dell’albero è il marcatore radice; i nodi dell’albero sono i vari marcatori nell’ordine in cui sono inseriti l’uno nell’altro; nelle foglie ci sono i contenuti testuali (non possono esserci i marcatori) ASD 2011/2012 12

Esempio <?xml version=“1.0” encoding = “UTF-8”?> DICHIARAZIONE <cinematografia> RADICE DEL DOCUMENTO <film codice = “0052216”> <titolo> I soliti ignoti </titolo> <regista> Mario Monicelli </regista> <anno> 1958 </anno> <cast> <ruolo> <attore> Vittorio Gassman </attore> <personaggio> Peppe il pantera </personaggio> </ruolo> <attore> Carla Gravina </attore> <personaggio> Nicoletta </personaggio> </cast> </film> <film codice = “0060125”> <titolo> L’armata Brancaleone </titolo> <anno> 1966 </anno> </cinematografia> ASD 2011/2012 13