Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi

Slides:



Advertisements
Presentazioni simili
Prof.ssa Rossella Petreschi Lezione del 29/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 19 del testo Cormen, Leiserson, Rivest,
Advertisements

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 3/12/2013 del Corso di Algoritmica GRAFI e PLANARITA’ Lezione n°15.
Prof.ssa Rossella Petreschi Lezione del 29 /10/2014 del Corso di Algoritmica Lezione n°8.
Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Dudo.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
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
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
Lezione n°15 Prof.ssa Rossella Petreschi
Rappresentazione di alberi
Rappresentazione di alberi binari
B-alberi e alberi autoaggiustanti
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Complessità ammortizzata degli algoritmi Union Find
La gestione degli insiemi disgiunti
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Usi (meno scontati) della visita DFS
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
K4 è planare? E K3,3 e K5 sono planari? Sì!
Algoritmi e Strutture Dati
per rappresentare grafi
Lezione n°11 Prof.ssa Rossella Petreschi
Lezione n°12 Prof.ssa Rossella Petreschi
ABBINAMENTO Lezione n°13
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Rappresentazione di alberi
Algoritmi per il flusso nelle reti
Lezione n°6 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°18 Prof.ssa Rossella Petreschi
Introduzione agli Algoritmi e alle Strutture Dati
Schema generale, visita in ampiezza e profondità.
Alberi n-ary Lezioni di C.
Algoritmi e Strutture Dati
Backtracking Lezione n°13 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Usi (meno scontati) della visita DFS
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Progettare algoritmi veloci usando strutture dati efficienti
Automi e stringhe Lezione n°24 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Backtracking Lezione n°17 Prof.ssa Rossella Petreschi
Alberi di ricerca Lezione n°4
Alberi e parentesi Lezione n°9
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 Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
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 a.a.2010/2011 Prof.ssa Rossella Petreschi
Il problema del flusso nelle reti
Algoritmi e Strutture Dati
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Unione per ranghi compressi
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Transcript della presentazione:

Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi Parentesi e codici Lezione n°10 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi ASD a.a.2010/2011- Lezione 10

Parentesi bilanciate . a b dd b e gg e hh a cc ff . 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 . ( ( ( ( ) ) ( ( ) ) ( ) ) ( ) ( ) ) a a c f b b e h d e f d g g h ASD a.a.2010/2011- Lezione 10 2

Match(b,i) . a b dd b e gg e hh a ee ff . Match (parentesi,i) = intero j tale che i e j sono le posizioni di una coppia di parentesi corrispondenti Ovvero, se parentesi [l] = 1 e parentesi [r] = 0 che rappresenta nodo[i] si ha: Match (parentesi,r) = l Match (parentesi,l) = r Rank (parentesi,l) = i Select (parentesi,i) = l NOTARE che non si possono rappresentare direttamente alberi binari mediante parentesi perché non possiamo distinguere figli sinistri da figli destri . a b dd b e gg e hh a ee ff . ( ( ( ( ) ) ( () ) () ) () () ) .abdeghcf 1 11 10 0 1 10 0 100 1010 0 nodi parentesi ASD a.a.2010/2011- Lezione 10 3

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 a.a.2010/2011- Lezione 10 4

Applicazioni(1) 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 a.a.2010/2011- Lezione 10 5

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 a.a.2010/2011- Lezione 10 6

Esempio ASD a.a.2010/2011- Lezione 10 7 <?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 a.a.2010/2011- Lezione 10 7

Ancora una rappresentazione implicita Codice biettivo: definisce una biezione fra l’insieme degli alberi etichettati di n vertici e un insieme di stringhe sopra [0,n-1]. Cayley nel 1889 provò che il numero di alberi etichettati su n vertici è pari ad nn-2, pertanto una corrispondenza biettiva richiede che la cardinalità della stringa sia uguale ad n-2. ASD a.a.2010/2011- Lezione 10

