Sei sulla pagina 1di 485

Introduzione agli

I
algoritmi

k
Sommario.

Prefazione all edizione italiana ..................................... .-------

.---- *- ----
Nota alla seconda edizione ....................-....-....-

-------
Prefazione ................................ ....--.-------------

l Introduzione ..................

- - -
1.1 Algoritmi .........................-...... ... .-

j Analisi di algnritmi .....................

1.3 Progettn di algoritmi ..................

. - -- -
1.4 Riepi1ogo .............................

- FONDA TI DI MA TE l TICA .........,...-


PARTE PRI314 ME. i

Introduzinne ....................

delle funzioni ....................


Ordine di gr tndezza

Z. i Not ilione aiintntica ......................................


e
I
standard e funzioni comuni ...........
Notazioni

3 Scim watorie .......................................................... ........-.....

i lllll11, Ilil ,IC ...,.. ,


iUllC
..I FO17llUIC t
p10pflt .1 I

slll .
l E. il i11lll llOI 1C
Dc1 niriune di lilllltd/i lllt

M
Sommario V

Ricorrenze ...........-.-..--. - .....................................................................................


..-------------- *------------ -- ------- - 5 1 9 Ordinamento in tempo lineare ..........................................................................
......................................-..----------------
163
4.1 II metodo di sostituzione ...................................................,......................... 57
9. l Limiti inferiori l ordinamento
per ....................................................,........
....................................................,....... I 6
4.2 Il metodo iterativo ...............................................................................
.......................................................................................
55 9.2 Counting sort .............................................................................................
4.3 Il metodo l 66
principale ........................................................
................................................................................,....
58 9.3 Radix sort ...................................................................................................
..............................................................
* 4.4
dimostrazione del teorema .........................................................
I 68
principale 6 1 9A Bucket sort ..............,.........,........................................................................
.................................................................................................
170
Insiemi e affini .......................................................................................................73
...........................,.............,.............................................. ....,....,.,
10 1Vlediano e selezione ............................................................................................
....................................................----------.---------
1 75
5.1 Insiemi ........,..... ...........................................................................................
73 10.1 Minimo e massimo .............................,...................................................... .
.............................,.................
5.2 Relazioni .....................................................................................................
...............................................,..............,............. 175
77 10.2 Selezione con tempo medio lineare ....,........ ..............................................
5.3 Funzioni ...........................
.....................................................................................................
........................... ,...........,... 1 77
79 10.3 Selezione in tempo
5.4 Grafi
lineare nel caso peggiore ............................................
............................................ l 79
......................,............,..........................................
........ .............................................................................................
8 1
5.5 Alberi ..................,... ....................................................................................
85

6 Calcolo PARTE TERZA - STRUTTURE


combinatorio e delle ...........................................................
...................................-........................ D/DATI...,.....,....,....,...,....,....,...,...........,........,....,...
.....,...........................................................................
probabilit 93 1 84

6.1 Calcolo combinatorio ,...,......,.........,............................................................


..................................................................................
93 Introduzione ....................... ............,............,..............................................................
..................................................,..............................................................
Calcolo delle ......,...,.................................................................. 185
probabilit.............................................................................. 98
6.3 Variabili casuali discrete .........................................................,.................
.........................................................,............... 103 I 1 Strutture di dati fondamentali ................................-...--.--
....,.....................................................................
------- ------
.4 Distribuzione 1 89
e distribuzione binomiale
geometrica ................................, 107
11.1 Pile e Code............................................. ... .....................................................................
6.5 Code della distribuzione .. 189
binomiale ........................................................... l 13
l l.2 Liste concatenate ,... ............ ......................................................
..................................................... .
6.6 Analisi probabilistica ................................................................................
................................................................................. .. I 92
1 18
I 1.3 Realizzazione di puntatori e oggetti ................ .......................................... I 97
I I A Rappresentazione di alberi radicati ..................... ...,.................................. 20 I
ITE SECONDA - ORDI/VAMEiVTO
E SELEZIONE ....,....,....,........,....,.........,........... 12
128 Tabelle hash .............,...,.............................,.....,..................................................
.........................................................................................................
27
12.1 Tabelle ad indirizzamento diretto .............................................
Introduzione .................................................................................................
........................................................................................................ .. 207
1 29 12.2 Tabelle 209
hash .................. . ....,...............,.......................................
l 2.3 Funzioni hash ...............
7 ..............................................................................................................
Heapsort............................................................................................................... ......,.....,.............,..............,..................... 2 I3
133
12.4 Indirizzamento aperto ............................. ...
7.1 Heap ............ ............................................................................................. 2 I9
................................................... 1 33
7.2 Mantenimento della dello heap
propriet ............. .................................... I 3S 13 Alberi binari di ricerca ... .....,...........................,.......,......................................
............................-...............--,-- -- ----
------- 229
7.3 Costruzione di uno heap ............... ................................................... 13 7 13.1 Che cos un albero binario di ricerca ................................................... 1 79
7.4 L qlgoritmo heapsort .................................................................................
l 39 13.2 Interrogazioni su un albero binario di ricerca............................................ 23 1
7.5 Code con ............,..........................................................................
priorit I4 I 13.3 Inserzione e cancellazione ................................................................... ... 35
13.4 Alberi binari
8 Quicksort ............................................................................................,................
....,............,.....,....,......,....,....,......,....,...,...,...,.....,........,..... di ricerca costruiti in mo do i isua1e ...,......,............,.............
.......................,............. 23 8
145

8. I Descrizione del .................................


quicksnrt .. .. .. .. ... .. . . 143 14 RII-alberi ...,......,..............,..............................,.......,............................................
.................................................-..- ..- -- -- --- - - - --- - - 247
1
g Prestazioni d i quicksort ....................................... .. ...- . .. .. . - I 47 l k. I Proprielit de li RB-alhLll ............................................. ....
, ,. ...,. , ....................... - 247
Versione r tndumizz ite del quicksurt ........................................................ I 2 IA.2 Rotazioni ...........................................................,....... ..--. ...
.. - ...,.... 2-i9
... ,, ...,....,...,. ..........................
84 Analisi del ..................................................................................
quicksort 154 IA 3 Inierzi ne ...........................,..............-
..,...,..., . .. ...... .. . .. ........,..............................
251
I 44 C inccllariunc ....................... ..., ,... ... AS
Sommario VII

15 Estensione di strutture di ...........................................................................


dati............................................,..................., ... 263 20 Heap binomiali ....................................................................................................
.................................................................................................... 383
l5.1 Selezione su un insieme dinamico................,................................,..... ...... 263 20. I Alberi binomiali e heap binomiali ............................................................. 3 84
15.2 Come estendere una struttura di dati .......................................................,. 268 20.2 Operazioni su heap binomiali .................................................................... 389
15.3 Alberi di intervalli ...........,............................................... ......................... 27 I
21 Gli heap di Fibonacci ..........................................................................................
...................................................-.....-..----...- .-.-.---.. 403

21.1 La struttura degli heap di Fibonacci .......................................................... 404


PARTI. - TECNICHE EVOLUTE PFR 21.2 Operazioni che fondono heap .................................................................
QUARTA lL PROGETTO 4Q6
E L ANALISI DI ALGORITMI...,.......,......,.....,.........,..........,...,...... 278 21.3 Decremento di una chiave ed eliminazione di un nodo............................. 4 l3

21.4 Limitazione del massimo........................................... ...... ... ... 4 I7


grado
Introduzione ..........................................,......................................................................
.................................. ......,.... ........... ................,. 279
22 Strutture di dati insiemi disgiunti...............................................................
per 423
l6 Programmazione dinamica ................................................................................
................................................................................ 2S3 22. l Operazioni su insiemi disgiunti ................................................................ . 423
16.1 Prodotto di una sequenza di matrici .......................................................... 22.2 Rappresentazione a lista concatenata di insiemi disgiunti ....................... . 426
16.2 Elementi di programmazione dinamica..................................................... 29 1 22.3 Foreste di insiemi disgiunti ...............................,...................................... . 429
16.3 Il problema della 9 $
pi lunga sottosequenza comune ................................... 296 Analisi dell unione rango con compressione dei cammini
per ................. 43 2

l 6.4 Triangolazione ottima di un ....................................................... 302


poligono

17 Algoritmi greedy .................................................................................................


.....,.......................................................................................... 3 1I
PARTE SESTA - ALGORITMI SU GRAFI ......,....,,...............,.......,
..............................................................................
..... - .. --- -- 444
17.1 Selezione di attivit ...,...........................,..........,........................................
................................................................................... 3 l 2

17.2 Strategia greedy concetti di base .............................................................. 315 Introduzione ......,....,...,. ...................,....,...........,.........................................................
......................................,................,.......----..--------------------- 445
17.3 Codici di Huffman .....................................................................................
................................................................. 3 l9

17.4 Fondamenti teorici dei metodi ..................................................... 326 23 Algoritmi elementari su .....................................--------- ----------
............................................................................
greedy grafi 447
17.5 Un problema di scheduling ........................................................................ 332 23.1 Rappresentazione di grafi .......................................................................... 447
3.2 Visita in ampiezza ..........,.....................................................,.................... 450
IS Analisi ammortizzata..........................................................................................
......................................................................................... 337
23.3 Visita in profondit ............................... ... - - 45 8
18.1 Il metodo degli aggregati ...........................................................................
..........,...,................................................. 338 23.4 Ordinamento topologico ......................................... - 465
18.2 Il metodo degli accantonamenti.................................................................
................................................................ 342 23.5 Componenti fortemente connesse .............................................................. 468
18.3 Il metodo del potenziale ............................................................................
....... ............................ ....................... 344

18.4 Tabelle dinamiche .............,.......................................................................


.......,.....................,.................................. 348 24 Alberi di copertura minimi .....,...,.................,,...................................................
...........................,.................................................. 477

24.1 Costruzione di un albero di copertura minimn .......................................... 47 8

24.2 Gli algoritmi di Krusl al e di Prim,........................................................... 48 2


PARTE. - STRUTTURE
. UEXT4 Df DATI F3 OLUTE,....,......,,........,,.......,........,.......,.. 360
25 Camnsini minimi con sor ente sin ola ........................................----.....,........ 49 l

introduzione ....................................,............................................................................
....................................,............................................................................
36 1 25.1 Cammini nlinimi e rilassamentn.................................... ......................... 495

Algoritmo di Dijkstra .........................,..........,...................................,....... .......,....... 503


l9 R-All eri ............................................................................................................... 363 25,3 Algoritino di Bellman-Fo ...................................................................... 507
l9.I Definizione dei B-alberi .............................................................. . .
. ....,.... .......,, ... .. ... ,.....,. ...,......,......... 25,4 C immini ininimi ior
313 cnn ente sin ala in orient iti ciclici .............. 5 l 1
grati
t .2 Operazioni di base sui B-alberi ........................................ 23, Vincoli
36 di di tTerel17. l C C ll111111BI tllllllI111 ................................................... ,.............. 5 I3
l .3 Eliminazione di una chiave dl U1 B-albCH ...........- .. - 3 76
Sonuna rio IX

26 Cammini minimi tra tutte le coppie .................................................................. 525

26.I Cammini minimi e moltiplicazione di matrici...........................................


.......................................... 5 27
31 Operatori sulle matrici ............................ .....,............,......,.......,.......................
....................................................................................... 689
j
31.1 Propriet delle matrici .........................................................................-..... .......................... 689
26.2 Algoritmo di Floyd-Warshall ....................................................................
.......................................... 532 31.2 Algoritmo di Strassen per la moltiplicazione tra matrici .....,....................
........................... 697
26.3 Algoritmo di Johnson sparsi ...................................................... . 39
per grafi 31. Sistemi algebrici di numeri e moltiplicazione tra matrici booleane .............
............. 704
* 26.4
Un contesto generale in cui risolvere problemi 31.4 Risoluzione di sistemi di equazioni lineari ................................................ 708
di cammini in grafi orientati .....................................................................
........................................ 543
31.5 Inversione di matrici ..............................................................- ............... 720
27 Flusso massimo ...................................................................................................
------------ 31. Matrici simmetriche definite positive e metodo dei minimi quadrati ....... 724
------ *-- *--------------.......................... 551

27.1 Reti di flusso .............................................................................................


. . ......-...-....................................... 55 2 32 Polinomi e FFT ....................................................................................................
.................................................................................................... 735
27.2 II metodo di Ford-Fub erson ............................................ ..... .
...................................................................... 558
2.1 Rappresentazione di polinomi ................................................................... 737
27.3 Abbinamento massimo in un bipartito .............................................
grafo 570
32.2 DFT e FFT ............................................................................
....................................................................
-...-..-..-....... 742
97/
Algoritmi di preflusso ...................................................... ...... 574
32.3 Realizzazioni efficienti della FFT ............................................................. 749
27.5 Algoritmo lift-to-front ........................... ................................................... 583

33 Algoritmi di teoria dei numeri ...........................................................................


....................................------ -------- 759

33. l Nozioni elementari di teoria dei numeri .................................................... 760


PARTE SETTIMA - COMPLEMENTI ED ESTEpSIOAI .........,..................,...,......,....,... 598 33.2 Massimo comun divisore ....................................................... ..... . . 765
33.3 Aritmetica modulare .......................................... .....................................................
. 770
Introduzione .................................................................................................................
----------------------- .-...........-.................................................. 599
3.4 Risoluzione di equazioni lineari modulari ..........,...................................... 776
33.5 11 teorema cinese det resto .................................................. . 779
28 Reti di confrontatori ..................................................................,........................
-----------...-.........-.........................,........................ 601
3.6 Potenze di un ................................,............................................
e emento............................................. ... . . ... . 78 1
28.1 Reti di confrontatori .................................................................................
........ .................................. 601 33.7 Crittografia 785
a chiave pubblica RSA..........................................................
28.2 Il prihcipio zero-uno ...............................................................................
- --- - - ....................................... 605 33.8 Verifica di primalith .................................................................................. 79 I
28.3 Una rete di ordinamento bitonico ..............................................................
...... -.-....................................... 608 *
33.9 Scomposizione di interi in fattori primi..................................................... 797
28.4 Una rete di fusione .....................................................................................
....... ....................................... 61 l
8.5 Una rete di ordinamento ............................................................................
...... ....................................... 613 34 Corrispondenza tra stringhe .......................................................------------
............................................................................. 805

34. l Algoritmo ingenuo di corrispondenza tra stringhe .................................... 806


29 Circuiti aritmetici -------------------------------...............................
............................................................................................... 619 P
3g Algoritmo Rabin-Karp........................................,...................................... 809
29.1 Circuiti combinatori ...................................................................................
.... ........................... 619 34.3 Corrispondenza tra stringhe con automi a stati tiniti ........................... 8 I3
gli
29.2 Addizioriatori ....................... -...... ............................. 624 34.4 Algoritmo Knuth-Morris-Pran .................................................................. 8 19
29,3 Circuiti moltiplicatori .............................................................................-..
..................................... 35
634 Al oritmo Boxer-Moore ............................................................................ 825
298 Circuiti iequenziali .................................................................................-..
....................................... 641

35 Geometria computazionale ................................................................................


.....................-..........------------------------ 835
30 Algoritmi per calcolatori .....................................................................
-- - - -- - -..........................
paralleli i5 l
35.1 Proprii.- , i dei segmenti ....................................................... . - . ....... 83S
30.1 Salto dei puntatori ..........................................,.......................................... 654 Verittca del intersezione coppia di segmenti ................. 840
di una qualsiasi
3 .2 Confronto tra algoritmi ERE rV e al oritmi CRCW.................................
.......................... 663 5 ..s Calcolo detl inviluppn eonvCS4O .................................... .... . ........... . 846
iQ, l Il Teorema di 8rent e l elTicienzu rispetto al lavoro ................................. 70 Ricerca della coppia i punti vicini ............................................,........ 854
piii
304 Calcolo parallelo dei efficiente iispetto al Iavorn .........................
prefiiii 674
3 ,5 Risoluzione cleterministica lei contlitti ..................................................... 3fi Prohlemi AP-c mspleii ........................................................................................
.......................................................-................................ SCi3
..................................... 679

3 i. l Ten po
politl inli ile ................................................................
.. ...,...,...............................,.................................. . Rb
edizione Inrrodu-ione agli Algoritmi XII1
XEI Prefa ione all italiana

lasso di tempo ragionevole NP-completi e sono considerate tecniche per superare


