ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.

Slides:



Advertisements
Presentazioni simili
Programmazione dinamica: problema della sottosequenza più lunga
Advertisements

                      Insertion-Sort
if (condizione.) { blocco_istruzioni } else
Strutture di controllo
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Procedure e funzioni ricorsive
PROGRAMMARE IN PASCAL (le basi)
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2005/2006.
Generazione di Piani attraverso Grafi di Pianificazione
Cammini minimi con sorgente singola
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Iterazione enumerativa (for)
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 17/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Corso di Informatica (Programmazione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
CORSO DI PROGRAMMAZIONE II
CORSO DI PROGRAMMAZIONE II
Algoritmi e Strutture Dati Valutazione del tempo di esecuzione degli algoritmi.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Il linguaggio Fortran 90: 2. Istruzioni di Controllo
Introduzione alla programmazione lll
APPUNTI SUL LINGUAGGIO C
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Sottoinsiemi disgiunti
Istruzioni Decisionali
Istruzioni Iterative Nicola Fanizzi
Strutture di controllo in C -- Flow Chart --
Problema Ci sono 5 signore nel parco. Ognuna di loro ha 1 figlio. Ogni bambino ha 10 figurine di calciatori, per un totale quindi di 50 figurine. Questi.
CAPITOLO 7.
Algoritmi e Strutture Dati
Passo 3: calcolo del costo minimo
Algoritmi e Strutture Dati
Tail recursion: esempio
Cammini minimi da un sorgente
Ordinamento topologico Cammino minimo dalla sorgente
Programmazione Strutturata
Teoria degli algoritmi e della computabilità Terza giornata: Ricerca e ordinamento ottimi. P vs NP, algoritmi di approssimazione, e il potere della randomizzazione.
Teoria degli algoritmi e della computabilità Seconda giornata: progettare un algoritmo corretto, efficiente, e possibilmente ottimo! Guido Proietti
Alberi di copertura minimi. Dato un grafo pesato G = (V,E), si richiede di trovare un albero T = (V,E’), E’  E, tale che la somma dei pesi associati.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 1 Cicli ed asserzioni Corso di Informatica 2 a.a. 2003/04 Lezione 1.
4/5/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo – Algoritmi.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Terza giornata: principali classi di complessità computazionale dei problemi Guido Proietti.
Lez. 9 (13/14)Elementi di Programmazione1 Lezione 9 Valutazione di espressioni File di testo sequenziali.
PROVA INTERCORSO MOD.B a.a RICORSIONE ESERCIZI A1.1-A1.6.
Algoritmi e Strutture Dati
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 07/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
PRIMI ELEMENTI DI PROGRAMMAZIONE
NP completezza. Problemi decisionali I problemi decisionali sono una classe di problemi dove per ogni possibile ingresso un algoritmo deve scegliere una.
1/20 NP completezza. 2/20 Problemi astratti Un problema è un’entità astratta (es. il TSP). Una istanza del problema è un suo caso particolare in cui vengono.
1 Vincoli ‘Programming with constraints’ Capitolo 1.
Grafi: rappresentazione e visita
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Alberi.
Algoritmi e Strutture Dati Luciano Gualà
Transcript della presentazione:

ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then failure if somma = M then success failure Esercizio 1 1. Scrivere un programma non deterministico di complessità polinomiale per il problema “Partizione” Partizione: Dato un insieme di interi positivi A = {a 1, a 2,…, a n }, esiste un sottoinsieme S degli indici {1, 2,…, n} tale che  i  S a i =  i  S a i ?

En-partizione (A) n   A  somma  0 M  1/2 (  a i ) if EN_Part (1, somma) then write “esiste il sottoinsieme cercato” else write “il sottinsieme cercato non esiste” 1. Scrivere l’equivalente programma deterministico per enumerazione

EN_Part (i, somma) if i  n then S[i]  false if EN_Part (i+1, somma) then return true S[i]  true if somma + a i = M then return true if somma + a i < M then return EN_Part (i +1, somma + a i ) else return false

1. Dimostrare che CRICCA ott  P  CRICCA dec  P. Sia ALG ott un algoritmo deterministico di complessità polinomiale che, dato un grafo G, trova la dimensione massima di una cricca in G. Si può allora scrivere il seguente algoritmo, deterministico e con la stessa complessità di ALG ott, per risolvere il problema di decisione: Esercizio 2 ALG dec (G, k) h  ALG (G) if h  k then return true else return false

2. Dimostrare che CRICCA dec  P  CRICCA ott  P. Sia ALG dec un algoritmo deterministico di complessità polinomiale che risolve il problema CRICCA dec. Si può allora scrivere il seguente algoritmo deterministico per trovare la dimensione massima di una cricca in un grafo. ALG ott (G) n  |V[G]| k  n while k > 1 do if ALG dec (G, k) then return (k) k  k-1 return (k) Complessità: O((n-1). p), se O(p) è la complessità di ALG dec

Esercizio 3 Sia  un algoritmo che verifica la soddisfacibilita` delle formule booleane e siano {x 1,…,x n } le variabili che occorrono nella formula fornita in input. Possiamo allora costruire il seguente algoritmo: Dimostrare che, se esistesse un algoritmo deterministico di complessita` polinomiale che verifica la soddisfacibilita` di formule booleane, esisterebbe anche un algoritmo deterministico cdi complessita` polinomiale che, data una formula, trova, se esiste, un assegnamento che la soddisfa.

 (  ) n  |Var (  )| if  (  ) then for i  1 to n do x i  true    [x i / true] if  (  ) then    else x i  false    [x i / false] else write “la formula non è soddisfacibile” L’algoritmo  effettua n-1 chiamate ad , se n e` il numero di variabili in , quindi se  fosse di complessita`polinomiale, anche  lo sarebbe.