Spiegazioni ASD 2012 Luddisti Spaziali

Documenti analoghi
Progettazione di algoritmi

Spiegazioni ASD 2013 I Traghetti di Earthsea

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.

Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte II

Informatica 3. Informatica 3. LEZIONE 14: Alberi binari: introduzione. Lezione 14 - Modulo 1. Definizioni. Introduzione. Definizioni e proprietà

Algoritmi e Strutture Dati

Dati e Algoritmi 1: A. Pietracaprina. Grafi (II parte)

Note per la Lezione 4 Ugo Vaccaro

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Problema del cammino minimo

Grafi: visita generica

Espressioni aritmetiche

Algoritmo basato su cancellazione di cicli

Il passo del gambero. La soluzione di problemi con la tecnica del Backtracking. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez.

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati

Introduzione alla gestione delle collezioni di oggetti

In questa lezione Alberi binari di ricerca: la cancellazione

Progettazione di algoritmi

ALBERI DI RICERCA BINARI (O ALBERI BINARI DI RICERCA)

Algoritmi e Strutture di Dati (3 a Ed.) Algoritmo dei tre indiani. Alan Bertossi, Alberto Montresor

Esempi. non. orientato. orientato

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114

Algoritmi e Strutture Dati

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Alberi binari di ricerca

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

ALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI

Alberto Montresor Università di Trento

Alberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc

Struttura di dati che può essere usata sia come dizionario, sia come coda con priorità

Dati e Algoritmi I (Pietracaprina) Esercizi svolti sui Grafi

Grafi: definizioni e visite

Tipi di dato e Strutture dati elementari

ADT Dizionario. Ordered search table. Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D:

Problemi, istanze, soluzioni

Grafi (non orientati e connessi): minimo albero ricoprente

Esercizi Capitolo 5 - Alberi

Alberi e alberi binari I Un albero è un caso particolare di grafo

Alberi ed Alberi Binari