fondamentale che i daii siano ben.organizzati e srrutrurati in modo che l algoritmo li possa problemi
almeno in parte tali limitazioni algoritmi approssimati .
elaborare efficientemente.

Questo libro di testo fornisce sia una moderna introduzione che un esauriente trattato

e Alan A. Bertossi
riguardo al progetto e all analisi di algoritmi, ed k stato scritto da famosi professori
ricercatori del prestigioso Massachusetts Institute of Technology. Il testo presenta molti Docente di b1erodi il Tratramenro dell 7nforn a-ione
per
algoritmi per problemi di indubbia utilit pratica, alcuni dei quali sono trattati molto
Universit degli Studi di Pisa
approfonditamente, pur rendendone accessibili il progetto e l analisi a lettori, siano essi

studenti universitari o professionisti. che abbiano una preparazione matematica a livello di

scuola media superiore. Pisa. gennaio 1995

Gli algoritmi sono descritti sia verbalmente che utilizzando un semplice pseudocodice, che

li rende comprensibili a qualsiasi lettore che abbia una minima esperienza di programmazio-

ne svincolandolo dall uso di uno specitico linguaggio di programmazione. Nel tradurre il

testo in italiano, si posto il dilemma se usare termini scientifici della lingua italiana o inglese.

Dove stato possibile. sono stati usati termini italiani di uso corrente nell ambito accademico.

Nei casi in cui la traduzione avrebbe richiesto l introduzione di neologismi, sono stati

mantenuti i termini inglesi per esempio bi r. cirray, heap, l ash divenuti ormai di uso corrente

anche in italiano, perlomeno in ambito accademico. In particolare, le istruzioni dello

pseudocodice e i nomi delle variabili e degli algoritmi sono stati lasciati in inglese.

Il testo suddiviso in sette parti, a loro volta suddivise in capitoli. Ciascun capitolo presenta
dapprima le nozioni pi semplici e successivamente quelle pi difficili, cosi che un lettore

inesperto possa limitarsi a leggere le prime. Alcuni paragrafi ed esercizi sono contrassegnati

da cm asterisco . Questi indicano approfondimenti che richiedono la comprensione di

tecniche matematiche pi complesse.

La Parte I tratta tutte le tecniche matematiche che sano necessarie nel resto del testo.

L unico prerequisito richiesto al lettore quello di avere una minima dimestichezza con le

dimostrazioni che usano l induzione matenntica. Questa parte pu essere soltanto sfogliata

ad una prinaa lettura. per ritornarvi successivamente quando risulti necessario capire una certa

tecnica matematica usata nel progetto o nell analisi di un algoritmo trattato nelle Parti II-VIL

La Parte II espone i principali algoritmi di ordinamento heapsort, quicksorr, coirnring sort,

radia sort, bucl et sor/ e di selezione. mentre la Parte III introduce le principali strutture di

dati lisre. code, pile, tabelle havh, aiberi di ricerca, allreri bilaiiciati atte a realizzare

operazioni su insiemi dinamici.

La Parte I V presenta tecniche sofisticate per progettare nuoti algoritmi prograimnn ione
dii ainica. greedy e per analizzarne l etficienza eo mlisi anuirorti- aia . La Parte V tratta

strunure di dati evolute B-alberi, heap bi ohi iia/i. heap li Fibc nacci, stnrrnire per insieini

disgiunti . molte delle quali bonn state inventate nell ultimo decennio. La Parte VI espone

algnritmi per operare u di una impoi-t mtiiiima struttura. i grafi. Oltre ad algoritmi di base

visira in ampie ,.-a o in profonditG. con menti connesse . anno considerati algoritmi sia
-a
classici che recnstissimi per probic mi di opprimi ione su grafi alberi di co errura, canvuini

minimi, f7wssi massimi .

La Parte Vll contiene complementi ed estensioiii del materiale trattato nelle Porti ll-VI.

Sono intrndotti nunvi modelli i c ilcolo reti eli ccmfi-w ratori, circuiti combinati ri e

aritnsetici. cnlc lntori paralleli . sono considerate applicazioni specialistiche nu tri i.

trattate alcune limit rioni teorichc di certi prohlemi. che pei c. non posa no esecra. risolti in un
Nota alla seconda edizione italiana

In seconda edizione il testo stato minuziosamente rivisto, avvalendosi anche


questa
dell errara-corrige messa a disposizione dagli autori su Internet. In un libro di quasi mille

inevitabile che sfuggano degli errori e che vi siano altre imperfezioni dovute alla
pagine
traduzione, alla del testo e delle figure, alla lavorazione del libro in generale.
preparazione
Il non sempre essere uno specialista del ramo questo viene atf ancato da
traduttore pu per
un revisore, ma vi comunque spazio miglioramenti e comzioni. Gli autori stessi
per
commettono errori o, motivi magari inesplicabili a loro stessi, non presentano eli
per
argomenti nel modo migliore in questo libro, il caso pi eclatante era forse quello
proposti
del teorema 12.7. che stato ora reso bonus dormit6t Honierus...
pi preciso. Quandoque
anche Omero sembra sonnecchiare talvolta diceva gih Orazio.

Gli studenti anche i docenti spesso si scandalizzano la quantit di errori, laddove


e per
dovrebbero invece sentirsi meno frustrati e in modo rassicurati dalla fallibilith di
qualche
illustri colleghi . Ma soprattutto a beneficio degli studenti che importante
professori o
cercare di minimizzare il numero di errori, tendono a rendere meno intelligi-
giacch questi
bile il cesto e non sempre sono facilmente scoperti dal lettore meno provveduto. Puicroppo.

correggere errori un lavoro minuzioso e ingrato, al quale ci sianao sobbarcati con spirito
gli
e cercando di fare del nostro meglio ci scusiamo fin d ora se qualche svista
di servizio
rimasta o se ne sono state introdotte di nuove. Ringraziamo altresi i numerosi studenti che

hanno dovuto cimentarsi con la edizione e ci hanno fruttuosamente segnalato


precedente
errori o oscurit, traendo da spunto una pi protonda comprensione
peraltro questi per
dell argomento.

opportuno segnalare che, allo scopo di nsitieare la ben nota confusione tra alberi pieni.

completi e heap. abbiamo chiamato albero binario il fi tl binary tree. preceden-


piena iente
temente tradotto con albero binario Per il resto. i terminologia rimasto invariata.
pieno.

llfcruro Torelli e Carfo Meeegherri

Dipartimento di Scien -c dell.infoi.,va-ioide

Universit di lvliIano

Milaiw. m aggio l 999


Prefazione

libro fornisce un ampia introduzione allo studio moderno degli algoritmi. Presenta
Questo
molti algoritmi e li tratta in modo approfondito inoltre rende la loro progettazione e la loro

analisi accessibili a lettori di livello. Si cercato di mantenere le spiegazioni a


qualunque
livello elementare senza sacrificare l ampiezza deIla trattazione o il rigore matematico.

Ogni capitolo un algoritmo, una tecnica di progettazione, un area di applicazione


presenta
o un argomento attinente. Gli algoritmi sono descritti con uno pseudocodice pensato per

essere leggibile da chiunque abbia fatto un di programmazione il loro funzionamento


po
illustrato da numerose tigure. Poich l efficien-a va considerata determinante nei criteri di

di un algoritmn. inclusa un attenta analisi dei tempi di esecuzione.


progettazione

Il testo rivolto soprattutto a studenti di corsi universitari su algoritmi e strutture di dati.

Dato che si discutono sia le tecniche che aspetti matematici presenti nella
questioni gli
di algoritmi. il libro essere utilizzato anche da tecnici e
progettazione pub proficuamente

professionisti.

Al docente

libro stato essere versatile e completo ed quindi utilizzabile in una


Questo pensatn per
variet di corsi. ovunque ci si occupi di algoritmi e strutture di dati. Dato che si fornisce molto

materiale di quello che comprendere un corso, il docente dovrebbe considerare il libro


pi pu
come testo di riferimento da cui e selezionare il materiale che meglio si adatta al
prendere
corso che intende svolgere. utilizzandn solo i capitoli necessari. Ogni capitolo contiene tutte

le nozioni necessarie alla sua comprensione e presenta argomenti pi semplici e poi


prinsa gli
complic ti. In un corso di diploma si potranno usare solo i primi paragratt di un
quelli pi
capitolo. in un corso di laurea si potr usare l intero capitolo.

Vengono oltre 900 esercizi e pi di 120 Ogni paragrafo termina con


presentati problemi.
esercizi e ciascun capitolo termina con Generalmente gli esercizi sono domande
problemi.
brevi verificare l . pprendimenta del nlat riale alcuni sono semplici esercizi di autoveri fica.
per
llldiltM altri essere dati come compilo casa. 1 problemi propongono casi piii
possnno per
elaborati e speiso itstroducono nuovo materiale eni.ralnsente consistono di diverse dnman-

de che conducono lo studente tuia alla soluzioni.


per passi

richiedere ltllil di h lie C6111pleta 01lll .l CreatiVit sllj el iote lllll


possono prcp lr lliojle iil
media.
Prefa ione lnrrodu-ione agli Algoritmi XIX
XVIII

Si anche utilizzare la elettronica su Internet per far conoscere errori, per


Allo studente pu posta
richiedere una lista degli errori conosciuti o per proporre suggerimenti costruttivi. Per

ricevere informazioni, spedire all indirizzo elettronico algorithmsQtheory.


Si spera che libro fornisca al lettore una piacevole introduzione alle problematiche Subject
questo nell intestazione del messaggio.
1cs.mit.ecu specificando help
degli algoritmi che si cercato di rendere interessanti e accessibili a tutti. Algoritmi difficili
Siamo dolenti di non rispondere personalmente a tutti i messaggi.
matematici. Se il lettore poter
o inconsueti sono stati descritti con attente spiegazioni degli aspetti

ha confidenza con un argomento. trover i capitoli organizzati in modo che possa


gi
sorvolare sui di introduzione velocemente al materiale pi avanzato. Ringraziamenti
paragrafi passando

libro tratta molti argomenti, che non saranno affrontati tutti durante
Questo probabilmente
un corso. Pertanto si cercato di renderlo utile sia come libro di testo sia come manuale di Molti amici e colleghi hanno contribuito considerevolmente alla di questo libro. Li
qualit
riferimento da usare in seguito nella carriera professionale. ringraziamo l aiuto e le critiche costruttive.
per
I prerequisisti per poterlo leggere sono Il Laboratory for Computer Science del MIT ha fornito un ottimo ambiente di lavoro. I

una esperienza di programmazione, la comprensione delle ricorsive nostri colleghi del Theory of Computation Group del laboratorio sono stati particolarmente
qualche procedure
array e le liste d aiuto, tolleranti malgrado le nostre richieste incessanti di verifica e critica dei capitoli. Un
e la conoscenza di alcune strutture di dati semplici come gli
ringraziamento va a Baruch Awerbuch, Shafi Goldwasser, Leo Guibas, Tom
una certa confidenza con le dimostrazioni induzione matematica del particolare
per poche parti
Leighton, Albert Meyer, David Shmoys, e Eva Tardos. Grazie a William Ang, SalIy Bemus,
libro si basano su nozioni di analisi matematica e la Parte I del libro presenta tutte le
Ras Hirschfeld e Mark Reinhold che hanno garantito il buon funzionamento dei nostri
tecniche matematiche necessarie.
calcolatori DEC Microvax. Apple Macintosh. e Sun Sparcstation e la ricompi1azionc di

TgX tutte le volte che si superava il limite del tempo di compilazione. La Thinking Machines
Al professionista Corporation ha contribuito a Charies Leiserson di lavorare a questo libro durante
permettendo
una sua assenza dall MIT.

La variet degli areomenti di questo libro lo rende un ottimo manuale sugli algoritmi. Poich Molti colleghi hanno usato versioni di testo tenere cor i in altre
preliminari questo per
ogni capitolo relativamente completo, il lettore pu focalizzare 1a sua attenzione sugli scuole. ed hanno suggerito numerose comzioisi e revisioni. In si ringraziano
particolare
argomenti che maggiormente lo interessano. Richard Beigel Yale . Andrew Goldberg Stanford . Joan Lucas Rutgers , Mark Overmars

Poich molti degli algoritmi discussi hanno utilit ne sono considerati Utrecht . Alan Sherman Tuft e Maryland e Diane Souvaine Rutgers .
grande pratica.
anche vi si forniscono alternative anche algoritmi di questo
gli aspetti realizzati pratiche per quei pochi Molti assistenti dei nostri corsi hanno dato contributi significativi allo sviluppo

che sono essenzialmente di interesse teorico. materiale. Si ringraziano in Alan Baratz. Bonnie Berger. Aditi Dhagat, Burt
particolare
uno degli algoritmi sarh semplice Kalisl i, Arthur Lent, Andrew Moulton, Warios Papaefthymiou. Cindy Phillips. Mark
Per il lettore che desideri realizzare qualsiasi presentati
tradurre lo pseudocodice nel suo lingua di programmazione Lo Reinhold. Phil Rogaway. Flavio Rose, Arie Rudich, Alan Sherman. Cliff Stein, Susmita Sur.
gio preferito. pseudocodice
stato ciascun algnritmo in modo chiaro e sintetico sono stati Gregory Troxel e Margaret Tuttle.
progettato per presentare
volutamente ignorati la gestione degli ennri ed altri aspetti dell ingegneria del software che Molte altre hanno fornito un utile e valida assistenza tecnica. Denise Sergent ha
persone
richiedono ipotesi speci teche sull ambiente di programmazione. Si cercato di presentare trascorso molte ore nelle biblioteche del MIT alla ricerca di riferimenti bibliografici. Maria
pi
ciascun algoritmo in modo semplice e diretto, evitando le idiosincrasie di un linguaggio di Sensale. a bibl intecaria della nostra sala di lettura stata sempre disponibile e di grande aiuto.

programmazione specifico che avrebbe potuto coi fondere il suo significato, L accesso alla biblioteca di A1hert Meyer ci ha fattn risparmiare molte ore nella
personale
delle note si capitoli. Shlomo Vipnis, Bili Niehans e David Wilsott hanno
preparazione
correno le bozze dei vecchi esercizi, ne hanno sviluppato di nuovi e hanno scrittn le note per
Errori
le loro soluzioni. Marios Papaefthymiou e Gre ory Troxel hanna contribuito alla stesura

dell indice analitico. Negli anni, le nostre se,.retarie Inni Rzdziahoviky, Denise Sergent.
Un libro di mnle contiene seiiz altrn errori ed nmissioni. Se il lettore trova qualche
questa Galle Sherns in e. Be HubbarJ h mio fnrnito un snstegno senza pari per
particolarmente,
errore o h utile iu erimento a sar aseolt tn volentieri. Saranno
qualche proporre, e pertanto le ringraZiaimo.
questo progelto.
apprezzati u gerimenti nuovi esercizi e inclu l ino la
partico1arri ente per pr emblemi. purchi
Molti errori nelle versioni sono stati individuati dogli studenti. Un particolare
l prime
SOlllZIOtlC. I COI111112lltl pO i OI10 COSCI C lfll l 1I
rin razi mento va Bobby Blumofe. Bo ni Ei.,enberg. Raymo,ed 3nhn.,on. John Keen.

Per rie. Stese Ponzio e Mr aret Tulle la loro


Richard Lethin. Mark Lillibridge. John per
1etrvilrsctio ro Lf q rn ithnr attenta lettura.

lullT Lahor.itoiy tor Computer Sii iice Molti c alle hi hat1no anche tornito rcvisic ni critiche di capitoli specifici. o i ilnnnazioni SU

545Technolo y Situare

A arxval. Erie B ch. V t eh Chv it rl. Riclurd Cole. 3oh i H,lit d. At x lihii. D x id
Camhriec. M iiiachusctti 02 I 3
Prefazione

Johnson. Joe Kilian. Dina Kravets, Bruce Maggs, Jim Orlin, James Par , Thane Plamback,

Hershel Safer, Jetf Shallit, Cliff Stein, Gi/ Strang, Bob Tarjan e Paul Wang. Alcuni colleghi

hanno anche gentilmente suggerito alcuni problemi si ringraziano in modo particolare


Introduzione
Andrew Goldberg, Dann Sleator e Umesh Vazirani.

Il libro originale stato impaginato con L T X, un insieme di macro per TEX. Le figure

