Informazioni generali - PowerPoint PPT Presentation

1 / 37
About This Presentation
Title:

Informazioni generali

Description:

Title: Part I: Introduction Author: Don Towsley Last modified by: ciccio potamo Created Date: 10/8/1999 7:08:27 PM Document presentation format: On-screen Show – PowerPoint PPT presentation

Number of Views:43
Avg rating:3.0/5.0
Slides: 38
Provided by: DonTo8
Category:

less

Transcript and Presenter's Notes

Title: Informazioni generali


1
Informazioni generali
  • Luca Becchetti
  • Tel. 06 49918335
  • Email becchett_at_dis.uniroma1.it
  • URL www.dis.uniroma1.it/becchett
  • Ricevimento
  • Latina martedì e giovedì, ore 9.00-9.45
  • Roma mercoledì, ore 10-12, Dip. Informatica e
    Sistemistica, via Salaria 113 II piano, 00198 Roma
  • Testo adottato
  • R. Sedgewick, Algoritmi in Java, Addison Wesley
  • Ingegneria 2000, via della polveriera 15 (S.
    Pietro in vincoli), tel. 06 4744169/06 4746609
  • Testi consigliati
  • T. Cormen e altri. Introduzione agli algoritmi.
    Ed. Jackson libri
  • Altro materiale documentazione su Java
    disponibile in rete

2
Informazioni generali/2
  • Java tutorial http//java.sun.com/docs/books/tuto
    rial/
  • Il Java tutorial è parte di una più ampia
    documentazione disponibile al sito Sun
  • API Java la documentazione è disponibile al
    sito http//java.sun.com/products/jdk/1.2/docs/ap
    i/index.html e può essere scaricata a partire da
    http//java.sun.com/products/jdk/1.2/docs/
  • J. Bishop Java gently Corso introduttivo.
    Addison - Wesley
  • P. Niemeyer e altri. Learning Java. O'REILLY
  • D. Flanagan. Java in a nutshell. O'REILLY

3
Obiettivi
  • A cosa serve la progettazione di algoritmi e
    strutture dati
  • Come si misura lefficienza delle strutture dati
    e degli algoritmi
  • Come scegliere gli algoritmi e le strutture dati
    adatti a risolvere in modo efficiente un problema
  • Implementazione di algoritmi e strutture dati in
    Java

4
Argomenti del corso
  • Introduzione efficienza e sua misura.
  • Riepilogo sulle principali strutture dati di
    base liste, code, pile, alberi
  • Code di priorità
  • Dizionari
  • Aspetti avanzati degli algoritmi di ordinamento
  • Grafi
  • Rappresentazione e algoritmi di visita
  • Algoritmo di Dijkstra per il calcolo del percorso
    minimo
  • Minimo albero ricoprente (?)

5
Algoritmi e strutture dati - Definizioni
  • Struttura dati organizzazione sistematica dei
    dati e del loro accesso
  • Algoritmo procedura suddivisa in passi che,
    eseguiti in sequenza, consentono di eseguire un
    compito in tempo finito
  • Esempio Max. di un vettore di n elementi
  • Algorithm arrayMax(A, n)
  • currentMax A0
  • for (i0 i lt n i)
  • if (Ai gt currentMax)
  • currentMax Ai
  • return currentMax

6
Nel mondo reale.......
  • Gli algoritmi intervengono (in modo più o meno
    nascosto) in molti aspetti
  • Esempi
  • Internet
  • DBMS
  • Motori di ricerca
  • Struttura del Web
  • Analisi di documenti

7
Esempio Routing in Internet
Protocollo di Routing
Obiettivo determinare buon cammino sorg.-dest.
  • Astrazione usando grafi
  • I nodi rappresentano router
  • Gli archi descrivono i link fisici
  • Costi sugli archi (link) ritardo, costo in
    livello di congestione
  • Cammino buono
  • Di solito significa cammino a costo minimo
  • Possibili def. alternative