Il primo codice biettivo Prüfer nel 1918 presentò una nuova prova del teorema di Cayley e all’interno di questa prova introdusse il primo codice biettivo che poneva in corrispondenza alberi e stringhe. Il codice di Prüfer opera ricorsivamente eliminando ad ogni passo dall’albero la foglia di etichetta minima. Quando una foglia viene eliminata l’etichetta del proprio padre è aggiunta alla stringa. ASD a.a.2010/2011- Lezione 10

CODICE DI PRÜFER Albero Codice 6 6 6 2 2 5 5 5 1 1 1 3 4 3 4 3 4 [2,…] [2,6,…] [2,6,1…] [2,6,1,1,5] ASD a.a.2010/2011- Lezione 10

L’ALGORITMO DI CODIFICA dg v list 1  2 3 345 06 4 5 16 6 25 0. Tutti i vertici sono non visitati (nv-nodi) 1. For each v nv-nodo from 1 to n do 2. if (degree[v]=1) then 3. V è visitato e u è l’unico nv-nodo in adj[v] 4. aggiungi u al codice C e decrementa il suo grado di 1 5. while (degree[u]=1 and u<v) do 6. u è visitato e z è l’unico nv-nodo in adj[u] 7. aggiungi z al codice C and e decrementa il suo grado di 1 8. u = z ASD a.a.2010/2011- Lezione 10

CODICE DI PRÜFER Codice Albero 2,6,1,1,5 2,6,1,1,5 2,6,1,1,5 2,6,1,1,5 … 0,2,1,0,0,1,1 0,2,0,0,0,1,1 0,2,0,0,0,1,0 0,1,0,0,0,1,0 … 0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1 2 3 4 5 6 6 6 2 6 2 2 2 1 1 3 4 3 ASD a.a.2010/2011- Lezione 10

L’ALGORITMO DI DECODIFICA 0. Marca tutti i v che non appaiono in C e push(n in C) 1. Per ogni v da 0 a n-1 do 2. if (v è marcato ) then 3. u = pop(C) e aggiungi lo spigolo (v, u) all’albero T 4. if (u non appare più in C) then marca u 5. while (u è marcato and u < v) do 6. z = pop(C) e aggiungi lo spigolo (u, z) all’albero T 7. if (z non appare più in C) then marca z 8. u = z ASD a.a.2010/2011- Lezione 10

Applicazioni(2) Topologia di una rete (modello OSI) sottorete: livelli 1-3 topologia fisica livello1 topologia logica livelli 2,3 computer host:livelli 4-7 L’approfondita conoscenza della topologia della rete è alla base di ogni applicazione gestionale della rete stessa. Con il termine tomografia della rete si intende la stima della struttura logica e il comportamento dei livelli di link nella rete ASD a.a.2010/2011- Lezione 10

Tomografia di una rete ad albero Problema: dedurre la tomografia di una rete a partire da tutti i cammini OD (da nodo origine a nodo destinazione) Modello: rete ad albero, ovvero ad ogni istante esiste un unico cammino fra ogni coppia OD Idea: porre in relazione gli unici cammini nella matrice OD(rxr) con le sequenze di Prufer e gli alberi etichettati. ASD a.a.2010/2011- Lezione 10 15

Algoritmo OD/Prufer Algoritmo: Input: matrice OD(rxr) Output: l’albero della rete, decodificato dalla sequenza di Prufer Procedura: le foglie dell’albero sono etichettate con i numeri da 1 ad r; tutti i nodi interni saranno numerati con valori crescenti a partire da (r+1), man mano che saranno individuati; (r+1) è il primo valore inserito nel codice di Prufer, ovvero l’etichetta assegnata al primo nodo interno connesso alla foglia con etichetta 1; ogni nuova etichetta m aggiunta al codice (ovvero ogni nuovo nodo interno viene identificato nell’albero) può: - ripetersi al passo successivo nel codice (essere connesso alla foglia successiva di etichetta minima) - diventare foglia a sua volta; ogni volta che una nuova etichetta m viene generata, si aggiunge una nuova riga (e colonna) ad OD. I valori della riga (e colonna) si ottengono decrementando di 1 quelli della foglia f che ha il nodo interno m come padre. OD(m,f) = OD(f,m)= 1 ASD a.a.2010/2011- Lezione 10 16