sono state realizzate su Apple iVIacintosh usando MacDraw II si ringraziano Joanna Terry

della Claris Corporation e Vlichael Mahoney della Advanced Computer Graphics per la loro

disponibilit. L indice analitico stato compilato usando Windex, un programma C scritto

dagli autori. La bibliografia stata usando BJsTpX. Il libro stato impaginato


preparata
la American Mathematical Society con un fotocompositore Autologic si ringrazia
presso
Ralph Youngen della AMS il suo aiuto. La copertina del libro stata progettata da Jeannet
per
Leendertse. L estetica dell impaginazione del libro stato curata da Rebecca Daw, e Amy
confidenza con l organizzazione che adotteremo
In questo capitolo il lettore potr prendere
Hendrickson l ha rea1izzata in LATgX.
il progetto e l analisi di algoritmi. Il capitolo indipendente.
in tutto il libro per presentare
stato un lavorare con MIT Press e McGraw-Hill per la realizzazione di questo dettagliatamente analizzato nei
piacere tuttavia include alcuni riferimenti a materiale che sar pi
libro. Si ringraziano in particolare Frank Satlow, Terry Ehling, Larry Cohen e Lome Lejeune
capitoli successivi della Parte I.
di MIT Press. e David Shapiro di McGrasv-Hill per il loro incoraggiamento, aiuto e pazienza.
sui computazionali e sugli algoritmi
Comincerenso con una discussione generale problemi
Siamo a Larry Cnhen per il suo notevole lavoro di redazione. dell ordinamento come esempio
particolarmente grati necessari alla loro risoluzione, utilizzando il problema
e Gail Rivest pseudocodice familiare ai lettori che hanno
Infine. ringraziamo le nostre mogli Nicole Cormen, Linda Lue Leiserson Si introduce anche uno . che risulter pi
guida.
e i nostri figli Ricky, IVilliam e Debby Leiserson e Alex e Christopher Rivest- il loro utile mostrare una versione degli
per studiato linguaggi di prognmmazione, per possibile
gi
amore e il loro aiuto durante la scrittura di questo libro. Rivest ci ha anche aiutato che un semplice algoritmo di ordinamento, servii
Al x per algoritmi L insertion so .
proposti.
il del compleanno del marziano . L amore. la e l incoraggiamento . Si analiZzer il tempo di esecuzione di
paradosso pazienza come esempio iniziale di utilizzo di pseudocodice
delle nostre reso Affettuosamente dedichiamo loro che metta in luce come tale tempo aumenti in
famiglie hanno possibile questo progetto. algoritmo. introducendo una notazione
questo
libro. da ordinare. Verr anche l approccio elio icle-
queslo funzione del numero degli elementi presentato
tale approccio sar usato sviluppare un
et-impera la di algoritmi per
per progettazione
termina con il confronto tra due algoritmi
algoritmo chiamato terge sort. Il capitolo questi
Can bi iclge, 51assacl nserrs THOa1AS H. CORMEl
di ordinamento.
CHARLES E. LEISERSON

Rosico L. RIVEST

1.1 Algoritmi

cotnputazionale ben definita che


Informalmente. un algoritnu una quolsi si proceduru

valori. cnme ittput e produce alcuni valori. o un insieme


alcuni valori, o un insieme di
prende
una sequenza di computazionali che
di valori. colme output. Vn a1goritmn quindi patii

trasform mo l input nell output.

come uno strumento risolvere un ben


Un algoritmo anche essere cnnsiderato per
puo
dehnizione del in termini
definito cnmpu1azioitale infatti lu problenvzspecitica
problema
ed output e1 algoritmo descrive una procedura
la relazione che deve valere tra input
generali.
raggiungere tale relazione tra input ed output.
computazionale specitica per

il di ordinare una sequenza di nun1eri


Si comillCCfJ to studio ch egli algnritmi cnn prob1ema
frequentemente nella e
in ordine non decrescente. si presento pratica
Questo problema
strumenti di analisi e tecniche standard di
fornisce un fertile terrenn introdurre nu lai
per
si detusisce nel ie uente moo
etlurione. Formalnscnte. il problema dell ordinamento
pro

Illpllf l Il l tC ftlL11lil Eli n nullwri t,. ii,.... r .

ij della segucnz i i input tali ihe


a,. a, ....
utput Una pcrnuitalioi c riurdin mento

I, 5 ll , .. il .
I ttrodu ione 3

pp la sequenz di input 31, 41, 59, 26, 41, 58 , un algoritmo di ordinamento restituisce

come output la sequenza 26, 31. 4i, 41, 58, 59 . Una sequenza di input di tipo
questo
cpiamata un istanza del problema di ordinamento. Pi in genera1e, un istanza di un problema

gonsiste di tutti i dati di ingesso che soddisfino i vincoli imposti nella definizione del
necessari a calcolare una soluzione.
problema

L ordinamento un operazione fondamentaIe in informatica in molti usato


programmi
come passo intermedio , e infatti sono stati sviluppati un man numero di algoritmi di
ordinamento. La scelta del migliore algoritmo una data applicazione dipende dal numero
per
di elementi da ordinare, da quanto gli elementi siano di per s ordinati in qualche modo
gi
e dal tipo di dispositivo di memoria da usare memoria dischi o nastri.
principale,
Un algoritmo si dice corretto se, ogni istanza di input, si ferma con l output corretto
per
si dice che un algoritmo corretto risolve il problema computazionale dato. Un algoritmo
scorretto potrebbe non fermarsi per qualche istanza di input, o potrebbe fermarsi con una
risposta di versa da quella prevista. Contrariamente a quanto ci si potrebbe aspettare, algoritmi
Figura I. l lr sertioir-Sori su wn inano di arre.
scorretti possono qualche volta essere utili se il loro tasso di errore essere controllato un
pu
esempio di applicazione di algoritmi di questo tipo si vedr nel Capitolo 33 saranno
quando
studiati algoritmi per la ricerca di grandi numeri In generale, comunque, si esamine-
primi.
ranno solo algoritmi di loro memorizzati. ad ogni istante. fuori dal l an ay. Quando
corretti. A. con al pi un numero costante
di input A contiene la sequenza ordinata di
la INSERTION-SORT termina, l array
Un algoritmo pu essere descritto in linguaggio corrente, come un un procedura
programma per
calcolatore o anche come un hardware. l uriica condizione che deve valere che la OUtpUl.
progetto
specifica fornita descriva in modo preciso la procedura computazionale che deve essere seguita.

Nel libro gli algoritmi saranno di solito descritti come scritti in unopseudocodice, IsSERTIOY,-SORT A
programmi
un linguaggio che somiglia molto al C, al Pascal o all Alaol. H lettore che zi conosce questi 1 for j 2 to lengrli A
linguaggi non dovrebbe avere difficolt nella lettura degli algoritmi infatti, ci che distingue
reale do l ey Aj
lo pseudocodice da un codice che nello descrivere un dato
pseudocodice, per A j 1 .. j I
t Si inserisce Aj nella sequenza ordinata
algoritmo, si impiegano metodi espressivi chiari e concisi.
pi
4 i j- l
Talvolta, il metodo chiaro l uso del linguaggio corrente,
pi per cui non sorprenda la
di frasi vero 5 while i 0 e A i k
presenza o periodi in linguaggio naturale, mescolati a codice. Un altra
differenza tra lo psBudocodice ed un codice reale che il primo non specificatamente 6 do Ai 1 m Ai
concepito per gestire aspetti di ingegneria del software l astrazione dei dati. la modularit e-
7 i i l
la gestione degli errori. per esempio, sono spesso ignorati, in modo da cogliere pi 1 kc
8 Ai
direttamente l essenza di un algoritmo.

oritmo A 6, l. 3. L indice j
La figura 1.2 mostra il funzionanacnto d ll 1 per 5.2.4.
Insertion sort carta .. 1
essere infierite nella mano, elevamenti A1 j-
indie i la corrente che deve gli

Iniziamo con l algoritmo chiamato i isertivii so , che risulta efficiente nel casn si debba ancora sul tavnlo.
Aj 1 .. n corrispnndono al miszzetto di Irte
insertion
ordinare un piccolo numero di elementi. l sort funziona nello stesso modo usatn da
mnlte persone per ordinare una mano di bridge o ramino si inizia con la mano sinistra vuota
e le carte coperte poste sul tavolo, quincli si prende del tavolo una cart alla volta e la si

4-7 a questo l elementn A j , infierito


s iene trovata la giusta posizione per A j lin e punto
carta la si confronta cono ni altra curta nella mano, da destra a sinistra, come si vede d ll
pi
c line i 8.
figura I. l.

Lo pseudoc dice per l a1 oritm i li insertion s rt descrittn con un, chi ll11 ll I
procc hirw

a leugfh AJ . I numeri in input soner ordinatati in loco i numeri sono riiistcnsJti denti l irr iy
Capitolo l Introduzione 5

d
S - J j 3 Una variabile che rappresenta un array o un oggetto trattata come un puntarore ai dati

contenuti nell array o nell oggetto. Per tutti i campi f di un oggeno.z, l assegnamento

is o I 3 y m ximplicachef y f x. Inoltre,sedopo sieseguel assegnamentof x m 3.allora


non soltanto f v 3 ma anche f y 3 in altre parole xe y dopo l assegnamento y -.v,

s l 3 puntano allo stesso oggetto sono lo stesso oggetto .


p
Talvolta un puntatore non si riferisce a nessun oggetto in particolare, in questo caso gli
4 5 6 I 3 assegnato il valore speciale rh..

8. Ad ogni procedura i parametri sono passati per valore la procedura chiamata riceve una
1 2 4 5 6 3
propria copia dei parametri e se si assegna un valore ad un parametro, la modifica non

sentita dalla routine chiamante. Quando si passano oggetti, viene passata una copia del
2 3 4 5 6
puntatore ai dati che rappresentano l oggetto, mentre non sono copiati i campi degli
Figura 1.2 L elabora-ione di Inserfion-So s rll array oggetti. Per esempio, se x un di una chiamata, l assegnamento
A 5, 2, 4. 6, l, 3 La posi ione di indice j parametro procedura
indicata con un circolo. x m y dentro la procedura non visibile alla procedura chiamante, mentre l assegna nen-

to f x e- 3 sar visibile.
Convenzioni sullo pseudocodice

Nello pseudocodice saranno usate le seguenti convenzioni. Esercizi

1. Le rientranze indicano la struttura dei blocchi. Per esempio. il corpo del ciclo For, che
1./-1 Usando la figura 1.2 come modello. illustrare l operazione di IYSERTIOY SORT
comincia dalla linea , comprende le linee 2-8 mentre il corpo del ciclo svhile, che comincia
dalla linea applicata al l array A g l. 41. 59. 26. 41, 58 .
5. contiene le linee 6-7 ma nnn la linea 8. Le rientranze si applicano nello stesso
modo ai costrutti if-then-else. L usn della rientranza al posto di pi conienzionali
indicatori delIa struttura di un blocco. come il costrutto 1.1-2 Riscrivere -SoRv ordinare in ordine non crescente
begin-end, riduce notevolmente la la procedura L saRviot per
lunghezza della procedura e talvolta migliorandone anzich in ordine
preservandone la chiarezza . non decrescente.
2. I costrutti iterativi while. for e repeat e quelli condizionali if, then ed else hanno la stessa
interpretazione del Pascal.
1.1-3 Considerare il seguente problema di ricerca
3. Il simbolo v indica che il resto della linea un conm,ento. Input una di n numeri a ..., a ed un valore v.
sequenza A a,.
4. Un assegnamento multiplo della forma i j- e assegna ad entrambe le variabili i e j il Output un indice i, oppure il valore speciale wc se i non presente
i tale che A i j
valore dell espressione e assegnamento dovrebbe
questo essere considerato equivalente in A. Scrivere lo pseudocodice la ricerca lineare che scandisce 1a sequenza a
per
all assegnamento j m e seguito da i m j.
partire dal primo elemento per ricercare il valore v.
5. Le variabili come i, j e l ey sono locali alla procedura data e comunque non saranno mai
usate variabili senza un esplicita indicazione.
globali
1.1-4 Considerare il problema di addizionare due interi codificati ciascuno su ii bit.
6. Si pu accedere agli elementi di un array specificando il nome dell array seguito memorizzati in due somma interi dovrebbe
array A e B di n elementi. La dei due
dall indice scritto tra Per esempio Ai indica
parentesi quadre. In i esimo elemento di ui essere memnrizzata in forma binaria in nn array C di 1 elementi. Descrivere
-.. n
array A. La notazione denota un intervallo di valori dentro un arruy, quindi A1 .. j il problema in modo formale e scrivere lo pseudocodice addizionare i due interi.
per
indica il sottoarri y di A contenente elementi Al
gli j, A 2 ...., Aj.
7. I doti composti sono organizzati in oggetti,
generalmente che sono strutturati in atEribicti
o campi. Si puo accedere a un campo specificousando il nome del campo se uito dal suo 1.2 Analisi di algoritmi
oggetto scritto tra parentesi Per esempio, un an vy trattato
quadre. come un oggetto on
l attributn le ngth che indica elementi contiene.
quanti quindi per specificare quanti AnaEi are un algoritmo ha il signific to di le risnrse che l al nritmo richiede.
elencanti ha un array prevedere
A. si scrive lengrh A . Bench si usino le sia
parentesi quadre per
l indicizzazione di un array che li attribuiti di ut
per oggetto. l interpretazione ria
utilizzare sar chiara in base al coiitcsto.

mentre algoritmi inferiori inno di solito scartati nel corso clcll analiii.
parecchi

J I11C.
p

Wg wwa
6 fntroduziene 7
Capitolo l

Prima di analizzare tempo c, dove c costante. Questa ipotesi


poter un algoritmo. si deve stabilire un nodello della tecnologia di esecuzione della i-esima riga impieghi un
realizzazione che verr usata, incluso.un le realizzazioni effettive dello pseudocodice nella
modello delle risorse tale tecnologia e dei loro compatibile con il modello RAM e con
per
costi. Nella maggior del libro, come tecnologia di realizzazione si considerer un dei calcolatori moderni- .
parte maggior parte
generico mono-processore basato sul modello compu azionale indicato con random-access del tempo di esecuzione la procedura
Nella discussione che segue, l espressione per
machine RAM . Gli algoritmi saranno effetrivamente realizzati come che usa atti i costi c., ad una
programmi per tale Ir smviox-So evolver da una formula piuttosto confusa
calcolatore. Nel modello RAM le istruzioni sono eseguite una Inoltre notazione
dopo l altra senza operazioni notazione semplice. concisa e pi facilmente manipolabile. questa pi
pi pi
concorrenti. Negli ultimi capitoli, tuttavia, si avr occasione algoritmo pi efficiente di un altro.
di studiare modelli per calcola- semplice di determinare facilmente se un
permetter pi
tori e circuiti digitali. .
paralleli con il tempo speso* da
Inizieremo l analisi la procedura L s Rttor,,-So
presentando 23....,ndove
L analisi di un algoritmo risulture complessa anche se l algoritmo semplice, . Per ciascun
pu gli ciascuna
i linea ed il numero di vo1te che ogni linea eseguita. j
strumenti matematici che occorrono includere elementi di combinatoria
possono discreta,
teoria de1 calcolo della e richiedere e perci non richiedano tempo di
probabilit competenze di algebra e capacit di valore di j. Si assume che i commenti non siano eseguiti
identificare i termini significaiivi di una formula. Dato che
pi il comportamento di un esecuzione.
algoritmo pu essere diverso ogni input, necessario
per p sibile un modo per generalizzare
questo comportamento in formule semplici e facilmente comprensibili.
costo n di volte
IRSERTIOY-SORT A
Infine, pur avendo selezionatn un solo modello di calcolo per analizzare un dato algoritmo.
sar necessario
1 for j c 2 to lengrh A J C 11
far comunque fronte a molte scelte nel decidere come esprimere l analisi
do k Aj CI n 1
l obiettivo pi immediato quello di trovare un metodo espressivo che sia semplice da
3 c Si inserisce Aj nella
scrivere e manipolare, capace di evidei ii re caratteristiche importanti sulle risorse richieste
c sequenza ordinata A1 . j ll 0 n I
dall algoritmo e di tralasciare i dettagli irrilevanti
i l Cp n 1
j
i O e A ij l ey Cg
5 while ,t,
L analisi di insertion sort m A i j Cg
6 do Ai 1 g , r,