8
Esempio Accesso a basi di dati
Interrogazione
Obiettivo rispondere rapidamente.
Interrogazione
9
Qualità di algoritmi e strutture dati
  • Efficienza
  • Tempo di esecuzione
  • Spazio (quantità di memoria)
  • I due aspetti sono interdipendenti

10
Tempo di esecuzione
  • In generale aumenta con n
  • Per lo stesso valore di n può variare con il
    particolare input considerato (es. Vettore da
    ordinare)
  • Dipende dalla piattaforma Hw/Sw
  • In generale può essere poco rappresentativo

11
Come misurare lefficienza?
10 ms
1 ms
  • Perché B gira più velocemente ?
  • Possiamo affermare che B sia migliore di A?

12
Misura dellefficienza - obiettivi
  • Indipendenza dallimplementazione
  • Generale (valida per ogni input, di qualsiasi
    dimensione)
  • Misura indipendente dalla piattaforma Hw/Sw

13
Modello di costo RAMRandom Access Machine
  • Macchina che esegue le istruzioni in sequenza.
  • Insieme di operazioni primitive a costo unitario
  • A 10 (costo 1)
  • A BC D 7 (costo 4)
  • A B (costo 1)
  • System.out.println(A) (Costo 1)
  • Assegnazione
  • Op. aritmetiche
  • Test
  • Lettura/Scrittura

14
Modello di costo/2
  • Costo di operazioni complesse
  • Ciclo somma costo test di fino ciclo e costo
    corpo del ciclo
  • ifthenelse costo test più costo blocco
    istruzioni che segue then o else (a seconda del
    caso)
  • Attivazione di un metodo somma dei costi di
    tutte le istruzioni presenti nel metodo
  • Costo somma di tutti i costi

15
Esempio
  • Nel primo caso (vett. di 3 elementi) si ha costo
    1 (ass.)1 (ass. nel for) 6 (test e incr. nel
    for) 1 (test finale for) 3 (test if) 1
    (istruz. return) 13
  • Nel secondo caso si ha 1 (ass.) 1 (ass. nel
    for) 10 (test e incr. nel for) 1 (test finale
    for) 5 (test if) 1 (istr. ass. nellif) 1
    (istruz. return) 20
  • AlgorithmarrayMax(A, n)
  • currentMaxA0
  • for (i0 iltn i)
  • if (AigtcurrentMax)
  • currentMaxAi
  • return currentMax

1
8
7
6
1
3
4
4
n3
n5
16
Perché il modello è accettabile?
Ogni istruzione corrisponde a una sequenza
finita di istruzioni macchina
MUL B,C ADD A,B
AABC
Ogni variabile occupa una quantità finita
di memoria e quindi i tempi di accesso a
due variabili sono legati da una costante
B
A
C
N finito (es. 32 o 64 )
17
Vantaggi e svantaggi
  • Vantaggi prescinde dalla piattaforma Hw/Sw e
    dal linguaggio di programmazione
  • Svantaggi lindicazione che si ottiene è
    qualitativa

18
Quale input considerare?
  • La misura deve dipendere dalla dimensione
    dellinput (n nel nostro esempio) ma non dal
    particolare input considerato
  • Possibile alternative
  • Analisi del caso peggiore si considera il costo
    di esecuzione nel caso peggiore
  • Analisi del caso medio si considera il costo
    medio dellalgoritmo rispetto ad una
    distribuzione dellinput (richiede la conoscenza
    della distribuzione)
  • In ogni caso occorre definire la dimensione
    dellinput

19
Dimensione dellinput
  • In generale No. bit necessari a rappresentare
    linput
  • Esempio (calcolo del Max. in un array di n
    interi)
  • n interi finiti (lt MAXINT)
  • log(MAXINT) bit per rappresentare ogni valore.
  • Poiché MAXINT è una costante in pratica, il
    numero di bit necessari a rappresentare un intero
    è costante (es. 32)
  • Quindi dimensione input è proporzionale a n
  • A volte le cose possono non essere così ovvie (v.
    problema nellultima slide)