Organigramma Gerarchia. (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre

Algoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1

Problema dell albero di cammini minimi (SPT, Shortest Path Tree) o problema dei cammini minimi :

Algoritmi e Strutture Dati

Alberi binari e alberi binari di ricerca

Progettazione di Algoritmi

Esercizi Capitolo 9 - Grafi

Esercitazioni di Algoritmi e Strutture Dati

Esercizi Capitolo 6 - Alberi binari di ricerca

Algoritmi e Strutture Dati. HeapSort

Informatica 3. Informatica 3. LEZIONE 17: Alberi generici. Lezione 17 - Modulo 1. Introduzione. ADT dell albero generico.

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Intelligenza Artificiale. Risoluzione dei Problemi

Alberi Binari di Ricerca e Alberi Rosso-Neri

ALGORITMI E STRUTTURE DATI

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output

Pumping lemma per i linguaggi Context-free

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati

Capitolo 3: Gli alberi. Alberi n-ari

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

PROVETTE D ESAME. Algoritmi e Strutture Dati

Agenti risolutori di problemi. Risolvere i problemi mediante ricerca Maria Simi a.a 2014/2015

alberi tipo astratto, implementazione, algoritmi

Sommario. Rappresentazione dei grafi. Ordinamento topologico. Visita in ampiezza Visita in profondità

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Reti di Calcolatori

Minimo albero di copertura

Il problema delle azioni

Alberi. Se x è il genitore di y, allora y è un figlio di x. Un albero binario è un albero in cui ogni nodo ha al massimo due figli.

Esercizi su alberi binari

Introduzione ai grafi

Alberi Binari di Ricerca

Grafi diretti. Un grafo diretto (o grafo orientato) G è una coppia (V,E) dove. V è u n i n s i e m e d i nodi (o vertici);

Una breve introduzione all implementazione in C di algoritmi su grafo

Algoritmi e strutture dati

Esercitazione 10 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Cammini minimi fra tutte le coppie

Esercizi proposti 10

Alberi binari (radicati e ordinati) della radice Il padre del nodo 5 e del nodo 3

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Capitolo 5. Algoritmi di ricerca su grafo. 5.1 Algoritmi di ricerca su grafo

Esercitazione 3. Heapsort

Per semplicità eliminiamo le ripetizioni nell'albero.

Algoritmi e Strutture Dati. Backtracking

In questa lezione Strutture dati elementari: Pila Coda

Esercizio 1. Esercizio 2

Algoritmi e giochi combinatori

Soluzione dei problemi di Programmazione Lineare Intera

Alberi. Alberi: definizioni. Alberi Binari. Esercizi su alberi binari: metodi ricorsivi. Struttura dati per alberi generici. ASD-L - Luca Tesei

Algoritmi e Strutture di Dati (3 a Ed.) Errata corrige. Alan Bertossi, Alberto Montresor

Esercizi vari. Alberto Montresor. 19 Agosto, 2014

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Alberi Binari di Ricerca

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 20 giugno 2014

alberi binari e ricorsione

Esercitazione 6. Alberi binari di ricerca

Elezione di un leader in una rete ad anello

Transcript:

Spiegazioni ASD 2012 Luddisti Spaziali

Risultati Statistiche Numero sottoposizioni: 2088 450 250 400 350 200 Sottomissioni 300 250 200 Sottomissioni 150 100 150 50 100 50 10 11 12 13 14 15 16 17 18 19 20 21 Giorno Punteggi 0-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Ora P < 30 progetto non passato 30 P < 75 un punto bonus al voto dello scritto 75 P due punti bonus al voto dello scritto Classifica completa su judge, nella pagina delle slides.

Punti di articolazione Un nodo e un punto di articolazione se la sua rimozione rende il grafo non connesso.

Algoritmo O(V (V + E)) Controllo per ogni nodo se la sua rimozione ha effetti. for all Nodes n G.N do for all Nodes m G.N do m.visited = false end for n.visited = true s = n.vicini[0] num = visita(g, s) if num ( G.N 1) then n.articulation = true end if end for

Componenti rimanenti Rimuoviamo ogni punto di articolazione ed analizziamo le componenti del grafo. Serve un vicere in ogni componente verde, nessuno nelle componenti blu.

Ragionamento Le componenti che hanno almeno due punti di articolazione come vicini non hanno bisogno di un vicere.

Correttezza Lemma Le componenti con un solo punto di articolazione come vicino hanno bisogno di un viceré. Dimostrazione Se i luddisti attaccano quel punto di articolazione, la componente risulta sconnessa dal resto del grafo.

Correttezza Lemma Le componenti con almeno due punti di articolazione come vicini non hanno bisogno di un viceré. Dimostrazione Intuitivamente, possiamo attraversare il punto di articolazione non attaccato per muoversi in una componente vicina. Se questa ha solo un punto di articolazione, avrá un viceré. Se ha piú di un punto di articolazione, utilizziamo quello che non abbiamo attaversato per raggiungere un altra componente. Visto che non ci possono essere cicli, prima o poi raggiungeremo una componente con un singolo viceré.

Algoritmo per il posizionamento O(N + V ) function Posiziona for all Nodes n G.N do if n.articulation = true then n.visited = true else n.visited = false end if end for for all Nodes n G.N do if n.visited = false then check(n) end if end for end function function check(node st) Stack s Set articulation s.push(st) while!s.empty() do n = s.top(); s.pop() if n.visited = false then n.visited = true for all Node m n.vicini do s.push(m) end for else if n.articulations = true then articulations.insert(n) end if end if end while if articulations.size <= 1 then n.vicere = true end if end function

Recap Algoritmo Trovare punti di articolazione (O(V (V + E))) Posizionare i vicere (O(V + E)) Complessitá: O(V (V + E)) Circa 75 punti su judge Algoritmo ottimo É possibile trovare i punti di articolazione in O(V + E)

Classificazione degli archi La dfs costruisce un albero T. Lemma Sia (u, v) (E \ T ) un arco non incluso in T, allora u è un antenato di v o viceversa. Non ci sono archi di attraversamento. Dimostrazione Supponiamo di analizzare (u, v) durante la visita di u. I casi sono i seguenti: È la prima volta che incontriamo v: v diventa figlio di u in T. La visita di v è in corso: u é un discendente di v La visita di v è terminata: impossibile. u è un vicino di v e quindi avrebbe dovuto essere visitato prima che v finisse la sua visita.

Esempio di grafo non orientato

Esempio di visita partendo da 0

Albero dfs partendo da 0 Un nodo N é un punto di articolazione se il sottoalbero di uno dei suoi figli non ha archi verso un predecessore di N. Per ogni nodo manteniamo: Il suo livello nell albero (level) Il livello piú alto che riesce a raggiungere dai nodi del suo sottoalbero (low)

Albero dfs partendo da 0 Id Level Low 0 0 0 1 1 0 2 3 2 3 3 2 4 2 1 5 1 0 6 2 0 7 3 1 8 4 1 Caso speciale: La radice è un punto di articolazione se ha almeno due figli nell albero dfs.

Algoritmo Visita iniziata da nodo s function dfs(node n) n.low = n.level for all Node v n.vicini do if v.level = 1 then v.level = n.level + 1 dfs(v) n.low = min(n.low, v.low) if (n s and v.low n.level) or (n = s and v n.vicini[0]) then n.articulation = true end if else n.low = min(n.low, v.level) end if end for end function

Conclusioni Soluzioni Sulla pagina delle slides su Judge ci sono le soluzioni ufficiali e tutte le vostre soluzioni. Secondo Progetto Da 1 a 3 punti bonus Dal 16 al 25 Maggio