i I Cp 1
7 i ,t
Il tempo impiegato dalla I ey 8 n-1
procedura b sr .tn.io -SoRz dipende dall input l ordinamento di un 8 A i 1
migliaio di numeri richiede tempo dell ordinamento
pi di tre numeri. Inoltre la procedura
INSERTION-SORT impiegare linea
puo quantit diverse di tempo per ordinare sequenze della steisa la somma dei ten pi di esecuzione di ciascuna
Il tempo di esecuziane dell aigoritmo
dimensione, a seconda di quanto si ino olte contribuirh
queste gi parzialmente ordinate. In generale, il tempo impiega c essere eseguita ed elaboratan
eseguita un istruzione che passi per
richiesto da un algoritmo cresce cnn l dimensione dell input, di INSERTlON-
per cui tradizione descrivere Per calcolare Tn, il tempn di esecuzione
con c n al totale del tempo di esecuzione .
il tempo di esecuzione di un come una funzione
programma della dimensione del suo input. delle colonne dei costi e delle i olte, ottenendo
SORT, si sommano i prodotti
Per far ci necessarfo descrivere in modo tempo
pi formale i termini di esecuzione e
dimensione Il n
del l input .
1 cq n 1 cq t, cg t, l
Tn c n ei n
g
La nozione migliore di dii tensir ne elell inpug dipende dal che
problema si deve studiare. per j- J
molti problemi, come esempio l ordinamento
per o il calcolo delle trasformate discrete di n
Fourier, la nsisura naturale il nn nero degli elen eiiti 1 .
pi dell inpur per esempin. In cq 1 cg n
gt
dimensione ii dell urruy l ordin imenio
per per molti altri prnblemi, coine per esempio la J
7

di un al oritmo
di una stessa dimensione. il tempo di esecuzione pu
Anche input
per
,, N- RT. ll C l iO mieliore
. ..
Ip I
inoltre. piii upprnpriato descrivere la dimensione dell input .
con due numeri piuttosto che con c e Ai Leynellalinea5.
ciascun 2. 3.....
2......,. n, si trova
l array
a i ordinatn per j
uno solo per esempio, ie l input di un,l , ori dimoi un grafo, la dimensione
quando
quan
dell input puo e.,sere
i ha il suo valore iniziale di j I.
descr tt dal llunlelo lei Iloti e de, li ar lli rlel grato. In gellerale,
qu usdo
preieflti comunc/ue. per oglli
problCtllU tudiuto sar sempre indicata la misura scelta le dimensione ell input.
per
i ccitic,tiinlin.ua... iocorret,tr..

i. ricl iedc i ch . un temnn i eicuri ii i

i L .. i ll
ii lI C li illl i I h lli i i
Cil l ililc Illi ltrc. 1liili ili

, , i r .iecr -ie neiklivttonio rai1 m i.


. ..
i io opr ai
n l Ui1 1111li1 lt1Cllc I rrilLI1I11CI l i
.,l . . lll I11ei11 i1
uve C u .
l1liill111 l lilll l1 ll ill lli nu. m ria.
. . l1ii c,iarl,il1Tinlc c Ill li t lll
Ili lrhl
IC I ii l t
i11i111orl,.l ill i. cic,.llilo II n ltc1h,ll
,.i,l,l,
ll Jf,
Itttrodu ione 9
8 Capirolo I

abbastanza di frequente. Per esempio,


r. 1 pper ....,
2. Per alcuni algoritmi. il caso peggiore si verifica
Quindi j 3, ...,i, n, con un tempo di esecuzion nel caso inigliore a
pari dati, il caso
informazione in una base di peggiore
nella ricerca di una particolare
Tn ci n chi n 1 cq n c n le volte che non presente
1 cg n 1 de1I algoritmo di ricerca si verificher tutte quell informazione
relative alla ricerca di informazioni. la ricerca
C CI Cg Cg Cg fl Cp Cg Cg nella base di dati ed in alcune applicazioni
C

dati assenti essere frequente.


Quest ultimo tempo di esecuzione essere espresso com b 1 h ecosan en per pu
pu
caso cattivo il caso peggiore. Si supponga
e ipen ente dai costi c, T ir una lineare Il medio , in genere, circa altrettanto quanto
quindi fuieioue di n.
l insertion sort tempo si
di aver scelto n numeri a caso a cui applicare quanto
Sel array ordinato inn ordine
or i inverso cio in ordine infatti
y decrescente allora rasi si haai il caso met
A nel sottoarray A 1 .. j 1 Mediamente
impiega determinare dove inserire j
peggiore. Infatti bisogna confrontare ani elemento A I emento nell intero per
di A j e quelli dell altra met sono pi grandi.
elementi di A 1. j 1 sono pi piccoli
sottoarray A1 . j 1, cosi che t. j per j 2, 3, ..., n. Notando che
met di A l .. j 1 e quindi r j/2. Calcolando
n In media, si deve verificare solo una
perci.
si ottiene una funzione della
tempo di esecuzione nel caso medio, quadratica
il risultante
il tempo di esecuzione nel caso peggiore.
dimensione dell input, come per
proprio
tempo di esecuzione atteso. sar
e di esecuzione nel caso medio. detto anche
Il tempo
il problema di riconoscere ci che un
n in alcuni casi rimane tuttavia
esaminato particolari
medio si assumer che tutti input della stessa
un certo Spesso gli
i- input per problema.
ipotesi essere violata.
siano equamente nella pratica questa pu
dimensione probabili
rendere vera. forzatamente. tale ipotesi.
tuttavia algoririni randonti-.-erti possono talvolta
queste sommatorie saranno riesaminate nel Cap tol 3 h . gli
p eggiore il
tempo di esecuzione di IxsERTION-SORT C

Ordine di grandezza
l ii cn c n-l c n j

Sl SOllO flUL cllcune eictra iemi che


Per facilitare l analisi della l4SERTIO4-SORT
1 S procedura
3 /n n costo di ciascun comando.
si ignorato l effettivo

- -- , ,
hanno semplificato lo studio. Innanzitutto
costi inoltre. si osservato che anche queste
Cg C6 C7S usando le costanti c per rappresentare questi
2 Cg C6 C7
I, si necessiti il tempo di esecuzione nel caso peggiore
- A cn costanti forni scana dettagli di quanto
2 2 pi
c dei comandi. Quindi non solo
c per costanti a. b e c che dipendono dai costi
Cv Cg Cg Cg . nn hn
ma anche i loro costi astratti c,.
si sono ignorati i costi reali dei comandi,

Questo tem o di esec uzione del caso essere espresso come considerando il tasso di crescita o ordire
peggiore pu an- bn c er fare un ulteriore operazione di a trazione
Si puo
costanti a, b e c che dipendono ancora . di interesse nell usalisi
daia costi t,
cos d dd, sulta una che il valore maggior
quindi fun ione di grande-a del tempo di esecuzione. poi
quadratica di n. solo il ternsine di una formula per
degli algoritmi. A tale scopo, si considera principa1e
Genenlmente, come - inferiore sono relativamente non signiticativi per
nel caso dell in sertion sort, il tempo di esecuzione di un atgoritmo esempio an- . dato che i termini di ordine
,
fisso
f. un dato input, il coeft sciente costante del termine principale.
per nonostante cib ne 1i i ultimi
neg u capitoli . vedranno
si alcuni interessanti
. n valori di n mo to grandi si puo ignorare anche
randomizzati nella deterininazinne
algoritmi
lp il cui com or variare sono meno significativi del tasso di crescita
portamento pu anche su un input tissatn. dato che i fattciri costanti
si scrive cle l insertion sort, per
dell efficienzz computazionale per input gr indi. Quindi.
tlteta
di O ir di n al
tetapo eli esecuzione nel caso pronunciatn
Analisi del caso e del esempio. h t un peggiore
peggiore caso medio mentre sar
usata in questo cupitolo in modo informale.
. La notazione 8 sarh
quadrato
.
, definita in modo nel Capitolo
Nell analisi dell aleoritmo di i . ertion
ins ort, sono preciso
stati presi . in considerazione
. i ne sia i caso
il
di esecuzione nel
, e tTiciCllie di un altro se il sun tempo
migliore, in cui l array i
di in p ut gi ordinato, che Infine. un nl oritmo si considera piii
il caso.- peggiore, quello ii cui
in arra
l arra di i
valutazione essere errat.. per
input ordinato ha un ordine di,.randezza inferiore. Questa puo
in modo inverso. caso pe,. ziore
rendi algoritmo 8 u- . esempio. sar
ma input sufficientemente un per
Nel seguito del libro sar input piccoli. per
di solito reso o iin cconsiderazioiie
pre. . .soltanto il tempo di eseru
. -i wc
i ione
velocemente di un algoritmn 8n .
- eseguito nel caso pei iore piii
ne
re caso e
peggiore.ore. cio
ciac il tempo di esecuzione
. pi lungog per qu
qua I.si si . input
i d ei sione
din
n questa scelta motivata dalle seguenti tre ragioni.

Il tempo rii esecuzione nel caso iore - F.sercizi


ppe giore di i un algoritmo rappresenta. una lii situzioiw in
hllpl1OI LLli teinpi di CSCCUllllC Cl U, - -
. . IiCC
C le
. . . ... ..... ...* * anay A. nel modo
l.aleoritninnon im pi ie h ll
hertz ntai tempi maggiori inoltre non c I a nCceisil..i ,,- irclinarc u numeri. meinorizz iti in un
i di1, tucliare l.2-1 Si innsidcri il pn blcmadi
t escun a e ii milti il alimento
tra ipotesi sc l tatto cl1e il tempo di esecuzion .. sa iorare. si trova i il piii letlicnla i l prihn
p pe segu ntc prim piccoli
1ntrodu ione 11

lO Capitolo l

livello di ricorsione. si struttura in tre passi


Il paradigma divide-et-impera. a ciascun
di un altro array B poi si trova il secondo pi piccolo elemento di A e si mette nel
suddiviso in un certo numero di sottoproblemi.
secondo elemento di B e si continua cosi tutti n elementi di A. Scrivere lo Divide il problema
per gli
Tuttavia, se la dimensione dei sotto-
pseudocodice di questo algoritmo conosciuto come sefection sort. Fornire i tempi Impera i sottoproblemi sono risolti ricorsivamente.

di esecuzione nel caso mi liore e nel caso usando la notazione 8. a sufticienza, essi sono risolti direttamente.
peggiore problemi piccola
ottenere la soluzione del
le soluzioni dei sottoprobIemi sono combinati per
Combina

1.2-2 Si consideri ancora la ricerca lineare si veda l Esercizio 1.1-3 , Quanti elementi problema originale.

della sequenza di input necessario verificare in media. ipotizzando che l elemento

da cercare essere uguale, con la stessa ad uno degli tn il paradigma divide-et-impera intuitivamente
possa probabilit, qualunque L algrit mo m erge sort segue in modo stret
elementi ne ll array Quanti nel caso peggiore Quali sono i tempi di esecuzione nel
esso funziona nel modo seguente
caso medio e nel caso peggiore in notazione O Giustificare la risposta. sottosequenze di nl2 elementi
i elementi della sequenza da ordinare in due
Divide divide gli
ciascuna.
1.2-3 Si consideri il problema di valutare un polinomio in un punto. Dati r coefficienti il merge sort, le due sottosequenze.
Impera ordina. usando ricorsivamente
a, a,, ..., a, ed un numero rea er, si vuo1e calcolare g, z a,x . Descrivere, per la sequenza ordinata.
come risposta
Combina fonde le due sottosequenze per produrre
questo problema. un semplice algoritmo che abbia un tempo 8 n- . Descrivere poi
un algoritmo con un tempo 8n che usi il seguente metodo chiamato regola di
risale la sequenza da ordinme ha una
Hoivier riscrivere il polinomio Si noti che il processo delle chiamate ricorsive qaando
per
da fare in ogni sequenza di
uguale ad l in caso non ch altro quanto
n-I lunghezza questo
. a, x ago. 1 di per s ordinata.
gax ... a ,x a , x lunghezza
0 di merge sort la fissione delle due sottosequenze
L nperazione chiave dell algoritmo
fusione si usa una ausili ia
combina Per eseguire una tale procedura
ordinate nel passo
indici di elementi dell array tali che
1.2-4 Esprimere la funzione i/1000 l00n-- 1000n 3 iii termini di notazione 8. -. dnve A un array, p. q ed r sono
MrvcE A. -,.
e Aq 1 . rj Ordinati, eenera un singolo
r assumendo Ap .. q
p q queste procedura.
il corrente sottomray Ap .. rj.
sottoarray che sostituisce
1.2- Come pu essere modificato, quasi sempre, un algoritmo per avere un buon tempo
sia lasciato come esercizio si veda l Esercizio
di esecuzione nel caso migliore Bench il corrispondereste pseudocodice
Merce che impieghi un tempo On,
l.-2 , si pu facilmente immaginare una procedura
maui si esegue la fusione. Infatti. tornando
r- l il numero degli elementi su
dove ii p
di avne sul tavolo due mazzetti di carte
all esempio del di carte, si puo supporre
1.3 Progetto di algoritmi giocatore
e si desidera fondere
mazzetto ordinato ed ha in cima la carta pi piccla
scoperte. Ciascun
ba e consiste nello scegliere la piii
in un unico guazzetto di output. Il passo
i due mazzetti
Ci sono molte tecniche al oritmi esempio l algoritmo di insertion sort usa mazzetti, rimuoverla dal suo mazzeno
per progettare per tra le due carte che si trovano in cima ai due
piccola
un approccio incrementale dopo avere ordinato il sottoarray A 1. 1. si inserisce il coperta in cima al mazzetto di output.
j cosi capotta una nuova carta e deporla
lasciando
singolo elemento Aj nel il sottoarray A1 .. j ordinato. vuoto, a quel si prendona le carte
proprio posto, producendo si ripete finch un mazzetto di input punto
Questo passo
in cima al mazzetto di output.
In qquesto. n n si s esaminerh un approccio di alternativo, conosciuto dell altro mazzetto e si nno. coperte.
paraorafn progettazinite rimanenti pon
divide-et-im -impera era
, , co tante, in quantn si stannn
come c
che s
sar impie natoz. per progettare un algoritmo di ordinamento il
Computazionalmente. ciascun passo base impie a un tempo
fiore cui. al pii . i eseguiranno n passi
cui tempo di esecuzione nel caso peg risulta assai inferiore a quello dell insertinn sort. considerando solo le due carte in cima ai due m i retti. per

base e quindi la fusione impiega un tempo 8n.


i
dell l oritmo merge
spesso facilmente determinati usand i delle tecniche che saranno esaminate nel Capitnio 4. adesso la procedura Mesca come un sottoprogramma
Si pu usare
del sottoarray Ap .. r, se p r
MFarr -Sow A. r ordina li elementi
sort. La procedura p.
pi ordinat6 altrimenti, il passo di
1
ha al un elemento ed pcrcin
ullora il cotto rray piii
1.3.1 L approccio divide-et-impera Ap .. e
i
divisinnecalcolasensplicementcunindiceqchep utizionaAf p .. r indue ottoarray

c Aq 1 .. rj contenente Lnl elementi,


h conl ncnte I n/ elementi
uriti - ,- -
Moltiutili tl . . . i eden i i

u li snn rleltnitc tcl pituh


v ii t l s . ueilc mitario ti

A
fntrodu-ione 13
Capitolo l

sequenza ordinata di un algoritmo divide-et-impera basata sui tre


Una ricorrenza per il tempo di esecuzione
Tn il tempo di esecuzione di un problema di
del di base. Come prima. sia
1 2 2 3 4 5 6 6 passi paradigma
sutficientemente esempio n c
dimensione n se la dimensione del problema piccola. per
banalmente impiega un tempo costante. che si
costante c, allora la risoluzione
per qualche
fusione ciascuno dei
di suddividere il problema in a sottoproblemi.
scrive come 01. Si supponga
se si impiega un tempo Dn per
ha una dimensione l/b rispetto al problema principale
I quali
2 4 5 l 2 s s tempo Cn combinare le soluzioni dei
dividere il problema nei sottoproblemi ed un per
originale, si ottiene la seguente ricorrenza
//g sottoproblemi nella soluzione del problema

fusione fusione CI S
AB 1