20
Analisi nel caso peggiore (esempio)
  • AlgorithmarrayMax(A, n)
  • currentMaxA0
  • for (i0 iltn i)
  • if (AigtcurrentMax)
  • currentMaxAi
  • return currentMax
  • Nel caso peggiore lelemento massimo è lultimo
  • In questa ipotesi listruzione
  • currentMaxAi
  • è eseguita n-1 volte.
  • Il costo complessivo dellalgoritmo è allora
    11(n-1)12(n-1)14n1

1
4
6
3
8
21
Analisi asintotica
  • Se si considerano tutte le costanti lanalisi può
    divenire eccessivamente complessa
  • Interessa conoscere il costo al variare della
    dimensione dellinput, a meno di costanti
  • Motivo il costo è comunque calcolato a meno di
    costanti, per le ipotesi fatte circa il modello
  • Unanalisi di questo tipo è detta asintotica
  • Lanalisi asintotica è influenzata
    dalloperazione dominante di un algoritmo

22
Analisi asintotica/2
  • f(n), g(n) funzioni dagli interi ai reali
  • f(n)O(g(n)) se esiste cgt0 reale, e una costante
    intera n0 tali che f(n)cg(n) per ogni ngtn0
  • f(n)?(g(n)) se esiste cgt0 reale, e una costante
    intera n0 tali che, f(n)gtc g(n) per ogni ngtn0
  • Si osservi che f(n)O(g(n)) implica g(n)?(f(n))
  • In base a tali definizioni, lalgoritmo
    AlgorithmarrayMax ha costo O(n)

23
Istruzione dominante
  • Un operazione o istruzione si dice dominante se
    il numero d(n) di volte che essa è eseguita nel
    caso peggiore di input di dimensione n soddisfa
  • f(n)lta d(n) b,
  • dove f(n) è la complessità dellalgoritmo nel
    caso peggiore ed a e b sono costanti opportune
  • Es. istruzione if (AigtcurrentMax) in
    AlgorithmarrayMax(A, n)

24
Esempi
  • In base a tali definizioni, lalgoritmo
    AlgorithmarrayMax ha costo
  • f(n) 3n210 n O(n2)
  • Per c4 e n0gt10, 3n210 n lt 4 n2
  • Per c1 1/14, c2 1/2, n0gt7,

25
Analisi asintotica/3
  • Limiti dellanalisi asintotica
  • Le costanti nascoste possono essere molto grandi
    un algoritmo con costo 1050n è lineare ma
    potrebbe essere poco pratico
  • Comportamento nel caso di istanze piccole (es.
    3n contro n2)
  • Il caso peggiore potrebbe verificarsi raramente

26
Analisi di Insertion Sort
  • Algorithm insertionSort(A, n)
  • for (i0 iltn i)
  • tmpAi
  • for (ji jgt0 tmpltAj-1 j--)
  • AjAj-1
  • Aj tmp
  • return A

Ex 5 4 3 2 1 i0 5 4 3 2 1 0 confronti
i1 4 5 3 2 1 1 confronto i2 3 4 5 2 1 2
confronti i3 2 3 4 5 1 3 confronti i4 1 2 3
4 5 4 confronti Ex 1 2 3 4 5 f(n) n
Inserisce lelemento Ai nella posizione
corretta nel vettore ordinato A0,,i-1
27
Esempi
  • class esercizio
  • public void Ex1(int n)
  • int a, i
  • for (i0 iltni)
  • ai
  • public void Ex2(int n)
  • int a, i
  • for (i0 iltnni)
  • ai
  • public void Ex3(int n)
  • int a, i, j
  • for (i0 iltni)
  • for (j0 jltij)
  • ai

Valutare la complessità dei tre metodi
Complessità di Ex3 12....nO(n2)
28
Calcolo delle somme dei prefissi
  • Dato un vettore di interi X0....n-1, calcolare
    le componenti del vettore A0...n-1 tale che
    AiX0....Xi-1. Due algoritmi