T n/b Dn Cn altrimenti.
$a
2 5 4 6 l 3 2 6
risolvere ricorrenze ordinarie di questa forma.
Nel Capitolo 4 si vedr come

. fusione . . fusione --. fusioni ,- fusione


Analisi de1 merge sort
g I
4 2 6

funzioni correttamente anche quando il numero


sequenza iniziale Bench lo di MERATE-Soet
pseudocodice
ricorrenza semplificata se si ipotizza che il
degli elementi non pari, l analisi basata sulla

dimensione che una di due. In tal caso, ciascun passo


originale abbia una potenza
problema
esattamente n/2 nel Capitolo 4 si vedr che
di divisione produce due sottosequenze grandi
l ordine di grandezza della soluzione della ricorrenza.
questa ipotesi non influenza

di esecuzione nel caso merge sort


Per determinare Ia ricorrenza Tn del tempo peggioredel
modo. Il merge sort applicato od un singolo
fl SU f7 numeri, si ragionare nel seguente
MERGE-SORT A. p. pu
si hanno n l elementi, si Suddivide il tempo
elemento impiega un tempo costante quando
1 ifp r
di esecuzione come mostrato di seguito.
tllCll Cj C p I 12
di mezzo dell array impiegando. quindi, un
Divide il passo di divisione calcola l indice
A4c c --So A, p. q i
tempo costante, da cui D ri 81.
I
MEfViE-SORT A. q 1, r
sottoproblemi. ciascuno di dimensione i l2, che
Impera si risolvono ricorsivamente due
5 MzRc A, q, r 2T i l2 al tempo i esecuzinne.
gr. contribuiscono per
che la procedura Mcear. su sottoarray di n elementi
Combina si gi esaminato il fatto
Per ordinare l intcra ScgUCllZa A A1, A 2 ... An , si chiama la procedura MERct-
impiega un tempo On, per cui C ii 8n.
SoRt A, I, len.,oth A . dove ancra una volta lengtl A n. Se si guarda al funzionamento
e Dn l nnalisi del merge sort, si stanno
si addizionaiio le funzioni Cn per
bnttom up della n i. una di due, l algoritmo esegue la fulminee di Quando
procedura quando potenza somma una
che 8n ed una funzione che 01. Questa
sequenze addizionando utta funzione
coppie di sequenze di un elemento per formare ordinate di lunghezza due. poi. -imper i .
al tertnine del si ottiene la
funzione lineare di i , cio 8n addizionundola passo

di esecuzione ne caso del merge sort


ricorrenza T ii per il tenlpo pe giore

i quenza ordin ito di lunghezza i . Questo mostruto nella tigura 1.3.


processo se n I .
JO 1
8n Se n l .
$2T n/2

1.3.Z Analisi di algoritmi divide-et-impera i I


n, clnx c lan ta log,ii. Per input suft cientettiente
Nel C ipitolo 4 si vedr che Tn 8n per

un suo tempo sort il cui tempo i eiecuzion i.. 8 l,- .


Quando al oritn1 contiel1P Ull 1 Clll llllQt l l1COI Nt V l Z 42 tCSSo. il di CS CUi 10114 risult, n,ieliorc di insertion

Esercizi

la ricorrell/ i e co tornire lilllit tlio li alle di U1 algorilillo.


pr il llioni
Ic opct tzioni del n erge sori.iul1 arr,t
I ti ur l l .. i c inlc mo lclh . esepiiri.
E.3-I Usuncl i
y E
l gg C/ QE
/ Q f
3.
ione 15
Inlrodu

ordinare un array di un milione di numeri, che il


Si supponga che i due algoritmi debbano
al seconda mentre il personal computer sia
supercalcolatore esegua 100 milioni di istruzioni

in grado di eseguire soltanto un milione di istruzioni al secondo.

ancora vistosa si supponga anche che il pi furbo programma-


Per rendere la differenza pi
l insertion sort nel linguaggio macchina del supercalcolatore
tore del mondo abbia codificato
del supercalcolatore ordinare n numeri
ed il codice risuItante richieda 2n- istruzioni per
stato il personal computer da
viceversa. si supponga che il merge sort sia programmato per

usando un linguaggio ad alto livello che dispone di un compilatore


un programmatore medio
che richiede 50n 1g istruzioni del personal computer.
non efficiente, ottenendo un codice

Per ordinare un milione di numeri il supercalcolatore impiega

2 10 - istruzioni
0000 secondi 5.56 ore,

10 istruzioni/secondo

mentre il personal computer impiega

50 10 1g 10 istruzioni
1000 secondi 16.67 minuti.

10 istruzioni/secondo

computer 3 volte pi velocemente


anche con un compilatore scadente, il personal gira

rispetto al supercalcolatore

algoritmi. come l hardivare, iono tecnologia e la prestazio-


Questo esempio mostra che gli

stati f tti rapidi in altre tecnol gie dei


di un hardware veloce. Cosi come sono propensi

ve ne sono stati nel campo della tecnologia degli algoritmi.


calcolatori, cosi

Esercizi

su una stessa macchina inscrtioh sort e merge sort.


1.4-1 Si supponga di voler confrontare
sort viene eseguito in 8n- n entre il
Per input di dimensione n, l in ertion passi.
Per valori di n l insertion snrt i. pi
merge sort viene eseguito in 64n 1gn pa si. quali
si potrebbe riscrivere lo pseudocodice del mer ze
conveniente del merge sort Cnme

sort renderlo efticiente anche iu input piccoli


per piir

che. iu una stessa macchina. un algoritmo il


1.4-2 Qual il piit valore di n tale
piccolo
di 100i - vin a ecc. uito velocemente di un algoritt1so
cui tempn di esecuzione piii

il cui tempo di esecuzione di

...v ....r di
/.4-3
elelln stesso numero. lWnstr re che questo
n numeri contetsg occorrenze ip tute

esiere f. ttn in tempo Oin Ipt .


puo
Introdu.ione 17
Capirolo l

dell insertion sort ed il numero di inversioni


c. la relazione tra il tempo di esecuzione
Qual
Problemi dell array di input Giustificare la risposta.

il numno di inversioni di una qualunque permuta-


d. Scrivere un algoritmo che determini
Confronto tempi di eseeu ione Ivtoditicare il
fra in tempo 8n Ignei nel caso peggiore. Suggerimento
zione di i elementi

per ogni funzione f n e tempo r della tabella seguente, determinare il pi grande input n di merge sort .
un problema che pu essere risolto in un tempo t, assumendo che I algoritmo per risolvere tale

impieghi f st microsecondi.
problema

Note al capitolo
j
l argomento degli algoritmi. inclusi
secondo minuto mese anno I secolo Vi sono molti buoni libri che affrontano in generale
giorno
Brassard e Bratley 33 Horowitz e Sahni
di Aho, Hopcroft e Ullman 4, 5 B aa 14
quelli
145, 146 Purdom e Brown
Knuth 121, 122, 123 Manber 142 Mehlborn 144,
105
Wil In Bentley 24, 25 e
Reingold, Nieverge1te Deo 167 Sedgewick 175 201 .
164
nella degli algoritmi.
Gonnet sono discussi alcuni degli aspetti pi pratici progettazione
90 The
volumi con il titolo di Art of
1968 Knuth il primo di tre generale
Nel pubblic
che avvi lo studio moderno degli algoritmi
Computer Programming 121, 122, 12 .
di esecuzione tutta la serie. comunque.
richiamando 1 attenzione sull analisi del tmpo
degli argomenti di questo libro. Secondo
un utile ed importante riferimento per molti
rimane
.algoritmo -al-Khowarizmi . matematico de
dal no,ne un persiunn
Knuth. la parola deriva

IX secolo.
asintotica degli algoritmi sia uno
e Ullman mostrarono come l analisi
Aho. Hopcroft 4
diffusero anche l uso delle relazioni di
tra relative. Essi
strumento di confronto prestazioni
1nsertion sort nel merge sort sa array piccoli degli algoritmi ricorsivi.
ricorrenza descrivere il tempo di esecuzione
per
Bench merge sort venga eseguito nel caso in tempo 8n lpi ed insertion sort di molti algoritmi di ordinamento il suo
peggiore fornisce un trattato enciclopedico
Knuth 123
esatta del conteggin dei passi. come
di tali algoritmi 381 include l analisi
confronto pagina
lo rendono pi veloce per valori piccoli di n. Quindi ha senso usare insertion sort dentro il mer e sort. La discussione di Knuth sull algoritmo
che stata fatta nel libro per l insertion
quella
sort i sottoproblemi diventano sufficientemente Si consideri una modifica del la pi importante di queste lo
quando piccoli. sort comprende diverse varianti dell algoritmo.
di insertion
merge snrt in cui n/k sotteliste di lunghezza l sono ordinate usa d l . . c usa insertion sort su sottosequenze periodiche
Shell sort, da D. L. Shell, che
presentato
combinate usando il meccanismo standard di fusione, con /- che deve essere determinato. veloce.
dell input ottenendo un algoritmo di ordinamento pi
a. che le n/k sottoliste, ciascuna di lunghezza i- nel inventato nel 1938.
iVIostrare gg iore possono essere
Il merge sort descritto anche da Knutl., che cita un selezionatore meccanico,

ordinute dall insertion sort con un tempo O nk . in un solo Sembra he anche


di eseguire la fusione di due di schede perforate paleso.
capace pacchi
I abbia scritto nel 1945 un programma di merge
b. gVJostrare che le sottoliste possono essere fuse in tempo 8n 1g nl4 , sempre considerando Neumann, uno dei pionieri dell informatic i,
J. von
i
il caso peggiore. sort il calcolatore EDV AC.
per
c. Dato he l alo oritmo modificato viene eseguito, nel caso in un tempo 8 n/- nlg
peggiore.
I

l al oritmo modificato ha lo stesso tempo di esecuzione as st t d l n erge sort staisdard

d. Come. nellh pratica, dovrebbe essere scelto il valore di /

1-3 Inversioni

Sia A1 . n un array di n numeri dis inti. Se i j e Ai Aj. allora la cop i i. j


chiamata inversione di A.

a. Elena re le cir que inversinni dell urruy 2. 3. 8, 6, l.

b. urr..ty con elementi d.tll iniiems l, ..., i a piir inver.,ioni. s,n,o


Qu..ilc presi Qu nte
le ii versioni di questo array
Eondamenti di matematica Introduzione

L analisi degli algoritmi spesso richiede l impiego di numerosi strumenti matematici alcuni

di essi sono semplici come l algebra delle scuole superiori. ma altri, come quelli per la

soluzione di ricorrenze. risultare al lettore delle vere novit. Questa parte del libro
potrebbero
vuoi essere un compendio dei metodi e degli strumenti che si useranno per analizzare
proprio
algoritmi essa organizzata in primo luogo come un testo di riferimento e talvolta come

introduzione ad alcuni argomenti particolarmente rilevanti.

Si suggerisce al lettore di non a leggere tutti fondamenti matematici in una


provare questi
sola volta. Conviene, sfogliare i capitoli di questa parte per vedere gli
piuttosto, prima
argomenti contenuti e poi direttamente ai capitoli che riguardano gli algoritmi.
procedere
Questa parte pu sempre essere utilizzata come riferimento per una migliore comprensione

degli strumenti usati nel libro per l analisi degli algoritmi.

Il Capitolo 2 presenta le definizioni di diverse notazioni asintotiche, un esempio delle quali


la notazione 8 che si gi incontrata nel Capitolo l. Il resto del capitolo essenzialmente

basato sulla presentazione di nozioni mate matite e mira a far si che risulti chiara la notazione

che sar usata nel resto del libro.

Il Capitolo 3 riguarda i metodi la valutazione e la liinitazione delle sommatorie, che si


per
presentano spesso nell analisi degli algoritmi. Anche se molte delle formule di questo
capitolo si possono trovare in un qualsiasi libro di matematica, sarh utile averle raccolte tutte

insieme per riferimenti successivi.

I metodi la ri oluzione delle ricorrenze, che ono state usate nel Capitolo l per
per
.metodo
analizzare il merge sort, sono raccolti nel Capitolo 4., una tecnica potente il
.
che si usa risolvere le ricorrenze che si trovano analizz.,mdo gli algoritn1i del
generale per
divide-et-impera
tipo La maggior del capitolo dedicata alIa climnstrazione di
parte
correttezza di questo metodo. che essere saltata senza alcun danno per la compren-
peri pu
sione successiva degli argnnsenti propositi.

i iltato alai lettnie che abbia i seguito litri c rei su ucsti ar omenti.

La nsa ior Jci li li iritnqi gli libro non richiecle il calcol delle
proh hilit. parte qcilo
la loro analisi, ad una prima lettura, gli ultimi paragrafi del capitolo
probabilit per quindi,

possono essere saltati anche senz ifagliarli. Tuttavia, se si vuole comprendere meglio
Ordine di grandezza delle funzioni
l analisi che si incontrer in seguito, il Capitolo 6 organizzato in modo da
probabilistica
essere un comodo riferimento.

di un algoritmo, definito nel Capitolo 1.


L ordine di del tempo di esecuzione
grandezza
di un algoritmo e consente anche di
fornisce una semplice caratterizzazione dell efticienza
la dimensione n dell input diventa
confrontare le prestazioni di algoritmi alternativi. Quando
il suo tempo di esecuzione 8n 1gn nel caso
sufficientemente il merge sort, con
grande.
il cui tempo di esecuzione nel caso peggiore
risulta migliore dell insertion sort,
peggiore,
il tempo esatto di esecuzione di un algoritmo.
8 n- . Sebbene si possa talvolta determinare
non di solito cos
come si fatto l insertion sort nel Capitolo l, l estrema precisione
per
input sufficientemente le
importante da compensare lo sforzo del calcolo infatti per grandi,
dell esatto tempo di esecuzione sano
costanti moltiplicative e i termini di ordine pi basso

rispetto agli effetti della dimensione stessa dell input.


trascurabili
da rendere rilevante solo l ordine di
si considerano input sufficientemente grandi
Quando
si sta studiando Inefficienza asintotica degli algoritmi.
de1 tempo di esecuzione,
grandezza
il tempo di esecuzione di un algoritmo al crescere
In tal caso ci che interessa come cresce
Di solito, un algoritmo che sia asintoticamente pi
all infinito della dimensione dell input.
tutti input tranne veramente piccoli.
efficiente costituisce la scelta mig1iore per gli quelli

standard semplificare l analisi degli algoritmi.


capitolo fornisee alcuni metodi per
Questo notazione
di alcuni tipi di asintotica . di
Il prossimo comincia con la detmizione
paragrafo
O saranno alcune convenzioni
cui si gi visto un esempio nella notazione quindi presentate
fornita una sul comportamento delle
notazionali usate nel libro e infine sarh panoramica

che di solito si presentano nell analisi degli algoritmi.


funzioni
I

2.1 Notazione asintotica

di esecuzione di un algoritmo sono


Le notazioni usate descrivere il tempo asintnticn
per
dei numeri naturali N 0, I. 2.... .
in termini di funzioni il ciii dnminio l insieme
detmite
T si del ten po di esecuzione nel
comnde descrivere la funzione
Queste notazioni sono per
intere dell input. Talvolt l t . CDlllllllCjLIC
caio definita di abolito solo u diniensioni
pe iore.

ristretta n un ottoin ieine


al domini i dei numeri re ili o. lteris itivantente,
t ciltmente estesa
della nutazione it1
import uste comprendere il signiftcato preciso
dei nunteri naturali. per

I11wl1IV tlcilili cc lllulli Ucl illlpfilpl I.


llllice 1I l1OLQ/lotle Jillllutli ,I eli b lie c illltoclllcc
dCl
22 Capitolo 2

3n O ir . Per farquesto si devono determinare


definizione formale mostrare che ir-
Notazione O per

le costanti c,, c ed n, tali che


positive
Nel Ca p itolo 1 ssi determinato
d che il tempo di esecuzione nel caso dell algoritmo
peggiore l
-n
insertion sort Tn 8 n- . Questa notazione ha il seguente significato.
c n- -2 3n -2 c n

Data una funzione gn, si denota con Ogn l insieme di finn -ioni ogni n n . Dividendo n- si ha
per per

Ogn f n esistono tre costanti c,, c, e n, tali che 1 3


positive
CI
0 c, fn c, g n n 2 Pt
gn perognin .
valore di n 1,
Una funzione appartiene all insieme della destra essere resa valida per qualunque
f n 8gn se esistono le costanti ositive c, e c, tali La disuguaglianza parte puo
della destra essere resa valida
c 1/2. Analogamente, la disuguaglianza parte pu
scegliendo
scegliendo c, 1/14, c, 1/2 ed
valore di n 7, scegliendo c, 1/14. Quindi,
per qualunque
fn esistono altre scelte per le costanti,
oppure si scrive c 8gn . uso improprio del segno di uguaglianza n, 7, si puo verificare che- n-- 3n 8 n- . Certamente
Questo per
che costanti dipendono dalla
denotare l appartenenza insiemistica, pu sembrare, almeno alI inizio, confusionario, ma si che scelta esista. Si noti queste
ma la cosa importante qualche
vedr che ha i suoi vantaggi. a 8 n- di solito richieder costanti
funzione - n--3n una diversa funzione appartenente

La figura 2.1 a fornisce una rappresentazione intuitiva delle funzioni n e gn. dove n diverse.
f f
,,
O g n .Perognivaloredinall d
adestradillp ilvaloredif n coincideositrovasoprac c g nn che 6n e O n- . Si supponga per
la definizione formale anche per verificare
,, Si pu usare
e c ih e sitro sono c g n llp Allora n c,16, che non
.. , n altre parole,per ogni la funzione fn uu,auale a
che esistano c, ed n, tali che 6n c,ri- per ogni ii n. pu
assurdo
gn a meno di un fattore co
costante. . Si dice che gn un lignite asintotico stretto nn. dato che c, costante.
per f valere in alcun modo per n comunque grancle,
La definizione di O g n richiede che ogni membro n di 8 g n sia asintoticamente basso di una funzione asintoticamente positiva
f Intuitivamente, i termini di ordine pi
non negativo, cio che sia non negativa tutte le volte che n sufficientemente rande. asintotico stretto essi sono
f, n ignorati nella determinazione del limite perch
essere
possono a
l3,. consegue . 1st s f zione deve essere asintoticamente non ne atii a. alt del termine di ordine alto sutficiente
gn n grande. Una frazione piccola pi
trascurabili per
-
gn vuoto. Si assumer percio che ogni funzione usata dentro la notazione 8 bassa.
dominare i termini di ordine pi
sia asintoticamente non negativa ipotesi vale anche le altre notazioni asintotiche del coefficiente del
questa per un valore leggermente pi piccolo
Quindi l assegnamento a c, di
definite in questo capitolo. Si die a sititotieamentepositiva una funzione che siastrettamente consente che le
alto e a c di un valore leggermente pi grande,
termine di ordine pi
positiva per tutti gli n sufficientemente grandi. soddisfatte. Il coefficiente del
nella definizione della notazinne 8 siano
disuguaglianze
Nel Capitolo 1 si introdotta una nozione informale della esso cambia c, e c, solo per un
notazione O che co l essere ignorato in quanto
termine pi alto pu analogamente
i ermini i grado pi basso ed ignorare il coefficiente del termine di
principale fattore costante uguale al coefficiente.
ordine Si a
ppi erande.
. pu b
brevemente giustificare questa soluzione intuitiva usando la
funzione f n an- bn c, dove a,
Come esempio si consideri una generica quadratica
di ordine basso ed ignorando la costante
costanti ed a 0. Tralasciando i termini pi
c, g n cg n b e c sono
stessa cosa, si le costanti
Formalmente, mostrare la prendono
si ha fn O ir . per
fn Il lettore verificare che
a/4, c, 7nl4 ed n 2mzx jb /ei , c /a . pu
f c,
ogni n n. In per qualunque polinomio pn
C I1 Qll l ll C C 11
per generale
cg n 2-1 .
c gn 0. si ha p n O ir si veda il Problema
ai , dove 1e a, snno costanti e is,
g, z
esprimere funzione
costante un pol inomio di grado 0. si pu qualunque
Dato che qualunque
non chiaro variabile stia
o Ol. ultima notazioite, poich quale
costante come 8 Quest
importanza . Si user spesso la
un uso improprio. comunque di minore
tendendo all infinito.
n n It
costante rispetto a qualche variabile.
n PI indicare o una coitznte o una funzione
V notazione 81 per
fn 8gn fl 0g f . no
a b c
Notazione O

e da sotto. si ha solo
una f rn ione ala sopra Quando
Lu notazione 8 limit asintoticamenie
dt si denota con
la not rione O. Per una funzione gn.
un limite asintotico superiore, si usa
c ta i C e al/a destrosi di li i/, Yl/rrre dif
o fornis .e tr , /intime sn,erir,re er u, O g itl l insieme di ftinzioisi

f sl se llf re sn/ In ri t r ill idr Il c I, Il .


ehrica. ii hillvrare uiii inq iopriii.
sl c ciiii pcliricce quvit
Capitakr 2 25
Ordine di delle funzioni
grandezza

z Y istonocedn tali Qg /f tutti i


che gf Q QJ f p Q mostrato nella figura 2.1 c per
p/f Il concetto intuitivo che sta dietro la notazione
La stazione O si usa dare un limite coincide o si trova sopra cg n .
per superiore ad una funzione a meno di un fattore valori di n alla destra di n il valore della funzione f n
costante La figura 2.1 b mostra il concetto intuitivo che sta dietro la notazione O tutti che si sono viste fino adesso. semplice
per Dalle definizioni delle notazioni asintotiche
i valori di a alla destra di llp il valore della funzione f n coincide o si trova stto veda l Esercizio .1-5 .
gn. dimostrare il seguente importante teorema si
Per indicare che una funzione membro
f n di O g n , si scrive n Ogn si noti che
f
f n Ogn implica che f Ogn in quanto
n la notazione 8 una notazione forte
pi 2.1
della nutazione O dirlo Teorema
per con la teoria degli insiemi 8gn c Ogn . Di conseguenza la e
dimostrazione 8 g ir se e solo se f n Ogn
che funzione Per ogni coppia di funzioni f n e gn, f n
qualunque quadratica an - bn c, dove a 0, in 8 t implica
anche che ogni funzione in Qgn .
quadratica O ir . Vale la pena notare che funzione f n
qualunque
liiieare an b in O n- , il che facilmente verificabile c a ed i , l.
prendendo b
Qualche lettore che avesse visto , la dimostrazione che air bn c 8 t
gih la notazione O pub trovare strano che si possa Come esempio di applicazione di questo teorem
scrivere, per
esernpie. n On-. In letteratura, che an- bn c Qn-
la notazione O usata talvolta descrivere costante a. b e e, con a 0. implica immediatamente
per informalme t per qualunque
imiti asintoticamente stretti, cio usare il Teorema 2.1 ottenere limiti
quelli che sono stati definiti usando la notazione e an- bn c On-. In piuttosto che per
qui 8. pratica,
In questo libro. comunque, e inferiori dai limiti asintoticamente stretti. caine st ato fano p er
quando si seri ve f n Ogn , si sta semplicemente asintotici superiori
afferman-
do che dimostrare limiti asintoticamente stretti partendo
qualche funzione g ahi un limite asintotico di f generalmente lo si usa per
n senza affermare il limite quest esempio,
quanto
superiore siastretto la distinzione tra limiti da limiti asintotici superiori ed inferiori.
asintotici superiori e limiti asintoticamente stretti
ormai diventata standard nella letteratura inferiore, la si usa limitare il tempo
riguardante algoritmi. Dato che la notazione Q descrive un limite quando per
gli
implicazione si limita anche il tempo di
Usando la notazione O si pu spesso descrivere di esecuzione nel caso migliore di un algoritmo. per
il tempo di esecuzione di un algoritmo
esempio il tempo di esecuzione nel caso
semplicemente analizzando la struttura esecuzione dell algoritmo su input arbitrari. Per
complessiva dell algoritmo esempio,
per per la esecuzione
struttura ciclica Qn che implica che il tempo di
doppiamente annidata dell algoritmo migliore dell algoritmo insertion sort
di insertion sort del Capitolo I, si ha un
limite superiore O ii - del tempo di esecuzione sort Qn.
nel caso il costo del ciclo dell insertiois
peggiore pi interno
limitato superiormente da 0 1 compreso tra Q e On . in quanto cade
costante , gli indici i e j valgono entrambi al pi Il tempo di esecuzione del l inserti on ort perci
n, e il ciclo
pi interno eseguito al pi una volta di n. Inoltre, questi limiti
per ognuna delle n- coppie di valori di i e j. ovunque tra una funzione lineare di n ed una funzione quadratica
Poich la notazione i ne dell insertion
O descrive un limite superiore, la si usa
quando per limitare il tempo
di esecuzione di un algoritmo nel caso peggiore, per implicazione si limita anche il tempo di
esecuzione dell algoritmo su input arbitrari. Per cui il limite O , del tempo di esecuzione
di insertion il quale l algoritmo impiega un tempo
sort nel caso si applic anche nel caso Qi- . in quanto esiste un input per
peggiore al tempo di esecuzione su qualunque input. peggiore
Viceversa, il limite 8 n- del tempo di esecuzione di insertion sort nel caso peggiore non

1 si visto che quando l input gi ordinato, l insertion sort Viene eseguito in tempo 8n.
una costante moltiplicata gn, con n sufficientemente grande.
Tecnicamente, un uso per
improprio dire che il tempo di esecuzione di insertion sort O n- .
in quanto, un dato n. il tempo
per di esecuzione reale dipende dal particolare input di
Notazione asintotica nelle equazioni

usata all inter no di t nmlile


la notazione asintnticz essere
Si visto come possa
input gi ri
di dimensione n scelto per ogni valore di n. il tempo di esecuzione su quell insieme nell introdune la notazione O. si scrittn O n- . p otrebbe
di matematiche, per
esempio,
input CP i . tormu1e.
Cole interpretare tipo di
anche scrivere 2n- 3n l 2n- 8 . questo

Yotaziene Q l
, O ll . Ill CllC1 lle,

li 11 . I . .,

l
COlllCLlll
1 gll llCI1C

La. .......

Cosi come la notazione O f irnisce un limite asintotico superiore d una funzione. la notazione

lli 8n.
f insieme di funzioni 8 . Ill tjUCsl C lM .
f
ll 1. CllC i
pl of l ll

Qgn .. .Ill ciecllXiol1C Elci


fn esistonu c ed n .. w Cli
t li che 0 5 o ni cot s r C i .. .
gn f n per zr n .
i st Ila CSplViso Coli Il 1 iCAITC11/, I
l11Cl C lt t llcl C Lio pC l 1IY
delle 27
Ordine di grande--a funzioni
Z
2 r

o la definizione di
come definizione della notazione
Alcuni autori usano questo limite
Zen/2 On. negative.
y-, , ad essere asintoticamente non
libro timita le funzioni anonime
solo al comportamento asintotico di Tn, non di alcuna questo
igwressati importanza
esattamente tutti i termini di ordine pi basso sottinteso che siano tutti inclusi
rq e
anonima denotata daI termine On. Notazione m
funzione

-.omero di funzioni anonime in un espressione sottinteso che sia uguale al numero di o sta alla notazione O.
,.- alla notazione Q come la notazione
Per analogia, la notazione co sta
, - he la notazione asintotica appare. Per esempio, nell espressione stretto. Un modo
un limite inferiore non asintoticamente
Si usa la notazione co per denotare

definir1a
lp i , per
Q se e solo se g n e ofn .
fn c m gn
di g di n come l insieme
o una singola funzione anonima una funzione di i . Questa espressione non Formalmente si definisce co g n omega piccolo
quindi
una costante n 0 tale che
q qpsa di 01 02 ... On, che in realt non ha una chiara interpretazione. costante c 0, esiste
Co g n f n per qualunque positiva
-.-. la notazione asintotica n
cuni casi, appare sul lato sinistro di un equazione, come in 0 cg n n per ogni 12p

f .

D implica che
e n- . W c i . La relazione f n gn
-- 8n j Per esempio, t l2 co s , ma n-12

-. rpretano equazioni di tipo usando la seguente regola iiidipendentenrente


questo da
f
lim
gn
. jere le fun ioni anonime su fa des1ra del segno tlguale re idere valida l equa ione. rispetto a g n che tende
per arbitrariamente grande per
se il limite esiste cio f n diventa

all infinito.

-.- pi un equazione fornisce un livello di dettaglio


,-- pi grossolano del lato sinistro.
, pjg Confronto tra funzioni
relazioni di questo tipo possono essere utilizzate insieme a catena come in
anche i confronti tre
numeri reali sono valide per
I 2n 8n delle relazionali dei
Molte propriet
che n e gn siano asintoticamente positive.
asintotiche. Nel seguito si assumer f
8 n- . notazioni

q, interpretare ogni equazione separatamente attraverso la regola descritta sopra. La


qui Transitivit
- aequ zionedicecheviqualchefunzionef n c 8 ir taleche2n-
, 3n 1 2rt f n
8hn ,
f s e gn 8 lt n implicatlo ft

Ohn implicano Ohn ,


$ e gn fn
f
interprefazione implica che 2 Qhn .
,, j ghe questa 3n 1 O n- , il che ci che la catena di Qgn e gn
Qhn implicano fn
fn
-sezioni intuitivamepte fornisce. ohn ,
ogn e ghn implicano fn
fn gn

mhn .
f s e gn whn implicano fn

S r taxione o

Riflessivit
f j j J fg e asintotico superiore fornito dalla notazione O essere asintoticamente stretto
puo
fn f ,
c q. la notazione o per denotare un limite superiore che non asintoticamente stretto. f 0 f ai ,
Si
gf jgjggi formalmente ogn o piccolo di g di n l insieme f f
pf j f n per qualunque costante positiva c 0, esiste una costante n Q tale che Simmetria

0 f u cg n per ogni i n, . se e solo ce 8f fn .


fn 8gn gn
n on-, ma 2n A o n- .
p -q riempio,
Simmetria trasposta
q t nizioni dellanotazione Oedella notazione o sono simili I 1 d ft I
p he
Dfn ,
Ogn seesolose gn
fn
se wfn .
ogn sec solo gn
fn
L
C I ipl. O II Clll. ll. llUv
g ll pel
ail inln ito cio, .Il
eC/7. r.,
, fuiui, ni
. eli due nu,neri. reo i,t
dur q cd il conl t.onto
..malo, tra il conl ronto asintotico
. di fe
lll 0,1J ia
fn
0.
lim
n-
.l
.r. tt
delle 29
Ordine di funzioni
grandezza

f n Ogn a b,
Notazioni standard e funzioni comuni
2.2
fn Qgn a b,

alcune funzioni e notazioni matematiche


8gn a b, fornisce una su
fn Questo paragrafo panoramica
l uso delle notazioni asintotiche.
le relazioni tra esse i1lustra inoltre
n ogn a b, standard ed analizza
f

f sr co g n a b.

Monotonicit
Una propriet dei numeri reali che pern non pu essere trasferita alla notazione asintotica
analogamente
la seguente crescente se m n implica f n fn
Una funzione n monotona
f
funzione n strettamente
Tricotomia Per ogni coppia di numeri reali a e b, deve valere esattamente una delle n implica fn. Una f
monotona decrescente se m fm
decrescente se in ii implica
seguenti espressioni a b, a b, a b. n ed strettamente
crescente se n n impiica f m f

Sebbene qualunque coppia di numeri possa essere confrontata, non tutte le funzioni sono fm
fn.

asintoticamente confrontabili. Cio, per una coppia di fu t.-ioni f n e gn, pu essere che non
valga n f n Ogn n f n Qgn . Per esempio le funzioni n e n-, usando le
Base e tetto
notazioni asintotiche, non possono essere confrontate in quanto il valore dell esponente di
n oscilla tra 0 e 2, assumendo tutti i valori dell interuallo. minore o uguale a x con Lx J
reale x, si denota il pi grande intero
Dato un qualunque numem tetto
a x con I x l si legga di
base intero maggiore o uguale
si legga di x e il pi piccolo
Esercizi .
x Per tutti i reali x

x l ixj x x x l.
2.1-1 Siano f n e gn funzioni asintoticamente non negative. Usando la definizione di
Per intero n,
qualunque
base della notazione 8, dimostrare che max f n, gn f n gn .
in/2J n,
fn/2i
con a c 0 e h 0,
e per intero n, a e b interi,
qualunque
2.I-2 Mostrare che per ogni coppia di costanti reali a e b, dove b 0, 2.3
rr r s r
n a 6n .