Algorithm prefix2(X, n) A0X0 for (i1
iltn i) AiAi-1Xi return A O(n)
Algorithm prefix1(X, n) for (i0 iltn i)
Ai0 for (j0 jlti j) AiAiX
j return A O(n2)
29
Metodo Divide et Impera
  • Il problema è risolto ricorsivamente attraverso
    la sua scomposizione in problemi di taglia
    inferiore
  • Divide Problema suddiviso in un numero di
    sottoproblemi di taglia inferiore
  • Impera Sottoproblemi risolti ricorsivamente o
    direttamente se di dimensione piccola a
    sufficienza
  • Combina Le soluzioni dei sottoproblemi sono
    combinate per ottenere la soluzione al problema
    originale

30
Merge Sort A0...n
A0...n/2-1
An/2...n-1
Suddividi A in due sottovettori di dim. n/2
A0...n/2-1
An/2...n-1
MergeSort A0...n/2-1
MergeSort An/2...n-1
Merge
  • Si suppone n pari per semplicità

A ordinato
31
Merge Sort/2
void mergesort(int A, int first, int last)
if (first lt last) int mid
(first last) / 2 mergesort(A,
first, mid) mergesort(A, mid1,
last) merge(A, first, last)

32
Merge Sort A0...n /3
  • Divide divide gli n elementi da ordinare in due
    sottosequenze da n/2 elementi. Costo O(n)
  • Impera ordina ricorsivamente usando il merge
    sort le due sottosequenze. Costo 2f(n/2)
  • Combina fonde le due sottosequenze ordinate.
    Costo O(n)
  • La ricorsione termina quando si hanno solo due
    elementi da ordinare. CostoO(1)
  • Costo dellalgoritmo Merge Sort

33
Larray 1 8 6 4 10 5 3 2 22ordinatocon
mergesort
34
Merge
void merge(int data, int first, int last)
int mid (first last) / 2 int i1
0, i2 first, i3 mid 1 while (i2
lt mid i3 lt last) if (datai2
ltdatai3) tempi1
datai2 else tempi1
datai3 while (i2 lt mid)
tempi1 datai2 while (i3 lt
last) tempi1 datai3
for (i1 0, i2 first i2 lt last
datai2 tempi1)
35
Equazioni di ricorrenza
  • Tempo di esecuzione di algoritmi ricorsivi
    descritti con equazioni di ricorrenza. Ex
    MergeSort
  • Semplificazioni
  • Argomenti non interi.
  • Condizioni al contorno per n piccolo

36
Soluzione di equazioni di ricorrenza
  • Metodo per sostituzione. Si tenta una soluzione
    e si verifica se soddisfa lequazione di
    ricorsione.
  • Ex Merge Sort

37
Esercizi
  • Mostrare che la soluzione di
  • f(n)f(n/2)1 è O(log n)
  • Mostrare che la soluzione di f(n)2f((n/2)17)n
    è O(n log n)

38
Esercizi/2
  • Si consideri il problema della ricerca in un
    vettore di interi dato il vettore A1..n ed un
    intero k, si vuole stabilire se k sia tra gli
    elementi di A o meno
  • Considerato il classico algoritmo basato sulla
    ricerca binaria, si mostri che esso ha
    complessità O(log n)

39
Esercizi/3
  • Si consideri il problema di indovinare un
    numero intero nel numero minimo di tentativi ad
    ogni tentativo, lalgoritmo propone un valore ad
    un oracolo, che conosce il numero da indovinare.
    Loracolo risponde dicendo se il numero proposto
    sia maggiore, minore o uguale a quello da
    indovinare (nell ultimo caso il gioco termina).
  • Si proponga un algoritmo efficiente e se ne
    esprima la complessità temporale in funzione del
    generico numero N da indovinare
Write a Comment
User Comments (0)
About PowerShow.com