- .4
LL I J 11 LI J .
Il
2.1-3 Spiegare perch l affermazione tempo di esecuzione del l algoritmo A almeno
O n- priva di significato.
e tetto sono monotone crescenti.
Le funzioni base

2.1-4 vero che 2 02 vero che 2 02


Polinomi

d una funzione della forma


2.1-5 Dimostrare il Teorema 2. l. cl, un polinomio in n di gradn pn
Dato un intero positivo

2.1-6 Dimostrare che il tempo di esecuzione di im algoritmo 8gn se e solo se il suo p r


a,n ,
g
tempo di esecuzione nel caso peggiore Ogn e il suo tempo di esecuzione nel
0. Un
del e a, a polinomio
caso migliore Qgn . costanti a. a,...., a, sono i coeffieie rti polinomio
dove le

2.E-7 Dimostrare che o g ir n co g it i l insienle vuoto.

2.2-2 .
2,1-8 Si pu estendere la notazione al c so di due n ed nt che tendere I- veda l Esercizio
parametri possono costante ci
a dire che f n Oi per qualche
indipeisdentensente all intinito con tassi di crescita cliversi. Per una data funrions

, , n. n . si denota con O g n, m l in ieme di funzioni

O, i, n m esiitonn tre costanti c. e u tali che Esponenziali


f n, positive

0 /pii. m c n, ni o ni i e nr m .
per se LleI1ti idelllit l
ct W 0, In cd II. Si ll lini li
Per og li li.lie
Dare le corrispondenti dchnirioni Q g n. i e O g ll. 111 .
per
30 Capitolo 2

che sarh adottata che le fim ioiii 1ogarit rriche si


Un importante notazione convenzionale
a l
o nefla cosi Ign k significher Ign I- e non
applicai o solo al terminare successi formella.
a a, strettamente crescente.
1g n I- . Per n 0 e b l, la funzione log n
a 1/a, b c l e c w 1, vale che
Per tutti i reali a 0, b 0, c 0 e n, purch
mll

a
a a btoln

aman mn log ab log, a log, b,

loga a Il 10gb Q,
Per ogni n e a I, la funzione a monotona crescente rispetto a n. Quando sar conveniente,
log, a
si assumer 0o l. 1Qgb Q
log, b
Il tasso di crescita di polinomi ed esponenziali essere messo in relazione con il seguente
pu a i 10gb Q,
fatto tutte le costanti reali a e b tali che a l,
per 1
10gb Q
n log,b
lirn 0 . 2.5
10 II log a
i a Q 2.9
da cui si pub concludere che
cambiando la base di un logaritmn da una costante ad un altra il valore del
Dato che
n oa . Ign
fattore costante. si user spesso la notazione quando non
logaritmo cambia solo per un
funzione esponenziale con base strettamente maggiore di 1 cresce la base
Quindi, qualunque positiva costanti, come nella notazione O. Gli informtici trovno che
si sia interessati ai fattori
pi velocemente di qualunque polinomio. dati la dii isione
naturale i logaritmi sia 2 perch molti a1goritmi e strutture prevedono
pi per
Usando e per denotare 2.71828... la base della funzione logaritmo naturale. si ha per ogni
in due parti del problema.
reale,v l
V i un semplice sviluppo in serie per 1n 1 x quando x

X X X
e 1x , , g ,, x- xe x x
2.6
2 3 t- 1n 1 x x .
2 3 4 5

dove denota la funzione fattoriale definita nel seguito di questo paragrafo. Per ogni reale
Per.r 1 si hanno anche le seguenti disuguag ianze
x, si ha la disuguaglianza
X
e I x,
p 1n 1 x x, 2.10
lx

dove l uguaglianza vale solo quando.r 0. Quando x l, abbiamo l approssimazione


dove l uguaglianza vale solo x 0.
per
,t.
poli1ogarifsnicameitte limita1a se f n 1 Si pu
2.8 Si dice che una funzione f n
l x e l .r x- .
sostituendo tell Equazione 2.5 1p al
correlare la crescita dei polinomi e dei polilogaritmi
Quando x 0, l approssimazione di e con l .v abbastanza bunna
pnsto di n e 2 al posto di a ottenendo

e- 1 x 8x .
1g n , 1g n
In equazione, lanotazione asintotica usata il comportamento al limite lim lim 0.
questa perdescrivere
n oc pa E n co 1
0 piuttosto che m . Si h che ogni x
per.r per per
Da limite si pu concludere che
questo
e
m .
Ig n on

costante a 0. Di conseguenza. qualunque funzione polinomiale positiva


per qualunque
Logaritmi
cresce velocemente di qualunque funzione polilo vritmica.
pi

Si uservnno le seguenti nntzzioni


Fattoriali
l n 1 , Il logaritmo binario .

ln ii lo n n ilur tle , n 0 come


lo aritmo n leg e futtoriale definita interi ir
Lu notaziotti. si per
.,i
I 11 l 11 ICVR/11CI110
g pOlCI17l .
I se n 0.
I l i Ig l n composizione .
n. n I sc n 0.
di delle 33
Ordine grande funzioni
32 Capitolo 2

Perci, n l 2 3 n. Numeri di Fibonacci

Un limite superiore debole per la funzione fattoriale n n, dato che ciascuno degli n
di Fibonacci sono definiti dalla seguente ricorrenza
termini del prodotto fattoriale al pi n. L approssima ione di Stirlisrg I numeri

F, O,
. Pz zru
- e - ,. F, 1,

i 2. 2.13
dove e la base.dei logaritmi naturali, fornisce sia un limite superiore che un limite inferiore F FF per
dei due e vale la sequenza
pi strego. Usando l approssimazione di Stirling si puo dimostrare che Percio, ogni numero di Fibonacci la somma precedenti

n on , 0, l, 1,2,3,5,8, 13,21,34.55, ....

coniugato p che sono definiti


n m2 I numeri di Fibonacci sono correlati al rapporto aureo p e al suo
,

Ig n dalle seguenti formule


6n 1gn .

Per ogni n valgono anche i seguenti limiti


l 5

.
2
V2nn n 42 n e .1 -
- 1.61803...,
2.14
t Ks
La funzione logaritmica iterata 2
0.61803....

log
Si usa la notazione 1g n si legge stella di n denotare l iterazione logaritmica che si ha
per Pi precisamente,
definita come segue
pi S
sia la funzione Ig n definita ricorsivamente interi non negativi i come F,
per

n se i Q, 2.2-7 . Dato che 1, si ha che


si pu dimostrare induzione si veda l Esercizio p
come per
IR n n n
Ig lg se i 0 e 1g g a ph 5 arrotondato
l i-esimo numero di Fibonacci F 6 uguale
5 l/s 5 1/2 e quindi
indefinito n n p h
se i 0 e 1g 0 o 1g indefinito. esponenzialmente.
intero vicino. Percio i numeri di Fibonacci crescono
all pi
Attenzione a distinguere lg ir la funzione logaritmica applicata i volte in successione

partendo con argomento i da 1g n la funzione logaritmica di n, elevata alla i-esima potenza .


Esercizi
La funzione logaritmica iterata definita come

monotone crescenti allora lo sono anche


Ig n min 0 1g n l . Mostrare che se f n e gn sono funzioni
2.2-1
fi non negative
inaltre se f n e gn sono anche
le funzioni n gn e f gn
f
Il logaritmo iterato una funzione che cresce molto lentamente
allora monotona crescente.
f n gn

lg2 l, mostrare che Tn n se e solo se


Ui re la definizione della notazione O per
2.2-2
Ig 4 2, una costante k 0 tale che Tn O ii .
esiste
lg 16 3,
l Equazione .9 .
lg 2.2-3 Dimostrare
65536 4,

65536 5. ihe lg n 8n Ig n e che,t on .


2.2-4 Dimostrare

Poich il numero di atomi tunzione I 1glgn I


ncll universn osservabile stimatn essere circa 10 . che molto n 1imitata La
2.2-5 La funzione I Ig polinomialmente
meno di 2 . i incontra raramente un valore di n tale che 1 n . limitata
polinomialmente

erat1 le. le l It o l le It .
22 6 i lu tul li nc aiittl ticitmi..ni piit
Quei.ll
delle 35
Ordine di grande-a funzioni

. -
2.2-7 Dimostrare e gn sono nella stessa classe se
che l i-esimo numero di Fibonacci sddisfa l elenco in classi di equivalenza tali che f n
l uguaglianza Partizionare
F, dove e solo se f n 8gn .
p p I y5, p il rapporto aureo e/ il suo coniugato.

n gl gg
2
Ig lg n plg g lgn
2.2-8 Dimostrare che i 0. l i 2 -esimo
per numero di Fibonacci soddisfa F .
t p2 l/Ign
n 1g n 1g n
3 ll

n
1nn l
n g n n 2 lglg
1nln
Problemi
n
1 n
pTgn n 4lg n lg
ign

algol gn
2-1 n 2
Comportamento asintotico dei g g
p
polinomi

Sia funzione
funzione non negativa n tale che per ogni g,
b. Dare un esempio di una singola f
d Qg
della a, n non n Og n n n .
parte f
pn an,
g
i0

2-4 Propriet della stotazione asintotica


dove a, 0, un in n di d e sia
polinomio gradn k una costante. Usare le definizioni delle
Provare o confutare ciascuna delle
notazioni asintotiche le seguenti Siano n e gn due tunziani asintoticamente positive.
per provare propriet. f
seguenti congetture.
a. Sel- d, allorap n On .

a. Ogn implica gn Of n .
f n
b. Se k d, allora Q r .
pn
b. gn 8 min f n , gn .
fn
e. Se l d, allora 8n .
pn
1g g n 0 e f t 1 pt o-
implica Ig f O lg g n , dove
c. f n gg , n
d. Se l d, allora on .
pn sufficientemente grande.

e. Se k d, allora co n . .
pn d. Ogn implica 2. 02
f n

e. fn O fn - .
2-2 Crescita asintotica relativa

Indicare Qf n .
per ogni coppia di espressioni A, B nella tabella sotto, se A O, o, Q. oppure f. f l Ogn implica g ir
8
di B. Si assuma che k l, c 0 e c 1 siano costanti. La risposta dovrebbe essere sotto forma
si no O f 12 .
di tabella con un o un in ogni casella.
g. fn

h. ofn Ofn .
fn
B O o Q m 8
a. Ig n n
2-5 Variazioui sri O e Q

b. da come si faccia si u erh Q si


n c autori definiscono Q in modo leggermente diverso qui
Alcuni

c. y n n
che c, n 0 per un numero infinitamente grande
se esiste una costante positiva c tale f n
pn pn/2

di interi n.
m
lg lgn

f s 1 Is cio non vero se si usa


o f ii Qgn o v lgono entr mbe. mentre
of ii O g ii
la notazione Q invece di Q.

2-3 Ordinameirto rispetto al Q invece di Q cantterizzare


tasso di erescltn asintotica vant i e svant i i clell usn di per
b. Descrivere i potenziali
a. Classificare le seguenti tunzioni dei rammi.
per ordine di civi. trnvare il tempo di esecuzione pm
gr incferz un i siit m izi il1c
,
ern cntc diversn si uscrh g p q vesta
Al imi autori definiscono O in modo c

C y ii ic e solo sc i Oqn .
definizione iltirn itiva. Si dice che f n f
3 Capuolo 2
grgine c i grandezza dellepnzioni 37

c. Cosa accade nel Teorema 2.1 alle due se


direzioni del e solo se considerando e
questa sviluppo delle notazioni asintotiche si possono trovare in Knuth j e in Brassard
nuova definizione
Bratley f33 .
Alcuni autori definiscono O
O si legge tilde perindicare Ocon fattori logaritmici ignorati modo, sebbene nelle
le notazioni asintotiche a ilo stesso
Non tutti gli autori definiscona .
Ogn f n. esistono costanti c, k e n tali che Alcune definizioni alternative ve
positive situazioni comuni 1 varie
le t ion
notazioni siano concordi.
pi
0fn cg n l n n n funzioni che, anc e se non sono asintoticamente non negative, hanno valori
perogni comprendono
assoluti limitati in modo appropriato.
d. Definire in modo simile Q e O. Dimostrare il comspondente Teorema 2.1. trovare in qualunque
Altrere ropriet di funzioni matematiche elementari si p ossono
, maun ffl o Be y er in testi di
repertorio
repe ori di matematica, come Abramowitz e Stegun 27 , oppure
2-6 Fcrnzioni iterate Knuth contiene abbondante
analisi come Apostol 12j o Thomas e Finney 192 . 121
L operatore di iterazione * usata in informatica.
usato nella funzione 1g pu essere applicato materiale sulla matematica discreta
a funzioni sui reali
monotone crescenti. Data una funzione f per cui valga f n n, si definisce ricorsivamente
la funzione f per interi non negativi i come

n se i 0,
p, Jf f
n se i 0.

Per una data costante c e R, si definisce la funzione iterata f con

f n min 0 dan c,
i
che non necessita di essere ben definita in tutti i casi. In altre parole, la quantit il
f n
numero di applicazioni ripetute della funzione f richieste per ridurre il suo valore fino a un
valore minore o uguale a c.
Per ognna delle seguenti funzioni e costanti
f n c, fornire un limite pi stretto possibile
P f,. .

e. n/2

e. n

f. n

g. n

h.

Note al capitolo

Knuth l 21 fa risalire l origine detla notazione O ud un testo ulb te ria dei numeri di P.
Bachmann del 1S9 . La notazione o fu introdotto da E. Landau nel 1909 nella sua tr.,ttazione
della distribuzione dei numeri primi. Le nutazioni Q e O furono w stenute da Knuth 124 pei
corre pere Ia pratica, ma tec nicamente
popolare impreci u, sii usare nelIu lettentura Ii
notazione O sia per limiti superiori che infi.riori. Mnlti continuano ad uv re l i notazione O
mentre la notazione 8 piii precisa li cnicament, Ulteriori discuiiioni iulla storia e lo
SO Rt0116

iterativo come un ciclo while o for,


un algoritmo contiene un costrutto di controllo
Quando ogni
espresso come la somma dei tempi impiegati per
il suo tempo di esecuzione pu essere
si visto nel 1.2 che la j-esima
del corpo del ciclo. Per esempio, paragrafo
esecuzione
un tempo a j.
dell insertion sort impiega, nel caso peggiore. proporzionale
iterazione
si ottiene la sommatoria o serie
il tempo impiegato in ogni iterazione,
Sommando

gi
J-

un limite di O n- sul tempo di esecuzione


Valutando sommatoria si ottiene
questa
l insportanza di comprendere come
nel caso esempio indica
dell algoritmo peggiore. Questo
Come si vedr nel Capitolo 4, le sommatorie
le sommatorie e fornire limiti su di esse.
gestire
di alcuni metodi risolvere le ricorrenze.
si ritrovano anche nell uso per

riguardano le sommatorie. I paragrafo


3. l elenca alcune formule di base che
Il paragrafo
Le formule nel 3.1 ono
tecniche fornire limiti sulle sommatorie. paragrafo
3.2 offre utili per
di esse le sono presentate nel
dimostrazione, comunque per alcune prove
descritte senza
di quel Molte delle altre dimostrazioni possono
3.2 illustrare i metodi paragrafo.
paragrafo per
trovate in un testo di matematica.
essere qualunque

3.1 Formule e propriet sulle sommatorie

lasnmmatmitaa, a, ... a pui esserescrittanel


Dataunasequenzaa,. a .. di numeri,

seguente modo

.
ga
kl

ii non un intero.. i assume cile


- 0 dt tnizione. Se
Se ii 0. il valore della s mmatoria per

ben definito e i suoi termini


di una serie l inila i sempre
e il tetto e plieit unente. 11 valore

essere grommati in vrin .


poiiono qualunque
a, ... ciscre scritta nel
nuincri. b i ninw it1f mil , pu i
D it i ti t i c ui o/ t ,. a,.... li

Yi iZLICll tC l11OCIO.
Capitolo 3 Sommarorie

Serie geometrica
ga .
k1

Dato un reale.v w I, la sommatoria


che rappresenta
n

n X 1XX X
im 40
ga .
kl
una serie o esponenziale ed ha come valore
geometrica
Se il limite non esiste, la serie diverge altrimenti converge. I termini di una serie convergente n
non sempre l
possono essere sommati in ordine.
n
qualunque Si possono risistemare i 3.
per
termini di una serie ussolutamettte convergente, cio una serie ag,. per
pp, cui anche la serie k0
pp, az converge.
1, si ha la serie metrica decrescente infinita
Quando la sommatoria infinita e x geo

Linearit
bk 3.4

k0
Datounqualunquenurnerorealec
eduequalunquesequenzefinitea,,
a, ..., a e b,. b,...., b,
allora

Serie armonica
n n n

cgaq gbq .
g caq bq
Dato l intero n, l n-esimo numero annonieo
kl k ki positivo

La propriet di linearit si applica l 1 l l


anche a serie convergenti infinite e pu inoltre essere H, l
impiegata manipolare somnsatorie 2 4 n
per contenenti termini in 3
notazione asintotica. Per
esempio, n
l
3.5
I I

g fk
e g/w . 1nn 01 .

In quest equazione, la notazione 8 sul lato sinistro applicata alla variabile k, mentre sul lato Integrali e derivate di serie
destro applicata ad n. Queste manipolazioni essere
possono applicate a serie convergenti
infinite.
.
Si i ossono
oss ottenere ulteriori risultati integrando e differenzi iandoleformuleappenaviste.Per

.serie rica i
intuita 3A e moltiplicando perx,
esempio,
esempi, derivando entrambi i lati della ggeometrica
Serie aritmetica
si ha

X
La sommatoria ex 3.6
l x-
n

12 n,
gk

Serie telescopiche

che viene fuori dall analisi dell insertion sort, una serie aritvretica ed ha come valore a, v le che
Data u sequenza ci , e ,,
qualunque
n
l
-n n n
1
3,l
i A i ao, .7
kl
-1
I
On .
ei..ltl..llllClltc UIID VOlta.
CI i Ci..l,i llllT . to CI1C,iotlt,lttO
l al,. al ...,

- , . . ,t 1 . A,
Alt I lil1CA
1 lll1CII C
C
. un. c innocchi ile C o lttegC tPICilllCCll14 .
Si l diceIC Ccle. l. lasomns
. i . rientra c ime
42 Capitolo 3 Sommaro rie 43

n I che
3.I-5 Usare la propriet di linearit delle serie per provare
ai ao a.
g
O fq n Og i fa n .
J 0 ,

Come esempio di serie telescopica, si consideri 3.I-6 Provare che Qfk Q pp, fk .
la sommatoria g,
n- i
l. il valore del 2 4.
3.I-7 Calcolare prodotto fJ ,
kk I
de1 l/k .
3.1-8 Calcolare il valore prodotto Jg 1
Poich ogni termine essere riscritto come
pu
armonica essere migliorato a
3.i-9 Si dimostri che il limite della serie pu
l I I
kk I k E
k l
Hn I
2n
si ha
la costante di Eulero-Mascheroni ed
dove 0.5772156649... conosciuta come
y

E Ic k
l

1
.. c soddisfa 0 e l. Si veda Knuth 121 .

1 3.2 Definizione di limitazioni sulle sommatorie


n
sommatorie che descrivono i tempi di
Vi sono molte tecniche disponibili definire limiti sulle
per
alcuni dei metodi usati pi di frequente.
esecuzione degli algoritmi. Di seguito saranno presentati
Produttorie

Induzione matematica
Il prodono finito a,, a, a essere scritto come
pu
n
di usare l induziane matematica. Per
Il metodo base calcolare il valore di una serie
per
Il k ha come valore I. Si pu
esempio, si dimostrer che la serie aritmetica g, nn
kl
induttiva che esso valga per
verificare che vero n 1. quindi si fa l ipotesi
facilmente per
Se n 0, il valore del 1 per definizione.
prodotto Si pu convertire una formula contenente n e si dimostra che vale per n I. Si ha
un prodotto in una formula contenente una sommatoria usando la seguente identit
nI n
n n

s a ga n i
ga glsaa .
kl kl
I I kl
l
-n n 1 1
n

1
-n 1 n 2 .
Esercizi 2

tentare di determinare il valore


Per usare l induzione matematica non necessario
3.1-I Trovare una formula sempticc. per g , vt

3.I-2 Mostrare che -1


g, l/ 2k In i O manipo1ando le serie armoniche.
valga n. si proVl or che vale
l e 1purch c l. Ascumendoche il limite per
2 k0
3

3.1-3 Mostrare -1 /2 per n I. Si ha


che pp 0.
k
n

I
3.1-4 Calcolare il valore della erie
/ 1 .- . g
gi
E 3k 3II

c . o a n
I
3ll y 3tlt

.
l t I
C ,3
Si pu applicare metodo per dare un limite alla sommatoria pp, k/3 . Il primo
questo
se 1/3 l/c I o, equivalentemente, c 312. Di qui 03 .
q3 come si voleva termine 1/3 mentre il rapporto tra due termini consecutivi
dimostrare.

Bisogna fare attenzione a dimostrare limiti k 1 /3 1 k I


per con l induzione quando si usa la notazione
asintotica. Si consideri la seguente k/3 3 k
prova fasulla che g , k On.
2
Di sicuro g, k 01. Assumendo che il limite valga per n, si dimostra per n 1 3
n I n
k 1. Quindi ogni termine superiormente limitato da 2l3 , e da qui si ha
per ogni 1/3
k
k n1
/l I

On

On 1
n

.
1 enato
g- g- -
I 1
L errore nel procedimento che la costante nascosta dalla O cresce 3 1 2/3
con n e quindi non una
costante. Non stato mostrato che la stessa costante vale per 1.
ogni n.

un errore comune, nell applicazione di questo metodo, mostrare che il rapporto di due
Limitazione dei termini termini consecutivi minore di l e quindi assumere che la sommatoria sia limitata da una serie
Per esempio, si potrebbe fare questo errore per la serie armonica infinita che
geometrica.
Talvolta, un buon limite superiore su una serie invece diverge
puo essere ottenuto maggiorando ogni termine
della serie, e spesso sufficiente usare il termine pi grande per limitare gli altri. Per esempio.
un limite superiore immediato sulla serie aritmetica 3.1
n n

gk gn
lim 8 lgn
Il OO
kt kl
OO .
2
n-
Il rapporto tra il k 1 - esimo e il k-esimo termine di questa serie k/ k 1 1, ma la serie
In generale per una serie az, se si pone a, max fggg
g, ag-, allora vale decrescente. Infatti, per limitare una serie con una serie
non limitata da una serie geometrica
si deve mostrare che il rapporto limitato da un valore strettamente inferiore a
n geometrica,
1 cio deve esistere una costante r 1, tale che il rapporto fra due termini consecutivi non
E aA t1amax

r di questo tipo non esiste il xapporto


kl superi mai r. Per la serie armonica una costante perch
si avvicina a 1 indefinitamente.
La tecnica di limitare ogni termine di una serie con il termine
pi grande debole quando
la serie pu in realt essere limitata da una serie geometrica. Data la serie g a si supponga Spezzare le sommatorie
che a ,la, rperognik Odo er l una costante. Datochea a i lasommapuessere
k 0
limitata da una serie decrescente infinita,
geometrica quindi Per ottenere limiti su una sommatoria difficile si pu esprimere la serie come la somma di due
n o pi serie ottenute spezzando l intervallo dell indice e quindi limitando ognuna delle serie

a,r risultanti. Per esempjo, si supponga di cercare un limite inferiore per la serie aritmetica
ga
k0 O k, che come si i visto limitata superiormente da n-. Si potrebbe limitare ogni
Zl I

termine della sommatoria con il termine ma poich quel termine 1, si avrebbe


pii piccolo,
ao r distante dal limite superiore ir- .
un limite inferiore per la sommatoria pari ad n, che troppo
l 0

1
ap
1 r
Sommatone 49
Capitolo 3

per cui vale 1a limitazione

l
f x lnn I . 3.12

kl

Esercizi

l /k- limitata superiormente da una costante.


3.2-1 Mostrare che g,

Trovare un limite asintotico superiore per la sommatoria


R a 3.2-2
R I
Lis J

f g

X AO
m-1 m m1 m2 n2 n-1 n n1

a numero armonico Q lgn spezzando la sommatoria.


3.2-3 Mostrare che l n-esimo

3.Z-4 Approssimare k con un integrale.


g,

f -i su
con l integrale 3.10 direttamente
3.2-5 Perch non si usa l approssimazione

limite superiore 1 n-esimo numero armonico


l /k ottenere un per
per

Problemi

3-1 Limitazioni sutle somtnatorie

sommatorie. Si assuma che r n 0 e s0 siano


3 a Dare limiti asintotici stretti sulle seguenti

I I costanti.
O

n
a.
X g
m 1 m m I m2 n-2 n-1 n n I l

b
1g I.
b g
l I
n
Fieura 3.1 A pp rossima-ion
. a ione d i con
fk integrali. I ialore dell area di ogni rettmrgolo k 1g k.
ntostrato al quo interno, e il valore rr ra1e g
dell area dei rettangoli rappresenta il valore della
sommatoria. L integ raie rappresentato dal1 area
grigia sotto la curva.
Cvnfroirrando le aree in si attiene nnitic
a, f .x d.x fk e quindi traslando di urr i
j, g
revangoli verso destra si ottiene
g , fl f fx dx i b. Note al capitolo

in cnpito ln. Le
un riferimento eccellete il m. teri le presentato questo
Knuth l2l per
buon te. to di analisi
delle serie eiicre trov itc in qualunque
di hase possom
prnpriet
come Apostol o Thoin ii e Finncy l92J.
matematica 12j
Ricorrenze

ricorsivauna a se stesso,
chiamata come gi notato nel
Quando un algoritmo contiene
spesso essere descritto da una ricorrenza. Una
Capitolo l, il suo tempo di esecuzione
pu
ricorrenza un equazione o una disuguaglianza che descrive una funzione in termini del suo

valore su input sempre Per esempio, nel Capitolo 1 si mostrato come il tempo
pi piccoli.
di esecuzione T n della procedura MERGE-SORT, neI caso peggiore, possa essere descritto
dalla ricorrenza

81 se n l,
f 4.1
8n se n 1,
$2T n/2

la cui soluzione Ti On 1p .
le ricorrenze cio, per ottenere i limiti
Questo capitolo offre tre metodi per risolvere
8 O di sostituziorre si tenta un limite e quindi
asintotici o deIla soluzione. Nel metodo
che il tentativo corretto. Il metodo iterativo
si usa l induzione matematica
per provare
e risolvere la ricorrenza si applicano le
converte le ricorrenze in sommatorie quindi per
Il metodo fornisce limiti sulle ricorrenze della
tecniche per limitare le sommatorie. priircipale
forma

Tn aT n/b fn,

dove a 1, b l e f n una funzione, il metodo richiede di ricordarc tre casi, ma consente

di determinare facilmente i limiti asintotici di inolte semplici ricorrenze.

Aspetti tecnici

le ricorrenze, si trascurano certi dett li


Nella pratica, quando si descrivono e risolvono
che viene spesso mascherato l ipotesi che le funzioni
tecnici. Per esempio, un denaglio
Tn di un algoritmo definito iolo
abbiano argomenti interi. Di solito, il tempo di esecuzione
la dimensione dell input sempre un
su n intero. per lu nnggior
infatti parte degli algoritmi.
che dea rive il tempo di esecuzione del EROE-SDRT nel
intero. Per esempio, la ricorrenza
caso peggiore in realt

n l,
J8 1
T n/2J 8 n n I .
T n/2

costunte su un input di dimensinne cvsl JA1C.


Pnichi il tempo di esecuzione di un algoritmo

tale tempo haiti in genere T ri 01 per n su tfrcicntcl11Clll


le ricorrenze cl e descrivono
Ricorrenze 53

Di conseguenza, comodit, in si ometteranno le descrizioni delle una specifica condizione al contorno


piccolo. per generale nel un ipotesi induttiva per
Questa difficolt provare
condizioni al contorno delle ricorrenze e si assumer che Tn costante n piccolo. Per vantaggio dal fatto che la notazione asintotica
per superata. Si puo trarre
essere facilmente
pu L idea di
esempio, normaImente si descrive la ricorrenza 4.1 come cn Ign ir n, dove n una costante.
richiede soltanto di provare che Tn per
al contorno Tl 1 e di considerare nella prova
2T n/2 9n, trascurare nella induttiva la condizione
Tn prova
considerare T2 e T3
delle condizioni al contorno. Si possono
n 2 e n 3 come parte
senza dare esplicitamente i valori pern La ragione che, sebbene cambiando il valore non dipende direttamente da T 1 .
piccolo. 3, la ricorrenza
come condizioni al contorno perch pern
di T1 cambi la soluzione della ricorrenza, tipicamente la soluzione non camb d induttiva che Tn cnlgn per
che T2 4 e T3 5. La prova
Dalla ricorrenza si trova
un attore costante, cosi che I ordine di grandezza rimane invariato. c sufficientemente perch
1 pu essere completata scegliendo grande
costante c
qualche di c 2.
si descrivono e si risolvono le ricorrenze, si omettono spesso la base, il tetto e le verificare sufficiente qualunque scelta
Quando c21g 2 e T3 c31g 3. Come si pu
T2
madi, senza considerare dettagli, e poi estendere le condizioni al
condizioni al contorno. Si procederh per prima questi che verranno esaminate semplice
Per molte delle ricorrenze
determinando se hanno o no importanza. Di solito non ne hanno, tuttavia bene sapere funzioni n piccolo.
contorno l ipotesi induttiva per
perch
quando ne hanno. L esperienza aiuta, cosi come alcuni teoremi che stabiliscono che qu

scegliere la soluzione candidata


algoritmi si veda il Teorema 4.1 e il Problema 4-5 . In questo capitolo, comunque, si far Come

riferimento ad alcuni di questi dettagli per mostrare le sottigliezze dei metodi per risolvere
la soluzione corretta per ogni
le ricorrenze. esiste una regola per azzeccare
Sfortunatamente, non generale
che aiutare il lettore a
vi sono alcune euristiche possona
ricorrenza. Fortunatamente, per,

diventare un buon risolutore.


tentare una soluzione simile
4.1 Il metodo di sostituzione a quelle viste allora
Se una ricorrenza simile prima,

Per esempio si consideri la ricorrenza


ragionevole.
Il metodo di sostituzione per risolvere le ricorrenze richiede di tentare uno schema di
2T fn/2J 17 n,
induzione Tn
soluzione, , q uindi usare l matematica per trovare le costanti e mostrare che la
sul latodestro all argomentodi T. Intuitivamente
acausadel 17 aggiunto
soluzione funziona. Il nom e viene dalla sostituzione nella funzione della soluzione tentata che sembradifficile
modo sostanziale la soluzione della
non influenzare in
l ipotesi induttiva applicata a valori metodo potente, ma termine addizionale pu
quando pi piccoli. Questo puo questo lo altrettanto
tra T Lnl2J e T l.nl2J l7 non
ricorrenza. n grande la differenza
essere applicato solo quando sia facile azzeccare lo schema della soluzione. Quando
stentano con Tn On lgn , che
n all incirca a met. Di conseguenza,
entrambe dividono
Il metodo di sostituzione u essere usato per stabilire i limiti inferiore o superiore di una veda l Esercizio 4.1-5 .
corretta usando il metodo di sostituzione si
si pu dimostrare
ricorrenza. Per esem io , determiniamo un limite superiore per la ricorrenza
limiti laschi della ricorrenza equindi
azzeccare la soluzione di provare
Un altro modo per
2T jn/2J n, g con un limite inferiore di
Tn 4 Per esempio, si potrebbe cominciare
ridurre il grado di incertezza.
n nella ricorrenza, e provare un limite
che simi e la ricorrenza 4.4 , poich il termine
alle ricorrenze 4.2 e 4.3 . Si tenta con la soluzione Tn On 1gn . Il metodo Tn Qn per
abbassare il limite superiore
consiste nel iniziale di Tn O n- . Quindi si pub gradualmente
provare che Tn cn n dove c una costante positiva scelta in modo superiore
corretta e asintoticamente stretta
inferiore finch convergano alta soluzione
appropriato. Assumendo che questo limite valga Lnl2J, cio che T Ln/2J c e alzare il limite
per
Ln Jlg Lnl2J , e sostituendo nelIa ricorrenza si ha Tn 8n 1g li .

Tn 2c Ig n/2J n
fn/2J