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
Sottigliezze
cn Ig n/2 n

cnlgn cnlg2 n soluzione di una ricorrenza.


un limite asintotico della
A volte si pu azzeccare correttamente
cn Jgn non torni nell induzione. Di
cn n
sembrare che il calcolo matematico
ma, in qualche modo, pu
abbastanza torte da dimostrare limiti
cn Ign, che l ipotesi induttiva non sia
solito, il problem
di tipo, correggere la soluzione
ci si imbatte in una difficolt questo
dove specifici. Quando
l ultimo passo vale c l. di nttenere la prova matematica.
per basso, spesso consente
sottraendo un termine di ordine pi
L induzione matematica richiede o ra di mostrare che la soluzione vale le condizioni al
per
Si consideri ia ricorrenza
contorno,ciosidevemostrarechesi usce l - relacostantecsufficientementegrandeinmodo
c e n cnlgnvalgaanche 1.
p erlecondi n izioni
i al contorno. Questn requisito pu talvnlta creare rn Lnl J
liil I
eiprobtemi.SiassumacheT 1 -. - -
1 sia
gi l unica condizione . al contorno Jellaricorienz e . i. All ir ir
i. i che T ir cit dove i Lltla costatlte scelta
, la soluzione Ot . e si ceri i di lllOilrarc
Si tetlt coli
S ortunatamente, non si pu
u scegliere
sci c sufficientemente rande. e, perch T1 c I 1g l 0. ne l ricorrenza. si ha
appropriatamente. Sostituendo
Ricorrenze 55

54 Capirolo 4

T2 la nuova ricorrenza
Si ridenominare 5m per produrre
pu

Tn c
n/2j c n/2 l
S sn 2S m/2 m,

soluzione S tn Om 1gm .
cn l, ricorrenza 4.4 ed ha la stessa
che molto simile alla
Sm Om 1gm O lgn Iglgn .
ridenominate, si ha T n T2
che non implica Tn cn per nessuna scelta di c. Sarebbe interessante cercare una soluzione Risostituendo le variabili

che funzionare, come Tn O n- , anche se in realt l ipotesi che la


pi grande, pu
soluzione sia Tn On corretta. Per dimostrare questa, per, bisogna fare un ipotesi
Esercizi
induttiva pi forte.

la soluzione di T ii Tl 12 I l O lgn .
Intuitivamente l ipotesi esatta essa non torna solo per la costante 1, un termine di ordine 4.1-1 Mostrare che

basso. Ci nonostante l induzione matematica non funziona se non si prova la forma


pi
1gn . Concludere che la
induttiva. Si supera la difficolt sottraendo un termine di ordine basso di T n 2T Lnl2J n Qn
esatta de11 ipotesi pi 4.1-2 Mostrare che la soluzione
dal tentativo. Il nuovo tentativo Tn cn b dove b 0 una costante. Si ha 8n Ign .
precedente soluzione

Tn c n/2J b c fe/2 b l superare la difficolt


una diversa ipotesi induttiva, si pub
4.1-3 Mostrare che facendo
cn 2b l senza la correzione
al contorno T1 1 per la ricorrenza 4.4
della condizione
cn b, condizioni aI contorno la prova induttiva.
sulle per

la costante c deve essere scelta sufficientemente da gestire le


p erb 1. Come prima, grande esatta il merge-sort.
la soluzione della ricorrenza 4.2 per
condizioni al contorno. 4.1-4 Mostrare che 8n Ign

MoIte trovano controintuitiva l idea di sorrmrre un termine di ordine inferiore.


persone lpi .
di Tn 2T Lnl2j 17 n On
Dopotutto se il calcolo matematico non torna, la soluzione non dovrebbe essere awnentata 4.1-5 Mostrare che la soluzione

La chiave di comprensione di questo passaggio sta nel ricordare che si usa l induzione si pu
1 facendo una sostituzione di variabili.
dimostrare di pi forte un valore dato assumendo qualcosa di pi forte per valori la ricorrenza Tn 2T n
qualcosa per 4.1-6 Risolvere
che i valori siano interi.
pi piccoli. Non preoccupassi

Evitare le trappole
4.2 Il metodo iterativo

asintotica. Per esempio, nella ricorrenza si pu ma richiedere mo1ta pi algebra


facile sbagliare l uso della notazione 4.4 richiede di tentare una soluzione, pu
Il metodo iterativo non
tentando con Tn cn e quindi dedurre che la ricorrenza ed esprimerla come
provare, erroneamente, che Tn On L idea di sviluppare iterare
del metodo di sostituzione.
Le tecniche valutare le
solo da n e dalle condizioni iniziali. per
Tn 2c n somma di termini dipendenti
n/2J
usate fornii limiti alla soluzione.
sommatorie essere per
cn n possono

Per esempio, si consideri la ricorrenza


g , errato..

esatta dell ipotesi Tn 3T n/4j n .


c una costante. L errore cbe non stata dimostrata la forma
poich
induttiva e cio che Tn cn. Si itera come segue

Tn n 3T n/4J

Sostituzione di variabili
n 3 n/4j 3T n/16J

3 n/4 3 n/16J 3T n/64J


n
- .
Talvolta. una ic a manipolazione algevrica
..i rendere una riconenza sconosciutasintil .
picco pun
n 3 9 27T n/64J ,
n/4 n/16j
a una gih vista. Per esempio si consideri ln ricorrenza
vengono dall identit 2.4 .
Ln/16J e LLnl16J14J Lnl64J
1gn, dove LLirl4J14J
Tn 2T nj
al contorno Il
ri ggiungere una condizione
bisogna sviluppare la ricorrcnzu per
sehsniificare ricorrenza con una sostituzione di Quanto
che sembra difficile. T uttavia si pu questa

variahile. Percnn modith. i traicurerh l arrotondamento n interi dei valori conte /n. Snstituen- fino a c
nell iterazione questo punto
i raggiunge lo Proicguendo
il
equivalentensenti, n.
ClO ll Igll OttlCllC

PT 2 -
T2 ,n . decreicentc
Ricoiienze
5 Capitolo 4

2
Tn n

Tn n 3n/4 61
9n/16 27r./64 3

n ai
g 4
8n

- - -* -*
4n on
/ / h
0n .

In questo caso, stata usata l


identit
2.9 per concludere che 3o4 no
, e il fano che
- - H -
log,3 l per b c
concludere che 6n on. a

Il metodo iterativo di solito comporta l uso di molta algebra, e fare tutti i calcoli in modo
esatto puo essere complesso. Bisogna concentrarsi su due parametri il numero di volte che
2
la ricorrenza deve essere iterata raggiungere le condizioni
per al contorno, e la somma dei n
n

ermini originati da ogni livello del di iterazione. Talvolta, nel di iterazione


di una ricorrenza, si pu azzeccare
processo
la soluzione senza sviluppare tutti
processo
i calcoli matematici. in
L
l
tal caso, il metodo iterativo essere
che di solito richiede un uso
pu
inferiore
abbandonato

di algebra.
per scegtiere il metodo di sostituzione,
-* -* n

Quando

particolarmente
una ricorrenza

complicato.
contiene

Spesso,
funzioni base
aiutare
e tetto,

assumere
il calcolo

che
matematico

la ricorrenza sia
pu
definita
diventare

solo
Ign
l
pu
sulla

intero
potenza
k, la funzione
esatta di un

base
numero.

avrebbe
Nell esempio,

potuto essere
se si fosse

comodamente
assunto

omessa.
che n 4 per

Sfortunatamente,
qualche
- - /
- X /
-
/ S /
L
mostrare il limite Tn On esclusivamente esatte di 4 tecnicamente un uo / X /
I
/ /

per potenze
improprio della notazione O. La definizione di notazione asintotjca richiede che i limiti siano
provati per qualunque intero sufficientemente non solo le potenze di 4. Si vedr
grande, per
nel Paragnfo 4.3 che per una ampia classe di ricorrenze, aspetti tecnici essere
oi.i. o .
questi possono
superati. analisi d
Il Problema 4-5 illustra a cune condizioni valendo le quali l sulle -.
potenze Tn p arte a
di ricorsione la ricorren.a
esatte di un intero essere estesa a tutti interi. F 4.1 C stru.io,re di un albero per
pu gli

ha alte- a Ign ha Ign l livelli .


espanso completarnehte stella parte d

Alberi di rirorsione

di un fattore costante dal termine pi


il valore totale differisce, al pi,
geometricamente,
Un albero di ricursione un modo comodn di visualizzare ci che accade si itera una la soluzione 8 n- .
quando grande il primo , quindi
ricorrenza, e che aiutare a organizzare l albero di ricorsione per la ricorrenza
pu la gestione algebrica necessaria a risolvere la 4.2 mostra un altm esempio pi intricato,
La fimra
ricorrenza. utile in special modo la ricorrenza
quando descrive un algoritmo divide-et
impera. T n/3 T 2n/3 n .
La figura 4.1 mostra la derivazione dell albero di ricorsione Tn
per si
e tetto sono omesse per semplicit. Quando
in caso le funzioni base
Tn 2T n/2 n Anche questo Il
livello.
nei livelli dell albero di ricorsione, si h un valorem p er ogni
ssommano
mm i valori
- ... al. Poich
Per comodit. ci assuma che n sia una esatta . La radice a11a foglia n 213 n 2/3 -n
potenza di parte a della fi cura mostra Tn, cammino lungo dalla
pi
che n. Quindi la soluzione della ricorrenza
nella patte b statu espai1sa in un albero equivalente che rappresenta la ricnrrenza. Il log l altezza dell albero log,
2/3 n 1 per /i n,
termine n- la rallice l etichettavi livello
primo di ricorsione . e i due sottoalberi sono le de al pi n log, n On Ign .
ricorrenze T n/2 . La mostra lo
p irte c stesso processo portato avanti di un p 1SSO
espandendo T n/2 . L etichetta dei due nodi al secondo di ricorsinne
livello n/2 - . Si
Esercizi

ricorrenza, finch l un raggiunt i cmu cnndizione superiore lnricorren-


al contorno. La parte d1 moitra l ilbcrn buon limite asintotico per
42-I Determinare tramite l itcrazioneun
risultanle.
7B vii r lnlzJ r.
Per valutare la ricorrenzw si sommuno i valori su ogni livello deil albero. Il livelhi
primo
T iil3 T 2nl3 n
dell ricvrrenza Tn
4.2-2 Dedurre cl e la soluzione
h, come valore n/4 - l4 - n/4 - n/4 -- n-/4 e cosi via. Pnich il,.al rc dicr .,ie li ricorsione.
n 1pil utilizzando un albero
e SP
58 Capitolo 4 Rico rren

n
Il teorema principale

dipende dal seguente teorema.


n Il -- - Il metodo principale
il n
3 3

Qe Teorema 4.1 Teorema principale


n
I
n 2n 2ll 4n definito sugli interi non
n una funzione, e Tn sia
Siano a l e b 1 costanti e f n
9 9 9 9

/ negativi dalla ricorrenza


/ / /
/ / 1
Tn aT n jb fn,
essere asintoticamente limitato
o I n/b I. Allora T ii pu
dove n/b rappresenta Lnlbj
Totale On Jg n
come segue.
.
Figura 4.2 Un albero di ricorsione 0, allora Tn 8n
per la ricorren a Tr T n/3 T 2nl3 n. costante e
1. Se fn O per qualche

8 nlog,a aQpga 9 no algn .


2, 5 fn
4.2-3 e 0, e se af nlb cf n per qualche
Tracciare l albero di ricorsione Tn 4T Lnl2J n e fornire limiti Qn costante
per asintotici 3. Se f n per qualche
allora Tn Of n .
stretti per la soluzione. c l e per ogni n suft iientemente grande,
costante

di capire che cosa


4. -4
Usare l iterazione a qualche esempio, cercheremo
per risolvere la ricorrenza Tn T n-a Ta n, dove di applicare il teorema principale
Prima
con la funzione no , . 1ntuitivamente.
a 1 una costante. tre casi si confronta la funzione fn
dice. In ognuno dei
I funzioni. Se, come nel
dalla tra le due
della ricorrenza determinata pi grande
la soluzione

42-5 UsareunalberodiricorsioneperrisolverelaricorrenzaT n T nn T 1 n n.
dove n una costante nell intervallo 0 a l. logaritmico. e la
si cnoltiplica un fattore
hanno 1a stessa per
2, le due funzioni grandezza,
8n . i, lp, 8f n Ign .
soluzione Tn
tecnici. Nel caso,
comprendere al cuni aspetti primo
4.3 II metodo intuitivo, bisogna
principale l Oltre questo
concetto

costante c 0.
di n - i un fattore di n per qualche
ricettario deve essere asintoticamente pib piccola per
Questo metodo fornisce un a pprocci o tipo - ,, ma deve esserlo in modo
per risolvere le ricorrenze della forma essere di ,
terzo caso, non solo f o deve pi grande
Nel
Tn aT n/b fn, 4.5 limitate
nmggior delle funzioni polinomialmente
condizione soddisfatta dalla parte
dove n l e b I sono co tanti e f ir una funzione Questa
asintoticamente Il metodo
positiva.
richiede di ricordare a memoria che si incontreranno.
t r e casi,. , th la soluzione di ntolte ricorrenze essere
. sere tra i casi
pu i tutte le possibilit per fn
che i tre casi non cnmprendonn
determinata molto facilmente, spesso senza carta e penna. importante sottolineare

La ricorrenza 4.5 descrive il teinpo di esecuzione di un algnritmo non in modo


che divide un problema pi di n ma
, , vi un intervallo tra i crei 2 e 3 in cui f ii grande
di dimensione n in a sotto Analogamente.
p roba- lcllll, OQtlllI10 di dimensione n/b, dove a e l .
sono o costanti
cos zn i
. ,
positive. Gli a sotto r b. ., n risolvere la ricorrenza.
empo n cn to non essere usato per
3 non soddisfatta. i 1 metodn principale puo
del caio

l, . ,,
11 l1 Il . Per esempio Ia ricorren-
za originata -,
dalla procedura McRc z-Sn -r h a, 2,1 efin u nu.
f i Usn del metodn principale
Nel rispetto della correttezza tecnicu. la ricorrenza h
in effetti n n b d f
ve n del
n1b caso se
potrebbe non essere un intero. Tuttuv , la iostituzione di si determina semplicemente quale
ognuno cteali a tertnini Per usare il metodo principale.
T I L J T, n/lr , riip it .
n i1 ini1uiice sul cuniportamcntn asintotico dcll,t ii q plic i c ii scrive
teureina principale
ricorrenza. Sarh mostrato nel rossimn p ,r,grafo. In condizioni normali i como,l ,. consideri
Come esempio si
dunque. omettere le funzioni - - prim i
baie e tetLO
o qu indo
eo si
... .serivoi n ricorrenze --
divide-et-il11p -
p l I
pie
di questa forma. 9T n/3 n .
Tn
Ricorrenze
dE

Per questa ricorrenza, si ha a 9, b 3 e fn n, e quindi n4 n 8 n- . Poich


4.4 Dimostrazione del teorema principale
fn O no , dove e 1, si pu applicare il caso 1 del teorema principale e concludere
che la soluzione Tn O n- .
del teorema principale Teorema 4. l per i lettori
Questo paragrafo contiene la dimostrazione
Si consideri ora
comprendere la dimostrazione per applicare il teorema.
Non necessario
pi interessati. principale
Tn T 2n/3 l, la ricorrenza 4.5 ,
La dimostrazione consiste di due parti. La prima analizza
esatte di b 1, cio per n l,
in cui a 1, b 312 f n 1 e n o4 n o4- n 1. Poich fn 8 n o4 81, si applica assumendo semplicit che T n sia definita solo su potenze
per il
il caso 2 e quindi la soluzione della tutti i concetti intuitivi necessari a comprendere perch
ricorrenza Tn 0 lgn . b, b- , ... questa parte fornisce
l analisi essere estesa a tutti gli interi
Per la ricorrenza teorema vero. La seconda parte mostra come possa
n positivi e consiste semplicemente nell applicazione di tecnica matematica per gestire base
Tn 3T n/4 n 1gn,
e tetto.
si ha a 3, b
4, f n n 1gn e n o , n o-. O no. . Poicpf n n e. - g v g p.o In questo talvolta la notazione asintotica sar usata in modo leggermente
paragrafo,
si applicail caso 3 se si riesce a dimostrare che la condizione di regolarit su f n soddisfatta. di funzioni che sono definite solo su potenze
il comportamento
improprio per descrivere
Per n sufficientemente af n/b 3 n/4 lg nl4 Ign cf n di notazione asintotica richiedono che i limiti siano
grande, 314 n con esatte di b. Si ricorda che le definizioni
c 314. Di conseguenza, dal caso 3, la soluzione della ricorrenza Tn O ir 1gn . e non solo per le potenze di b. Dato che
dimostrati per tutti i numeri sufficientemente grandi,
asintotica che si applica all insieme b i 0, l.... ,
Il metodo principale non applicabile alla ricorrenza si potrebbe definire una nuova notazione
uso improprio non grave.
invece che a interi non negativi, questo
Tn 2T n/2 n 1g n,
si usa la notazione asintotica su un
Tuttavia, bisogna sempre fare attenzione quando
anche se presenta una forma appropriata a 2, b 2, f n n 1gn e n - - n. Poich scorrette. Per esempio. la dimostrazione che
dominio limitato per non trarre conclusioni
n Ign asintoticamente che T n O n , infatti la
fn pi grande di n b n, sembra che si possa applicare il caso 3,
Tn On n una potenza esatta di 2 non garantisce
quando
manonpossibileperchnonloinmodopolinomiale.Ilrapportof n ln , nlgh ln Ign
funzione essere definita cosi
potrebbe
asintoticamente minore di n per qualunque costante e positiva. Conseguentemente. ia
ricorrenza ricade nell intervallo tra il caso 2 e il caso fn n 1,2,4,8,...,
3. Si veda l Esercizio 4.4-2 per una
soluzione . $n- altrimenti,

che possa essere dimostrato Tn O n- . A causa


nel qual caso il miglior limite superiore
la notazione asintotica su domini
di drastiche conseguenze di questo tipo, non sar mai usata
Esercizi
che sia assolutamente chiaro dal contesto che lo si sta facendo.
limitati senza

4.3-I Usare il metodo dare un limite asintotico stretto alle seguenti


principale per
4.4.1 Dimostrazione potenze esatte
ricorrenze per

a. Tn 4T n/2 n.
analizza la ricorrenza 45.5
del teorema principale
b. Tn
La prima parte della dimostrazione principale
4T n/2 n .
Tn aT n/b fn,
Tn 4T n/2 n.
1, dove b non deve necessariamente essere
sotto che n sia una potenza
l ipotesi esatta di f
riduce il problema di risolvere la
un intero. L analisi si articola in tre lemnai il primo
4.3-2 Il te mpo di esecuzione di un algoritmo A descritto dalla ricorrenza che contiene una sommatoria
al problema di valutare un espressione
Tn 7 T n/2 n -. ricorrenza principale
il terzo lemma mette insieme i primi
il secondo determina i limiti su questa son matoria
Un,altro algoritmo A ha un tempo di esecuzione di T n nel caso in cui n sia una potenza
aT n/4 n- Qual il una versione del teorema principale
due per dimostrate
pi grande valore intero di a tale che A sia asintoticamente
pi veloce di A esatta di b.

42-3 Usare il mea odo principale per mostrare che la soluzione della ricorrenza
Tn T e/2 8- 1 della ricerca binaria si veda l Esercizio 1.3-5 T n O lg n .
Letttma 4.2

non negativa definita su potenze esatte


a l e b 1 due costanti e f n una funzione
Siano
4.3-4 Considerata la condi Tn su potenze esatte di b con la ricvrrenza
ione di regolarit e f n/b cf n per qualche costante r I. di h e si detmisca
che prevista nel caso , -
P aso 3 ald- teorema si dia un esempio
. di una semplice
s
principale, ic
funzione del se n l,
f n che soddisfi
sod tutte le condizioni f 81
caso 3 del teorema princip ile b
eccetto la condizione fn se n
di regolarit. aT n/b
Ricorren e 63
62 Capiioh 4

-- ----- ---- -------- -- - --- -- -i


fn fn
dove i un intero positivo allora

log n-I

Tn 8n a f n/b .
g 4.6
j0

Dimostrazione. Iterando la ricorrenza si ottiene


log n f n/b f n/b f n/b
----- i a f n/b

Tn f n aT n/b

fn a f n/b a-T n/b -


I I I I I l I
A4 0 I
r
I
I l I

r I I I l I I I I

fn a f n/b a- f n/b-
I I n
y loS n f $loS n- y loEo p

Y 01 81 01 01 01 OI 01 01 81 01 81 0 1 .... Il,. O II
Poich a- n- , usando la condizione al contorno T1 81, l ultimo termine del

l espressione dii enta


log a
fl
n a lago n-I
log p g log
Totale., Oz a f n/b
g
I restanti termini possono essere espressi con la sommatoria j0

nlben albero
ag n-i Figura 4.3 L di ricorsio ie la ricorren a Tn aT nlb f n. L a-ario
ge erato per
coi rpleto con n e alte a log i. Il casro di ogni lii elio n ostraro sulla destra, e la sonimn
a foglie
f n/b
dei costi clara nell equa ione 4.6 ,
pQ

da cui deriva
In un algoritmo divide-et-impera, somma rappresenta il costo della suddivisione del
questa
dog n- i in sottoproblemi e della loro ricombinazione. Il costo di tutte le foglie, che il costo
prnblema
di tutti n - i, sottoproblemi di dimensione l, 8u i,
p p p f /7/g , gli .
g
j0
In termini di albero di ricorsione, i tre casi del teorema principale comspondono ai casi in

che completa la dimostrazione. cui il costo totale dell albero 1 dominato dal costo delle foglie, 2 parimenti distribuito

su tutti i livelli dell albero, 3 dominato dal costo della radice.

L albero di ricorsione La sommatoria nell equazione 4.6 descrive il costo dei passi di divisione e ricombi nazione

di un algoritmo divide-et-impera. 11 prossimo lemma fornisce i limiti asintotici sulla crescita

della sommatoria.
Prima di proseguire, cercheremo di giustificare intuitivamente la dimostrazione precedente
usando un albero di ricorsione. La Fig.4.3 nsostra l albero corrispondente all iterazione della

ricorrenza nel Lemma 42. La radice dell albero ha costo fn, ed ha a tigli. ognuno con costo
Lemma 4.3
f n/b . Conviene ad a come ad un numero intero, specialmente quando si utilizza
pensare
l albero di ricorsione, anche se da un punto di vieta matematico ci non richiesto . Ognuno Siano a l e b I due costanti e f una funzione non negativa definita su esatte
ir potenze
di questi fioli ha a sua volta a figli con costo f ir/Ir , quindi ci sono a- nodi a distanza 2 dalla di 1. Una fuhzione g n . definita su esatte di b nel mo seguente.
potino
radice.1n generale. vi sono a nodi a distanza j della radice. ed ognuno ha costo f tlb . Il costu

di ogni foglia T1 81. e o ni toglia distante log n dalla radice, ii/I 1. lOg II I
poich
Nell albero vi sono a i i fo lie. s f n/b 4.7
g
g0
Si ottenere l equazione 4.6 sommando i costi di o ni livello dell slbero, CAI1V.
pu
tot l e di i Casere limitata asintoticamente esatte di b cnnii.- serque.
mostrlto tle111 tlglltQ. tl CostO Jet Ilc Cli itltertli del 1i veli 1 j i af Ir/h . C Cfuillcti ll pUil per pnie vre

costi su tutti i livelli di nodi interni

log n- l

a f n/b .

j0
Rico nenze 5

1. Se f n On4 costante e 0, allora


per qualche gn On4 Sostituendo espressione alla sommatoria nell equazione 4.9 si ottiene
questa
2. Se f n On- , allora 86 g n
gn
gn 9n log n
3. Seaf n/b cf n costante c l e perogni
perqualche n b, allora gn Ofn . n 1gn ,

Dimostrazione. Per il caso 1, si ha f n On o,- , che implica f v O nlb o , e il caso 2 dimostrato.


.
Sostituendo nell equazione 4.7 si ottiene
Il caso 3 viene dimostrato analogamente. Poich f n compare nella definizione 4.7 di g i

gn O a, c l e per ogni n b, si
g esatte di b. Sotto l ipotesi che af n/b cf n per qualche costante
4.
ha a f n/b cf n.
Esplicitiamo la sommatoria interna alla notazione O portando fuori una serie ma
un fattore, semplificando Sostituendo nell equazione 4.7 e semplificando si ottiene geometrica,
e calcolando la serie geometrica crescente ottenuta decrescenti
diversamente dalIa serie del caso 1, questa ha termini

-, IOgp
d t
s,
log n-

g,
I

f ,l
j0
logn n- I iole n- l
log a-e
c fn
jG

. log,, a-e

- fn g
c

n
log a-e - j0

fn

Poich ofn ,
b ed e sono costanti, l ultima espressione si riduce a On
r i On .
Sostituendo questa espressione alla sommatoria nell equazione 4.8 si ottiene
c una costante. Di qui si puo concludere che g n 8f n per potenze esatte di b.
poich
gn On dimostrazione del caso 3 completa la dimostrazione del lemma.
Questa

e il caso 1 dimostrato.
Possiamo ora dimostrare una versione del teorema principale p er il caso in cui n una
Sotto l ipotesi che f r, 8n 4 -,,
per il caso 2, si ottiene che f n/b O n/b . potenza esatta di b,
Sostituendo nell equazione 4.7 si ha

Lemmu 4.4

fin 8 a, su potenze
Siano a l e h I due costanti e f n una funzione non negativa definita
g 4.9
,g
esatte di b e si definisca Tn su potenze esatte di b con la ricorrenza

S limita la sonunatoria dentro il 8 come nel caso 1. ma questa vofta non si ottiene una serie
anzi si scopre
feti n l,
geometrica, che ogni termine della sornmatoria lo stesso b,
fn n
aT n/b

dog n-I
log n- I
dove i un intero positivo. Allora Tn puci essere limitato asintoticamente per potenze
E , z es atte di b cnme segue.
j0
Q
jg gIOgp
On , cnstante e 0, nllnra Tn
log e-I I. Se fn per qualche
u
p 6 l
Se 8n , aIIora Tn 6n 1gn .
Jn
g0

3. Sc.f n Qn costante e 0, e se af n/b cf n per qualche


n log , n . per qu ,1che
, -
ii
OZI-Jll. d, C... allora Tn O fbt .
cCOS. .,llltC eC. C I t..
pCI
O Ill 11 SUIT1CIClllCI11CAlC

giro

Dimostrazione. Useremo i limiti stabiliti dal lemma 4.3 per valutare la sommatoria 4.6 del
lemma 4.2. Per il caso il numero di iterazioni nil talech
l a sia
1, si ha Il primo obiettivo di determinare

la disuguaglianza I x1 .x 1, si ottiene
Tn 8n 0n

,
8n
n n,

n
e per il caso 2 n, l,

n l
Q o ,
z n g n Ogb El ni a g n np
b 1,

8 n b Ign . n l l

b b b
Perilcaso3,lacondizioneaf nlb cf n implicachef n Q noti. vedal Esercizio
Si
4.4-3 . Di conseguenza

7- g lag a gfg In generale,

f -

n,

4.4.Z Base e tetto j0

n b

bi b 1
Per completare la dimostrazione del teorema
principale, si deve estendere l analisi alla
situazione in cui nella ricorrenza n b bl f 1 01.
principale sono usati base e tetto, in modo che la ricorrenza e quindi, quando i Llog,n J, si ottiene
sia definita su tutti interi e non solo
gli su potenze esatte di b. Un limite inferiore
per ottenendo
Si pu ora iterare la ricorrenza 4.10 ,
Tn aT fn/b
fn 4.10

e un limite superiore Tn f nq aT n
per

a fn a T nq
f nq
Tn aT n/bJ
fn 4.11
a fn a- f n,
f np
si ottengono in modo semplice infatti, Tn
per ottenere il risultato desiderato, si pu usare il limite a f n jog n-
a
jiog nj

t nlb1 zr/b nel primo caso e il limite n/h


Lnlbj nel secondo. Limitare inferiormente la ogb n 4.13
ricorrenza 4.11 richiede tecniche a ialoghe a quelle la limitazione superiore della a
per 8 rt
g
f n, ,
ricomnza 4.10 , cosi sar presentato solo quest ultimo limite. j0

Si itera la ricorrenza 4.10 , come fatto


gi per il lemma 4.2 si ottiene una sequenza di intero e non
doveve er n puu es
essere un qualunque
applicazioni ricorsive sugli argomenti cche e molto simile all equazione 4.6.,, per
seguenti
soltanto una potenza esatta di b.

n,
Si ora valutare la sommatoria
pu
f /b1,
i
Ifn/bll 1, tog n -

f 4.l4
tfr /b1/b1zb1, sn g
i-o

dimostraziune del lemma 4.3.


dalla in modo analo ao a11a
4.l

Si denoti l i-esimo bl b 1 ,dovec l unacostante,


elemento della sequei z con n, dove n ern b

u n i
n se i 0, sesiriei
eriliaso iihaf n
n i/b sc i 0 . 4.l2 llorollprovidelcaso2dellemma t .I11111il . an
ill bI
lKl O l l ,
cchef ne O ll i ll Il 2 J
Ricorrenze 59

Tn 7T n/3 n.
osservi che j Llog nJ implica b ln 1. Il limite Ono, implica
fn che esiste una
costante e 0 tale che n sufficientemente vale e. 7T n/2 n -.
per grande, Tn

Tn 2T n/4 n.
f.
lOQQ
g

c . 1 n.
fn g Tn Tn
bi b 1
. - h. Tn T n l.

.. .- 4-2 Trovare / iirtero mancante

determinare
.. Un
i intero
array Al

mancante
.. n

in
contiene
tempo
tutti

On
gli
usando
interi da

uv
0 a n tranne

array ausiliario
uno.
8 0.
Sarebbe
n per
facile
registrare quali

non si pu accedere a un intero elemento di


numeri appaiono in A. In questo problema, per,
di A sono rappresentati in binario. e la soIa
A con una singola operazione, infatti gli elementi
prendi che richiede un tempo
accedervi il j-esimo bit di A i ,
infatti c1 h b 1 4 una costante operazione permessa per
quindi il caso 2 dimostrato. La del caso 1
prova
quasi identica. La chiave di dimostrare il limite costante.
fn On con una prova simile a intero
si pu ancora determinare l mancante
quella del comspondente caso 2, malgrado i calcoli algebrici Mostrare che se si usa solo questa operazione,
siano pi complicati.
in tempo On.
Sono stati cosi dimostrati i limiti superiori del teorema principale per qualunque intero n.
Per i limiti inferiori la dimostrazione analoga.

4-3 Cost del passaggio dei parametri

dei durante le chiamate di procedure


In tutto il libro, si assume che il passaggio parametri
Esercizi
un array di N elementi. Quest ipotesi valida
richieda tempo costante, anche se stato passato
un all array e non l array stesso.
in molti sistemi in realt viene passato puntatore
perch
di tre strategie di passaggio di parametri
4.4-1 Dare un espressione semplice esamina le implicazioni
e precisa n, de11 equazione i caso in Questo problema
per 4.12 per
cui b sia un intero invece che un
positivo qualunque numero reale. il suo Tempo richiesto 81.
1. Un array passato tramite puntatore.

richiesto 8 iV , dove W la dimensione dell array.


4.4-2 2. Un array passato valore. Tempo
Mostrare che se f 8n Ig n , dove per
n k 0, allora la ricorrenza ha
principale
come soluzione Te o passato
8n g n. Per semplicit, limitarsi all analisi di poten- essere necessario alla procedura chiamata per
3. Solo il sottoarray che potrebbe
ze esatte di b. .. la porzione di array passata.
valore. Tempo richiesto Oq p 1 dove Ap q

trovare un numero in un array


* a. Considerare l algoritmo di ricerca binaria ricorsiva per
4.4-3 Mostrare che le ipotesi del caso 3 del teorema della
principale sono eccessive, nel senso Dare le ricorrenze del tempo di esecuzione
ordinato si veda l Esercizio 1.3-5 .
che la condizione di regolarit af cf dei tre
n/b n per qualche costante c l, implica arniy sono usando ognuno
ricerca binaria nel caso peggiore quando gli passati
che esiste una costante e 0 tale che Q ,
f n . alle soluzioni delle ricorrenze. Indicare
metodi descritti e dare buoni limitai superiori
prima
originale e con n la dimensione di un sottoproblema.
con N la dimensione del problema

l algoritmo MEac -Soet del 1.3.1.


Problemi b. Ripetere la parte a per
paragrafo

4-I Esempi di ricorrenze Altri esempi di ricorrenze


4-4
Dare limiti inferiori e superiori Tn ric orrenze, assumendo che Tn sia
per per ognuna delle seguenti ricorrenze, assumendo che limiti inferiori e superiori ognuna delle seguenti
Dare per
Tn sia costante n 2. Definire i linsiti e giustificare le risposte.
per piit stretti possibile e giustificare le risposte. costante rr 8. Definire i limiti pi stretti pnssibile
per

a. Tn 2T n/2 n .
a. Tn 3T n/-l n Ig 11.

b. Tn T 9n/10 n.
b. 7 t 37 5 n/ .
n/3
c. Tn 16T n/4 n .
70 Capitolo 4
Ricorren e 7I

c. Tn 2T n/2 n/1gn.

d. Tn Tn I I/r .
i Ks -0.61803....
2
e. Tn Tn 1 Ig n.

c. Mostrare che
f Tn /n T n n.

i i i
Pz $ p z
4-5 Estensione dalle g
potenze di un intero a tutti i reali
,o
Spesso si riesce a limitare una ricorrenza Tn esatte di una costante intera b.
per potenze vicino.
d Dimostrare che F, i 0, arrotondato all intero pi Suggerimento
Questo fornisce condizioni sufficienti estendere il limite a tutti i reali n 0. qV/d5 per
problema per
a. Siano T ii e hn due funzioni monotone crescenti, e si supponga che Tn hn quando
n una lentamente
potenza esatta di una costante b 1. Si supponga inoltre che hn sia
e. Dimostrare che F, p per i 0.
crescente nel senso che hn O h n/b . Provare che Tn Ohn .

b. Si supponga di avere la ricorrenza Tn aT nlb dove a 1, b 1 e f


f n, n
monotona crescente. Supporre inoltre che le condizioni iniziali siano date da Tn gn 4-7 Controllo di chip VLSI
per n n,, dove gn monotona crescente e g a T n/b . Dimostrare che T ii
fn
VLSI che in linea di principio sono in grado di controllarsi
monotona crescente. Il professor Diogene ha chip
verifica due chip alla volta. Quando il
l un l altro. Il dispositivo di controllo del professore
c. Semplificare la dimostrazione del teorema caso in cuif n sia monotona
principale perii se buono o guasto. Un chip buono
lentamente . dispositivo attivato, ogni chip verifica l altro e comunica
e crescente Usare il lemma 4.4.
chip funzionante o guasto. ma la risposta di un
comunica sempre in modo sicuro se l altro
le quattro risposte risultanti da un
chip non essere affidabile. Pertanto. possibili
guasto pu
4- Numeri di Fibonacci
controllo sono le seguenti

Questo problema considera alcune propriet dei numeri di Fibonacci, che sono definiti dalla
ricorrenza 2.13 . Si user la tecnica delle funzioni risolvere la ricorrenza di
generatrici per
Fibonacci. La funzione generatrice o serie di potenze F definita come
fonnaEi Il chi A dice Il chi B dice Conclusioni

Entrambi sono funzionanti, o entrambi sono guasti


i B funzionante A funzionante
Fz F
i0
8 funzionante A guasto almeno uno guasto
0 z z- Z, 3z Sz 8. 13 , 21z ...
B guasto A funzionante almeno uno guasto

a. Mostrare che Fz z Fz z F .
B guasto A guasto almeno uno guasto

b. Mostrare che

z non inconfutabiln1enw,
- 1
a. Mostrare che se pi di n/2 chip sono guasti. il professore pu
una strategia basata su questo tipo
determinare sono i funzionanti usando qualunque
Z
quali
cospirare imbrogliare il
di controllo a coppie. Assumere che i chip guasti possano per
l pz 1 p

, . professore.

- b. Considerare

di n/2 siano
il problema
fut zionanti.
di trovare

Mostrare
un singolo

cheLnl2J
chip

controlli
funzionante
a coppie
trai

sono
chip, assumendo

sufficienti a ridurre
che

pi
il probli.ma ad uno di dimensione pressoch dimezzata.
dove

identificati cnn 8n controlli a coppie,


c. Mostrare che i chip funzionanti essere
possoiso
i vs D ire e risolvere la ricorrenza che descrive il
4 1.61803... assumendo che di iil2 sono funzionanti.
pi
2
numern di cotstrolli.

e
Note al capitolo

Le ricorrenze furono studiate fin dsI 1202 da L. Fb d I l e i numeri di Fibonacci


hhanno ppreso il nome. .. A. De M
Moivre introdusse il metodo delle funzioni eneratri 8 d
I P ob1 4-6- per 1...risolvere
o.. le ricorrenze. Il metodo adattato d B 1 Hak
principale
J, C e Ofrliscono il metodo esteso llell Esercizlo 4.4-2. Kll h
presentato 121
mostrano come risolvere le ricorrenze lineari usando il metodo delle funzioni

generatrici. Il lavoro di Purdom e Brown 164 contiene una discussione estesa sulla
risoIuzione delle ricorrenze.

capitolo una
sono stati introdotti elementi di analisi. Questo presenta
Nei capitoli precedenti
elementari di insiemi, relazioni, funzioni,
delle definizioni, notazioni e proprieth
panoramica
materiale limitarsi a sfogliare il capitolo.
ed alberi. Il lettore gi preparato su questo pu
grafi

5.1 Insiemi

chiamati membri o elementi. Se un


Un insieme una collezione di oggeni distinguibili,
x di S , o pi
insieme S. si scrive x e 5 si legge k un elemento
oggetto x un elemento di un
di 5, si seri ve e S. Si pu descrivere un insieme
brevemente, x in 5 sere non un elemento
esempio, un
l esplicito elenco dei suoi elementi scritti tra parentesi graffe per
attraverso
essere definito scrivendo S l, 2,
insieme S che contiene esattamente i numeri l, 2 e 3. pu
2 c S, e dato che 4 non un elemento
3. Inoltre, dato che 2 un elemento di S. ci puo scrivere
lo stesso oggetto di una volta ed
di S si pu scrivere 4 e S. Un insieme non pu6 contenere pi
uguali se essi contengono gli stessi
i suoi elementi non sono ordinati. Due insiemi A e B sono
l, 2, 3, 1 2, 3 3, 2, l .
elementi in tal caso si scrive A B per esempio, 1,

alcuni insiemi che saranno usati pi


Nel libro si adottano le seguenti notazioni speciali per

frequentemente

l insieme he non contiene alcun elemento.


denota l insieme vuoto, cio
-2,-1, 0, l, 2, ... .
X denota l insieme degli interi, cio l insieme ...,

R denota l insieme dei numeri reali.


.
naturali, cio l insieme 0, l, 2, ...
N denota l insieme dei numeri

in un insieme 8, cio. se x c A implica


Se tutti elementi di un insieme A sono contenuti
gli
di B un insieme A u
xe B, allora si scrive A c B e si dice che A un sotto insieme
w B. autori usano il simbolo
sottoinsieme di 8, scritto A c B. se A c B mA Alcuni
proprio
c me, che la relazione di sottoinsieme proprio .
la relazione di sottoinsie
per indicare piuttosto
Bsee solo seA c B e BcA
Perogni insiemeA valeAaA due insiemi A e B, siha4
per
ogni insieme A si ha che 8 A.
tre insiemi A, Be C. se A c Be B c C, allora A c C per
per
un insieme A, si pu definire un
descrivere insiemi mediante altri insiemi dato
Si pnssono
elementi di 8. Per esempio. si pu
B c A stabilendo una che invii idui gli
insieme propriet, i
Z e x/2 un intero in questa notazione
definire l insieme dei nunteri interi con v .r z
pari .
tale . harra verticale al dei
letti cnme che Alnwsi uiuri usann ima pn to
i sono

iemhra csccre i iniziare


1 aniicbi con . l.a lemki1zu m wlerm quella
Alcuni autori iniziano i nu i eri noiunli m

I. CIA 0.
Insiemi e a ni 75

Cdpil gap j

Dati due insiemi A e B si oss ono definire nuovi insiemi anche applicando I e seguenti
operazioni su insiemi

Q QQ QC
L intersezione degli insiemi A e B l insieme

A n 8 .r x e A e x e B .
unione
Lu degli insiemi A e 8 l insieme
A- Br C A-8 u A-C
AuB A 8nC
x .rc Aoxc 8.
insieme A,
La d ff eren la legge di DeMorgan 5.2 .Ciascan
a tra due insiemi A e B l insieme Figura 5.1 Un diagramma di Venn che illustra prima

e C rappresenrato nel con nn cerchio.


8 pinno

Le operazioni sugli insiemi rispettano le seguenti o leggi.


propriet
A A,
Propriet dell insieme vuoto
AnA 8,
An8 ,
AuA U.
Au A.
i complementi ogni coppia di
essere riscritte con per
Le leggi di DeMorgan 5.2 possono
Idempotenza.
insiemi A. B c U. si ha
A nA A.
AnB Au8,
AuA A.
Av B A B.
Commutativit 8.
DueinsiemiAeBsonodisgiunti senonhannoalcunelementoincomune.cio.seAnB
AnB BnA, S e
forma ana di un insieme
collezione S di insiemi non vuoti, partizione
Una S
A u B BuA.
e e i c j implica 5 a 5 , e
ono n coppie disgiunti. cio. S. S 8
gli insiemi
Associativit
la loro unione S. cio
A n Bn C A nB n C,

A v B v C A u B u C.
s ps,
S,gS
Distributivit. esattamente in un
di S se ciascun elemento di S appare
ln altre S forma una partizione
parole
A n B u C A n 8 ,u A n C , S c S.
Au BnC AuB n Avg. dell insieme
5. l degli elementi di un insieme chiamato cardinalit o dimensione
Il numero
se i loro elementi possono essere
Assorbimento da insiemi hanno la stessa cardinalit
e denotato AS . Due
vuoto 0. Se la
la cardinalit dell insieme 8
A nA u B A, messi in corrispondenza biunivoca.
si dice altrimenti si dice
un numero naturale, allora l insieme finito,
A u cardinalith di un insieme
A n 8 A. con l insieme
essere messo in corrispondenza biunivoca
infu itn. Un insieme infinito che puo
Leggi di DeMorgan si dice non stainerabile. Per
si dice inferito rumerabile, altrimenti
N dei numeri naturali,
A n C l insieme R dei reali non numerabile.
B A B u A C, Z degli interi numenbile, mentre
esempio. l in ieme
A B u C A B n A C. uniti, vale l identith
Per ogni coppia A e B di insiemi

p i DeViorgan illustrata nella figura 5.1. usando


B un dia P B 5.3
-A n B,
-. A u B A 8
cmga
eG f..iva ne l qquale
1la gliliinsiemisonoraftieuraticomere
i i i on i d e I piano.
,, da cui si pu concludere che
S p, esso,e insiemi che si stanno ..
-gli considera r.n d osnnosottoinsie
. . DB B Up B
B rso D 8
per esempio, se sistanno considerando ire,,n n u. ,,-o A u A B
insieme u8 Se A c8 allora
i, a ora n BA 0 e Al 8.
Z un universo a ro riato. Dat o un universo U. si defini. Se A e Buono dis iunti. allora A quindi A

i un insieme A come 1 U A ero-ni . n eA c U,.iihannc lese uenti ill iei chi 1111QLO
r-insieme un l-insieme
di n e1ementi chi amato talvolta
U1s insiell3e tinito
M lt0111Sieme k cleilldlltl i Chiamato k-sottoinsiente.
SlllgOIC EEO Ull di

vuoto e l iniiense S
iniicme l, inclusi l insiemc
di tutti i sottoin iemi di rn
L insieme
a di 5 ecempin. 2
da 2 ed chi nato f insieme poten per
iliiso. i denotato
un itliienle lillitO S ll,.l c,.lrJin..llitl
b L insienlc di
,8. c, . b. ,r. . potchla
Spesso si considerano strutture simili ad insiemi, nelle quali gli elementi sono ordinati
esempio, per 5.I- Mostrare che l insieme dei numeri dispari numerabile.
una coppia ordinata di due elementi a e b denotata con b e pu essere
a,
formalmente definita come l insieme a, b a, a, b la coppia ordinata a,
quindi b non
uguale alla coppia ordinata b, a. 5.1-5 Mosuare che, insieme S finito, 2 ha 2 clementi
per ogni l insieme potenza cio,
Il prodotto cartesiano di due insiemi A e B, denotato da Ax8, l insieme ci sono 2 sottoinsiemi distinti di S .
di tutte le coppie
ordinate tali che il primo elemento della coppia un elemento di A ed il secondo un elemento
di B formalmente
pi
5.1-6 Dare una definizione induttiva di n-upla, estendendo la definizione di coppia
A x B a, b a c A e b e 8.
ordinata fornita da11a teoria degli insiemi.
Peresempio, fa,b x a,b,c a,a , a,b , a,c , b,a , b,b , b,c .guandoAeBsono
insiemi finiti, la cardinalit deI loro prodotto cartesiano
gxa g - a 5.2 Relazioni
5.4
Il prodotto cartesiano di n insiemi A,, A ..., A l insieme di n-uple
A,xA,x ... xA Una rela--ione birraria R su due insiemi A e B un sottoinsieme del prodotto cartesiano A x B.
a,,a ,a a,.c A., i 1,2, ..., n,
la cui Se a, b e R, talvolta sar scritto a R b. Quando si dice che R una relazione binaria su A,
cardinalit
minore
si intende che R un sottoinsieme di A x A. Per esempio, la relazione di sui numeri
A, x A x ... x A,
jA, jA, .. fA
naturalil insieme a, b a, be N e a b. Unarelazionen-ariasugliinsiemiA,.A ..., A,
se tutti gli insiemi sono finiti. Si pu denotare il prodotto cartesiano ripetuto un sottoinsieme di A, X A X ... X A,
n volte di un
singolo insieme A con l insieme
Una relazione binaria R c A x A riflessiva se
A AxAx...xA,

la cui cardinalit a Ra
AA jAf se A finito. Una n-upla pu essere anche vista come una
sequenza finita di lunghezza n non lo
si veda il Paragrafo 5.3 . tutti a e A. Per esempio e sono relazioni riflessive su N, mentre
per gli
. La relazione R siininetrica se

Esercizi
a R b implica b R a

s A. Peresempio simmetrica,mentre e nonlosono. Larelazione


5.1-1 Disegnare pertutti glia.b
i diagrammi di Venn che illustrano la prima propriet distributiva R transitiva se
5.1 .

5.1-2 Dimostrare a R b e b R c implicano a R c


la generalizzazione delle leggi di DeMorgan collezione
per qualsiasi - ,
finita di insiemi tutti b, c e A. Per esempio, le relazioni e sono transitive, mentre la relazione
per glia,
R a, b a, b c N e a b 1 non lo , in quanto 3 R 4 e 4 R 5 non implicano 3 R 5.

A A
A A Una relazione che sia riflessive, simmetrica e transitiva una relazione di equivalenza. Per
A A
A

A,uA,v... uA A, vA,v... vA,

I insieme . h e A e a R b, cio I insieme di tutti elementi equivalenti ad a. Per


a h gli
5.1-3 Dimostrare la generalizzazione dell equazione che chiamato esempio, se si definisce R b a, b c N e a b un numero pari . allora R una
5,3 , principio di n,
inclusiosre ed eselusioire

ga Ch Q .5,7,...
iA,uA u...va i
gEIg
Un teorema base delle elevasi di equivalenza il seguente.
A,f A, . a
BIBLIOTECA
- A, aiA, ...
A, AA
g
CENTRALE f J per tutte le coppie a
Teorema 5.f Unn rela ione di eqscivatei coincide con rna purti ioide
P
J, aA na, ... per tutte le triple
insieme A

fA,nA,n...nA, . li
-I equivalenza su A in cui le classi di equivalenza sora insiemi della partizione.
Insiemi e a ni 79

Dimostruzione. Per la prima della dimostrazione si deve


parte mostrare che le classi Jj
5.2-3 pare esempi di relazioni che sono.
equivalenza di R sono non vuote, sono due a due disgiunte e la loro unione A. Dato che R
riflessiva, a s e quindi le classi a. riflessive e simmetriche ma non transitive,
a di equivalenza non sono vuote, inoltre, dato che ognj
elemento a e A appartiene alla classe di equivalenza e transitive ma non simmetriche,
a, l unione delle classi di equivalenza riflessive
A. Rimane da mostrare che le classi di equivalenza sono a coppie disgiunte, cio, se due c. simmetriche e transitive ma non riflessive.
classi di equivalenza e hanno un elemento c in comune,
a b allora esse sono di fatto lo
stesso insieme. Partendo da a R c e b R c, per simmetria e transitivith si ha che a R b, Dj di equivalenza su 5 x S. Verificare che
5.2-4 Sia 5 un insieme finito ed R una relazione
conseguenza,perogni c xRaimplicavRbepercib
genericoelementox a, aj a b. Nelln
antisimmetrica, allora le classi di equivalenza di R sono singoletti.
stesso modo si verifica che c R anche
b a per cui a b.

Per la seconda della dimostrazione, sia A una


parte A, partizione di A e si definisca e transitiva allora
5.2-5 Il professor Narciso afierma che se una relazione R simmetrica
R a, b esiste itaLechea e A eh c A sistabiliscecheRunarelazionedi equivalenza a R b implica
anche riflessiva. Egli d la seguente dimostrazione. per simmetria
su A. La riflessivit soddisfatta, dato che a e A implica a R a la simmetria soddisfate,
la transitivit implica a R a. La dimostrazione corretta
b R a, e quindi
perchsea R b,alloraaebsononellostessoinsiemeA,equindib R a sea R beh R c.allora
tutti e tre gli elementi sono nello stesso insieme e quindi a R c per cui anche la transitivit
soddisfatta. Per vedere che insiemi della sono classi
gli partizione di equivalenza di R. si
osservi
5.3 Funzioni
che se ac A alloraxe implica x c A, ex A implicaxc
n a. Il

binaria su A x B tale . p ertutti eli


Dati due insiemi A e B, una finzione f una relazione
Una relazione binaria R su un , A chiamato il dominio di
insieme A antisiimnetrica se a e A. . esiste uno e un solo b c B tale che a, b e f. . L insieme

di f. Talvolta si scrive A m 8 e. se a. b e f. si
8 chiamato il codosninio f
a R b e b Ra implicano a f e l insieme
b.
scrive b dato che b univocantente determinato con la scelta di a.
f a
Per esempio, la relazione sui numeri naturali elemento di A nessun
antisimmetrica in a b e b un elemento di 8 add ogni
quanto i n ui i,
Intuitivamente, la funzione f assegna
.
implicano che a b. Una relazione che sia riflessiva, sntisimmetrica elemento di 8 pu essere
e transitiva un ordisca- elemento di A assegnato a due distinti elementi di 8. ma lo stesso
mento parziale e l insieme su cui l ordinamento parziale definito si dice insieme assegnato a due distinti elementi di A. Per esempio la relazione binaria
parzialmeitte
ordinato. Per esempio, la relazione discendente di un ordinamento sull insieme di
parziale
tutte le persone se si considerano individui anche b . a c N e b a mod 2
gli come discendenti di se stessi . f a.
In un insieme A parzialmente ordinato, massinso ogni numero naturale a ch esattamente un solo
pu non esistere un singolo elemento,r . f f N m 0, l . dato che per
tale che y R x per tutti 1 0 ecc.
gli y c A ci saranno, invece, diversi elementi massimali.v tali che valore b in 0, l tale che b a mod 2. Per questo esempio 0 f 0, f 1. f -
per
nessun elemento y e A sf avr x R . Per esempio, in un insieme di scatole di dii ersa V iceversa, la relazione binaria
grandezza
ci potrebbero essere diverse scatole massimali che non entrano in nessun altra scatola e tuttavia
none una singola scatola massima a, b a c N e a b pari
in cui qualsiasi altrascatolapotrentrare. g

Un ordinamento sono entrambe in g di conseguenza. scegliendo


parziale A su un insieme A un ordinamento totale o ordinamento lineare non una funzione dato che l, 3 e l. 5
se per tutti a, b e A, si ha che a R b oh R a, cio c esattamente un unico b tale che b c
gli se ogni coppia di elementi di A pu essere a 1, non a, g.
messa in relazione secondo R. Per esempio, di f e b il valore di
la relazione totale sui numeri naturali. Data una funzione f A - B. se f a b si dice che a l argomento
discendente
mentre la relazione di non un ordinamento elemento del dominio.
totale sull insieme delle persone f in a. Si i pu definire una funzione specificando il suo valore p er ani
in quanto ci possono essere individui ,. . -, n E N.
che non discendono l uno dall altro. eresempio,
erede si potrebbe definire 2n
pern e N, che si unifica ff- n,2
fn
lo stesso dominio,
., lo
I stesso
. codominio e se, per tutte
Due e funzioni
u...- f e g sono uguali se hanno

Esercizi le a del dominio. f a ga.


d ominio l insieme 1, ....
Una sequen-a finita di lunghezza it una funzione f il cui 0,

si rappresenta una sequenza finita elencandn i .suoi valori f0. f 1 ....,


5.2-1 Provare che la relazione w n 1 .pspesso.s
di inclusione insiemistica su tutti i cot toinsierni di 7.
i l iniieme N dei numeri
un ordinamento ma non un ordinamento
parziale totale. ,
detrnita in 2.13
. . . q uenza
. la se intuita 0.
uro
naturali
na i per .
esempio. la ..sequenza di Fibonacci
al,
1. I. 2,3,5,8. 13, ... .
5.2-7 Mostrare che intero equivalente
per qualunque pnsitivo n, la relazione modulo i
un cart . .. .. so si omettono le
una relazione Quando il dominio di tm funzione f i prodotto p
di equivalenza sugli interi. Si dice che n b ie
mod ni eiiitc ir i B ii
iusef s f A XAX...XA
intero q tale che a-b In parent ii cchi racchiudoiw l iri umento i f per eieiupiu,
q . quali classi di equivalenza relarione
questa i . ,.e
interi .. scrive bf a.a,.....a . itivece
partiziotia gli
., . ,...,... il ar omento dif f -baia
cchi i,.ima
nato i nrgw rento clelia funzione f, bench tecnicamente .
sine lo -

la n-urla a,. a,...,. n .


gg. Capitolo 5 Ensiemi e a ni 81

Sef A m Bunafunzioneeb f a ,alloratalvoltasidicechebl immaginediasecondo il dominio ed il codominio sono L.


5.3-2 La funzione fx x l biunivoca quando
f I immagine di un insieme A c A secondo f definita da ed il codominio sono Z
biunivoca quando il dominio

f A b e 8 . b f a per qualche a c A .
l inversa di una relazione binaria. in modo tale
5.3 3 Dare una definizione naturale per
Il rango di f l immagine del suo dominio, cio f A. Per esempio, il rango della funzione
in realt una funzione biunivoca, allora la sua inversa
che. se una relazione
f W N definita da f n 2n f N m m 2n n c N .
per qualche
relazionale coincida con l inversa funzionale.
Una funzione surgettiva se il suo rango coincide con il suo codominio. Per esempio, la
funzione f n Lnl2J una funzione surgettiva da N a N, dato che ogni elemento di N ap-
come valore di f per argomento. 5.3-4 Dare una funzione biunivoca da Z a Z x Z.
pare qualche Viceversa, la funzione f n 2n non una
funzione surgettiva da N a N, dato che nessun argomento di f pu 3 come suo va-
produrre
lore. La funzione fn 2n , tuttavia, una funzione surgettiva dai numeri naturali ai numeri

pari. Una funzione surgettiva f A m B talvolta descritta come Wa comspondenza di A 5.4 Grafi
su B. Quando si dice che f su insieme, allora si intende che
qualche f k surgettiva.
Una funzione A m B iniettiva se ad argomenti orientati e non orientati. Il lettore trover che certe
f distinti di f corrispondono valori Questo presenta due tipi di grafi
paragrafo
iversi. cio, se a a implica cf a . Per da date in questo anche se.
fa esempio, la funzione fn 2n una definizioni in letteratura differiscono quelle paragrafo,
presenti
sono minime. Il paragrafo 23.1 mostra come i gr
per la maggior parte, queste differenze

essere rappresentati nella memoria di un calcolatore.


possono
1 comsponde a due argomenti 2 e 3. Una funzione iniettiva talvolta chiamata un a dove V un insieme tinito
o di-grafo G una coppia V, E,
Un grafo orientato o diretto
funzione uno-a-uno. dei vertici di G ed i suoi
ed E una relazione binaria su V. L insieme V chimato l itrsieme

i ertici. L insieme E chiamato l iitsieine degli archi di G ed i suoi


Una funzione f A m 8 biunivoca se iniettiva e surgettiva esempio, la funzione elementi sono chiamati
per
La figura 5.2 una rappresentazione di un grafo orient no
f n - 1 I n/21 biunivoca da N a Z elementi sono chiamati archi. a
sono disegnati con cerchi e
con insieme dei vertici 2. 3, 4, 5, 6. i ella figura i vertici
1,
0 0, a
Si noti che sono cappi. archi da un vertice
archi sono disegnati con frecce. possibili
gli
I -1,
se stesso.
2 - 1, wn
E. l insieme degli archi E costituito da coppie
In un grafo ton orieetnto G V,
3 -2, ordinare di vertici, che da coppie ordinate, cio, un arco un insieme u, . doi e
piuttosto
v un arco. che la
4 2, u, i c V e u c v. Per convenzione si usa la notazione u, per piuttosto
essere lo stesso arco. In
notazione insiemistica a, v inoltre u, v e v, u sono considerati

cui ogni arco consiste esattamente di d


un non orientato i cappi sono proibiti, per
grafo
rappresentazione di un non orientato con insieme
vertici distinti. La figura 5.2 b una grafo
La funzione iniettiva dato che nessun elemento di Z l immagine di pi di un elemento di
N surgettiva dei vertici 1,2,3,4,5,6 .
dato che tutti gli elementi di Z sono immagine di qualche elemento di N, quindi
e non orientati coincidono. bench certi termini
la funzione biunivoca. Una fu nzione Molte definizioni per grafi orientati
biunivoca chiamata talvolta corrispondenza u to-a
diverso. Se v un arco di un grafo orientato
uno, in quanto accoppia elementi del dominio e del abbiano un significato leggermente u,
gli codominio. Una funzione biunivoca
dal vertice u ed incidente n cit tra nel vertice
da un insieme su se stesso talvolta G V, B, si dice che u. v invide te n esce
chiamata una pennuta-ione.
2 neIla figura 52 a snno 2. 2. 2, 4 e 2. 3
v. Per esempio. archi che escono dal vertice
Quando una funzione gli
f biunivoca, la sua inversa f definita come arco di un r fo
che entrano nel vertice 2 sono l. 2 e 2, 2. Se u, v un
mentre gli archi
b vertici u e v. Nella figura 5. b .
f a se e solo sef a b. non orientato G V, E. si dice che u. v incidente sui

archi incidenti sul vertice 2 sono l. 2 e Z, 5.


Per esempio, l. inversa della funzione gli
f n -1 I n I 21 n.
F. si dice che il vertice v adiacenre al vertice
Se u. i un arco di un grafo G V.
j 2 se er 0,
f la relazione di adiacenza simntetricz. mentre quando
f Quando il,,rufo non nrientato
I se in 0.
-2m sinsmetriea. Se i adiacente a n in un gr to
orientato la relazione non necessari u ente
e b della figura 5.2. il vertice 2 adii ente
orientuto tulvolta si scrive u v. Nelle parti a
Esercizi

vertice nella fi ur r S. i, l arcc . I nnn,ippartienc al grafo.


poich
53-1 Siano A e 8 due insiemi fi niti e sia f A m 8 un i l unzi irte. iAostrare che
a. se f iniettiva. Aloe AA I fB
b. se f surgettiva. al1ora 8
A .
Insiemi e a ni 83

b c

Figura52 Grafi orientati e non orientali a Un grafo orientato G V, E ,dove V j l. 2, 3, 4. 5. 6

b
a
messi in corrisponden -a con
isolaro. c ll sottografo del della a, indono dall insieme di vertici l. 2, 3, 6. isomorfi. l ienici del grafo in alto so to
grafo parte Figun 5.3 Una coppia di grafi
a
,. w x 5 f . b 1 due gr
basso da u 2 f 3 f 4 f y
i,,errici del grafo in f 1 f
4 mentre il grafo in basso non lo fra.
in alto ha un verrice di grado
non sono isoinog7, dato cle il grafo

jj g pn e di un vertice in un grafo non orientato il numero di archi incidenti su di esso. Per Le


se ogni vertice raggiungibi1e da ogni altro.
Un orientato forte trente connesso
esempio, il vertice 2 nella figura 5.2 b ha mado 2. In un grafo orientato, il grado uscente di grafo
le classi di equivalenza dei vertici sotto
connesse di un grafo sono
un vertice il numero di archi che escono da esso ed il grado entrante il numero di archi che componenti fortemetrte
-mutuamente orie,itato fortemente connesso se ha
raggiungibile . Un grafo
entrano nel vertice. Il grado di un vertice in un mafo orientato il suo entrante il suo la relazione
grado pi tigura 5.2 ha tre componenti
connessa. Il grafo nella a
soltanto una componente fortemente
pado uscente. Il vertice 2 nella figura 5.2 a ha grado entrante 2, grado uscente e grado 5. Un
le coppie di vertici in 1. 2 4, 5 sono
connesse 45 , 3 e 6. Tutte
vertice di mado 0, come il vertice 4 nella figura 5.2 si dice isolato. fortemente 1,2
b, fortemente connes-
3, 6 non formano una componente
mutuamente raggiungibili. I vertici
Un cammino di langliezza k da un vertice u ad un vertice u in un grafo G V, E una
essere raggiunto dal vertice 3.
sa, il vertice 6 non puo
sequenza v, z v ...,
v,,v v ... v, diverticitaleche z v,. u v e v,v c Eperi 1,2, ...,k. poich
q v, una funzione biunivoca
E sono isomorfi se esiste
Due G V, E e G V.
h za di un cammino il suo numero di archi. Il camminoconttene i vertici v,v ....,v grafi
c E. In altre parole si possono
tale che v e E se e solo se f u, f v
1 h ..., v... v . Se vi un cammino da u a u, si dice che u f V m V u.
, ,, , p i corrispondenti archi in
di G perch siano i vertici di G, mantenendo
rietichettare i vertici
raggiungibile da u tramite p ci talvolta, se G orientato, si scrive come u n . Un insiemi
coppia di isomorfi G e G con rispettivi
La figura 5.3 mostra una grafi
G e G. a
corrispondenza da V a V data da
5, 6 e V u, i, w, x, y, . . La
di vertici V l, 2, 3, 4,
un cammino semplice di lunghezza 3. Il cammino 2, 5, 4, 5 non semplice. richiesta. I
r, f 5 6 la funzione biunivoca
s w, f 2 v, f 3 w, f 4 y, f
f 1
Unsottocamminodiuncammino no p v...., v,,
v,. ..., v, una sottosequenza contigua dei suoi i infatti, sebbene entrambi i grafi abbiano 5 vertici
nella figura 5.3 b non sono isomort
vertici. grafi
Cio, per qualunque 0 i j l , la sottosequenza di vertici v., v .... v un 4 che in basso non ha.
il grafo in alto ha un vertice di grado quello
e 7 archi,
sottocammino di p. V ed E E. Dato
di G V, E se V c. g
che un G V, E un sottografn
Si dice grafo
In unpafo orientato, un cammino v v, . v fo m l o se v ve il cammino da V il grafo G V, E , dove
, un insieme V c V, il sottografo di G indotto
ccontienealmenounarco. . Ilciclosesnplice se v,.
v. v ....,
...., v,, sono d istinti. U
Un cappio un ciclo
di lunghezza 1. Due cammini v, u, v ... v, E v c E u, v e V .
u,
stessociclo se esiste un intero j tale che,, v, 0, i, ..., k-1. N fg .2 figura 5.2 a appare nell a figura
peri dei vertici 1,2, 3. 6 nella
ll sottografo indotto dall insieme
2,
insieme di archi l. 2, 2, 6, .
5.2 c ed ha come
ciclo semplice. ma il ciclo l, 2, 4. 5, 4, 1 non lo . Il cicln 2, 2 formato dall arco 2. 2
versione orientata di G il grafo orientato
non orientato G V. E. la
un cappio Up orientato senza cappi semplice. Dato un grafo
grafo arco non orientato u.i in G
l E se e solo ce n. i e E. Cio ogni
G V, E . dove u. v e
In un p fo non orientato, un cammino 1 l forma un ciclo semptice se l 3. i e i. u. Dato un grafo orientatn
I nrientati
1

nella versione orientata da due archi u,


sostituito
G E , dove u. i c E
eli G il puto non orientato V,
un ciclo. Un grafo senza cicli acielic o.
i G
se e solo
V,E , la i ersioire

se ii w v e u,
sion

i c
orientata
E. Cio la versione non nrientata contiene gli archi di G con
non
le

n r
Ungrafo nononentatoeeotutesso .. seogni
i copppp/ l d i ver t -ivi co 11egatQcollutlcalllmino. w, , u iono lo stesso arco in un grafo
frecce riimosse e senza cappi. Poich
Lecomponehticonnessediunerafosoisolech . d 1 lo contiene una sola volta, an he se
d i vertici sotto la relazione non orientata di un rato orientato
raggiuneibile orienuto. la versione
G V. E
da . Il rof g .,2 entrambi irchi w. i e v. v. In un grafo orientato
il grafn orientato contiene gli
si ldi ente ada nella s ii ionc nun orientata
vertice w qualunque verliCe che
un viciiro di un
- u e i
orientato connesso se Ila es. tt tinente un 1 componente connciia, ..-,, cio ..se orni
ogni ve
verticeite di i si ia, v s Eoppurc , t C E. In un grato nonorientat .
di G. Cioi i i unvicino
raggiunpbi1e da ogni altro vertice.
soisu vicini se sono dipinti.
e a ni 85
Insiemi

Alcuni tipi di grafi hnno dei nomi specifici. Un grafo completo un grafo non orientat
in cui ogni coppia di vertici adiacente. Un grafo bipartito un grafo non orientato G V, E
in cui V pu essere partizionato in due insiemi V,, V, ta1i che u, v c E impl ica che o u e
V ,e i e V,oppureue V,eva V,. Ciotuttigli archivannoda V, a V o viceversa. Ungrafo
aciclico e non orientato una foresta e un rafo connesso acicIico e non orientato un 1be
directed
i ero si veda il paragrafo 5.5 . Spesso si usano le prime lettere del nome inglese
c
acyclic indicare un aciclico orientato. b
graph dag per grafo
Vi sono due varianti e nmt perci n
dei pafi che si possono incontrare occasionalmente. Un muMgrafo Un che conriene in ciclo
Un albero libero. b Una foresta. c grafo
Figura 5.4 a
come un grafo non orientato, ma pu avere sia archi multipli tra i vertici che cappi. Un ipergrafo
an atbero n una foresta.
come un grafo non orientato, ma ogni iperarco, piuttosto che connettere due vertici, connette
un sottoinsieme arbitrario di vertici. Molti algoritmi per grafi ordinari orientati e non orientati
dei vertici del grafo bipartito
possono essere adattati per essere eseguiti su queste strutture simili ai grafi. Si supponga che uno degli insiemi
Suggerimento agli
e l altro insieme di vertici corrisponda
corrisponda ai vertici dell ipergrafo

Esercizi iperarchi.

5.4-1 I partecipanti ad un ricevimento di facolt si stringono la mano salutarsi e ogni


per
ricorda mani ha stretto. Alla fine de ricevimento il direttore del
5.5 Alberi
professore quante
dipartimento calcola quante mani ha streno ogni Mostrare che il
professore. diverse. Questo
di alberi, correlate, ma leggermente
risultato pari iI seguente lemma delle strette di mano se G E Come i grafi, ci sono mo1te nozioni
provando V, per I paragrafai 11.4
matematiche di molti tipi di alberi.
un non orientato, allora definizioni e propriet
grafo paragrafo presenta di un
rappresentati nella memoria
come alberi essere
e 23.1 descrivono gli possano
grado v 2 jEj .
g calcolatore.
tr/ V

5.4-2 Dimostrare che in un grafo non orientato. la lunghezza di un ciclo deve essere
almeno 3. 5.5.1 Alberi liberi

orientato, connesso e
5.4, un non
albero libero, come definito nel paragrafo grafo
5.4-3 are che se pn rafo orientato o non orientato contiene un canarino tra due Un albero.
libero , si dice che un un
l aggettivo quando grafo
vertici aciclico. Spesso si omette
u e v, allora contiene un cammino semplice tra u e v. Mostrare che se un grafo si dice che una
ma essere sconnesso, allora
un non orientato aciclico. puo
orientato contiene un ciclo, allora contiene un ciclo semplice. Quando grafo La figura 5A
alberi operano anche sulle foreste.
Molti algoritmi che operano sugli
foresta. nella figura 5A c
5A mostra una fc restn. Il grafo
mostra un albero libero e la figura b
a
5.4-4 Mostrare che qualunque grafo non orientato connesso G V, E soddisfa contiene un ciclo.
non n un albero n una foresta perch
imi ivi-,. raccoglie molte importanti propriet
che riguardano gli alberi.
Il seguente teorema

raggiungibile
5.4-5 V erificare che in un grafo non orientato la relazinne da una
degli alberi liberi
Teorema 5.2 Propriet
relazione di equivalenza sui vertici del delle tre propriet di una
grafo. Quale affermazioni sono equivalenti.
non orientato. Le seguenti
relazione raggiungibile Sia G V, E un grato
di equivalenza vale in generale per la relazione da sui
verticf di un grafo orientato. I. Q un lbero libero.

da un unico cammino semplice.


vertici in G sono connessi
2. Due quvlsiaii
risultante
rimosso da E, il grafo
5.4-6 se un arco
Qual la versione non orientata del grafo orientato della figura 5.2 a la 3. G connesso, ma qualunque
Qual
versione orientata del grafo non orientato della figura 5.2 sconnesso.
b

4. connesso e l.
G E V

5.4-7 il s r are he un ipergrafo aciclico e l.


puo essere r ippreientato con un bipartito se si S. G E V
grafo
contiene un
giunto d E. il roto risultante
ie un areni ag
6. Ci aciclico. ma qualsi imi

C I CI .
Insiemi e a ni

8 Capitolo 5

0
profondith
P

profondit 1

altezza 4 8 2 profondit 2

P
profondith 3
Figura 5.5 Un della dimostra.-ione
passo del Teorema 5.2 se G un albero libero.
1 allora 2
4
profondit
b
a
dal venice,v e riconvergono nel
poi vertice . Il cammino concatenato con nel
p,- il cammino p 4. L albero diseg raw
considerato Un albero radicato di aire- a
nel verso opposto, un ciclo da cui deriva Fi uro 5.6 Alberi radicati ed ordinari. a
forma la cohtraddi--ione.

Dimostrazione. 1 m Dato che un i ersr .


2 albero connesso, ogni coppia di vertici in G a ll atbero in a, ma come albero ordinato
radicaro. Coine albero radt caro identico
albero
connessa da almeno un cammino semplice. Siano u e v vertici connessi da due distinti nodo 3 si trovano it un ordine differente.
dato che i figli del
cammini semplici e p, come mostrato dalla
p, figura 5.5. Sia w il primo vertice a partire dal
quale ammim comi cim a di er re,. cio Iv i il rim erti , sia h p, c di,. il di G vl- , Di
archi in tutte le componenti connesse
cui successore in p, un vertice implica la 5, la somma di tutti gli
x ed il cui successore in p, un vertice y, dove. cg. Sia
in realt un albero. Poich la 1 implica l 2 i.
il primo vertice a partire conseguenza si deve avere k l e G
dal quale i due cammini convergono sullo stesso percorso cio Perci i l aeeiuntadi
ice. . P
da un unico cammino semp
il primo vertice dopo w, che compare coppia di vertici collegata
sia in p, che in p, Sia il sottocammino di p, da ii a qualunque q
p
z che attraversa x e sia un arco a G crea un ciclo.
p il sottocammino di p da w a che attraversa qualunque
y. I cammini p e p
arco nd E.
non condividono vertici aciclico, ma che. aggiungendo un qualunque
ad eccezione dei vertici iniziali e finali. Di conseguenza, m Si supponga che G sia
il cammino 6 l w e
e u e v vertici arbitrari di G. Se
ottenuto concatenando rovesciato mostrare che G connesso. Siano
p sarebbe un ciclo, ma una contraddizione. si crei un cicIo. Si deve
questa archi tranne
se G un v crea un ciclo in cui tutti gli
Quindi, albero ci pu essere al pi un cammino v non sono adiacenti, l aggiunta dell arco u,
semplice tra due vertici. gi
u e v sono stati scelti
vi un cammino da u a v, e poich
2 3 Se ualsiasi co ppia di vertici u, i appartengono a G. Quindi
in G connessa da un unico cammino semplice.
allora G connesso. Sia s un arbitrariamente, G connesso.
u qualunque arco in E. Questo arco rappresenta un cammino
da u a v e cosi deve essere l unico cammino da u a v. Se si rimuove v da G, allora non ci
u,
sono cammini da u a v e quindi la sua rimozione alberi ordinati
provoca la sconnessione di G. 5.5.2 Alberi radicati ed

3 4 P
Per iptesi, il G connesso
g
grafo e, per l Esercizio 5.4-4, h h
. Si prover vertici si distingue dagli altri. Il vertice
che E I per induzione. Un un albero libero in cui uno dei
V grafo connesso con n 1 oidi Un albero radicato
2 vertici ha n a un vertice di un alberi
l archi. Si supponga che G abbia n 3 vertici dell zlbero. Spesso si fa riferimento
e che tutti i grafi che soddisfano diverso chiamato la radice
la 3 con meno di n vertici mostra un albero radicato su un insieme
soddisfino anche La figura 5.6 a
jE V 1. Rimuovendo un arco arbitrario da radicato come a un chiodo- del l albero.
si separa il grafo in I 2 componenti connesse in realt k 2. Ogni componente soddisfa di 12 nodi con radice 7.

albero radicato T con radice r qualunque


nodo y sull unico
Si consideri un nodo x di un
in tutte le componenti combinate al .v un discenderete
pi AV k AV 2. Ag giungendo I arco rimosso si
ottiene E V l.
.
4 m Si supponga ddi . y. llsottoalbero
5 che G sia cnnnesso e che antenato x un
di x e .- discendente proprio
E f V 1. Si deve mostrare che G ee.z z w y,, allo y un proprio ,,
radicato in.v.... Per esemp o, i ilsottoalbero
indotto dai discendenti di.v.
ica
radicato
ra oidiii r l albero
E s . ,
. . 5.6 al contiene i nodi 8, 6, 5 e 9.
. e radicato nei nodo l della figura
deveesistere
un vertice V, c V V che adiacente u T ad un h,. . x .allorai
nodo i x h
a qualche vertice v. c i, G connesso. cami1aino dalla radice r di un albero
perch Si See l ultimo,
in reo di un

, ,. fanatiche I I. Se/ 1 n.
al , E,, si pu continuare nelln

Un nodo nnn fogli c un nodo intentai.

contraddice .ipotesi che -vertice,


E f V I. Quintali G i aciclico. ...,,, -,, J Noi uscrvA o
.nn
lerinine r i ipeiio ui,,,
man di ur alti ro radicato.
il termine per iitdicare w1 vctticc
-e
fnsiemr e a nt

profondi 0

profondi th l
altezz 3

profondi 2

a Y profondi 3
b
Figura 5.7 Alberi binari. a Un albero binario disegnato Figura .8 Un albero binario completo di alte a 3 con ce 7nodi interni.
disegnato nel modo standard. f g
appena sotto al Ilfiglio sinistro
nodo,.alla sua di un nodo
sinislra. Il figlio destro
al nodo alla sua di un nodo
destra. disegnato appena
b Un albero binario sotto
7 5 mentre diverso da
il figlio quello ir a. In i1figlio
destro assente. a, sinistro del irodo
In b, ilpglio
5. Come alberi
sinistro del nodo 7 assente ,
ordinati,
alberi mesttre il figlio destro nella figura 5.7 a a causa della di un nodo. o.
no Tuttavia,
u a considerati come alberien
albero questi rappresentano
lo stesso
posizione
diversi. E albero, ma
c binario in come alberi binari
a rappresentato sono
ordi tato dai nodi attenti di
in cui ciascun u albero binario
nodo intento ha albero pieno m albero
grado 2. Le foglie de l sono disegnate ione in un albero binario puo essere rappresentata ai
con dei quadrati.
emostratonellafigura5.7 c . i e dis i i i n
Il numero o
di figli di un nodoxin con un nodo che non a ig i
un albero radicato qu
del cammino T chiamato il grado
dalla radice di x. La Junghezza e fg g eo dei
r ad un nodo x la q uadrati.
r L albero che si ottiene un a
di un profondit di x in T la profondit
qualsiasi nodo in T I altezza pi una fo lia o ha esattamente ue, non
di T. grande grado
in
Un albero ordinato ei fieli di un nodo mantiene or . o. oe.
un albero radicato in cui i figli di ciascun i
se un nodo ha k figli, nodo sono ordinati.
allora vi un Cio. s pos zhw ch e d.
distineue
n gli alberi binari da i or ina i p
primo figlio, un secondo que
I due alberi nella figlio, ..., ed un /-esimo
figura 5.6 sono figlio. g i b ri con di - g i perno do. Inunulheroposi -iona e, i g i i
diversi se sono considerati pi
lo stesso albero alberi ordinati, ma -
radicato. rappresentano di tinti. . L i-esimo figlio di un no o a g
.
h ,m albero
te k-ario,. un albero e in c
posiziona p
5.5.3 i figli con etichetta pi di / sono assenti. un a ero ina .pi
Alberi grande Quindi
binari e posizionali 7.

V 8 - o o o un -
unalberok-arioincuitutte
Gli alberi p i e fooogliehannolastessaprofondit
ie
binari sono descritti meglio in modo ricorsi etuttiinodiinternihannogrado
definita vo. Un albero binario d k. . Lafi
a ura5.8mostrauna
. ero in zQ
su un insieme finito T una struttura
di nodi che .Q o i h n berok- ioco p letoconaltezza i. ara ic
non contiene alcun nodo, oppure
composta da rofondit
tre h P. In conclusione, albero o/- -ariol
f
insiemi disgiunti l altezza di un com
o I oco fogH 6 o n.
di nodi un nodo radice, .
il suo sottoalbero un albero binario
sinish o e un chiansato Il numero dei nodi interni di un albero
albero binario chiamato
L albero il suo sottoalbero
binario che destro.
non contiene alcun h-l
nodo ch i amato
denotato con albero vuoto o albero
wc. Se il sottoalbero nullo. tal voIta l k k-
sinistro non vuoto k
della radice la sua radice chiamatafigEio gk
dell intero albero. sinistro
Analogamente, i0
il figlio la radice di un sottoalbero
destro deIla radice destro non
dell intero albero. nullo
il figlio Se un set toalbero
assente l albero nullo
o mancante. La vie, si dice che
figura 5.7 n naostra k-l
un albero binario.
Un albero binario ,
non semplicemente
un albero ordinato per l1 equazione 3.3... Quindi, un albero binario compm c o ha
Iato 2- I nodi interni.
pi 2. Per esempio, in cui ogni nodo
in un albero binario, abbia rado al
-figlia se un nodo ha solo
sinistro un figlio, la posizione
o destro importante. del fi l io
In un albero ordinato.
unico destro non si distingue Esercizi
o sinistro. La figura ie un hglio
5.7 b mostra un albero binario che differisce da quello

Si noti 5.5-l ,,, -


che il grado di B. j i qrj pi CO . . e C. Dive n re tutti
un nodo dipende - p
P gli
dal fatto ch Tuia considerato ..
un alhi.o radicato alberai radi ati con w i, e ,. A,, ,, .1be
o un alhro1ihero.
in un albero Il
radicato il ,rado
il numero di ordinati con .
t,gli, il padre nodi r 3.8. e C.conilcomcradice.
. c Dive se narenaretu tu i
di un n, do i nn conta per dvtcrmiru,rna rock,.
il
nodi A. l e C, cnn A cciiac rustica
tnsiemi e a ni

5.5-2 Mostrare che, per n 7, esiste un albero libero con n nodi tale che
volta prendendo di
in volta ciascuno degli n nodi come c. Sia d il massimo di un vertice di un grafo G. Provare che G pu essere
radice, si ottiene sempre un albero grado qualsiasi
radicato
diverso. colorato con d 1 colori.

d. Mostrare che se G ha O V archi, allora G pu essere colorato can Q V colori.


5.5-3 Sia G un grafo
V,E acicIico orientato in cui vi un vertice v c V tale che esiste
un unico cammino da v, ad amichevoli
ogni altro vertice v e V. Provare che 5-2 Graji
la versione non
orientata di G forma un albero.
RiformuIare ciascuna delle seguenti affermazioni come un teorema sui rafi non orientati e

quindi d d arneuna d imosostrazione.


razio Si assuma che la relazione di amicizia sia simmetrica ma non
5.5-4 Mostrare induzione
per che il numero dei nodi di riflessiva.
grado 2 in qualunque albero
binario uguale al numero di foglie ,
meno l.
a. Inn un generico gruppo di n 2 persone, vi sono due p nsone con lo stesso numero di

amici nel gruppo.


5.5-5 Mostrare induzione che
per un albero binario con n nodi ha un altezza
L ig J.
di almeno b. Ognigruppo
O d iseiperspersone contiene o tre amici reciproci o tre non conoscenti reciproci.

Q l i oruppo di persone pu essere partizionato in due sot o pp i tali che almeno

5.5-6 la met degli amici di ciascuna persona appartiene al sottogmppo a cui q p


La lunghezza dei cammini interni di un albero
pienamente binario la somma. non appartiene.
presa su tutti i nodi interni dell albero, delle profondit di ciascun nodo. Analoga-
mente, la lunghezza dei cammini d. Se in un ciascuno amico di almeno la meth delle del allora
esterni la somma, su gruppo persone gruppo,
presa tutte le foglie l
dell albero, delle i u essere
s fatto sedere ad un tavolo in modo che
h o ognuno sia seduto tra due
profondit di ciascuna foglia. Considerare gruppo
u pu
un albero pienamente
binario con n nodi interni, lunghezza amici.
dei cammini interni i e lunghezza dei cammini
esterni e. Provare che e i 2n.

5-3 Bisezione di alberi


5.5-7 Si associ un
peso
w 2
x a ciascuna foglia x di M l l divide-et-impera che operano sui richiedono che i rafo sia bisecato in
profondit d di un albero grafi
binario T. Mostrare che
w x 1, dove la somma presa su tutte due sottografi di dimensione simile rimuovendo un piccolo numero di are i. Ques p
le foglie.edi
T. Questa nota come la disuguaglianza di Eraft. studia la bisezione di alberi.
,.
aa. Mostrare
ostrarec che er rimuovendo un singolo eco, si possono
. partizion areiverticidiunalbero
5.5-8 Mostrare che ogni albero AA,
binario con L foglie contiene binario con n vertici in due insiemi A e B tali che n e I n l4.
un sottoalbero che ha un
numero di foglie compreso tra L/3 e 2L13, estremi inclusi.
h. IVIostrare che la costante 314 del a ottima nel caso iore fornendo un
quesito pe
esempio
ese di un semplice albero la cui partizione p i e q uamente bilanciata, ottenuta

Problemi togliendo un singolo arco, fornisca Q 3nl4.

Mostrare che rimuovendo al pi O lg n archi, s p . p artizionare i vertici di un

5-1 Colorazione albero con n vertici in due insie,ni A e 8 tali che L J -I -1.
di uht grafo qualsiasi AA

Una k-colorazione di un grafo non orientato G E


V, una funzione c V
k 1 tale 0, 1.....
che c ir w c r ogni arco
per u, v c E. In altre i numeri
rappresentano I colori
parole, 0. I...., I J Note al capitolo
e vertici adiacenti devono avere colori diversi.
a. Mostrare che qualsiasi albero 2-colorabile.
G. Boole tu uno dei priini studiosi della logica simbolica e intrndu . e molta della notazione
b. Mostrare che le seguenti affermazioni sono equivalenti
1. G bipartito. d 1874-1895. Cantor si interesso agli insiemi
principalmente
funzione ,
2. G 2-colorabile. d l fii ita.
ia Il termine attribuito a G.
G. W. Leibnitz,chez,
Leibn h ousper per
i
. . di formule matematiche la sua definizione limitata stata ge
3. G non ha cicli di lunghezza disp ri.

una vnlta e tornando al punto di p.irtenza.


-. . -
Un utile erompevi
uti compe idio io di i mnlte definizioni e riitrl ali ,iulla teori J l i rafi il libro di Harary

94 .
Questo capitolo
offre una panoramica della teoria del calcolo combinatorio elementare e del
calcolo delle
probabilit. Se il lettore ha gi una buona preparazione su questi argomenti, pu
sfogliare l inizio del capitolo e concentrarsi sui paragrafi successivi la maggior parte dei capitoli
successivi non richiede nozioni di prababilith, tranne qualcuno in cui sono invece essenziali.

Il paragrafo 6.1 presenta i risultati elementari della teoria del calcolo combinatorio, incluse
formule standard per contare le permutazioni e le combinazioni. Gli assiomi su11a pmbabilit
e i concetti di base che riguardano le distribuzioni di probabilit sono presentati nel paragrafo
6.2. Le variabili casuali sono introdotte nel paragrafo 6.3, insieme con le propriet di speranza
e varianza. Il paragrafo 6A considera le distribuzioni geometrica e binomiale che si
incontrano studiando ie prove di Bernoulli. Lo studio della distribuzione binomiale
code
continuato nel paragrafo 6.5, con una discussione avanzata delle di tale distribuzione.
Infine, il paragrafo 6.6 illustra l analisi probabilistica attraverso tre esempi il paradosso del
compleanno, il lancio casuale di palline in contenitori e le sequenze vincenti.

6.1 Calcolo combinatorio

Quanti
La teoria del calcolo combinatorio
cerca di rispondere alla domanda senza di fatto
Quanti
contare. Per c,sempio, si potrebbe chiedere sono i numeri distinti di n bit oppure
Quanti
sono gli ordinamenti distinti di n elementi In questo paragrafo, si passeranno in
rassegna gli elementi della teoria del calcolo combinatorio. Poich spesso si assume una
conoscenza di base degli insiemi, si consiglia al 1ettore di rivedere il materiale del paragrafo 5.1.

Regole di somma e prodotto

Un insieme di elementi che si desidera contare pu talvolta essere espresso come unione di
insiemi disgiunti o prodotto cartesiano di insiemi.

La regola del/a somma dice che il nuniern di modi per scegliere un elemento da uno di due
insiemi clisgiunti la somma delle cardina it degli insiemi. Cio. se A e 8 sono due insiemi
imiti enza elementi in comune, allora IA u 8 AA AD.che segue dall equuziane 53 . Per
esempin. il numero di targa di una macchina ha in ogni posizione una lettera o una cifra. Il
numero di pussihilit per ogni posizione allora 26 l0 3, infutti ci sono 26 possibili
scelte ie una letten c IO scelte .ie un i vitro.

k
94 Capirofo 6

ab, ae, ad, hc, hd, cd.


La regola del prodotto dice che il numero di modi scegliere una coppia ordinata il
per una l-
ab denotare il 2-insieme a, b. Si pu costruire
numero di modi scegliere il primo e1emento moltiplicato il numero di modi Si usata l abbreviazione per
per per scegliere
di un n-insieme sceg1iendo in esso I elementi distinti diversi .
il secondo. Cio, se A e B sono due insiemi combinazione
finiti. allora AA x 8 AA j , che semplicemente
essere espresso in termini del numero di
l equazione 5.4 . Per esempio se nrm offre 28 di gelato e 4 tipi di cialde, il Il numero di k-combinazioni di un ii-insieme pu
gelateria gisti
numero Per ogni k-combinazione, vi sono esattamente I,. permuta-
di coppe possibili con una pallina di gelato e una cialda 28 4 112. k-permutazioni di un n-insieme.
dei una diversa k-permutazione dell n-insieme.
zioni dei suoi elementi, ognuno quali
il numero di k-permutazioni diviso l
il numero di k-combinazioni di un n-insieme
Stringhe Quindi,
dall equazione 6.1 , quantit
questa

Una stringa su un insieme finito S una sequenza di elementi di S. Per esempio le stringhe n
6.2
binarie di lunghezza 3 sono 8 k k
n
000, Ooi,OIO, 011 , 100, 101.110, 111. il numero di modi scegliere 0 elementi da un n-insieme
Per P. 0, questa formula dice che per

Talvolta una stringa di lunghezza k sar chiamata k-stringa. Una sottostringa s di una l, infatti 0 l.

stringa s una sequenza ordinata di elementi consecutivi di s. Una k-sottostringa di una


stringa una sottostringa di lunghezza k. Per esempio, 010 una 3-sottostringa di 01101001
Coeffiienti binomiali
la 3-sottostringa che comincia in posizione 4, ma 11 I non una sottostringa di 0110i001.

Una k-stringa su un insieme S puo essere vista come un elemento del cartesiano n I -combinazioni di un
prodotto legga su L denotare il numero di
Si usa 1a notazione si per
S di k-pie quindi le stringhe di lunghezza I- sono Per esempio, il numero di A-stringhe
S . si ha
n-insieme. Dall equazione 6.2 ,
binarie 2. Intuitivamente. per costruire una I -stringa su un n-insieme, si hanno n modi per
scegliere il primo elemento per ognuna di scelte, si hanno n modi scegliere 6.3
queste per
il secondo elemento e cosi via fino a k volte. costruzione al k k n k
Questa porta prodotto
n i ... n n come numero delle k-stringhe. k ed n k. cio
Questa formula simmetrica per

. - .- .
Permutazioni
.
hinosniali, a causa del fatto che
numeri sono conosciuti anche come coefficie rti
Una di un insieme Questi
pennulazioae finito S una sequenza ordinata di tutti gli elementi di 5.
compaiono nello sviluppo binomiale
in cui ogni elemento compare esattamente una volta. Per esempio se S b, c , ci sono 6
a,
di S
permutazioni
x,y g . e- . 6.5
abc, acb, bac, bea, cab, c a.
10

Le permutazioni di un insieme di n elementi sono n, dato che il primo elemento della di sviluppa binomi le si verifica y l
Un caso speciale quando.v
sequenza pu essere scelto in n m di, il secondo in t i modi, il terzo in n 2 modi e cosi

Una k-permutazione di S una sequenza ordinata di / elementi


C 6.6

di S in cui gli elementi non


binarie tramite il numero di 1 che
compaiono pi di una volta. Quindi, ut a ordinaria esattamente una formula corrisponde a contare le 2 n-stringhe
permutazione Questa
n-permutazione che contengono esattansente l vnlte un I, perch
di un n-insieme. Le dodici 2- permutazioni dell in ieme ci, b. c. d sono contenerono vi sono n-stringhe binarie

di scegliere k posizioni in cui mettere gli 1 tra le n posizioni possibili.


ab, ac, ad. ha, loc, bd. ca, cb. cd, da, r/b. de. vi sono modi
k
binomiali. Gli esercizi alla t ne di
Sono note molte identit che riguardano i coefficienti
Il numero delle k permutazioni di un i-insieme
l opportuni di dimostrarne alcune.
questo pwagrafo forniscono
n
nn 1 n 2 n k1
6.1
n k

vi iono n modi di I.imiti binomiali


poich scegliere il primo leinento, n I nodi di sce liere il secondo e coii

via tmch vengono selezionati / elementi, e il / -esimo vietare scelto tra u I- l e en enti.
binomi ile. Per l kL g n.
neceisithdi limitarc l gr,mdezxudi un cocfticiente
Si ha talvolta la

COI114lll 1ZlOlll si ha il limiate inkriore

Una k cr mbisiazione di un -insieme 5 i semplicemente un I -suttoineicmc di S Vi sono ivi


-combinazioni 4-insieme
clcl n. b. . il
Calcolo combinatorio e delle 97
probabilita

n si sedere attorno a un tavolo tondo Si


6.I-3 In quanti modi professori possono
. n n n-i . n-g
. .., considerino identiche due situazioni in cui una pu essere ruotata per formare

-- , , l altra.

scegliere tre diversi numeri dall insieme l, 2, ..., 100


6.I-4 In quanti modi si possono
- cosi che la loro somma sia pari
6.7

Sfruttando la disuguaglianza k k/e che deriva dalla formula di Stirling 2.12 si Provare l identit
ottengono 6. 1-5
i limiti superiori

k j
nn

k /c
1 n

...
k 1
. -- . . - 6.14

I 6.8

.l- Provare l identit

6.9
.- . -
Per ogni 0 k n, si pu usare I induzione si veda I Esercizio 6. 1-12 per dimostrare il limite
.
per 0 I n.
n n

kg - k, n khan-, s. ro
6.E-7 Per scegliere k oggetti su n, si puo contraddistinguere uno degli oggetti e conside-
dove, comodit, si assume che 0 1.
per Per /,- kr, dove 0 il, 1, limite che
questo pu essere rare se quell oggetto viene scelto. Usare approccio per provare
riscritto quest
come

Rl
n

- J gg j
n

gg l
.n
C- . -
,, 6.11
6.I-8 Usando

0 l,. n dei
il risultato

coefficienti
deII Esercizio

binomiali
6.1-7,
con
costruire

in alto,
una

z
tabella

e , sulla
per n

linea
0, l,

successiva,
6 e

via. Tale tabella di coefficienti binomiali chianmta triango1o di Pascal.


pn
H . e cosi
6.12

dOVP.
.1-9 Provare che
- Ig R 1 R 1g 1 g
6.13
la fiinzione

che H0 Hl
di entropia

0.
binaria e dove. per comodit, si assume che 0 1g0 0, in modo
$
Mostrare che n O e 0 I ir. il massimo valore di raggiunto
Esercizi .l-lO per qualunque

quando k Lnl2J o l I ir/2 I.

.l-l Quante I,--sottostringhe ha una n-stringa Si considerino d i ver e le I,--sot tostringhe


identiche che si trovano in posizioni . I-l l Dedurre che qualunque n 0.
j 0. k Ocon j k n,
diverse. sottostrin oche per
Quante ha in totale una
n-stringa

6.1-2 Una fiat-icvte hooleasta con n input c m output una funzione da rwcsr
Fornire
,- sia una
,
prova
algehriia che una motiv azione basata su un metodo
6.15

per
vRur.-. a
r ,sssr . ill cl,i I ugu l li,n/a,loil V,le.
v vE, Quante anno le funzioni bouleane cc,.licl C j I. clcl11c,lti su i. Forllit e u,l csc.,llpio
con n input e l output. Qu,nte
quelle con, input e,n output

l wlis i u t li m a 6.1D e usan. l l ljU IXl-


6.1-12 Ulnare l induzione su A n/2 cr pr vare

re 6.4 estenclerl l a tutti i k n.


per
Capitolo 6
e delle 99
Calcolo combinatorio probabilit

6.1-13 Usare l approssimazione di Stirling che


per provare che l assioma 2 un requisito di
di Pr A chiamato la probabilit di A. Si noti
Il valore

. - ..
2nS 2- vi niente che obblighi a scegliere 1 come la probabilit
normalizzazione. in realt non
O l/n .
6.16 semplice e comodo.
l dell evento certo, eccetto il fatto che

insiemi veda il paragrafo 5.1 seguono


Da assiomi e dalla teoria di base degli si
questi
ha Pr 8 0. Se A a B.
6.1-14 Differenziando la funzione immediatamente diversi risultati. L evento nullo 8 probabi1it
di entropia H it , mostrare che essa raggiunge il suo
A di A , si ha che
valore massimo Pr B . Usando A per denotare l evento S complemento
per A 1/2. Quanto vale H lf2 allora Pr A
ogni coppia di eventi A e 8,
Pr A 1 Pr A . Per
6.17
U Bj Pr A Pr 8 Pr A fl 8
Pr A
6.2 Calcolo delle probabilit 6.18
Pr A Pr B .

si supporre che i quattro even .i


Nell esempio del lancio delle monete di cui sopra. pu
Il calcolo delle r b abilit uno strumento essenziale per la progettazione e l analisi degli
la probabilit di ottenere almeno una testa
. elementari abbiano 114. Quindi
algoritmi
al ontmi e di quelli randomizzati. probabilit
probabilistici Questos o para
par ra f o presenta una panoramica
e Pr m, vc, cr Prjm Pr vc Pr cr
e asi e a teoria della probabilit.
Si definisce la in termini di 314
probabilit uno spazio cainpione S, che un insieme i c
senza nemmeno una testa
a i even elementari. dato che la probabilit di ottenere un risultato
Ciascun evento elementare pu ess .d Alternativamente,
i possi i i esiti almeno una testa l 1/4 314.
di una prova. Perla del lancio di due monete distinguibili. Pr cc 114, la probabilit di ottenere
prova
si pu assumere uno spazio campione composto d 11 d - . e
su , c asta per Testa mentre c sta Croce
per
Distribuzione discreta di probabilit
S TT, TC, CT, CC .

Un evento un sottoinsieme deIlo s az


BZ io campione campione finito o
S. ., Per esempio, nell esperimentn dC discreta se definita su uno spazio
Una distribuzione di probabili
lancio di due monete, ottenere una testa ed una croce le tc, evento A,
cr j. L evento S Sia S uno spazio campione. allora per ogni
numerabile.
c iiamato evento certo e l evento chiamato l even t onu lE o. . S idicechedueeventiA e B
sono snutuamente esclusivi se A n 8 8. Talvolta si tratter un evento Pr A
elementare.s c S Pr s ,
come l evento Per definizione, 1 sCA
s. tutti i gli eventi elementari sono mutuamente esclusivi.
usivi.
esclusivi. Se S finito ed ogni evento
dato che eventi elementari in A sono mutuamente
gli
elementare s e S ha probabilit
Assiomi della probabilit
Pr s l/ S,
In tal caso l esperimento spesso
ha una distribu-ione uniforme di su S.
si probabifit .
Una distrib uzione
di probabilit Pr su uno spazio campione S una corrispondenza tra li estrarre un elemento da S
descritto come in modo casuale
eventidiSedinumerirealitalechesi iano soddisfatti i seguenti assimni del1a o a i i
probabilit cio una
cons derare il processn del lancio di una moneta perfetta.
Come esempio si pu
I. Pr A O per ogni evento A. cio
testa uguale a quella di ottenere croce,
moneta la quale la probabilit di ottenere
per
2 Pr S I. di probabilit definita sullo
la moneta n volte, si ha una distribuzione uniforme
l/2. Se si lancia
2. Ciascun evento elementare di 5 pu
per qua siisi coppia di eventi mutuamente esclusivi A e 8. spazio campione S r, c , un insieme di cardinalit
Pi n su c e ciascuno di essi pu
in genera1e, sequenza o numerabile di eventi rappresentato come una stringa di lunghezza l,
per qualsiasi finita A . A,.... che sono essere
due a due mutuamente esclusivi. con 1/2 . L evento
verificarsi probabilith

A risultano esattamente l teste ed n l croci


Q Pr .c, . n su
dato che ci sono stringhe di lunghezza
un sottoinsieme di S di cardinalith A .
/ v. Lv dell evento A quindi
v, c che cnntengono esattamente prnbabillit

. 12 .
In g,
generale, una distribuzione di vi
Pr A
per prnb niib l , .it. possono esiere alcuni i
v n i. uesta situazione si verifica encnt n
era i e. Il requisito S
principale k Ite l ii sieme.
J di
zioni i cavolo lei c mai,lemento di un v. Distrihuxione contimi t uniforme prnhahilit
interiezione
c venti e s di un numero

i
tn ito n numerahil di ivn , g
vive rannosonosu.i xizieampionefini i i
i ,
iirotoin iemidll iipaziocampioi e.La ii . ir u. La
a a sono considerati venti.
ra reve. rappresenta tm eccczi me. io t iinsiemi dello ip vio canspione
lit in cui non tutti i
g / le 101
100 QgQg j g g gggf gpjg
probabilit
. Capitolo 6

mostri testa e l altro che l e due facce mostrate siano


distribuzione corris onda al fatto che la prima moneta
continua uniforme di definita .
probabilit su un intervallo chiuso a, b di che entrambi
i..., ,q i v de con probabilith 1/2 e la probabilit gli
numeri reali, dove a
b. Il concetto g
intuitivo che si vuole che ciascun dell intervallu
equamente . punto d ll4 in accordo con la definizione di indipendenza, g i eventi sono
sia Tuttavia, quindi.
probabile il numero di punti non numerabile e quindi se a tutti che entrambi even i ipc o h
i punti data indi endenti, anche se si potrebbe pensare gli
la stessa finita e positiva, non si possono
probabilit soddisfare contemporane- che cadano di testa
fi , up o e n
nete ,
siano a
saldate insieme in modo
amente assiomi 2 e 3. Per g Vtsianoe .
gli questa ragione, si associa una solo ad
probabilit alcioni i i. ora a
sottoinsiemi croce
di icroce contemporaneamente e che le due possibi i i q uamenteproba
di S in modo tale che assiomi siano soddisfatti
gli per tali eventi. che mostrino testa entrambe b
b b 1tcheocnimonetamostritesta l/2,malaproba robabilit i i
Per qualsiasi intervallo chiuso d, c d
c, dove a b, la distribuzione continua l/
1/2 w l/2 Di conseguenza, l evento che una venga -ac testa ae 1 o h mo no
uniforme 112 . .,
di probabilit definisce la probabili dell evento c, d come non sono indipendenti.
entrambe
Cf C
Pr c,d A A ..., A di un insieme si dicono indipendenti a coppie se
Gli eventi
b a
Pr A AI Pr A, Pr Ago
Si noti che ogni jA,
per punto x x, x , la probabilit di x 0. Rimuovendo i punti estremi di un indipendenti se ogni
intervallo ir.
B. Si dice che essi sono mutuamente
c, d, si ottiene l intervallo aperto d. P J
e, Dato che c, d c, cJ v d u
c,
f -sottoinsieme A,A,, A dell insieme,dove 2l ne l i, i, ... 5
d, d J, per l assioma 3 si ha Pr d j Pr c,
c, d . In generale, l insieme degli eventi di una
distribuzione continua uniforme di probabilit Pr A AA A...nA Pr A Pr A ..pr A, .
un qualsiasi intervallo b di numeri reali
a, ,
che pu essere ottenuto dalI unione , cui la prima a
di un numero finito o numerabile di intervalIi si supponga di lanciare due monenere e p erfette. . Sia A l evento per
aperti o Perer esempio,
chiusi. l tatisiano
moneta d testa. A, l evento la seconda d testa e A,l evento p
percui
differenti. Si ha

Probabilit condizionata ed indipendenza


Pr a, 1/2,

Pr Ago 1/2,
Talvolta si ha a priori una conoscenza parziale del risultato di un esperimento. Per esempio.
si supponga Pr Ago 1/2,
che un amico abbia lanciato due monete perfette e che abbia detto che almeno
una di queste monete mostrava testa Pr Ai R Ai 1/4,
qual la probabilit che entrambe le monete mostrassero
testa L informazione fornita elimina la possibilit che siano uscite due croci inoltre Pr Ago A Aq 1/4,
i tre
eventi elementari rimanenti sono equamente
probabili per cui si possono con una Pr Ago A Ag 1/4,
presentare
probabilit di 1/3. Di conseguenza soltanto uno di questi eventi mostra due teste e la risposta
alla Pr A, n A. n Aq 0 .
domanda 1/3.

La probabilit condizionata formalizza la nozione di avere a priori una conoscenza parziale A,


del risultato di un esperimento. indipendenti
Laprobabifit condizionata di un evento dato a coppie tt
tuttavia, a, gli i eventi
ev n non sono mutuamente pe ,
A, che si
verificato un altro evento B, definita 1/8 0.
come mentre Pr A, Pr A, Pr A,

Pr A n B
P A B
Pr B 6.19 Bayes
Il teorema di
tutte le volte che Pr B Pr A la
w 0. Leggere come
AB probabilit di A dato 8 .
Intuitivamente, dato che si verificato eventi
erdueeventiAeBoenuno
due A e 8 o nu no
l evento B, l evento che anche A si verifichi definizione della condizionata segue che per
A n B. Dalla 6.19 probabilit
Cio A A B l insieme dei risultati in cui i verificano sia A che 8. Poich non nulla,
i risultato uno con probabilit
degli eventi elementari di B, si normalizzano le probabilit di tutti eventi elementari di 8
gli Pr cAB Pr B Pr i B
dividendoli Pr f B , in modo che
per la loro somma sia 1. La probabiIit condizionata di A dato
B perci il rapporto tra la Pr A Pr 8 A .
probabilit dell evento A n B e la dell evento B.
probabilit
Nell esempio A l evento
precedente, che entrambe le monete mostrino Risolvendo rispetto a Pr A B , si ottiene
testa e B I evento
che almeno una moneta mostri testa. Quind , Pr A AB l/4 l 3/4 1/3. Pr A Pr 8 Aj
Due eventi Pr f 8
.1
sono indipendeirti se

Pr AAB Pr A Pr B ,
formula conosciuta come teorema di Bayes. Ildenominatoreunacostantedinormalizzazione
che equivalente, se Pr B - v Bn 8 ecce
0, alla condizione che si che
ciepu empiere
........ . esprei a anche nel mndo se ucntc.. c. c
Datoche8 RnA
puri
Pr A 8 e B A A SOllo Allltuatllente L clusivi. si Il 1
Pr A . eventi 8 rQ A

Per esempio, si supponga di lanciare dite mnnete e che i risultati siano indipendenti.
perfette
allora la probabilit di ottenere due teste i I/2 1/2 1/4. Si SUppOllg ,1llCY
i CllL V Ill
lll1 l
-
102, Capitolo6
e detle 103
Calcolo contbinatorio probabilit

Pr 8 Pr B tl A Pr B A A
,2-6 Provare che
Pr A Pr 8 A Pro Pr 8 A .
pr z IB 1.
Sostituendo
8 Pr w
questa formula nella 6.21 , si ottiene una forma equivalente del teorema di
Bayes
insieme di eventi A,, A ..., A,,
6.2-7 Dimostrare che. per un qualunque
Pr A Pr B A
p Pr A n A.
Pr A A. n n A Pr Pr A A Ap
Pr A Pr B A A
A Pr 2 Pr B A
Pr A A, nd n na a .
Il teorema di Bayes semplificare il calcolo
pu delle probabilit condizionate. Per esempio.
si supponga di avere una moneta ed una
perfetta moneta truccata cui si ottiene sempre
per che
testa. Si di n eventi indipendenti a coppie, ma tale
pu eseguire un esperimento che consiste di tre eventi .2-8 Mostrare come costruire un insieme
indipendenti una delle due
monete scelta a caso, di k 2 elementi, non siano mutuamente
lanciata una volta e dopo lanciata di nuovo si supponga suo sottoinsieme questi
che esca per qualsiasi
testa entrambe le volte, la probabilit
qual che la moneta sia truccata indipendenti.
Si risolve il problema usando il teorema di Bayes. SiaA1 evento che comsponde all s It-
e a moneta truccata, sia B l eventn di condizionato, dato C, se
ottenere testa entrambe le volte. Si desidera Due eventi A e B sono i rdipeszdenti in modo
6.2-9
determinare Pr A B . Si ha Pr A 1/2, Pr BfA 1, Pr A 1/2 e Pr BavA 1/4, quindi. Pr A r1 B C Pr A C Pr B C .
indipenden-
e. ia - Fornire un esempio semplice ma non banale di due eventi che non sono

l /- in modo condizionato. dato un terzo evento.


/4 ti ma che sono indipendenti
4/5 .

televisivo e che un sia


di essere un concorrente di un gioco premio
6.2-10 Si supponga
Esercizi se si sceglie 1a porta Dopo
nascosto dietro una fra tre porte. Si vince il premio giusta.
che ien a aperta. i con duttore del
che una certa stata scelta ma prima
porta
due rivelando che dietro nnn c il premio.
6.2-1 D imostrare apre una del e altre porte.
l a disuguaglianza di Boole programma
per qualsiasi sequenza finita o numerabile come varier
se si vuole cambiare la porta scelta. Se si eanabia porta
di eventi A,, A ..., quindi chiede

la probabilit di vincere
Pr Ago u A. u Pr A Pr A . j
19

fra tre a cui restituire la


Il direttore di una ha scelto a cuso uno prigionieri
6.2-2 Il professor 6.2-11 prigione
Rosencrantz lancia una moneta liberato ma
perfetta. Il professor Guildenstern Il secondino sa quale sar
libert mentre gli altri due saranno giustiziati.
lancia due monete la
perfette. Qual probabilit che il professor Rosencrantz informazioni sulla sua sorte. Si indichino
teste proibito dare a qualsiasi prigioniero
ottenga del gli
pi professor Guildenstern al secondino quale
i prigionieri con X, Y e Z. Il prigioniero X chiede privatamente
che almeno uno di loro deve morire.
tra Y o Z sar gi si conosce
giustiziato poich
6.2-3 Vn mazzo sulla sua sorte. Il secondino dice
di 10 carte, ognuna con un numero distinto il secndino non rivelerh alcuna informazione
da 1 a 10, viene mescolato. gli
Tre carte si sente sollevato. poich si
sono rimosse dal guazzo una alla volta. a X che Y sar Il priginniero X adesso pi
Qual la probabilit che le tre carte giustiziato.
siano scelte ordinate in modo crescente
o le sue rimangono 1/3
di salvarsi adesso 1/2. Ha ragione possibilith
probabilit
6.2-4 Sia data una lVIotivare la risposta.
moneta truccata cui si ottiene testa
per con probabilit sconosciuta
lancio
p, dove 0 p I . Mostrare come un di moneta equo possa essere simulatn
osservando lanci multipli dello moneta truccata. S ggerimeiito lanciare lu moneta
due volte e poi determinare il risultato 6.3 Variabili casuali discrete
del lancio equo simulato oppure ripetere
l esperimento . Dimnstrare che la risposta corretta.
campiisne S finito o
una funzione che v la uno sp rio
Una variabile casuale discreta X
..., ... .....b. is,iltato di u1
. . ...,.....,,
6.2-$ Descrivere numei-,t i
una procedura che accetti come input due interi a e b teli che 0 a l
e che, usando lane
a/b e croce con probvbilith l /6. Dlle un limite al numero atteso di lanci lt
del
moneta. che dovrebbe essere polinomiale in Igl.
che le vari ihili c iiu rii si mo discrete.
ohicttivi. Per cui, si iiiumerh
combinatorio e delle 105
104 Calcolo probabilit
Capitolo 6

due monete Si guadagnano 3$ per ogni testa


Per una variabile. Si consideri un gioco in cui si lanciano perfette.
casuale X ed un numero reale x, si definisce l evento X .r come X che rappresenta la
ogni croce il valore atteso della variabile casuale
s c 5 Xs xj ma si perdono 2$ per
quindi,
vincita
Pr X x Pr s .
g -4
E Xj 6 Pr n 1 - Pr vc. cr Pr cc
sS X s x

La funzione 6 1/4 1 lfZ 4 1/4

l.
f r Pr X x
di due variabili casuali la somma de11e loro speranze
La speranza della somma
ia funzione di densit di una variabile casuale X. Dagli assiomi della probabilit, 6.24
EX Y E X E Y,
Pr X x 0 e Pr X x 1.
g si estende alle sommatorie finite
ogniqualvolta EX e E YJ sono definite. Questa proprieth
Come esempio, si consideri l esperimento e assolutamente convergenti di speranze matematiche.
di lanciare un coppia di dadi comuni a sei facce.
V i sono 36 possibili eventi elementari nello funzione definisce una nuova variabile
spazio campione. Assumendo che la distribuzione Se X una variabile casuale, qualsiasi gx
generica
di probabilit.si uniforme, cio ogni evento s e di g X definita, allora
S sia equamente probabile, si ha che casuale gX. Se la speranza
Pr s 1l36. Si definisce la variabile casuale X come il iridassimo tra i due valori che i dadi
mostrano dopo ogni lancio. Si ha quindi che, esempio, E gX Pr x .
per Pr X 3 5136, dato che X assegna g gx X
valore 3 a 5 dei 36 eventi elementari
possibili e cio 1, 3, 2, 3, 3, 3, 3. 2 e 3, I .
Spesso si hanno diverse Ponendo ax, si ha ogni costante a,
variabili casuali definite sullo stesso spazio campione. Se X e Y gx per
sono variabili casuali, allora la funzione 6.25
E a X a E X .

f x, y Pr X x e Y y ogni coppia di variabiIi casuali Xe Y


Di conseguenza. la speranza matematica lineare per
la funzione di densit congiunta di X e Y. Per e per ogni costante a
un fissato valore v,

Pr Y y gPr X x EY 6.26
e Yy, E aX Y aE X

indipendenti e ciascuna di esse ha una speranza


due variabili casuali X e Y sono
ed analogamente, Quando
per un fissato valore.r,
definita, allora
Pr X x Pr X x e Yy .
V x e Y y
E XY ggxvPr X
Usando la 6.19 della condizionata,
probabilit si ha
xy Pr X x Pr Y y
Pr X x e Vy
x y
Pr Y

Due

y sono
variabili casuali
indipendenti
X e Y si definiscono

o, equivalentemente,
y

iitdipendesrti se per ogni.i- e y, gli eventi X .v e Y


-. x Pr K x
/3
P r y

se per ogni x e y, si ha
EXE fF .
Pr X xe Yy Pr X x Pr Y y .

Dato un insieme di variabili casuali X. X,..... X sono mutuamente indipendenti,


casuali definite sullo stesso spazio campione. si In generale, quando n variabili
possono
definire nuove variabili casuali come somme, prodotti o altre funzioni delle variabili date. 6.27
El i a Xn E Pal l n1
IXi

una variabile casuale Xassume valori maui numeri naturali N 0, . 2, ... . viuna
Valore atteso di una variabile casuale Quando
formula semplice per la sua sperano.

Il pi semplice e pi utile compendia della -me lie


distribuzione di una s ari bile cwu le la
dei valori che assume. Il valore aleso o valore s edio, o sperai-a matemati a di i EX Pr X i
un gi
variabiIe casuale discreta X r0

EX Pr X x,
gx i Pr X i Pr X i I
6. 3i
r0
che risu t

di X deno
denotata con, o, t, ZiS l
p,. quando la variabile chiara dal intesto, semplicemente 6.
con,u. Pr X
r -I
1W Capirolo 6 Catcolo combinatorio e delle 107
probabilit

dato che ciascun termine Pr X i addizionato i volte e sottratto i-1 volte eccetto
Pr X 0, che aggiunto 0 volte e non mai sottratm . 6.3-3 Un l uso di tre dadi in un barattolo. Un pu puntare un
gioco prevede giocatore
dollaro su un qualsiasi numero da l a 6. Il barattolo agitato e la conclusione la

Varianza seguente se il numero scelto dal giocatore non appare su nessun dado, allora perde
e scarto medio
quadratico
il dollaro altrimenti. se il suo numero compare esattamente su k dei tre dadi. per k

1, 2, 3, egli tiene il suo dolIaro e vince altri k dollari. Qual la speranza matematica
La varianza di una variabile casuale X con speranza EX del guadagno del giocatore, provando una sola volta

Var X E E X
X
63-4 Siano X e Y due variabili casuali indipendenti. Provare che fX e gY sono
E 2XE X E
X- X
indipendenti per ogni scelta delle funzioni f e g.
E 2E XE XJI E
X X
E 2E X E
X- X j
X una variabile casuale non negativa, e si supponga che EX sia ben definita.
E x- ivi . 6.29
6.3-5 Sia

Provare la disuguaglianza di Alarkov

La giustificazione le eguaglianze
per EE-Xj E X e E XE XJ E-X che Pr X t E X /t
EX non
una variabile casuale ma semplicemente un numero reale e quindi si pu applicare la 6.25 ogni t 0.
a E XJ . per
con L equazione 6.29 essere riscritta
pu per ottenere un espressione la
speranza per
di una variabile casuale al quadrato
.3-6 Sia S uno spazio can pione e siano Xe X variabili casuali tali che Xs X s per
z fs- j vai x z x .
6.30 ogni s c S. Provare che per ogni costante reale t,

La varianza di una variabile casuale Xe la varianza di aX sono cosi correlate Pr X t Pr X t .

Var faX a Var XJ .


6.3-7 pi la speranza matematica del di una variabile casuale o
Qual grande quadrato
Quando X e Y sono variabili casuali indipendenti, il quadrato della sua speranza

Var E YJ Var X Var YJ .


6.3-8 Mostrare che. variabile casuale X che assume solo i valori 0 e l.
In generale, se n variabili casuali per qualsiasi
X, X, ..., X, sono indipendenti a coppie, allora V ar X E X E 1 X
n n
Var
gi QVar X, .
il il 6.31 .3-9 Provare che Var nXj a- V ar X dalla detmizione 6.29 della varianza.

Lo scarto quadratico medio di una variabile casuale X la radice


quadrata positiva della
varianza di X. Lo scarto quadratico medio di una variabile casuale X talvolta denotato con
r o semplicemente con
a quando la variabile
6.4 Distribuzione geometrica e distribuzione binomiale
casuale X comprensibile dal contesto. Con
questa notazione la varianza di X denotath con cr- .
Il lancio di una moneta un esempio di di Bernnulli. che definita come un
prova

Esercizi

6.3-I Si lancino due comuni dadi a sei facce. il valore


Qual atteso della somma dei due
valori che si ottengono con il lancio il valore atteso importanti derivano dalle d la distribuzione e la
Qual del massitno di tali distribuzioni ptOVC BCfllC Ulli geo netrica
valori
distribuzione binomiale.

6.3-2 Un array A1 .. n contiene i numeri distinti che snno La


ordin. ti caiualmente. con distribuzione geometrica
ciascuna degli n elementi
permutazione equamente
prnbabile. Qual il vahire
atteso dell inclice dell elernentu massimo dell array il valore
Qual att, , f
dell indice delI elemento minimn dell array

Sia Ii vari bil casuale X il nunlcro di neccswrie ottencrc un iud ceisu.


piove per
l b bk 15, 1/3

0.25
0.35

0.30 0.20

0.25 0.15

0.20 0.10

0.15 0.05

0.10 k

0.05 Figura 6.2 La disrribic ione binomiale bg 15. 1/3 che si ottiene con n 15 e di Beiv oufli,
pro
ciascuna cover probabilit di successo 113. La speran a del1a disrribu ione
p np 5.

IO ll 12 13 14 15

Figura 6.1 Lata


L na ddistriLu L - Per esempio si supponga
ione
geoir etrica con di lanciare ripetutamente due dadi finca si ottenga un sette o un
probabilit di successo 1/3 e
fallisniento I p probabilit di
q La speran-a della undici. Dei 36 risultati,
p. distribn ione I/p 3. possibili 6 valgono sette e 2 valgono undici. Di conseguenza la
probabilit di successo p 8/36 219 e si devono anciare i dadi l/p 912 4.5 volte, in
media.

Allora X assume valori nell intervallo 1, 2, ... , e per / 1 vale che


Pr X k qa-ip La distribuzione binomiale
633
perch prima di un successo si hanno k l fallimenti. Una distribuzione di probabilit che
soddisfi l equazione Quanti successi si verificano durante ii prove di
6.33 detta distribuzione Bernoulli, dove un successo si verifica con
geometrica. La figura 6.1 illustra tale
istri uzione. probabilit p e un fallimento con probabilit q 1 p Si definisca la variabile casuale X
Assumendo come il numero di successi su n prove X assume valori nell intervallo 1, ..., n
l la s peranzadi una distribuzione quindi 0,
geometrica pu essere calcolata usando e per l
l identit 0, ..., n,
3.6

aq c,
Pr X k p
p 6.36
EX
gkq
kl perch vi sono modi di scegliere I delle n prove sono successi, e la pmbabilit che
quali
ognuna di esse si verifichi .
p q Una distribuzione di probubilith che soddisfi l equazione
glcq 6.36 detta distribu -ione bisromiale. Pn comodi. si definisce la famiglia di distribuzioni
40
binomiali usando la notazione
P
-e
k, .n 6.37
l/p iati
6.34
La tigura binomiale
6.2 illiistra una distribuzione binomi il . Il nnrne ha origine dal fatto
Di conseguenza in m i a, occorrono I/p prove di ottenere che 6.37 il I--eiin o termine della
prima un successo. che anche sviluppn di p e . Di conseguenza, dato che p q l,
la risposta intuitiva. La varianza, che pu essere calcolata si ha
anelo amente,
Var X q/p- . l n
6.35
bk n. p I,
g 6.38
I 0

come richiesto dull aisioma 2 de li


assiomi ululi prohahilitiL
Capirolo Il. l
Calcolo combinatorio e delle probabilir

Si pu calcolare la speranza di una variabile con distribuzione binomiale dalle equazioni / che va da
Come si puo vedere dalla figura 6.2. la distribuzione binomiale bl i. p , per
6.14 e 6.38 . Sia X una variabile casuale che segue la distribuzione binomiale bl, n, p . e la
0 a n. cresce finch / raggiunge il valore medio np e poi decresce. Si pu provare che
sia q I p. Dal la definizione di speranza, si ha distribuzione si comporta sempre in questo modo osservando il rapporto di termini succes-
n S1V1

EX
gkb k n,p
I 0 k n li
b k n,p Il p q

bk 1 n,p
z ., ze- n k
pk-iqn-l l

1 n k 1 p

n
-- n
k n

k 1p
k nq

kq

1p k
pp n 6.42
g pkq n-I -k
I O
aq
n-l

np h k n Questo rapporto pi grande di 1 esanamente quando 1p k positivo. Di conseguen-


I,p
O za, b l-. r. p hl 1 n. p /- n 1p la distribuzione cresce , mentre b l-. n, p
I per
np. 6.9 b/ 1 n, p n 1p la distribuzione decresce . Se k ii lp un intero. allora
per/
bk st. p bl I n. e cosi la distribuzione ha due massimi per k i 1p e per
p.
Usando la linearit della speranza, si ottenere lo stesso risultato con una I l n 1p 1 np altrimenti. raggiunge un massimo l unico intero l che sta
pu quamit q per
sostanzialmente inferiore di calcoli algebrici. Sia X la variabile casuale che descrive il nell intervallo ip l 1 p.
q n
numero di successi dell i-esima Allora E X, p 1 0
prova. q p e, per la iinearit della tl seguente lemma fornisce un limite superiore per la distribuzione binomiale.
speranza 6.2 , il numero atteso di successi su n prove

n
L8ITl11tQ 6.1
.rxi a
Siano ir 0,0 1, 1-p e 0 l n. Allora
gx, p q
n

E X, . - s, . a
Dimostra ione. Usando l equazione 6.10 . si ha

il
np. b ,.n.n
n.s.
Lo stesso approccio pu essere usato per calcolare la varianza della distribuzione. Us mdo - ..
I equazione 6.29 , si ha Var X E X- E-X. Poich X assunsere .iolo valori 0 c 1.
pu
si ha EX- EX e quincli ,
p,
7
f ,l P P- PP . 6.40

Per calcolare la varianza di X. si sfrutta l indipendenza delle v prove d ll equazione


quindi.
Esercizi
6.31 ,

n
6.4-1 Veriticare l assioma 2 della probabilit per la distribuzione eeometrica.
Var Var .
K g.
g

n 3 tei
64-2 Quotaste volte insediasi dei orni lanci iri 6 inondate prinsadi ottenere
pcrtctte
Var
X, e 3 croci

6 4-.3 Dimo ti al che I l i, / n I n. dove I


gw g q. q p.
il

npq . t i-ll
Calcolo combinatorio e delle H3
probabilit

6.4-4 Dimostrar che il valere massimo della distribuzione binomiale bl r, p * 6.5 Code della distribuzione binomiale
approssimativamente I/ nnpq, dove 1
q p.

La probabi1it di avere almeno, o al k successi in n prove di Bernoulli, ognuna con


pi,
.4-5 Dimostrare che la probabilit di non avere successo in rt prove di Bernoulli, ognuna
probabilit p di successo, spesso di maggior interesse della probabilit di avere esattamente
con probabilit p l/n, approssimativamente l/e. Dimostrare che anche la
k successi. In questo si analizzeranno le code della distribuzione binomiale le due
paragrafo,
probabilit di ottenere esattamente un successo 1/e.
regioni della distribuzione bk n, lontane dal valore medio np. Si alcuni
p pmveranno
importanti limiti su la somma di tutti i termini di una coda.
6.4-6 Il professor Rosencrantz lancia una moneta n voIte, e cosi fa anche il Innanzitutto
perfetta si fornir un limite sulla coda destra della distribuzione bk n, p . I limiti sulla
professor Guildenstern. Dimostrare che la probabilit che essi ottengano lo stesso coda sinistra possono essere determinati invertendo i ruoli di successo e fallimenra
numero di teste . Suggerimento Rosencrantz un successo
14 perii professor
ottenere una testa per il professor Guildenstern un successo ottenere una croce .
Teorema .2
Utilizzando lo stesso schema di dimostrazione verificare l identit
Si consideri una sequenza di n prove di Bernoulli, dove un successo si verifica con
probabilit p. Sia X la variabile casuale che denota il numero totale di successi. Allora
per 0 I- n, la probabilit di almeno k successi

Pr X k
.4-7 Mostrare che 0 k n, pb i n,p
per
ik
B / -n
/ g. /7

dove H la funzione di entropia 6.13 .

.4-8 Considerare n prove di Bernoulli, dove i Dimostrazione. Facendo uso della disuguaglianza
per l, 2, ..., n, l i-esima prova ha 6.15

probabilit p di successo, e sia X la variabile casuale che denota il nunero totale


di successi. Sia

k
p p per ciascun i 1, 2, ..., n. Provare che per I k ir,
.. -.
Pr X k si ha
.
pb i n,p
i0 n

Pr X l
pb i n,p

6.4-9 Sia X la variabile casuale che denota il numero totale di successi in un insieme A
n-I
di i prove di Bernoulli, dove l i-esima ha di successo e sia X
prova probabilit p, bk i n, p
la variabile casuale che g
denota il numero totale di successi in un secondo insieme
i0
A di n prove di Bernoulli, dove i-esima ha di successo
prova probabiIit p p. n-k,

Provare che per 0 l ki


n- k i
I- i/
Pr X k Pr X k .

mostrare come
Sug
to che
geriine to
coinvolga le prove di A. e usare
ottenere le prove

il risultato
di Bernoulli

dell Esercizio
di Ada un esperimen-

6.-6 . ,
,
n-k

b i. n k,p
g
p

-z
dato che g, b i, n k, p 1 dal l equazionc 6.38 .
Calcolo combinatorio e delleprobabilit II5

114 Capitolo 5

per 0 i k. Iterando si ottiene


l a il teorema la coda sinistra della distribuzione bi nomiale.
Il seguente corollario riformu per
si lascia al lettore l adattamento dei limiti da una coda all altra. bi n, p xe bk n, p
In generale,

per 0 i I. e quindi

Corollario 6.3

di n prove di Bernoulli, dove un successo si verifica con probabilit k l k-l


Si consideri una sequenza
b k n,p
totale di successi, allora 0 k n, la
Sia X la variabile casuale che denota il numero per pb i n,p Qx
p.
i0 i0
di avere al pi k successi
probabilit
bk n, p x
k g
il
Pr X k
ph i n,p X
i0 b k n,p
1 x
-n kq
,, i np k
b k n,p .

n. .
g , Quando k np/2, si ha kq/ np k l, il cui significato che bk n, p limita la somma di

tutti i termini di l. Per esempio. si supponga di lanciare n monete usando


della distribuzione binomiale. pi piccoli
Il nostro limite si concentra sulla coda sinistra
prossimo 1/2 e k n/4, il Teorema 6.4 dice che la probabilit di ottenere meno di n/4 teste minore
coda sinistra diminuisce espo- p
Lontano dal valore medio, il numero di successi nella
della di ottenere esattamente n/4 teste. Inoltre. per ogni r 4, la probabilit di
probabilit
nenzialmente, come dimostra il seguente teorema.
ottenere meno di iilr teste minore della di ottenere esattamente n/r teste. Il
probabilith
Teorema 6A anche essere abbastanza utile insieme con i limiti superiori della distribu-
pu
Teorema .4
zione binomiale, come il Lemnm 6.1.
n prue di Bernoulli, dove un successo si verifica con
Si consideri una sequenza di in modo simile.
Un limite per l coda di destra puo essere determinato
con 1 Sia X la variabile casuale che
p e un fallimento probabilit q p.
probabilit
Allora, 0 k np, la probabilit di avere meno
denota il numero totale di successi. per
Corollario .
di k successi
Si consideri una sequenza di n prove di Bernou lli. dove un successo si verifica con probabilit
Sia X la variabile casuale che denota il numero totale di successi. allora per np I n, la
p.
Pr X k
pb i n,p probabilit di ottenere pi di l successi
i0
n
gq
b k n,p . Pr X k bi n,p
np k

kp
n
bk n, p .
n, p con una serie usando la tecnica
Dimostrazione. Si limita la serie g, , bi geometrica k np

nel 3.2. Per i l, 2, ..., l , si ha dall equazione 6.42


presentata paragrafo Il prossimo teorema considera n prove di Bernoulli, ciascuna con probabilit p di successo.
i l. 2, .... n. I corol1ario che lo regie mostra come si possa usare tale teorema per fornire
bi 1 n, p iq per
un lignite alla coda destra di una distribuzinne binomiale porgendo p p per ciascuna prova.
hi n,p n i 1p

., U Teoreaur 6.6

., - Si

i
consideri

l, 2...,
una

n. il successo
sequenza di

si verific i
n prove
con
di Bernoulli.

probahilit p
dove

ed
nella

il fallimento
i-esima

con
prova,

probabilit
per

1 Siu X la vuriabilc casuale eh descrive il numero totale di successi e sia


q p
Ponendo P E xl-

. , p- i
Allora per r p.

Pr X p r

segue che l
bi 1 n,p x i n,p

l
Dimostrazione. Dato che per ogni a 0 la funzione e strettamente crescente in x, Scegliendo a In r/p veda l Esercizio 6.5-6 , si ottiene
si

Pr X p r Pr e ,
e Pr r exp pe r in r/p
X p

dove a sar determinato in seguito. Usando la disuguaglianza di Markov 6.32 , si oniene exp r r In r/p

- e
Pr X p r E e- 6.43
e
- i/u
La parte pi importante della dimostrazione consiste nel limitare Ee e nel sostituire
.
,
ad X un valore opportno nella disuguaglianza 6.43 . Prima si valuter Ee Per

i l, 2, ..., n, sia X la variabile casuale che 1 se l i-esima prova di Bernoulli un successo


ciascuna ha la stessa di
si considerano di Bernoulli in cui prova probabilith
e 0 se un fallimento. Perci, Quando prove
corollario che definisce un limite per la
successo, allora dal Teorema 6. deriva il seguente

coda destra di una distribuzione binomiale.


x x,
il

e Coro/lario 6.7
n
di Bernoulli, dove un successo si verifica con probabilit
Si consideri una sequenza di n prove
ug -u Allora. r np,
fallimento con 1 p. pn
p ed un probabilit q
il
n
Sostituendo X p, si ottiene
Pr X np r b Ic,n,p
g
n k np r1

p
QIX
/l

n ,
n
implica che EX np.
Dimostra -inne. Per una distribuzione binomiale l equazione 6. 39 p
IIEI D
il

che segue dalla 6.27 , perch la mutua indipendenza delle variabili casuali X implica la
si
mutua indipendenza delle variabili casuali e veda l Esercizio 6.3-4 . Per definizione Esercizi
di speranza,

ottenere alcuna testa si lancia una moneta


-Pi 6.5-1 Che cosa meno non quando
a 1-P, 8
probabile
.t
si lancia la moneta 4
4n v 1te
vo
n volte o ottenere meno di n teste quando
perfetta
pe q,e

p,e l
6.5-2 Dimostrare che
exp p,e , 6.44

n
dove ezp x denota la funzione esponenziale exp x e. disuguaglianza segue ai b / n,a/ a 1
La 6.44 a
na ka 1
dalle disuguaglianze u 0, q l. e e. e e I e l ultima linea segue dalla rO
i

disuguaglianza 2.7 . Di conseguenza, n ani a 0 e per ogni I- tale che 0 I n.


per
Il

X-p
E exp p,e allora
p che se 0 I- np. 0 l e I p.
6.5-3 Provare p q
il

exp pe ,

i0

dato Che d llu diiu u.tglianza segue che


p g, p,. Quindi, 6.43 .

elci Tevretn t fi.6 implicaita che


6.5-4 Dimostrare che le condizioni
Pr .C p r exp pe rr . 6.45

/n p cl
Pr l X r
e delle 119
Caco o co inatorio probabili

lo stesso giorno
i compleanni cadano
la probabilit che entrambi
Quindi,
Analogamente, mostrare che le condizioni del Corollario 6.7 implicano che
n
e b, r
Pr np X r Pr b b, QPr b, r
rl
n

Si consideri una sequenza di n prove di Bernoulli, dove nella i-esima per g l/n
6.5-5 prova.
rl
i l, 2, ..., n, il successo si verifica con p, ed il fallimento con
probabilit I/n .
1 Sia X la variabile casuale che descrive il numero totale dei
probabilith q p. che b venga scelto uguale
sia stato scelto, la probabilit
successi e sia E Xj. Allora r 0, una volta che b,
p per Pi intuitivamente, la stessa che
lo stesso compleanno probabilit
la probabilith che i e j abbiano
- lln. Perci,
Pr X p r e Attenzione per perch questa
essi cada in un dato giorno.
. compleanno di uno di
, il indipendenti.
che e- Quindi applicare la tecnica che i compleanni siano
S,rggerimento provare pe qe- , dall assunzione
coincidenza dipende
dimostrare il Teorema 6.6, usando disuguaglianza al posto della compleanni coincidenti
seguita per questa 2 persone su k abbiano
la probabilit che almeno
u ana
Si i pu izzare
analizzare siano uguali
disuguaglianza 6.44 . che a1meno due compleanni
complementare. La probabilit
osservando l evento L evento che k persone
siano differenti.
che tutti i compleanni
1 diminuito della probabilit
6.5-6 Mostrare che scegliendo n 1n rlp si minimizza la parte destra della disuguaglian-
abbiano compleanni distinti
za 6A .
k-I

a,. Q
il
1 diverso da quello della persona
Analisi i
6. probabilistica A l evento che il compleanno della persona
dove
ogni j i. cio,
j per
usa tre esempi illustrare l analisi Il primo determina la
Questo paragrafo per probabilistica.
abbiano lo stesso A, b, pb, j 1,2...,i .
che, in una stanza con k persone, alcune coppie di persone la ricorrenza
probabilit dal equazione 6.20
B, An B,, si ottiene
compleanno. Il secondo esempio considera il lancio casuale di palline dentro dei contenitori. Poich si pu scrivere
6.46
Il terzo esamina sequenze di teste consecutive nel lancio di una moneta. 8q
Pr Bq Pr Aq ,
Pr Bqj
altre la che
Pr B, l. In parole. probabilit
condizione iniziale
dove si assume come
6.6.1 Il paradosso del compleanno 2,
..., /- 1. dato che b,. b ....,
che b, c b i I,
la per
distinti moltiplicatz per probabilit

Un buon esempio illustrare il ragionamento probabilistico il classico paradosso del sono distinti.
per b,, l. 2..... k- I
che b, c b per i
compleanno. devono esserci in una stanza ci sia una buona t la probabilith condizio wta
Quante persone perch probab 1 b ..., b, sono distinti,
Se b,, che non vengono presi.
loro nate nello stesso dell anno Poche. la sorprendente risposta. vi sono n- k-I giorni
c e ue di siano giorno I /n, dato che su n giorni,
n- k
Il paradosso che in realt ne bastano molte di meno del numero dei giorni di un anno, come si ottiene
Iterando la ricorrenza 6.46
si vedr di seguito.
BA Pr Aq Bq
B Pr A.
P er rispondere alla domanda, si indichino le persone nella stanza con gli interi l, 2.... l Pr B Pr 8 Pr 4

. . .
assuma che ogni anno abbia n 36S giorni. Per i l, 2, ... k, sia b il giorno dell anno in cui
.
cade

uniformemente
l i-esimo compleanno,

distribuiti sugli
con

n giorni
l b

dell anno,
n. Si assuma

cosi che
anche

Pr b
che

r
i compleanni

I/n per i l, 2.....


siano
l
l --. --
ed r 1,2, ..., n. t

1 . e. forisisce
La disuguagiiunza 2.7 ,
La che due persone i e j facciano il compleanno lo stesso giorno, dipende dal
probabilit
n
fatto che la selezione casuale dei compleanni sia indipendente. Se i compleanni sono - k-l,
p -l/ , -2/n
g
indipendenti, allora la probabilit che il compleanno di i e quello di j cadano entramhi il giorno ,
in

r
A l /an
C,-A
Prjb, r e b, r Pr b, r Pr b r
f /
l /-n
Il numero di palline che cadono in un dato
l l 1 12n in un daro eontenirore
quando In 1/2 . La probabilit che tutti i k compleanni siano distinti al pi Quanre palliare finiscono
Se vengono lanciate n palline, il
segue la distribuzione binomiale bk n. 1/b .
1/2 quando k/ 1 2nln2 oppure, risolvendo l equazione contenitore
quadratica, quando n/b.
aneso di palline che cadono in un dato contenitore
k l Sln2 n /2. Per n 365, si deve 23. numero
l avere I Percio, se almeno 23
un daro contenitore contenga una
sono in una stanza, la si devono lanciare, in media, perch
persone probabilit che almeno due di esse abbiano lo stesso Quante palline
contenitore riceva una segue la distribu-
compleanno almeno 1/2. Su Marte, Il numero di lanci un dato pallina
un anno lungo 669 giorni marziani occorrono pallina. perch
quindi di lanci ottenere un
31 1/b e quindi il numero atteso per
marziani per ottenere lo stesso risultato. zione geometrica con probabilit
successo 1/ l/b b.

ogni contenitore conrestga abneno una pallina.


Un altro metodo di analisi si devono tanciare perch
Quante palline
centro finisce in un contenitore vuoto. Si
il nome dato ad un lancio per cui la pallina
Sia
n di lanci richiesti ottenere b centri.
Si pu usare la linearit della speranza vuole conoscere la media del numero per
equazione 6.26 per fornire un analisi pi semplice
n lanci in tappe. L i-esima tappa consiste
anche se approssimativa del del compleanno. Per essere usati gli
paradosso ogni coppia i, j di k persone I centri possono per panizionare
tappa costituita dal primo lancio,
nella stanza, si definisca la variabile casuale X, 1 i lanci tra l i 1 -esimo e l i-esimo centro. La prima
per j l-, come dei
i contenitori sono vuoti. Per ogni
si sicuri di avere un centro quando tutti
I se la persona i e la persona dato che
f j hanno lo stesso compleanno
che contengono e b i I
lancio durante l i-esima tappa ci sono i 1 contenitori palline
0 altrimenti. un
dell i-esima tappa. la di ottenere
contenitori vuoti. ogni lancio probabilith
Quindi per
La probabilit che due abbiano lo stesso compleanno centro i 1 /b.
persone l/n, quindi per la definizione b
di speranza il numero di lanci richiesti per avere
6.23 , n il numero dei lanci dell i-esima tappa. Quindi,
Sia
E X una distribuzione con
1 l/n 0 l/n n n. Ogni variabile casuale i, ha geometrica
1 b centri g,
l/n . di successo b i 1 /b. e perci
probabilit
Il numero atteso di coppie di individui con lo stesso compleanno . dalI equazione b
i 6.24 .
E n,
esattamente la somma delle speranze matematiche individuali delle coppie, che

Per la linearit della speranza,


E4

kk 1 E E
g.,
2 ll
l b
Perci, quando l k 1 2n, il numero atteso di coppie di compleanni almeno 1. Quindi.
E n
se vi sono almeno v 2n individui in una stanza ci si puo aspettare che almeno due abbiano lo
stesso compleanno. Per n 365, se I 28 il numero atteso di coppie con lo stesso b
compleanno 28 27 1 2 36S 1,0356. Quindi, con almeno 28 persone, ci si aspetta di
-Eb b

trovare almeno ma coppia di compleanni uguali. Su Marte, dove un anno lungo 669 giorni
marziani, si ha bisogno di almeno 38 marziani.
j bg
h

La prima analisi ha determinato il numero di persone necessarie affinch la probabilit che


esista una coppia di compleanni uguaIi ecceda I/2, mentre la seconda analisi ha determinato
b in b 01 .
il numero di persone cui il numero atteso di compleanni
per uguali sia 1. Sebbene il numero
di persone differisca nelle due situazioni, asintoticamente lo stefano O In .
i L ultima

appro simativatlle,ite
riga segue dal

I lnb
limite

l..lnci
3.

prinla
sulle

che
serie

ci si pnssa
armoniche.
aspettare
In

c.,e
conclusione

o ni con
occonono

ni tore abbia
6.6.2 Palline e contenitori
una pallina.

Si consideri il del lancio casuale di ientiche,


processo palline numerate da I a f. in b
i

6.6.3 Sequenze di successi

con la stessa La che uno t


probabilith. probabilith pallina finisca in un dntn contenit ire i Ill .
i r ste i lumache

tni ilr l analiii ieguenb..


aipctt ire L ri posta i O1 v . cnnte
i si pui
contenitore. Si domande
possono porre parecchie interessunti sul del I ll1Clil.
processo
123
122 Capitolo 6 combinatoria e del/e probabilit
Calcolo

Si comincia che teste non p osizione


provando la lunghezza attesa della sequenza di teste lunga Ol la probabilit che una sequenza di almeno Llgn31
pi pi , Percio,
ia A l evento cui una sequenza di teste
per lunga almeno l cominci con l i-esimo lancio di
moneta o, sono ti p endenti
pi precisamente, I evento che i k lanci consecutivi i, i l, ..., i/- di Llpt lanci consecutivi. Poich questi gruppi
l gruppi j12
si,t una sequenza di lunghezza
producano solo teste, dove I I n e l i n - k 1. Perogni che ciascun non
dato eventoA,, laprobabilit e mutuamente esclusivi, la probabilit gruppo
che tutti i lanci siano teste ha una distribuzione geometrica con p 1/2
q Llp 12

er , iz . L l Ls JJ
l / n2n/
Ig n-l

I /n 1
6.47 l
- 2n/ign-l / n
Per k 2f1gn ,
n

r A .fs1 1/2 ls 1 g -1g

O 1/n .
p2lgn
i

l/n , la disuguaglianza 2.7 . 1.


Per arrivare a ci, si usata
. L ui a1meno I O 1In
che 1a sequenza 1unga ecce - J12
dato che 1a probabi1it pi
e cosi la probabilit che una Quindi,
sequenza di teste lunga almeno I 2 Ign3 cominci in posizione attes
i sar lunga almeno 0, la sua lunghezza
e dato che la sequenza

2 -O 1/n 0 Q lg n .
i la sequenza
pu cominciare. La che una sequenza di teste Llg n J /2 1 I /n
probabilit
di lunghezza almeno I 2 1gn l cominci da una qualsiasi posizione, perci

n -2 l1g n I Eser izi


Pr Ai,2 lgn l/n
U g
ri. Ciascun
,iri. C lancio indipen-
p
il il di avere lanciato le palline in b eonteniti
6.-E Si supponga
finisca in un qualsiasi
l/n, equamente che ciascuna pallin
dente ed prababile
che almeno
atteso di lanci oche ii - e o p ima
dato che, la disuguaglianza di Boole contenitore. Qual il numero
per 6.22 , la probabilit dell unione degli eventi al piii
un contenitore contenga due palline
i Boole vale anche eventi come
per questi che non sono indipendenti .
p leanni siano
La che del compleanno. inspirai
probabilit qualunque sequenza di teste sia lunga almeno 2f lpil perci 6.6-2 Per l analisi del paradosso
al i
che lo ariani rii pp p osta.
mutuamente indipendenti o sufficiente
1 I/n. Dato che ogni sequenza lunga al pi h, la lunghezza attesa deIla sequenza lunga
pi
superiormente limitata da sia che ci
essere invitate nd una te ta p erch pprobabile
6. 6-3 dovrebbero
n1 Quante persone
2 fig n 1 l/n jn O lgn . siano tre persone con lo stesso compleanno.

La probabilit che una se qt. enza di teste ecceda rf l en1 lanci diminuisce rapidamente con
it di c nrdinalit n sia in realt una
r. Perr l la p robabi che una sequenza che una I -stringa su un insieme
di j Ignfteste cominci dalla .izione i 6.6-4 Qual la probabilit
posizione dei
correlare pr,b p aradosso
/,--permutazione Come si pu questo
Pr i,rpgn 1/2
compleanni
1/n .

Quindi la probabilit che la sequenza dove ciascun lancio


piii lunga sia alnseno rl Ignl, aI pi u/n I/ o. lanciate in n coiuenito,
Si supponga che n palline siano
e uivalentemente, 6.6-5

. -
la probabilit
- che la sequenza
pi lunga abbia una lutsghezza minore di indipendente ed equamente
atteso
probabile
di contenitori
che la p
na
.
ttnisca

Q ual
in

il numero
un qualsiasi
atteso
contenitnre. Qu 1 il numero
Per esempio, ir 1000 lanci, la probabilit
per di avere una sequenza di almeno con esatt..unente una pallina.
klgn1 di contenitnri
20 teste al pi I/n I/1000. La probabilit di avere una sequenza lunga di 3 I l
pi I 3
al pi I hi - l/1000000. -, di successi mnstrando
1un ltezza ella . ei q e
uenza
RafTinarc c il limite inferiore della
6.6-6 di teite
iche nessuna sequenza
una moneto la prolnbiliti
che in t lane i di perfetta.
lllitli le i ti 1/0.
si 1 luil ,1 di l zii lglgtt
sequenze consecu1ive piil
di lunghezza Llgnjl2. Doli cc ii izinnc 647 , ii ha

Pr A, 1/2
jg p

l/ n .
... s il numero totale di volte che la linea 5 viene eseguita durante
e. Sia s s, s,
Problemi esecuzione del Mostrare che Es D lgn .
qualche programma.

6-J Palline e contenitori


6-3 Problema dell assunzione
In questo problema si analizza l effetto di varie ipotesi sul numero di modi di mettere n palline assistente. Ha fissato i colloqui
La professoressa Montalpini ha bisogno di assumere un nuovo
in b contenitori diversi. capaci . Purtroppo, le
con n aspiranti e vorrebbe fare la sua scelta soltanto in base alle loro

richiedono che dopo ogni colloquio eUa immediatamente scarti


a. Supporre che le n palline siano diverse e che il loro ordine dentro un contenitore non sia regole dell universit
importante. Dedurre che il numero di modi di menere le palline nei contenitori b. l aspirante o li offra il posto.

Montalpini decide di adottare la strategia di selezionare un intero positivo


b. Supporre che le siano diverse e, in ogni contenitore, ordinate. Provare che il La professoressa
palline
dopo il colloquio i primi k aspiranti e assumendo il primo aspirante successivo
numero di modi di mettere le palline nei contenitori b n 1 /b 1 . k n, scartando
Suggerimen-
che sia meglio di tutti aspiranti precedenti. Se I aspirane meglio qualificato
to si consideri il numero di moi di disporre n palline distinte e b 1 barrette indistingibili qualificato gli
k, allora scarter tutti n aspiranti. Mostrare chela proiessoressa Montalpini
in sequenza . tra i primi gli
di assumere l aspirants - egliendo k appmssi-
massimizza le sue possibilit pi qualificato
c. Supporre che le palline siano identiche e quindi che il loro ordine dentro un contenitore l aspiravate sono
mativamente uguale a n/e e che le sue possibilit di assumere pi qualificato
non sia importante. Mostrare che il numero di modi di mettere le palline nei contenitori
approssimativamente l/e.
- . quindi
Suggerimenro quante delle configurazioni della b sono ripetute se le
parte

palline sono identiche


6-4 Il contatore probabilistico
d. Supporre che le palline siano identiche e che nessun contenitnre contenga di una solo fino a -1. Con il contatore
pi Con un contatore di t bit normalmente si puo contare

pallina. Mostrare che il numero di modi di mettere le palline si pu contare fino a un Valore molto a scapito di un
.
n probabilistico di R. Morris, pi gode

e. Supporre che po di precisione.


le palline siano identiche e che nessun contenitore sia lasciato vuoto.
. un conteggio di n i 0. l.... 2 1, dove gIi n
Mostrare che il numero di modi di mettere le palline Un valore i del contatore rappresenta per
b-l -he del
formano una sequenza crescente di valnri non negativi. Si assuma il valore iniziale

il calcoln di n 0. L operazion I cREt, m opera in


contatore sia 0, che quindi rappresenta
6-2 Analisi del programma max Se i 2 1. al or i - inala un errore di
modo sul valore i del contatore.
probabilistico
Il seguente determina il valore massimo in un array non A l l1 j. viene aumentato di 1 con l ll
oppure
ordinato .. il contatore probabilit
ll, ,

programma presente overflow, altrimenti

viene lasciato cosi com con l 1/ n, l .


probabilit

ii i per ogni i 0, allora il contatore un contatore normale. Situazioni


l BIG.X C Se si seleziona
n 2 i 0 o n F il i-esimo numero di
interessanti si hanno se si seleziona per
2 fori 1 ton pi
Fibonacci si veda il paragrafo 2.2 .
3 do c Confronta Ai con nrax.
che n ,, sia sufficientemente nde da rendere trascura-
Per questo problema, si assuma
4 if A i ma.x

5 then ni m Ai j l bile la probabilit

Mostrare che
di un

il valore
errore

atteso
di overflnw.

rappresentatn dal contatore dopo n npetazioni INCRE 1ENT


a.
esattamente n.
Si vuole determinare il numero medio di volte in cui viene eseguito l assegnamento della linea
conteggio rappresentato dal contatore dipende dalla sequenza
5. Si assuma che i numeri in A costituiscano una casuale di n numeri distinti. h. L analisi della varianza del
permutazione
emp1ice n 100i o.ni i 0. Dare una stima della
egli n. Si cnnsideri un caso per
a. Simun numero t scelto c sua mente da un insieme di /- numeri distinti,qual la probabilit
valore rappresentato dal registro dnpo che sono .,-t , c .-,.suite n operazioni
varianza del
che x sia il numero dell insieme
pi grande
CREME .
b. Quando viene eseguita la liite i 5 del programnm, qual la relazione tra Ai e Ajjj per
j J
j

c. Per o ni i ne intervallo 1 i n, la probabilit ven


Note al capitnlo
qual che a eseguita ln linea 5
d. Sia os,s,...,s ,, -,
- . n nv ariabi.i casuali, * 4

dove s rappreienta il numero di vnlte 0 o 1 che


la linea S i iene esengj g durante l iterazione i-esinia del ciclo for. il valore
Qual uneso
Eli -
nel 1713 e di A. De Moivre nel 1730. Ulteriori sviluppi de11a teoria sono dovuti a P.S. de
Laplace, S.-D. Poisson e C.F. Gauss.

Le somme di variabili casuali furono studiate in origine da P.L. Chebyshev e A.A. Markov,
La teoria delle probabilit fu assiomatizzata da A.N. Kolmogorov nel 1933. I limiti sulle code
di distribuzione furono dati da Chernoff 40 e Hoeffding 99 . Molti lavori pionieristici sulle
strutture combinatorie casuali sono dovuti a P. Erdos.

Knuth 121 e Liu 140j sono buoni riferimenti per il calcolo combinatorio elementare.
Libri di testo standard come Billingslcy 28 , Chung 4I , Drake 57 , Feller 66 e Rozanov

171 offrono un ampia introduzione al calcolo delle probabilit. Bollobs 30 , Hofri 100
e Spencer 179 contengono un abbondante raccolta di tecniche evolute.
probabilistiche
Introduzione
Ordinamento e selezione
contiene diversi algoritmi che risolvono il seguente proMema di ordinai tento
Questa parte

Input una sequenza di n numeri vi,, a ..., a .

a .... a della sequenza di input tale che


Output una permutazione riordinamento a ,,

a, a ... a ,.

di input generalmente un array di n elementi, bench possa essere rappresentata


La sequenza

in qualche altro modo, per esempio come una lista concatenata.

La struttura dei dati

da ordinare raramente rappresentano singoli valori spesso ciascuno di


In pratica, i numeri
di una collezione di dati chiamata record. Ciascun record contiene una clriave,
essi fa parte
da ordinare, mentre la parte rimanente del record costituita dai dati satellite,
che il valore
collegati alla chiave in pratica, un algoritmo di ordinamento
che sono generalmente quando
le chiavi, deve eseguire la stessa anche sui dati sateIlite. Se ciascun
permuta permutazione
di dati satellite, spesso si permuta un array di puntatori ai record
record ha una grande quantit
che i record stessi in.modo da minimizzare il movimento dei dati.
piuttosto
dettagli implementativi che distinguono un algoritmo da un
In un certo senso, sono questi
cninpleto. Ordinare singoli numeri o grandi record che conten-
con ispondente programma
irrilevante rispetto al nretodo con cui una di ordinamento determina
gono numeri procedura
degli elementi. Di conseguenza, ci si interessa pi strettamente al
la posizione finale quando
che l input sia costituito soltanto da numeri. La
dell nrdinamento si assume
problema
numeri in un ordinare record
trasformazione di un algoriimo per ordinare programma per

semp1ice, sebbene in una data situazione di ingegnerizzazione del program-


concettualmente
che rendnno complessa la programmazione vera
ma ci potrebbero essere altri aspetti delicati

e propria.

l
Parte EI e selezione J31
Ordinamento

Algoritmi di ordinamento cpmplicg p ppp i jppe pie uito n


in are nel caso medio. Si fornisce anche un alooritmo pi

caso peggiore in tempo O sr .

Nel Capitolo 1 sono stati presentati due algoritmi che ordinano ir numeri reali. Insertion so

impiega,mn tempo 8 n- nel caso peggiore. Tuttavia, dato che i suoi cicli annidati sono
Prerequisiti
compatti, esso risulta un algoritmo di ordinamento in loco veloce quando l input piccolo,

Si ricordi che un algoritmo di ordinamento ordina in loco se soltanto un numero costante di


difficolt matematiche, ma alcuni richiedono
In genere parte non presenta paragrafi
elementi dell array di input memorizzato fuori dall array . Il merge so ha un miglior tempn questa
In le analisi del caso medio di quicksort,
concetti matematici pi sofisticati. panicolare,
di esecuzione asintotico, 8 ir Ign , ma la procedura MERCiE che esso usa non opera in loco.
che stata ripresa nel
buchet sort e dell algoritmo di selezione usano la probabilit, gi
In questa parte, saranno presentati altri due algoritmi che ordinano numeri reali arbitrari.
dell algoritmo di selezione. che richiede tempo lineare nel caso peggiore,
Capitolo 6. L analisi
Heapsort, presentato nel Capitolo 7, ordina n numeri in loco in tempo On Ignei esso u del caso
un complessi rispetto alle altre analisi
coinvolge concetti matematici po pi
un importante struttura di dati, chiamata heap, per realizzare una coda con priorit.
presentate in questa parte.
peggiore
Anche il quicksort, nel Capitolo 8, ordina n numeri in loco, ma il suo tempo di esecuzione

nel caso peggiore 8 n- . Il suo tempo di esecuzione nel caso medio per 8n 1gn e

generalmente nella pratica migliore dello heapsort. Come l insertion sort, il quicksort ha un
codice compatto, per cui il fattore costante nascosto del tempo di esecuzione piccolo un
algoritmo molto popolare per ordinare grandi array di input.

Insertion sort, merge sort, heapsort e quicksort sono tutti ordinamenti che operano per
confronto determinano la posizione finale degli elementi di un array di input confrontandali
l uno con l altro. Il Capitolo 9 comincia introducendo il modello dell albero di decisione che
consente di studiare le limitazioni delle prestazioni degli ordinamenti che operano per
confronto. Usando questo modello si dimostra un limite inferiore Qn Ign sul tempo di
esecuzione nel caso peggiore di qualsiasi ordinamento per confronto di n input, mostrando
cosi che heapsort e merge sort sono ordinamenti per confronto asintoticameme ottimi.

Il Capitolo 9 continua mostrando che si pu migliorare questo limite inferiore Qn 1pi se


si possono raccogliere informazioni per ordinare l input tramite qualcosa di diverso dal
confronto tra elementi. L algoritmo counting sort, per esempio, fa l ipotesi che i numeri
dell input appartengano alI insieme l, 2..., k usando array indicizzati, pu ordinare n
numeri in tempo 01 n. Per cui, quando I O it , l algoritmo di counting sort viene
eseguito in tempo lineare rispetto alla dimensione dell array di input. Un algoritmo correlato.
radix sort, pu essere usato per estendere l intervallo di applicazione del counting sort. se vi
sono n interi da ordinare e ciascun intero ha d cifre e ciascuna cifra nell insiense
1, 2,..., I , il radix so pu ordinare i numeri in tempo Odn k . Quando d una coartante
e k On radia sort viene eseguito in tempo lineare. Un terzo algoritmo, buchet sort, richiede
conoscenze sulla distribuzione probabilistica dei numeri nel array di input esso puo
ordinare n numeri reali uniformemente distribuiti in un intervallo semiaperto O, I in tempo
On nel caso medio.

Selezione

L i-esimo numero pi piccolo di un insieme di n numeri pu essere selezionato, in modo


ovvio, ordinando l input ed acceclen Jo sll i-esimo elemento clell initpcit. Senzaalcuna ipotesi
sulla distribuzione dell input, metodo viene eseguito in ten po Qn 1pi . cOtllC
questo
dimostra il limite inferiore nel Capitolo 9.
provato
Nel Capitolo 10 ii mostra che si puo trovare l i-esimo elCI11vlltO in temp i Oill i.
piii piccolo

pseudocodice campano che viene eseguit i in tempo n- nel caso io . ma in tc lllp


p
- Heapsort

Come il merge sort, e


In capitolo, si introdurr un altro algoritmo di ordinamento.
questo
di delI heapsort O i lpi Co
diversamente dall insertion sort, il tempo esecuzione
ordina in loco in ogni istante solo
l insertion sort, e diversamente dal merge sort, l heapsort

dell array memorizzato fuori dall array di input. Quindi


un numero costante di elementi

l heapsort i vantaggi dei due algoritmi di ordinamento gi discussi.


presenta
di algoritmi l uso di una struttura
Inoltre l heapsort introduce un altra tecnica di progetto
heap , durante l esecuzione d ll algoritmo.
di dati, denominata per gestire le informazioni

solo l heapsort, ma anche realizzare ef ttcientemen-


La struttura di dati heap utile non per per
sar riutilizzata in alcuni algoritmi di capitoli
te una coda con priorit. Questa struttura di dati

successivi.
heap dell heapso , ma in
Si noti che il termine originariamente fu coniato nel contesto
garbage-collector- com
seguito stato usato riferirsi alla memoria con il quella
per gestita
struttura di dati che viene i1o
fornita dal linguaggio di programmazione Lisp. La presentata
allo heap in questo libro, esso si
questo tipo di memoria, e dovunque ci sia un riferimento

rif alla struttura di dati definita in questo capitolo.

7.1 Heap

che essere visto come un albero binario quasi


La struttura di dati heap binario un array pu
nella figura 7.1. Ogni nodi dell albero
completo si veda il paragrafo 5.5.3 , come mostrato

contiene il valore del nodo. L alhero riempito


corrisponde a un elemento dell array che
il pi basso che riempito da sinistra
completamente su tutti i livelli iranne, eventualmente,
due attributi len.. th A , che
in poi. Un array A che rappresenta uno heap un oggeno con

il numero di elementi dello heap memorizzati


il numeto di elementi dell array e heap-si e A .
contenere elementi validi. nessun elemento
nell array A. Cio, bench A1 .. length A possa
elemento dello he p. La radice
dopo A lteap-si eA , dove heap-si-e A lengrhjA , un

del PARENT i . del 6 lio sinistro


dell alhero A I. e se i l indice di un nodo. l indice padre
LFw i e del figlio destro Rione i essere calcolati semplicemente
possono

PE Ew-t i

return Li/2 J

Lr i

return 2i
134 Capirolo 7 Heapsotf

Esercizi

di elementi in uno h-ap di


il numero massimo e il numero minimo
7.1-l Quali sono

,. 4 7 1 2 3 4 5 7 altezza h.
6 8 9 10

16 14 10 8 7 9 3 2 4 l
uno heap di n elementi ha altezza Llgn J.
7. 1-2 Mostrare che

heap nella radice del


in un sottoalbero di uno
7. 1-3 Mostrare che l elemento pi grande
b
Figura 7.1 Uno heap visro come un albero binario a e un arra Il numero dentro ogiii nodo
sottoalbero.
b.
il valore memori-.-ato iir nodo. If nc lnero ricino al nodo il corrisposidente is dice nell array.
quel
ch iato
risiedere l elemento piccolo, assumendo
7.1-4 In uno heap, dove potrebbe pi

Ricv i tutti distinti

return 2i 1
ordinato in ordine inverso uno heap
7.1-5 Un array

In molti calcolatori, la procedura LEI calcolare 2i con una sola istruzione semplicemente
pu 14, 6, 13. 10, l. 5, 7, 12 uno heap
7.1-6 La sequenza 23, 17,
traslando di una posizione a sinistra la rappresentazione binaria di i. Analogamente, la
procedura RtrHT pu velocemente calcolare 2i 1 tramite la traslazione della rappresenta-
zione binaria di i di una a sinistra e inserendo 1 nel bit di ordine basso. La
posizione pi heap
7.2 lVIantenimento della propriet dello
procedura PARENT pu calcolare Lil2J tramite la traslazione di i di una verso destra.
posizione
In una buona realizzazione dello heapsort, tre sono spesso realizzate
queste procedure come A e
macro -in-linea . I suoi input sono un -.
sottoprogramma gli heap.
procedure o HEAPIFY un importante per gestire
che alberi binm con
HE ptvv viene chiamata, si assume gli
Gli h cap soddisfano anche un indice i nell array. Quando
la propriet di ordinai tento dello beai nel seguito
parziale che essere dei iui i figli.
e Rtavv i siano heap, ma che A ij possa pi piccolo
sar chiamata semplicemente de1lo radice in LEi i ..vendere
pi propriet lieap per ogni nodo i diverso dalla radice, il
La funzione di HvwptFv di lasciar
violando cosi la propriet dello heap 7.1 .
A PARENT i j Ai. di indice i diventi uno he
nello heap cosi che il sattoalbero con radice
valor di A i
cio il va1ore di un nodo minore o uguale al valore del I elemento
padre. Quindi pi grande
nello heap memorizzato nella radice e i sottoalberi di qualunque nodo contengono valori non HEAPIFY A, i
maggiori del valore dql nodo stesso.
1 I c LeFT i
Si definisce altera di un nodo in un albero il numero di archi sul lungo camminino
pi Ricca i
2 r
semplice discendente che va dal nodo a una foglia, e si definisce altezza dell albero l altezza
3 if / heap-size Aj e Al Ai

altezza 8 lgn si veda l Eserci zio 7.1-2 . Si vedr che le operazioni di base sugli 4 then largesr m I
heap hanno
un tempo di esecuzione al piii all altezza dell albero
proporzionale e quindi impiegano un 5 else lvrgesl - i

if r he -si eA e Ar A le rgest j
6
mostra come usarle in un algoritmo di ordinamento e in una struttura di dati chiamata coda
7 then largesr - r
con priorit.
8 if lnrgest c i
La procedura HEAPIFY, che ha tempo di esecuzione O lgn , lu procedura chiave per
mantenere la propriet dello he p then scambia Ai A lar,usti
7. 1 . 9

La Bun.o-Hz v, che H r ,xvir-s A, fargest


procedura ha tempo di esecuzione lineare, uno heap i partire IO
produce
da un array di input non ordinato.

La procedurQ HEAPSORT. che ha tempo di esecuzione O ii 1gir , ordina un array in 1 ivo.


Le p
procedure Extzwcr-Max
Extra e lr svav. che hanno temporali cc suzione O lp . permetton i
di usare la struttura di dati hevp eotne cocla con priorit. d, on A .i r,. l.
i.
ir h. il i.ilare
Heapsort 137
X3 Capitolo 7

i se l elemento Ai pi grande dei suoi


7.2-2 l effetto di chiamare Haetfv A.
Qual
figli

di chiamare HE tre A, i per i heap-si e A 12


7.2-3 Qual l effetto
7

in termini di fattori costanti, tranne che


Il codice di Hsw im abbastanza efficiente
7. 2-4
10, che in qualche compila-
la chiamata ricorsiva nella linea potrebbe provocare
per
Scrivere una He etw efficiente
tore la produzione di codice inefficiente. procedura
b
iterativo un ciclo invece della ricorsione.
che usi un costrutto di controllo

di esecuzione di HEAerrv su uno heap di


Mostrare che, nel caso peggiore, il tempo
7.2-5
uno heap con n nodi, assegnare valori
dimensione n Q lgn . Swggerime iro per
sia chiamata ricorsivamente su ogni nodo del cammino
ai nodi in modo che HEAPIFY

7 dalla radice fino a una foglia .

7.3 Costruzione di uno heap

c
convertire un array A f 1 .. n . con
usare la procedura HEAPlFY in modo bonom-up per
Si pu
Figura 7.2 L a ,ione di Hh v,n A, 2, dot,e Ireap-si,e A 10. La fi gura ioite ini iale dello
n length A , in uno heap.
heap viola la dello heap A2 ite l no d o i 2 non piir
propriet poich grande dei suoi fi li.i. Laa
nel sottoarray A Lnl- 1 .. n sono tutte foglie
proprietdelloheapripristinataperilnodo2 illI b SCQttl fPlQilC I O 8 2 , CO11 A 4 , 1110 ClOpc Pta a violr i e Per cominciare, poich gli elementi
aproprier elloheapperilnodo4.Lachiamataricorsiva un solo elemento. La Buiio-HEsr
HEAvtn A,4 vnei 4. 0 dell albero. ognuno di essi uno heap di procedura
A4 o A j , ome m
mostrato mo inn c, il nodo 4 sisremalo e la chiamara ricorsiva HEa tFY A, 9 11011 HFwvtFv su ognuno di essi. L ordine in cui i nodi
attraversa i restanti nodi dell albero ed esegue
PECI1iede ulteriori cambiamenti della struttura di dati. che
con radice nei tigli di un nodo i sono heap, prima
sono trattati garantisce che i sottoalberi

HEAPlFY Venga eseguita su quel nodo.

originale di Ai, e quindi il sottoalbero con radice nel nodo largest violare ia
potrebbe
propriet dello heap. p. Di cnse uenza He wn
H deve essere Butto-Hne A
, chiamata ricorsi vamente su qeso
qu t
sottoalbero. eA c- le gth A
1 heap-si

Il tempo di esecuzione di HeAetFv su un sottoalbero di dimensione 2 for i c Llengsh A 12J doivnto 1


n con radice in un dato

3 do HEAPIFY A, i

p p r eseguire HEavin su un sottoalbero con radice in uno dei due figli del nodn
I
i. I ssottoalberi dei figli hanno ciascuno dimension ne a I pi 2 n 13 i caso peggiore si verifica un esempio dell esecuzione di Buri-HeAP.
uItimo I La figura 7.3 mostra
uan
quan o u t livello dell albero pieno esattamente a me
met e i tempo d i esecuzione di nel
limite superiore sul tempo di esecuzione di BA n.n-HEAv
Si pu calcolare un semplice
EAPIFY pu allora essere descritto dalla ricorrenza
richiede un tempo O lgn e tali chiamate sono 0i .
modo seguente. Ogni chiamata a HEAPIFY
Tn T 2n/3 81 ign . limite superiore, sebbene corretto.
. il tempo di esecuzione al pi On Questo
Quindi
La della non asintoticamente stretto.
soluzione ricorrenza, er il caso del teorema
principale Teorema 4.1 .
che il tempo fnr eseguire Hz,ivivv su un
Tn O lgir . In alternativa, si p u o definire
d coine O lr il tetnpo di esecuzione Si pu derivare un limite stretto osservando per
di i Hz.z.st
viF iFs ..u pi
e le altezze di molti nodi sono Un mialisi
un nodo di altezza h. nodn varia con l altezza del nodo i eli lbero piccole.
ha altezza LlgnJ si veda
si basa sullaproprieth che uno he.ip di n elementi
pi rigorosa
eli altezza h si veci, l Esercizio 7.3- .
I Esercizio 7.1-2 e al pi I nl2 annali
Esercizi
di altezza li O l , si
da Hrxvlvv c chi un ta su un t odo quindi
Il tempo richiesto quando
esprimere il costo tot le di B w.n-Hi sv come
7.2-1 pu
Usando la fi ura 7. - CUlllt , lllOGCllo, illustrare Ic operaziuni di Ht Af it s A.
sull array A 27. 17, 3. 16. 13. 10. i, S. 7, 12,4, 8, 9, 0 .
Oh O , 7.2
, g
n
Heapsorr 139
13S - Capirolo 7

il tempo di esecuzione di BUILD-HEAP essere cosi limitato


A 4 1 3. Quindi pu
2 16 9 10 14 8 7

3
- 0n
-
.

si pu costruire uno heap da un array non ordinato in tempo lineare.


In conclusione,
7

Esercizi

7.3 come modello, illustrare le operazioni di B v Lo-HEwv sull array


b 7.3-1 Usando la figura

A 5,3, 17, 10,84, 19,6,22,9 .

l indice i del ciclo nella linea 2 di Butt.o-HE v da Llengrh


7.3-2 Perch si fa decrescere
3 a l invece di farlo crescere da 1 a Llengrl A 12J
A 12

7 4
heap di n elementi vi sono al I 12 I nodi di
7.3-3 Mostrare che in qualunque pi

RllCZZR /l.
8 9 10

2 8 7
c d 7.4 L algoritmo heapsort

con il costruire uno heap sull array di input A1 .. n, con


L algoritmo heapsort comincia

length A , usando Bun.o-Hip. Poich l elemento d ll array memorizzato


n pi grande
2
essere nella sua corretta ima e scambiandolo con
nella radice A1, esso pu posto posizione
cancella l cap-size A , si osserva che
A nj. Se si il nodo n dallo heap decrementando
7 in uno heap. I figli della radice rimangono
A1 .. i 1 facilmente essere trasformato
pu
nella radice violare la 7.1 dello heap. Per
heap, ma il nuovo elemento puo propriet
heap, comunque sufficiente chiamare HEAwrv A, 1 , che rende
ripristinare la propriet dello
L algoritmo heapsort ripete per lo heap di
via via A 1-.. n l uno heap. questo processo
e dimensione n I fino allo heap di dimensione 2.
0

Figura 7. L esecu-ione di Buco-Hz v, mostrata attrai esso la struttrira di dati defla clriamara
prinra
a HEAPIFY ltella livrea 3 di BuLD-Hewv. a Un arra di input A di 10 elementi e l albero l inario cl e
lo rappresene. La m,rsrra che I indie,,
H vson A
figura i de1 cicfo pm,ra al odo 5 pri na della chia,nata a
HEAPIFY A. i. b La struttura di dati risultante. l. iildlce i del cick l itera ivi e successi a punta Borio-Hne A
per 1
al modo 4. cl- e Le irera ioidi successive del cic 1 for nel1a Bciio-HEwv. Si r vse si c1re .re HF vivY
2 for i m lengrh A downto 2
viene chiavtata sr un irodo, i due scrttoall eri di nodo sono heap e rrambi. Lo henp dcipr c lie
quel f
Buco-Hz a terininara. 3 do scambia A1 m A fi

4 lieap-si eA - h ap si eA l

5 HE, vivv A. 1
L ultima sommatoria pu essere valutata sostituendo.v 1/2 nella formula 3 .6 , cui vale
per

7.4 mostra un esempio dell opervziutse di heapsort dopo che lu lleap stato costruito
h 1/2 La fi cura
w l
E I 1 /2 -
pt

hO

2.
Heapsort 141

10 7.5 Code con priorit


8 10

7 9 3 4 3
Heapsort un buon algoritmo, ma una buona realizzazione del quicksort, presentato nel
2
2 di dati heap ha un utilit
Capitolo 8, di solito migliore in pratica. Ci nonostante, la struttura
b applicazioni dello heap
c enorme. In questo paragrafo, sar presentata una delle pi conosciute

il suo uso come efficiente coda con priorit.

Una coda con priorit una struttura di dati per mantenere un insieme S di elementi, ognuno

con un valore associato chiamato chiave. Una coda con priorit offre le seguenti operazioni.

IxsERv S, x inserisce l elemento x nell insieme S, guest operazione potrebbe essere scritta

come S S u x.
il,
Q MAxwvu S restituisce l elemento di S con chiave pi grande.
d
e
ErrRwcr-Max S rimuove e restituisce l elemento di S con chiave pi grande.

Una applicazione delle code con l allocazione di processi su un calcolatore


priorit
4
3 condiviso. La coda con mantiene traccia dei processi che devono essere eseguiti e
priorit
2 3 delle loro priorit relative. Quando un processo termina o interrotto, il processo con priorit
2 1
pi alta selezionato tra in attesa usando ExvRwcr-MAx. Un nuovo processo puo essere
1 iQ7
quelli
Qg Qy Q Q 5 5Q aggiunto aI1a coda in qualunque momento usando L sew .

Q1 Q1 l Q Una coda con essere usata nella simulazione di un sistema dagli eventi.
Ql Qf Q priorit puo guidato
g Q Q
h Gli elementi nella coda sono eventi che devono essere simulati, ognuno con associato il tempo

in cui deve avvenire, che serve come chiave. Gli eventi devono essere simulati seguendo

come ordine il loro tempo di occorrenza. perch la simulazione di un evento pu provocare


g
la simulazione di altri eventi nel futuro. Per quest applicazione, naturale invertire l ordine
i
Qy lineare della coda con e offrire le operazioni Mwtwt w e ExtRwrr-Mtw invece di
priorit
4 7 8 9 10 14
MAXIMUM C EXTRACT-Max. Il programma di simulazione usa ExTRAcr-Mie, ad ogni passo e
Q7 QS Q9
sceglie il prossimo evento da simulare. Via via che nuovi eventi si presentano, essi sono
Q 11 il
inseriti nella coda con priorit usando Issen.
i j
Non sorprende che realizzare una coda con priorit si possa usare uno heap. L opera-
per
Figura 7.4 L esecu ione di HEAPSORT. a La strrisrura di dari heap subito zione HE v-M xtwuw restituisce l elemento pi grande dello heap it tempo 01 restituendo
dopo che s ara costruira

istante. semplicemente il valore A 1 dello heap. La procedura He,v-Ex Aa-Max simile al corpo
valore di i in Nel1o
quel1 / cap rimair prono solo i chiodi chiari. k ll ri sultante array A ordinato. del ciclo for della Hr vsoRt
linee 3-5 procedura

HEAP-EXTRACT-Max A

Esercizi l if/teap-si eA 1
heap
then error underflow
7.4-1 Usando Ia figura 7.4 come modello, illustrare l operazione di HEAPSORT 3 l lCIX - Al i
SU l llTBp
A 5. 13. 2, 25, 7. 17, 20, 8. 4 .
4 A1 c A ltecip-si..e A

5 heap-si A heap-si eA l
, -
7.4-2 Qu
Q i tcmpodi esecuzion ci lwapsort..- su un irrayA di lunghezza i o
gihordinato in o 6 Hv,iwrv A, 1
in ordin crescente E se I ordine decrescente
7 retuns n a.v

7.4-3 l .
M s . tnt che il tempo eli ciecurionc . di hevpi rt Q- Ipr
n c nel caso
pe iore.

costante di lavoro iltiv al tempo OI n di Hi nwnv.


142 Capito1o 7
Heapsort 143

La procedura Hmv-INSERT inserisce un nodo nello heap A. Per farlo, espande


prima lo heap
aggiungendo una nuoa foglia all albero. Poi, in un modo che rirorda il ciclo di inserimento
linee5-7 dell INSERTION-SORTdel J. l,percorre
paragrafo uncamminodaquestafoglia vers o
la radice trovare un
per posto appropriato al nuovo elemento.

HEAP-IxsERT A, key

l Ireap-size A - heap-si eA J 1
i m Ireap-si e A

3 while i l e A I ey
Pmem i
4 do A ij m A PARENT i
5 i- Pa RFvr i

6 Ai m key

La figura 7.5 mostra un esempio di operazione HEwe-INSERT. Il tempo di esecuzione di HE. v-


INSERT Sll uno heap di n elementi O lgr , il cammino seguito
poich dalla nuoi a foglia alla
radice ha lunghezza O lg .

Per riassumere, uno heap offrire


puo una qualunque operazione di coda con priorit su un
insieme di dimensione n in tempo O lgli . c j

Figura 7 3 L esecu ionediHewp-IwseRT. L il eapdella 4a


Esercizi a fig r n7 prinrachesiinseriscc rmnndn
, - -.
coi c . . I miniitr da1ln nwn u fot lia
alla radice so,io risistemati non si trova ah In clrian l .. La i Itiaie 15 irrserita.
finch posto per
7.5-I Usando la figura 7.5 come modello, illustrare l operazione di Hzav-IissRt A. 10
sullo heap A 13, 9, 5, 12,
15, 8, 7, 4, 0, 6, 2, I.

7.5-2 Illustrare
Problemi
inoltre l operazione di He ,v-ExvRwcr-Max sullo heap A 15. 13, 9. 5.
12, 8, 7, 4, 0, 6, 2, 1.
7-1 Costruzione di uno keap ewr l inserzio re

7.5-3 Mostrare come La procedura Ru io-HEAP del 7.3 essere realizzata usando ripetutamente HEAP-
realizzare una coda pwagrafo pu
primo-amvito-primo-servito FIFO con una
coda con INSERT per inserire elementi nello heap. Si consideri la seguente realizzazione
priorit. Mostrare come realizzare una gli
pila usando una coda con priorit.
Code FIFO e pile snno definite neI paragrafo I l. I .
Buia -HeAv A

7.5-4 Realizzare una 1 lreap-si-e A -


procedura Hni -1NCREASE-KEY A, i, l . che l
ponga Ai max A i . l
e aggiorni 1a struttura heap appropriatamente e che richieda O lgn tempo. 2 for i 2 to length A

3 do HE P- NSERT A, Ai
7.5-5 L operazione HE v-De.me A, i cancella l elemento del nodo i dallo heap .4.
Realizzare una procedura Hne-DELETE che venga eseguita in tempo Le
O l,n su unn a. procedure BCico-Hpwv e ButLo-HEAP. se anno eseguite sullo stesso arra/ di input.
heap di n elementi.
creano sempre lo stesso he p Dimostrare che lo faimo o fornire un coi troesempio.

h. Mostrare che. nel caso BuiLn-Ht...iv richiede un ten po Oi 1gn una


7.5-6 Descrivere un
peggiore. percoitruire
algoritmo con tempo di esecuzione On 1gl
per fondere I lift, he p di n elementi.
ordinate in una lista ordinata. dove ir il numero totale di elementi di tutte liit
le
in input. Sugge in e ro usare uno heap
per lu fusione delle / liste .
7-2 Analisi di Jreap d-ari

Uno heap d-ario come uno heap binario, ma i nodi hanno d figli invece di 2.

a. Come si potrebbe rappresentare uno heap d-aria in un array Quicksort


b. Qual l altezza di uno heap d-ario di n elementi espresso in termini di n e d

c. Realizzare una procedura efficiente di Exmacr-Iub x. Analizzare il suo tempo di esecu-


zione in termini di d e n.

d. Realizzare una procedura efficiente di Issai. Analizzare il suo tempo di esecuzione in


termini di d e n.

e. Realizzare una procedura efficiente di HEAP-INCREASE-KEv A, i. k , che ponga


Ai c max A i , k e aggiorni la struttura heap appropriatamente. Analizzare il suo
tempo di esecuzione in termini di d e n. Il guicksort un algoritmo di ordinamento il cui tempo di esecuzione nel caso 8/
peggiore
su un array di input di n elementi. Malgrado tempo di esecuzione lento nel caso peggiore,
questo
il quicksort spesso la migliore scelta di ordinamento in media note olmente
pratica perch
Note al capitolo efficiente il suo tempo medio di esecuzione 8n 1gn , e i fattori costanti nascosti nella

notazione 8n Ign sono sufficientemente Offre inoltre il vantaggio di ordinare in loco


piccoli.
veda il paragrafo I. 1 e funziona bene anche in ambienti con memoria virtuale.
L algoritmo heapsort si
fu progettato da Williams 202 , che descrisse anche come realizzare
Il p grafo 8.1 descrive l algoritmo e un impanante sottoprogr sma usato dal quickort per
na coda con priod t r remi ana h cap. La B viro-Hhav fu p ro po a da Fio d
procedura f 69 .
I il comportamento del complesso si comincer nel
il partizionamento. Poich quicksort
l paragrafo 8.2 con una discussione intuitiva delle sue prestazioni. rimandandone l anali. i formale
encratore
alla fine del capitolo. Il paragrafo 8.3 due versioni del quicksort che usano un
presenta
randomizzati Il loro tempo di
di numeri casuali. algoritmi molti vantaggi.
Questi presentano
esecuzione nel caso buono, e nessun input il comportamento del cas
medio particolare provoca
del analizzata nel 8.4. dove sar
peggiore. Una delle versioni randomizzate quicksort paragrafo
mostrato il suo di esecuzione O ir nel caso e On 1gn nel ida medio.
che tempo peggiore

8.1 Descrizione del quieksort

basato sul divide-et-impera introdotto nel


Il quicksort, come il merge sort, paradigma
ordinare un tipico sottoarray . p l
paragrafo 1.3.1. Il processo divide-et-impera per
richiede le tre fasi qui descritte.

due sottoarny non vuoti A ..qj e


Divide l array Ap .. r ripartito tisistemato in

Aq 1 .. r inmodotalecheognielementodiA p .. q siaminoreougualeaqualunque
da questa di pzcizionanlellN.
elemento di A q 1 . r . L indice q calcolato procedura

r sono ordinati coi chizinate ricorsive a


Impera i due sottoanay Ap .. q e Aq1 ..

quick ort.

Ricombina i sottoarray on i ordinati in loco. non richiesto alcuno catorzo per


poich
ricombinarli l intero array Ap .. r i subito ordinato. La seguehte proiedura

realizza il quicksort.

A. l
Ql ICKS RT /.

I ifp r

tllen c C P xl rl I ioN A, p. r

3 Ql ic vsoin A. p. q

Ql I K i llkT A. / I. I

I
Quickson 147

A p..r
ordinare l intero array A, la chiamata iniziale Qutcxson A, l, length A .
Per

Partizionamento dell array t t


a J b c
la procedura PwRvtt ow, che risistema il sottoarray Ap .. r in loco.
Il cuore dell algoritmo

A p.. qj A q 1.. r

PARTITION A, p, r
332 5 7 3 3 2 1 4 6 5 7
1 xmA p

2 i -p l
1 j retum i
j
3 j c-r l
d e
4 while TRVE
array
do repeat l elementi cfriaro dell s mo
5 j j Figura 8.1 Esempio di esecu-ione di PwRtmos su un arra . Gli grigio array
scuri i on sono ancora ne fa loro a L
x stati messi nellaparti ione correrra e quelli parti ione.
6 until Aj

7 repeat i i l

8 until Ai x

9 if i j
c wgsia1i az 5, e gli elementi dell array dopo A fj scruta
10 then scambia Ai - Aj che precedono e inclndoiro A j sonar minori

tllQggiori o ugnerli a x 5.
11 else return j

La figura 8.1 mostra come funziona PARTITlON. Prima viene selezionato un elemento x Ap Esercizi
perno vengono
da A p .. r come elemento attorno al quale partizionare Ap .. rj. Quindi
come modello. illustrare le operazioni di PARvn ton sull arrai
.. r rispettivamente dall inizio e dalla fine di 8.1-I Usando la figura 8.1
fatte crescere le due regioni Ap .. i e Aj
in A 13, 19,9. 5, 12,8,7,4. 11,2.6. 21 .
Ap .. r cosi che ogni elemento in A p .. i sia minore o uguale a x e ogni elemento

Aj .. r sia maggiore o uguale ax. Inizialmente i p 1ej r l e le due regioni sono vuote.
PAR11TIOV SC tutti elementi nell array Ap . r
e l indice i incrementato, nelle linee 8.1-2 Quale valore di q restituisce gli
Nel corpo del ciclo while. l indice j decrementato
hanno lo stesso valore
5-8, finch Ai x A Assumendo che disuguaglianze siano strette. Ai troppo
j. queste
appartenere alla regione bassa e Ag troppo per appartenere alla regione
grande per piccolo
il tempo di esecuzione di PARTITlotl su un sottoarray
estendere le due 8.I-3 Spiegare brevemente perch
alta. Cos , scambiando Ai e Ag, come fatto nella linea 10, si possono
comunque . di dimensione n 8n.
regioni. le disuguaglianze non sono strette, lo scambio pu essere eseguito
Se

Il corpo del ciclo svhile si ripete finch i a questo l intero array Ap .. r stato
j, punto ordinare in ordine decrescente
8.1-4 Come si mdificure Qcicasoet per
r, tali che nessun potrebbe
ripartizionato in due sottoarray A p.. q e Aq 1. r, dove p q
elemento di A p .. q pi grande di qualunque elemento di A q 1 .. r. Il valore q j

restituito alla fine della procedura.


8.2 Prestazioni del quicksort
Concettualmente, la di esegue una funzione semplice. pone gli
procedura partizione
elementi di.v nella regione basia dell array e quelli pi grandi di.v nella regione t
pih piccnli o
di quicksor dipende dal fatto che il partizionamento sia bihnciato
che lo pseudocodice di P w mow un po complicato. Il tempo di esecuzione
alta. Vi sono aspetti tecnici .cndono pero
sono usati il partizionumento. S
r tuori sbil J11Ciato e ci a sua volta dipende da quali e1ementi per
Per esempio indici i e j non devono nni riferirsi a elementi del sottoarray Ap .
gli
dai limiti, nsa cio non evidente dal codice. Inoltre, importante che A fp sia usatn come

elemento perno. Se invece venisse usato A r e se esso fosse anche l elemento pi grande nel i
sottoarray Ap .. r, allora P RTITrot re tituirebhe u QuicvsoRt il valore r. e Qutcwsow r
q
di che Pi nttos i corrct t i. bilanci minio dell i partizione.
andrebbe in ciclo per sempre. Il Pr hl ma 8- I richiede provare

Il tempo di esecuzione di P Rrrno iu un array Ap .. r 8 ir , dove n r-p I si iena

l Esercizio 8.1-3 .
149
Quicksort

.q
l n-I n

I Il 2 n-l
-- - - .l n
n/8 n/8 n/8 n/8 n/8
---1 lg n n/8 n j8 np
n I Il-3 Il 2

l I I l l - n
T 1 1 1 1 1 1 1 1 l 1

1 On Ig n
On

sempre i due lari delle


in cui PsRvmo bilancia
. Figura 8.3 Un albera di ricorren-a per Qctcvsow
Figura 8.2 Un albero di ricorren-a QctcwsoRt in cui la roced lft Rlll10 tl M O O 1gn .
per p esecu ione che ire risuhn 8n
migliore . Il tempo di
a o ione in moch aguale caso
n e aparti-ione ilcasopeggiore .Iltempodiesecu-ionechenerisalraO ir . parti

Partizionamento migliore
Partizionamento peggiore

n/Z. il quicksort viene


due regioni di dimensione
Se la procedura di partizionamento produce
Il comportamento pe eiore del quicksort avviene il sottopro ramntadi art Q
quando o allora
1 eseguito molto velocemente. La ricorrenza
oc1 c0 M ,o o
con ii 1 elementi e una con un solo elemento. n pi
Quest affermazi
dimostrata nel paragrafo 8.4.1 . Tn 2T n/2 8n,
come soluzione Tn On 1gn .
Tenrema 4.1 , ha
Si assuma che questo sbilanciato avvenga ad ogni dell algoritmo. che, dal caso 2 del teorema principale
partizionamento passo La figura 8.3
un algoritmo molto pi i eloce.
Poich il partizionamento richiede tempo On e T1 O l Pertanto il partizionamento migliore produce
. I
di quicksort nel caso mig1iore.
mostra albero di ricorrenza per l esecuzione

Tn Tn 1 8n .

Per valutare si osseni Par tizionamento bilanciato


questa decorrenza, h TI 81 e quindi si iteri

vicino al caso migliore che


Tn Tn 1 8n di quicksort nel caso medio molto pi
Il tempo di esecuzione
Per comprendere cio. bisogna analizzare
n
sar analizzato nel 84.
al peggiore, come paragrafo
8k che descrive il tempo di
della si ritletta sutla ricorrenza
g come i1 bilanciamento partizione

esecuzione.
sempre una
che l algoritmo di partixinnamento produca
s ga Si supponga, per esempio,
Allora si ottiene
sufticientemente sbilanciata.
suddivisione di 9 a 1, che aprilia visn sembra

8 n- . la ricorrenza

Tn T 9n/10 T n/10 n
Si ottiene l ultima ri a osservand o che la serie aritmetica La figura S.Z mostra ostituito a 8n. La t gura
,l p.2 . dove coinodith n stato
il tempo di esecuzione di quicksort. per
un alberodi ricorrenza uicks
i quic nel . per ha
perl esec tzionedi sort caso pe iore. . Si veda nel pura foc Si noti che ogni livello dcll albero
di ricorrenza ricorrenza.
8.4 mostra l albero per questa
. una presentazione degli alberi di ricorrenza . lo Il . e

condizione ni contorno alla protonditb


81

un costo n. finch raggiunta una A/1

Di conseguenza, se il p rtizionansento il i sbi a op SS o-B


P pQ..oA-O.
e ori,
a goritmo, allor, - - n- . - . embr i
il ten po di .
esecuzione O, u il ten po di esecuzione di listello di ricorrenza che intuitivamente
Q
Quindi Cosi, con una. uddivisione di 9 a l gel o ni

. lllCllC
esecuzione8
es - rr - 8 .si verittcaquandol arra rray di i input
in ut gi ordinato una .situazione
, - lli FCJll l
ll11
triquente.e . si avrehbe se la suddivisl 1I1C fl SII CSBlt llllClltC
D lllCt l.

insertion lo iterano che


in ct,i sort ecc, uito in tempo O gi .
i nnditi O lgir .
un albero li ricorrenza pro
suddivisione di ili osriuiri prOduci
proporzion
151
gmcksorr
Capitolo 8

n n

8n
l On
9
o
log
zn n-1 /2 1 n-1 /2
I 9 9 81
100 op 00 I 00
log,o,e
/ K
/
/ b

81 729 ricorren-a l algorismo di quickson.


Il parri-ronamento
l 8.S Due livelli di un albero di per
Figura a l e
-svantaggiosa d i dime rsione
1000 1000 u,ta suddivisione
due sortoarray
nel1a radice costa n e produce
n l e p rodrrce w
I h del sotroarray di dimensione n 1 cesta
tr I. D altra parte, il pani-ionamento
. livello di un albero
.i . .
su i
siaia n olro
molro l.-en bilanciato.
dei livelli combinati di a, malgrado
di ricorre a che risulta peggiore

On Ig n l e Il/2 con un costo


sottoarray di dimensione n 1 12 n
singolo livelIo produce due
Fioura 8.4 Un alber odi ricorren molto vicina al bilanciamento, certamente p della
a per QulcKsoRT in cui PwRTttlos sempre uiia suddivisione n 8 . Quest ultima situazione
prodnce essere
9 a I, irtantenendo wr teinpo della cattiva suddivisione pu
di esecu ioire di O sr 1gn . 9 a l. Intuitivamente, il costo 8n
suddivisione
Di conseguenza, il
buona, il costo risultante buono.
assorbito nel costo 8n de11a quindi
buone e cattive,
di quicksort, sui livelli si alternano partizioni
tempo di esecuzione quando
in cui il costo di ogni livello On. Il tempo an n ln,
di esecuzione quindi On 1g r ogni volta che soltanto buone
come il tempo di esecuzione quando si hanno partizioni
la suddivisione abbia costante. ande. . Verr fatta
proporzionalit 0 leggermente pi rand
ma con una costante nascosta dalla notazione

rigorosa del caso medio nel paragrafo 8.4.2.


un analisi
Concetti intuitivi sul caso medio

Esercizi
Per sviluppare una nozione chiara del caso medio bisogna fare un
per quicksort, ipotesi su
quanto frequentemente ci si aspettadi elementi
incontrare i var t d . U ipotesi comune che di Qu cyson 8n 1gn se tutti gli
8.2-1 Mostrare che il tempo di esecuzione
tutte le permutazioni dei numeri in input siano equamente Si discuter
probabili. quest ipotesi A hanno lo stesso valore.
ne ell array
prossimo paragrafo , ma intanto si studieranno subito le sue implicazioni.
Quando si esegue guicksort su un array di input preso a caso, improbabile che il 8 n- se l array A contiene
che il tempo di esecuzione di QuicxsoRI
partizionamento avvera nello stesso 8.2-2 Mostrare
modo ad ogni livello, come stato ipotizzato Il decrescente.
dente elementi distinti ed ordinato in ordine
p atialisi informale. ragionevole aspettarsi che qualche suddivisione sia ben
i anciata e che non lo sia.
qualcuna Per esempio. l Esercizio 8.2-5 chiede di mostrare che ordine
circa l ord in cui sono
per cento delle volte P nrriorl le transazioni su un conto seguendo
produce una suddivisione bI t d 9 I 8.2-3 Le banche spesso registrano
pi il loro
e circa i cento ricevere
per delle volte una suddivisione che nel tempo, rna molte persone potrebbero preferire
prnduce meno bilanciata di 9 a l. state eseguite
Le ene di solito
Nel caso medio, buone - con li assegni ordinuti per numero. ars
PARTITION un misto di suddivisioni . estratto conto bancario .
produce. 1 con
a e i commercianti di solito li riscuotono
nn i ricorrenza dell esecuzione di scrivono assegni ordinati per numero
PARTITION nel caso medio, 1e suddivisioni gli
buone e a ta di transa-
cattive sono distribuite Il problema di convertire l ordinamento per
lungo lab ero in modo casuale. Si supponga ragionevole prontezze.
per semplicit che di
l suddivisionf
per
numero di assegno quindi un tipico p roblema
buone e cattive si alternino sui livelli zione in ordinamento per
dell albero e che le buone siano i casi SORT

migliori di ordinatn. Dimostrare che la procedura fl liNSERTION

i ri. ordinamento di input quasi


a,guru S. a mostra le
tendere a superare le prestazioni
d
della p rocedura
su prohlema dovrebbe
questo
n per i e i sottoarray
partizionamento prodotti hanno dimensione i l e I QUICKSORT.
il caso
peggiore. Al livello succe il sottoarray di dimen o 1 partizionato in due
sottoarray di dinteniione basivo,
i1 il caso ii n i in
n migliore. Si assuma che il cnstn della condiziome di ad ogni livello. prnporzione
t 8.2-4 Si supponga che le suddivisioni qui l sort,
al contorno sia I per il sottoarray cti dimensione It l Iminimadiuna
1. ..l i Ulla coi Jllte. r10ilfal c 611 ll pfOIOll.
X I C ClOVC 0 C CX 1/2
, maisima
La caoambinazione
b di una sudclivisione
. uit .. . i
leiillga e la o ondit
proton
cattiva .se a da una b trono d iottoarrai ia nell zlbero di ricorrano prcsiappoco g
prnduce tre fngliu
n
con d,
dimensione , 1, n- lI /Be
l ie , , , e i
I zlTOtoIld ulle mento z intero .
vt I i can un cOstO
. combinato di ni - 1 2 lll I C. ,
Tr 1scurul
I 8 n .n Di i certo
certo. ss tilsetlte
Jppl ossilllativ
questa situazione Non peggiore di queil deil f S. l . n cui una p irtiiione sii un
152 Capitolo 8

*8.Z-5 Quieksort
Dimostrare che, per qualsiasi costante 0 a 112, la probabilit che P Rvmoi
produca, su un array di input a caso, una partizione pi bilanciata del rapporto aragrafo 8.2 che un misto di partizioni buone e cattive
1 a ad a di I produce un buon tempo di esecuzione
2a circa. Per valore ,
quale di n ugualmente il quicksort, e quindi
probabile che la per
pe si capisce c h e versioniioni r
randomizzate dell algoritmo dovrebbero
partizione risulti bi anciata
pi di l n ad a oppure meno comportarsi bene. i

edura PARTITION, si pu progettare un altra versione randomizzata del


8.3 Versione randomizzata quicksort che usi la seguente strategia di scelta casuale.
agori
del Ad ogni passo e
quicksort k, di partizionare l array, si scambia l elemento Ap con un elemento scelto
a caso in A p .. r. Questa modifica assicura che l elemento x
Nell analizzare il comportamento perno p
di quicksort nel caso medio, stata fatta l ipotesi b bl u o qualunque degli r l elementi del sottoarray. Di conseguenza
le permutazioni dei che tutte p ci si
numeri in input fossero equamente h 1 dd
distribuzione probabili. Quando ipotesi e dell array in input sia, in media, ragionevolmen e
dell input questa sulla
valida, molte persone considerano il quicksort Anche l algoritmo randomizzato basato
input l algoritmo ideale sulla permutazione casua e e array di in u
per sufficientemente
grandi. In situazioni reali,
per, non ci si aspettare funziona bene in media. ma un difficile da analizzare di questa versione.
ipotesi valga sempre. pu che questa po pi
Si veda l Esercizio 8.2-3 .
algoritmo Questo paragrafo introduce il concetto Le modifiche da apportare a P Rvtrtow
randomizzato di e QutcwsoRt sono
e presenta due versioni randomizzate
poche. p roceduradi
l ipotesi di quicksort che superano
che tutte le permutazioni partizionamento.bastaeffettuareloscambioprima p artizionamento
dei numeri in input siano equamente
Un alternativa probabili.
all*iporesi sulla distribuzione di input di imporre
esempio, si supponga una distribuzione. Per RANDOK1IZED-PARTITION I
che, di ordinare A. P,
prima l array,
rafforzare quicksort permuti a caso elementi
la propriet che ogni gli per l i R Yt ow p, r
permutazione sia equamente
richiede un algoritmo probabile. L Esercizi 8.3-4
che permuti casualmente 2 scambia Ap Ai
gli eIementi di un array
tempo On. di dimensione n in
Questa modifica non migliora il tempo di esecuzione 3 return P Rvivio A, r
dell algoritmo, del caso p,
ma rende il tempo di esecuzione peggiore
indipendente dall input.
Un algoritmo si definisce ra dosni a1o
se il suo comportamento
determinato Il nuovo k
quicksort chiama
h a d essoso RAlDOlIIZED-PARTI1IOl lllVCCC di PARTITION.
dal I input ma anche non solo
da valori
o t ti da unprodgeneratore di numeri
a disposizione casuali. Si assuma di avere
un generatore di numeri casuali Rwsoow. Una
restituisce chiamata a Rw ooi RANDOiX1IZED-QUICKSORT A. r
un intero tra a e b, compresi. a, b ,
essendo equamente
di tali interi. probabile la restituzione di uno 1 ifp r
qualunque Per esempio Rwwoow 0,1 restituisce 0 con probabilit 1/2 e I con
probabilit 1/2. Qgni intero restituito 2 then
da R xoowt indipendente q RANDO 1IZED-PARTITlON A, /, I
chiamata dall intero restituito
precedente. Si puo nella
immaginare Rwwoot 3
r come un dado con
RANDOMIZED-QUICKSORT A. p, r
rotola b a 1 facce che
per ottenere il suo output.
In pr etica, molti ansbienti di programmazione 4 RANDOM1ZED-QUICKSORT
generatore di numeri offrono un A. q 1, r
psescdo-casuali un algoritmo detenninistico
che statisticamente sembrano che restituisce numeri
casuali.
Si analizzer l algoritnto nel prossimo
Questa versione randomizzata paragrafo.
di quicksort ha una
anche propriet interessante che possiedono
nioIti altri algoritmi randomizzati tiessun input
nel comportamento algoritmo. particolare provoca il caso Esercizi
dell Il caso peggiore
peggiore dipende invece dal generatore
casuali. Anche intenzionalmente, di numeri
non si riesce a produrre un cattivo array di input. I
permutazioni casuali rendono poich le 8.3-I Perch
ere s ana
irrilevante l ordine dell input. analizzare
izzare le prestaziot
. i. di un dgori t mo randotnizzato neel caso nledio 2 non
compnrta L algoriuao randon izzato
male solo se il generatore si nel caso
di numeri casuali l peggiore
da ordinare. produce una permutazione sfortunata
L Esercizio l.4-4 mostra che tutte
quasi le permutazioni
quicksort di comportarsi bene
consentono a1 i
quasi come nel caso medio 8.3-2 Durante l e ecuzi me della
vi sonopocltissiine procedura Rwsn utzro-Qucvsovt. chiamate
che causano un cnmportamento permutazioni quante
simile a queHu del caso vengono fatte al generatore
peggiore. di numeri casuali R xwoow nel caso ome
peggiore
Una strategia randomizzata utile tipicamente cambia la risposta nel caso migliore
algoritmo quando vi sono molti modi in cui un
puo procedere, ma difficile determinare
Se molte quello che promette di essere
alternative sono buone. mi liore.
sceglierne semplicemente 8.3-3 Descrivere
ascrivere una r ilizzuzinne .
rapii
-
a una buon una in modo cosuale del procedura Rwsr
...how a. che ir i solo lanci di
stnttegia. Spesso un al oritmo pui portare i
deve tetre mnlte scelte una moneta equ . gQua l i lu ipi li ciccuziot e,itlr.
. ci . dell i uro.
Se i benefici d ir.,inte la.,uv c,.ecuzionc. procedura
delle scelte buone hanno m gior pesn dei costi
casuale de1lescelte cat tive. una selezione
tra scelte buone e cattive
pu portare a un algnritmn ..
efttciente. 8.3-4 Scriverc una d ura r u sdomizzat l 8
Ahbiamo n t to nel proce mm temp i di esecuzione
. . 8 p renda
j - , ,
illpUI I
COI11e UI7 llV l A I ... C I CSLVll 1ll i amen
11 C
pCI 111lll lll I1C
C lYLI llt . L Illgli
Surah ee 1i

Clt. I I II l l/.
155
Quicksorr

154 Capuolo 8

e risolvere questa ricorrenza


ordinare un array di i elementi
il tempo medio richiesto per
per di risoluzione della
atteso. Come parte del processo
limitare il tempo di esecuzione
S.4 Analisi del quicksort per
un interessante sommatoria.
si deriveranno limiti stretti per
ricorrenza.

Il a o 8.
8.2 ffornisce spiegazioni intuitive sul comporta meno t d e 1 quic k sort nel caso
p arazrafo ao
e sul ci si aspetta che sia eseguito velocemente. In uesto ara rafo, del
peggiore perch Analisi partizionamento
rtamento in modo rigoroso. Si comincer con l analisi del caso
p pi PARTlTION C
-Q sull operazione PARTlTION. Quando
C che vale tanto QUICKSORT C11C A DOMIZED QUICKSORT,
RANDOMIZE e si concluder con con osservazione
peggiore per pCf Cominciamo qualche Ap gi stato
l elemento
caso medio di RAwDowzso-Qutct so . 3 della R oo ,tzEo-gvic soRt,
un analisi del chiamata nella linea procedura che
semplificare l analisi. si assuma
a caso in A p . r. Per
con un elemento scelto
scambiato ancora vero che il
tutti i numeri sono diversi,
siano diversi. Se non
tutti i numeri in input richiede
8.4.1 Analisi del caso peggiore 1gn , ma dimostrarlo
nel caso medio On
di esecuzione di quicksort
tempo
complicata di quella presentata qui.
8.2. s iv isto
si che il partizionamento ad ogni livello di ricorrenza di un analisi pi di
Nel p ara rafo peggiore
, da PeRmtow dipende solo dal rango
che il valore di q re tituito
quicksort produce un tempo di esecuzione 8 n- n-, c h, e, intuitivamente,
t il caso peggiore per r La prima osservazione
in un insieme il numero
.. r. Il rango di un numero
affermazione sar ora dimostrata. agli elementi in A p
il tempo di esecuzione dell algoritmo. Questa x Ap rispetto
di elementi in A p .. r
Sia n r p l il numero
minori o uguali ad esso.
Usando il metodo di sostituzione veda il paragrafo 4.1 , si u di elementi di l/n che
si
a caso in A p .. r vi una probabilit
-. con un elemento scelto
tempo nel caso deIla c ura scambiando Ap
esecuz on
esecuzione i quicksort
k O n- . Sia T n il peggiore procedura
i per i l. 2...., n.
SU un input di dimensione n. Si ha la ricorrenza rango .r
QvICKSORT Se rango r l, allora
dei vari risultati del partizionamento.
Calcoliamo ora le probabilith , l indice a
i si ferma
Tn max Tn q 8n, 8.1 while nelle linee 4-11 di PwRriv ot
Tq volta che si esegue il ciclo basso
la prima della
conseguenza. restituito q j. il lato
j si ferma
a j p. Di quando
l e n l perch la procedura PARTITION due regioni.
i p e l indice l in dato che questa
dove il parametro q varia tra produce
il solo elementn A p Ci accade con probabilit
contiene
con dimensione almeno 1. Si pu tentare la soluzione Tn cn- er partizione
ognuna l.
la probabilit che rango .v
.So. M do 11 ioni Ap. Di conseguenza. la
8.1 , di.x
2, allora vi almeno un elemento pi piccolo
Se rango v
i si ferma a i p ma l indice j si ferma prima
max cn 8n il ciclo svhile. indice
Tn cq- q volta che si esegue alto della
prima nel lato
fattn uno scambio con A pJ per metterlo
di raggiungere p. Viene quindi
nel lato basso della
c max 8n . dei rango v l elementi
q- n q- PARTlTION termina. ognuno
partizione. Quando n- 1, se rango .z 2.
i l, 2, ...,
strenaniente minore di s. Pernnto. per ciascun
L espressione ii nell intervallo l n 1 ra iunge un valore massimo in partizione i elementi l lu.
q- q -, della abbia
la probabilit che il lato basso partizione
ei ue estremi, cpme si puo verificare dal fatto che la derivata seconda dell es re rione 1 del lato
concludere che la dimensione q p
dei due casi si puo
rispetto a q positiva veda l. Esercizio 8.4-2 . Dalla combinazione l/n per
si i con probabilit
- - 1 con probabilit 2/n e che 1 dimensione
- n- 2n 1 .. basso della partizione
Da ci si ha il limite max q- i q - l- n 1 -
... .
i 2,...,n I.
Proseguendo con il confronto su Tn si ottiene

Tn cn- 2c n l 8n
il caso niedio
Una ricorrenza per
cn -,
I Raxoowizro-Qucxsow .
rande atteso di
perch si pu scegliere la c ostante
s c sufticientemente in modo o cch il tempo di esecuzione
stabilisce ora una ricorrenza per
Si Una chiamata
- di input di n elementi.
2c n-1 superiiltermine ine 8 n .n . P ertantoiltempodiesecuzionediquicksortnelcasopeg
rtanto il t a iore richiesto ordinare un array
Sia Tn il tempo medio per
tempo costante e quindi
solo elemento richiede
su un arra di un
a R oowizeo-QuicvsoRv . n di lunghezza
su un array Al
Una chianxata a R oowizco-Qtucvsow
i ha T l 81. indice
restituisce un
La Pwwm iotl
l airay. procedura
8.4 Analisi del caso medio n richiede tempo Qn per partizionarc e e n
sottoarray di lunghezza q.
ricorsivamente sui
chianuta
q. e R iDANII7ED-QulCKYiORT espresso come
lun hezza n puii essere
or Jin re un array di
Si gi data una spieoazione int t U7. il tempo medio per
.. 1 p il tem pO SC OA Di conseguente

aso me io sia 8n 1on . se la suddivisione in n-l


, 8 l . 8.21
nm o s d i elementi su un latn Ta all
della
e apartiginne.
a allora l ilherod i TI T 1I T gi
T j g
-
i gr e s iene eseguito un lavoro On er n

v ilare l che probabile


i esecuzione atteso tranne il q
di Rwxoowizro-Q unifw me. per
valnre di ha un distribuzione quasi
Il q
iod 1 oc du d i partizionamento. . Si i puoquini
u uha ric ,rre-.n/ ,t
vilupp,,re come not ao
il doppio de li altri. prim,i.
P

15 Capitolo 8
Quicfcsort I57

Usando il fatto che T1 81 e Tn 1 O n- dall analisi del caso si ha


peggiore, Limiti strefti sulla sommatoria

-Tl Tn I O -
1
Rimane da provare il limite 8.5 sulla sommatoa
On,
n-I
e il termine On nell equazione 8.2 puo perci assorbire l espressione- T l Tn I . k Igk
Si pu quindi riscrivere la ricorrenza 8.2 come kl

I Poich ogni termine al pi n Ign, si ha la disuguaglianza


Tn Tq Tn n .
g q
8.
ql n-I

Si osservi che / -1, klgk n-lgn,


per 1, 2,, n ogni termine Tl della somma compare una volt
come Tq e una kl
volta come Tn Fondendo i due termini
q. della somma si ottiene
n-I che definisce un limite stretto a meno di un fattore costante. Questo limite per non
Tn T Ic 8n . sufficientemente forte da risolvere la ricorrenza con Tn . p
g
8
bisogno di un limite di , n- 1gn Q n- la soluzione della ricorrenza essere
perch possa
ottenuta.

Soluzione della ricorrenza Si puo determinare limite sulla sommatoria di videndola in due parti, come discusso
questo
nel paragrafo 3.2, ottenendo

Si pu risolvere la ricorrenza 8.4 usancto il metodo di sostituzione. Si assuma n-I fni- 1-1 n I
induttivamente
che Tn an 1gn b per certe costanti a 0 e b 0 ancora da stabilire. klgk klgk klgk .
Si possono scegliere g g
a e b sufficientemente in modo
grandi che an Ics b sia kl k Tn 21
pi grande di T l . Quindi n I.
si ha per
la sostituzione
Il 1gk nella prima sommatoria della parte destra superiormente limitato
imitato da l nln/2
1g

n-I I Pii l il Ig/- nella seconda sommatoria superiormente limitato da lps. Quindi si ha
Tn Tk 8n

kl n-l I n 1- t n-1

n-I tgk 1 k 1g i k
ic Ignei
g g
ak lg k b 8n Al /l k n/2
n
n-t nj 2 -t

2a lgngk k
2b g
n 1 8n . kl kl
t1 gklgk
n

-n n 1
1 lg n
-
Si mostrer tra un attimo che la sommatoria nell ultima riga essere limitata
pu da l l
n-I -n Ign -n
2 S
k lgk n Ign n.-
/I
8.5
se n 2. Con eio dimostrata la disuguaglianza 8.5 .
Usando questa limitazione, si ottiene

Esercizi
Tn 1g n n I
nr -n- s n n On

-
a 8.4-I Mostrare
o trarec che e iil e
tempo di esecuzioiv.
. del quicksort . nel caso mi io re Q ii lie i .
an 1g n -n
2b 8n
4

,
an Ign b - ,. 1,2....,n I quando
b h.4-2 Mostrare
os r,ree che eq-q n q - rug,,iun,,c
un valore m,.ts imo
,- perq
n ,r
anlgn b

poich si puo sceeliere a sufficieateiticnte a


r inde cosi che -n superi -Q
8 ahi IA. Si conclude 8.4-3 Mostr re che il lcnlpo di c iuziol c ttte n il R,xNt JI117. uicvson
che il tempo pel
medio di esecuzione del quivi i it i O ri 1 n.
Q /k rl1 .
159
Quicksort

4 do if A j .s-

8.4-4 Il tempo di esecuzione del essere migliorato in traendo 5 then imi l


quicksort puo pratica
vantaggio dal fatto che l algoritmo insertion sort ha il tempo di esecuzione pi 6 scambia Ai m Aj
quasi
veloce quando il suo input ordinato. La la seguente. il
procedura
7 ifi r
quicksort su un sottoarray con meno di k elementi lo restituisce senza ordinario
la chiamata 8 then return i
quando principale al quicksort terminata, si esegue l insertion sort su
tutto I array per completare il processo di ordinamento. Mostrare che 9 else return i l
questo
algoritmo di ordinamento ha un tempo di esecuzione atteso O n/ n Ig nll- .
Come, in teoria e in pratica, dovrebbe essere scelto k
a. Mostrare che la procedura Lo no-Pww mo corretta.

elemento essere spostato da PARvmox e da


b. il numero massimo di volte che un pu
Qual
8.4-5 Provare l identit
LON1UTO PARTITIOiS .

l, 1 come la PwRtmor . viene eseguita in tempo


-x-Inx c. Mostrare che la procedura Loxicwo-Pwwivtog,
-x-
f xlnxdx
2 4 8n su un sottoarray di n elementi.

e quindi usare il metodo di approssimazione con di QUtcwsoRv, tutti i valori di input sono
integrali per fornire una mag- d. Come influenzato il tempo di esecuzione quando

della sommatoria k 1g k che sia stretta della uguali, se si sostituisce P Rt,tto con Lowum-P Rv,vto .
giorazione g pi 8.5 .
ION che scambia Ar con un elemen-
e. Definire una procedura RANDON11ZED-Lo uso-PARTll
la Lo uro-PwRvmow Mostrare che la
to scelto a caso in Ap .. r e quindi chiama
8.4-6 Prendere in considerazione una modifica alla PARvmoi che scelga in
procedura
che un dato valore sia restituito dalla RAxoow zEo-LoMvwo-P Rvhtoi
modo casuale tre elementi nell array A ed probabilit q
esegua il partizionamento rispeno al
r restituito dalla Rw DowizED-PwRtntoi.
mediano fra i tre valori. Approssimare
uguale alla probabilit che il valore p q sia
con una funzione di a la probabilit di
ottenere, nel caso peggiore, una suddivisione di n ad 1 a con 0 a 1.

8-3 AEgorittno Stnoge So


elegante
il seguente algoritmo di ordinamento
I professori Gatto e Volpe hanno proposto
Problemi
t

Svooaa-Son A, i, j
8-1 Correttezza della Pwsrsrsov
procedura
1 if A i A j
Dimostrare formalmente che la procedura P Rtmow del 8.1 corretta. Dimostrare
paragrafo t
2 then scambia Ai Aj
i seguenti punti
a. Gli indici i e j non 3 ifi 1 j
si riferiscono mai a un elemento di A fuori dall interi allo .. r.
p
4 then return
b. L indice j diverso da r quando PaRvmow termina la suddivisione non mai
cio banale .
i 1 13 t Suddivisione in tre parti.
k L j
e. Ogni elemento di A p. minore o uguale ad ogni elemento di A j 1 ..
j r quando c ordinano i primi due terzi dell zrray.
6 STOOGE-SQRT A, i, j k Si
PARTITION termina.
t Si ordinano ultimi due terzi dell array.
7 Svoocr -Son A, i k. j gli

di nuovo i primi due terzi dell array.


8 Stooae-Sori i, j l I Si ordinano
A,
8-2 Algoritmo di parti -ionainehto di Losnnto

Considerar la seguente variazione di PwRTmow, dovuta a N. Per


Lnmuto. partizionare ordina correttamelste l arrup A 1. n di
a. Mostrare che SvoocE-SORT A, l. length Aj
Ap .. r, questa versione costruisce due regioni, Ap .. i e Ai1 . j. tali che o ni
input. dove n lengrl A .
elemento nella regione sia minore o uguale a x A fr e oceani elemento
prima nella second i
regione sia caso ed un
pi grande di.v. Fornire la ricorrenza il tempo di esecuzione di SvoocF-Snw nel pegginre
h. per
il tempo di esecuzione del cavo peegiore.
limite asintotico stretto notavi olle 8 sensl re per

LostUTO-PwRTtTlN A. r con
p. esecuzi ne cle caso ili Stonrr.-Sn t quello
c. Contentare il tempo di pez ,iore
.
1 ICl
1 .v - A r , , , ,. ,, .

C,

2 i l empiere chiamati tali


p

3 for j to r
p
Qui ksorr Ml
.IO- Capitolo 8

buona
c. Se si definisce come suddivisione lo scegliere x A i J, con h/3 i 2n13, di
8-4 Profondit della pila per il quicksort
cresce la probabilit di avere una buona suddivisione rispetto alla realizzazione
quanto
L algoritmo QVICKSORT nel paragrafo 8.1 contiene due chiamate ricorsive a se stesso. Dopo usuale dell algoritmo si approssimi la somma con un integrale .
Suggerimehro
la chiamata a PwRm os, sono ordinati ricorsivamente prima il sottoarray di sinistra, e poi
d. Dedurre che il metodo mediano-fra-ve influenza solo il fattore costante del tempo Q itlgn i
quello di destra. La seconda chiamata ricorsiva nella procedura QulcxsoRT in realt non
di quicksort.
necessaria pu essere evitata usando una struttura di controllo iterativa. Questa tecnica
fornita da buoni compilatori in modo automatico. Si consideri la seguente versione di

quicksort, che simula questa tecnica chiamata in inglese tail recrcrsion .


Note al Capitolo

Qvte soRv A, p, r
La fu da Hoare 98 . Sedgewick 174j fornisce una buona
procedura quicksort proposta
1 whilep r
trattazione dei dettagli di realizzazione dell algoritmo e della loro importanza. I vantagp
2 do t Partiziona e ordina il sottoarray di sinistra degli algoritmi randomizzati furono evidenziati da Rabin 165 .
3 q m PARTITION A, p, r

4 A,
QUICKSORT , q

5 pmq l

a. Spiegare perch QUICKSORT A I, lengrh A ordina correttamente l array A.

I compilatori di solito eseguono procedure ricorsive usando una pila che contiene le
informazioni relative ad ogni chiamata ricorsiva, inclusi i valori dei Le informa-
parametri.
zioni sulla chiamata pi recente sono sulla cima della mentre della chiamata
pila quelle
iniziale sono in fondo. Quando una procedura chiamata, le sue informazioni vengono
inserite sulla pila, quando questa termina te sue informazioni vengono estratte. Poich si
assume che di fatto i parametri relativi all array siano rappresentati da le informa-
puntatori,
zioni per ogni chiamata di procedura richiedono spazio 01 nella La profondit della
pila.
pila la massima quantit di spazio usato nella pila in qualunque monumento dell esecuzione.

b. Descrivere una situazione in cui la profondit della di QulcksoRT 8 su un array


pila
di input di n elementi.

c. kfodificare il codice di QUICKSORT in modo che la profondit della nel caso


pila peggiore
sia O Ipso .

8-5 Parti ione sul media ro-fra-tee

Un modo per migliorare Ia procedura R.cxoowzeo-gutcxsoRv di usare come la


perno per
partizione un elemento x scelto pi attentamente che uno a caso dal sottoarray.
prendendone
Un approccio comune il metodo del mediano fra-tre si sceglie come x l elemento mediano
su un insieme di tre elementi selezionati in modo casuale nel sottoarray. Per questo problema C

si assume che gli elementi dell array di input A1 .. n siano distinti ed n 3. Sia A l . ii
l array di output ordinato. Usando il metodo mediano-fra-tre scegliere l elemento
per pernn
x, dehnire Pr x A i .
p

a. Fornireunaformulaes ttapn lescrivcrep come funzione di n edi, 2,3, ...n-l.


peri
Si noti che p, p 0.

b. Di quanto aumentata la prohabilitii di scegliere.s A 1 12 , cio i medi n i in


Ln
Al . ii . rispetto alla reaNzzaziane usuale dell algoritmo Si assuma che n w . e ii
fornisca la valvtazione l lii1sitc di queste prnbabilit.

4
Ordinamento in tempo lineare

alcuni algoritmi che ordinano n numeri in tempo O is 1gn . Il


Sono stati appena esaminati

merge sort e lo heapsort raggiungono limite superiore nel caso peggiore il quicksort
questo
lo raggiunge in media. Inoltre, ognuno di questi algoritmi, si puo produrre una sequenza
per
di a numeri di input in modo che l algoritmo venga eseguito in tempo Qn Ipso .
ordihan ento
algoritmi condividono un interessante I che determinano
Questi proprieth
basato solo sui confi ohti rra elententi di input. algoritmi di ordinamento sono chiamati
Questi
cortfronti. Tutti algoritmi di ordinamento finora sono ordi-
ordinamenti per gli presentati
namenti per confronti.

Nel 9.1 sar dimostrato che ordinamento confronti deve eseguire.


paragrafo qualunque per
confronti ordinare una sequenza di n elementi. Per cui, il
nel caso peggiore, Qn 1gn per
merge sort e lo heapsort sono asintoticamente ottimi, e non esiste alcun ordinamento per

confronti che sia pi veloce se non per un fattore costante.

9.3 e 9.4 esaminano tre algoritmi di ordinamento- counting sort, radix sort
I paragrafi 9.2.

e bucket sort che vengono eseguiti in tempo lineare. k superfluo dire che questi algoritmi

usano operazioni diverse dal confronto determinare l ordinamento di conseguenza, per


per
essi il limite inferiore Qn 1gn non vale.

9.1 Limiti inferiori per l ordinamento

confronti, si usa solo il confronto tra elementi ottenere informa-


In un ordinamento per per
a dati due elementi a e a.,
zioni sull ordine della sequenza di input ci,. a .... . Cio, per

l ordinamento relativo, si esegue uno dei seguenti confronti a a, a a,


determinarne

a, a,, a a, a a, Non si possono esaminare i valori degli elementi o ottenere informazioni

sul loro ordine in alcun altro modo.

senza di generalith. che tutti elementi di input


In questo parapafo si assume, perdite gli

siano distinti. Data ipotesi, i ionfrnnti della forma a a sono inutili, e cosi si pu
questa
che i confronti a a,, a, a, a, a e a a,
f
assumere che non vengano fatti. Si noti iisoltre

sono tutti equivalenti. nel senso che forniscuno la ste sa informazione sull ordinainento

relativo tra a e a, si assume che tutti i confronti abbiano1 fornm a a,


Quindi
164 Capirolo 9 Ordburmento in tempo lineare 165

Poich un albero binario di altezza h non ha pi di 2 foglie, si ha

n 2,
s

che, passando ai logaritmi, implica


2,1,3 g .g
h fg n ,

1,3,2 3, I p 2.3,1 g.2,1 la funzione 1g monotona crescente. Dall approssimazione di Stirling 2.11 , si ha
poich

Figura 9.1 L nlhero di decisione t irr.serriorr sorr che opera su tre


per ele,nenri. Vi sono 3. 6 possibili
n
permuta.ioni degli elementi di inp rt, I albero di decisione deve avere alineno 6 foglie. ,
quindi

dove e 2.71828... la base dei logaritmi naturali da cui

Il modello ad albero di decisione


rg
Gli ordinamenti confronti essere visti in modo astratto in termini n 1gn n Ige
per possono di alberi di
decisione. Un albero di decisione rappresenta il confronto eseguito da Qn Ign .
un algoritmo di
ordinamento quando opera su un input di una data dimensione. Il controllo, i movimenti dei
dati e tutti gIi altri aspetti dell algoritmo vengono ignorati. La figura 9.1 mostra l albero di
decisione corrispondente all algoritmo Corolfario 92
di insertion sort del paragrafo I. 1 che opera su una
sequenza di input di tre elementi. Il merge sort e lo heapsort sono ordinamenti confronti asintoticainente ottimi.
per

In un albero di decisione, ogni nodo interno etichettato con a a i e j


per qualche
ne11 intervallo 1 i, j n, dove n il numero di elementi nella sequenza di input. tempi di esecuzione degli algoritmi heapsort
Ogni foglia Dimostra -ione. I limiti superiori On 1gn sui
etichettata da una 1. 2 ... z nj . vedano nel Qn 1gn nel caso descritto nel
permutazione Si paraerafo 6.1 i e mer e sort corrispondono al limite inferiore peggiore
richiami sulle permutazioni . L esecuzione di un algoritmo di ordinamento corrisponde 5
a Teorema 9.1.
tracciare un cammino sull albero di decisione dalla radice ad una foglia. In ogni nodo interno
viene eseguito un confronto a a il sottoalbero sinistro impone i successivi confronti per
a a., mentre Esercizi
il sottoalbero deitro impone i confronti a, si arriva ad una
pera, Quando
foglia, l algoritmo ha stabilito l ordinamento a a,, ... a ,. Perch l algoritmo
funzioni in modo appropriato, ognuna delle n di n elementi la profondit minima di una foglia neil albero di decisione di un
permutazioni deve compartire in 9.l-l Qual possibile
una delle foglie dell albero di decisione. algoritmo di ordinamento

Un limite inferiore il caso asintoticamente stretti su Ig n senza usare l approssimazione di


per peggiore 9.1-2 Ottenere limiti

Stirling. Calco1are la sontmatoria igk usando invece le tecniche presentate


g.,
La lunghezza del cammino lungo di un nel paragrafo 3.2.
pi albero di decisione d ila radice nd una quulunque
delle sue foglie rappresenta il numero di confronti che l al oritmo di ordinamento esegue nel
caso pe iore, numero che. di conseguenza. corrisponde all altezza dell albero il cui tempo di esecuzione sia
di decisione. .E-3 Mostrare che non vi sono ordinamenti per confronti
Ua limite inferiore suli altezza degli alberi di decisione allora un limite inferiore n. Cosa si paio dire di una frazione
sul tempo linare su alnteno met deg li n input di lunghezza
di esecuzione,di ul oritmo cti ordinamento di 1/2
quulunque per confronti. Il seguente teorema di l/n degli input di lunghezza n E cosa si pu dire di uno frazione
stabilisce tale limite inkriore.

che il limite inferiore Qn Igir ordinare n numeri


9.1-4 Il professnr Salontone sostiene per
Teorema 9.1 il f un odi controllo di un
non applicabile all ambiente del suo calcotatore, in cui

Qualurrqire ilhero di decisione che coordina ii elementi ha altezza Qn I n.

a n, a a. a a. Mostrare che il i in errore provando


seconda che professore
contronti
i vie richiesto ordiiwre r elementi ancora
che il ntimero di tre per
Dintostrrt. ,iwte. Si consideri un albcr ali leciiionc aIten.l
eli h che i rdin i it clcincnli. Psichi
Q ir Ign .
vi sono ioni di n elementi, love o .ni
permutar permut ziohc rappre.,unta vi, ardi,ram n ,
diverso dc li elcnienti, l lbclf lCVL llnwnu
ilVClC n Io li .
l Capitolo 9
Ordinamento in tempo lineare 167

P J-5 Provare
o are che sono 7 S
necessari 2 1 confronti eseguire, l 2 3 4 5
per nel caso peggiore, la I 2 3 4 5 6 7 8

fusione o merge di due liste 4


ordinate contenenti ognuna n elementi. 4 1 3 4 l 4
A 3 6

c224v l 2 3 4 5 6
2 3 4 5 6
9.1-6 Sia data una sequenza di n elemnti da ordinare, costituita di ii/k 2 2 4 6 7 8
sottosequenze, C 2 0 2 3 0 1
ognuna contenente I elementi. Gli elementi in una data sottosequenza sono tutti pi
piccoli degli elementi della sottosequenza b c
successi va e pi mandi degli elementi della a
precedente. Cos , per ordinare l intera sequenza di lunghezza n necessario soltanto
ordinare i k elementi di ognuna delle 1 2 3 4 5 6 7 8
all- sottosequenze. Mostrare che Qn Igl 1 2 3 4 5 6 7 8
un
limite inferiore sul numero di confronti ,
necessari a risolvere variante B l 4 4
12345
questa del
problema di ordinamento. Suggeri sento non rigoroso combinare semplicemente 3 4 $ 4i6
i limiti inferiori 1 2 3 4 5 6 1 2 3 4 5
delle singole sottosequenze.
C l 2 4 6 7..8 C 1 2 4 5 7 8

d
9.2 Counting sort
A l...., 8, dove ogni elelnentr di A
FlgU1Q 9 2 L SCCll f0l18 Cll COUNT15G SORT Sl il11 OPIMI di input
r -, - - o alinenh.ibl
Cd
u
Il coueting sort si basa sull ipotesi che ognuno degli n elementi di input sia un intero
nell intervallo da l a k, per
qualche intero I. Quando k O n ,1 ordinamento viene eseguito
in tempo On. riempiti. f L array di ourpirr 8 ordinai.
finale

L idea di base del counting sort c di determinare,


per ogni elemento.v in input. il numero
di elementi minori i x. ..... .
Questa informazione essere usata 6-7. si determina ciascun i I. 2..... l.
pu per porre l elemento .r ad i per ciascun intero i 1. 2... k. Nelle linee per
direttamente nella sua posizione nell array di output. Per esempio. ad i ci viene fatto determinando la somma
se vi sono 17 elementi elementi dell input sono minori o u-urli
minori di r, quanti
allora.v va messo nella posizione 18 dell output. schema deve elementi dell array C.
Questo essere cumulata degli
modificato leggermente
per gestire Ia situazione in cui alcuni elementi abbiano lo stesso elemento Aj nell array di output B nella sua corretu
valore, infatti Infine, nelle linee 9-11, si pone ogni
non si vuole metterli tutti nella stessa posizione. sono distinti. allora la pri na volta che viene esiguit
posizinne ordinata. Se tutti gli n elementi
Ne codice del counting sort. si assume che l input sia un array A1 .. nj e che lengrl A n.
Sono richiesti altri due array l array Bl . n mantiene l output ordinato e l array C1 .. /
fornisce la memoria di lavoro temporanea. valore A

il prossimo elemento di input con un valore uguale ad A j , se esiite.


nell array B ci fa si che
COU1i TING-SORT A. B, k
vada nella immediatamente Aj nell array di output.
posizione precedente
I fori c 1 tel nelle linee 1-2 impiega un tempo 0l l.
tempo richiede il counting ort Il ciclo for
Quanto
2 do un tempo On, il ciclo for nelle linee 6-7 impiega un tempa
Ci 0 il ciclo for nelle linee 3-4 impiega

3 for j c 1 to length A
si ha I On, nel caso il tenspo di
In pratica. si usa di solito il counting sort quando qual
4 do C Afj J C A jjj l
esecuzione On,
5 t C ij contiene ora il numero di el-menti uguali a i. 9.1 non
Il counting sort abbatte il limite inferiore Qin 1 n dimostrato nel paragrafo perch
6 fori e to/

7 do Ci m Ci Ci l

8 t Ci contiene ora il numero di elementi minori o uguali a i.


il modello degli ordinamenti per confmnti.
9 for ordinamenti tton valido quando si abbandona
j m len rh A dosvnto I
10 do B C A jj Aj

Il CA m CjA jj
fj J J I

Il countin sort illustrato nella ligure 9.2. Dopo l inizializzazinne nelle linee I- . si
diitabilitnel
Si ve lrir l importanza della d .
i si
insieme con li clcmcnti sta ordinare. . pr priith

proiiiino par v r fo.


Ordinamento ia tempo lineare 169
168 Capitolo 9

329 vo sao 329


Esercizi 355
457 329

657 4gg 43 436

839 4sv sse 4S I


92-1 Usando la trgura 9. come modello, mostrare l esecuzione di Cousllia-SORT 657
436 657 355
sull array A 7, I, 3, l, 2, 4, 5, 7, 2, 4, 3 .
720 329 451

355 839 657 839

t l
92-2 Dimostrare che Cova tea-So stabile.
esecu ione colonna l input.
Figura 9.3 L di radix.sorr s una lista di serre numeri di 3 cifre. La prima

mostrano la lista dopo,cn ordi ,amenro su cifre via via piii significative. Le frecce
Leoaltre colonne
ordinameivo
92-3 Si supponga della cifra su cui stata I prochrrre la lista dalla
che la linea 9 del ciclo for della Covmmc-SoRv sia riscritta verticali indicano la posi ione farro per
procedura
come precedente.

9 for j 1 to lengrh AJ

Il radix so risolve il problema di ordinare le schede in modo contmintuitivo ordinando


Mostrare che l algoritmo funziona ancora in modo appropriai. L algoritmo mo-
cifra meno significativa. Le schede sono combinate in un unico blocco, con
dificato stabile prima sulla quindi
le schede ne l contenitore 0 prima delle schede nel contenitore 1 prima di quelle nel contenitore

2 e cosi via. l intero blocco ordinato di nuovo sulla seconda cifra meno significativa
Quindi
92-4 Si supponga che l output dell algoritmo di ordinamento sia un flusso di dati su uno allo modo. 11 processo continua finch le schede sono state ordinate per
e ricombinato stesso
schermo grafico. Modificare COUNTING-SORT l output
per produrre ordinato senza tutte le d cifre a quel le schede sono completamente ordinate. Quindi per l ordinamen-
punto,
usare sostanzialmente memoria addizionale oltre ad A e C. su
Suggerimento colle- to sono richieste solo d passate del blocco. La figura 9.3 mostra come opera il radix sort
gare gli elementi di A con la stessa chiave in liste concatenate. Dov un
-libero posto un blocco di sette numeri di 3 cifre.
per tenere i puntatori agli elementi della lista
La cosa essenziale in quest algoritmo che l ordine ddle cifre rimanga stabile. L ordina-

eseguito da un ordinatore di schede stabile, ma l operatore deve stare attento a non


mento
92-5 Descrivere un algoritmo che, dati n interi nell intervallo anche se tutte le schede in un contenitore hanno la
da l al, esegua un analisi cambiare l ordine delle schede onenuto.
preliminare del suo input e quindi risponda in tempo 01 a qualunque domanda su stessa cifra nella colonna appena esaminata,
quanti degli n interi cadano nell intervallo a .. b . L algoritmo dovrebbe usare per In un comune calcolatore, che una macchina sequenziale ad accesso diretto, il radix sort
l analisi preliminare un tempo On k.
talvolta usato ordinare record di informazioni con chiavi multiple, che comprendono pi
per
esempio, si desiderare di ordinare le date su tre chiavi anno, mese e
campi. Per potrebbe
Si potrebbe far eseguire un algoritmo di ordinamento con una funzione di confronto
giorno.
9.3 Radia sort confronta i mesi
che operi su due date in questo modo confronta anni e, in caso di parit.
gli
e se c ancora confronta i giorni. Alternativamente, si potrebbero ordinare le informa-
parit
Il radixsort l algoritmo ordinatrici sul sul mese e infine sull anno.
usato dalle macchine di schede che si trovano ora solo zioni tre volte con un ordinamento stabile prima giorno, poi
nei musei dei calcolatori. Le schede sono suddivise in 80 colonne assume che ogni elemento
e ogni colonna pu essere Il codice del radix sort semplice. La seguente procedura
in una delle 12 righe. programmata mentre la
perforata La macchina ordinatrice essere mecca- nell array A di n elementi abbia d cifre, dove 1a cifra l quella di ordine pi basso
pu
nicamente perch esamini una data colonna di ogni scheda e inserisca la scheda in uno di 12 cifra d quella di ordine pi alto.
contenitori a seconda di quale riga stata Un operatore
perforata. pu quindi raccogliere le
Raotx-Soat A, d
schede contenitore contenitore, in modo che le schede con
per la prima riga perforata siano
messe 1 for i- 1 to d
sopra le schede con la seconda riga e cosi via.
perforata
2 do usa un ordinamento stabile ordinare l array A sulla cifra i
Per le cifre decimali, in ogni colonna per
sono usate solo 10 righe. Le altre due sono usate per
codificare caratteri non numerici. Un numero di d cifre dovrebbe radi x sort viene dimostrata induzione sulle colonne che devono essere
allora occupare un campo La correttezza del per
di d colonne. Poich l ordin-itrice di schede controllare veda f Esercizio 9.3-3 . L analisi del tempo di esecuzione dipende da quale
puo solo una colonna alla volt . il ordinate i
problema di ordinare n schede contenenti ciascuna un numero viene come algoritmo di ordinamento intermedio, Se ogni cifra
di d cifre richiede un algoritmo ordinamento stabile usato
di ordinamento. du I a I-, e I- non tropp i allora viene scelto ovviamente il counting
nell intervallo grande,
Intuitivamente, si desiderare di ordinare
potrebbe i numeri rispetto alle loro itra piii
sort O rhr 4l . Se d cnstante e k Ot , il radix ort viene
il tempn totale per il radix

nare i blocchi in moo nrdinato. Purtroppn. le.schede in 9


ere uito in tempn lineare.
poich di 10 c ontenitori devotin
C iSCre messe da ordinare ognuno 1i
parie per contenitori, cnera multi
questa procedura
pacchi intern edi di schede dei bisogna tenere truccia. veda calcolatore sia 8 Iran . Per sia d 1 n il tiumcro di hit. dove c/ unii cost 1ntc pusiLiv i.
q eli Si l Eserciiio 9.3-5 . praticith.

l
i
in tempo lineare 171
170 Capitolo 9 Ordinamenro

Allora se ogni numero da ordinare rappresentabile in una di memoria, A B


parola lo si pu
trattare come un numero di d cifre in rappresentazione in base n. Come esempio i.vs o l
concreto, si
consideri l ordinamento di 1 milione di numeri di 64 bic Trattando 2 .17 12 17 l
questi numeri come
numeri di quattro cifre rappresentati in base 2, li si pu ordinare in soli z 21 23
4 passi usando il radix s .39
sort. Questa procedura regge in modo favorevole il paragone con un 39 l
tipico ordinamento per 4 .26
confronti con tempo 8n lpi , che richiede approssimativamente 1gn 20 operazioni per 5 .72 4 l
ciascun numero da ordinare. Purtroppo, la versione del radix sort che usa il counting sort come 6 .94 s
ordinamento stabile intermedio non ordina in loco, come fanno molti degli ordinamenti per 7 .21 6 .681
confronti con tempo 8 ahi 1gn . se Ia memoria un aspetto
Quindi, principale da tenere in forte 8 .12 7 .72 78 r
considerazione, essere un algoritmo come il quicksort.
pu preferibile 9 .23 a l

o .68 g 941

Esercizi a b

A1 .. 10 . L arra B0 .. 9 di liste
9A Lesecu ione di BuckEv-So . a L cirro in input b
Figura
93-1 Usando come modello la figura 9.3, illustrare 1 operazione di R oix-SORv sulla
seguente lista di parole inglesi COW, DOG, SEA, RUG, ROW, MOB, BOX, TAR,
B 1 ..... B9.
BAR, EAR. TAR, DIG, BIG, TEA, NOW, FOX.

un array di n elementi e che ogni elementn


Il codice del bucket sort assume che l input sia
93-2 Quali dei seguenti algoritmi di ordinamento sono stabili insertion sort, merge sort, n 1 di liste
richiede un array ausiliario 80 ..
heapsort Ai dell an ay soddisfi 0 Ai l. Il codice
e quicksort Descrivere un semplice schema che renda al-
qualunque mantenere tali liste. Il paragrafo
concatenate e assume che vi sia un meccanismo per
goritmo di ordinamento stabile. tempo e spazio in pi richiede bucket
Quanto lo schema
realizzare le operazioni di base su liste concatenate.
Il.2 descrive come

93-3 Usare l induzione che il radix


per provare sort funziona. In quale punto la di-
BUCKET-SORT A
mostrazione richiede l ipotesi che l ordinamento intermedio sia stabile
1 n c lengrft A

2 fori I ton
99-4 Mostrare come ordinare interi nell intervallo da l a rr
presi in tempo On.
3 do inserisci Ai nella lista B LnA i J

4 fori Oton- l
93-5 Nel algoritmo di ordinamento delle schede
primo presentato in questo paragnfo,
do ordina la lista 8i con l insertion sort
sono ncessari ordinare numeri 5
quanti pmsi per di d cifre decimali nel caso
80. 81 ..., Bn l j ih quest ordine
peggiore Di quanti pacchi di schede dovrebbe tenere traccia un operatore nel caso 6 concatena insieme le liste j,

peggiore
sort su un array di input di 10 numeri.
La figura 9.4 mostra l operazione di buchet

due elementi A ij e Aj. Se


mostrare che funziana. si considerino
Per quest algoritrno
9.4 Bucket sort

Il bucket sor impiega in media un tempo lineare. Come il counting sort, il bucket sort veloce

che Ai Aj. Assumendo il


nel sequenza di output. si deve mostrare
Aj Quindi.
6. la definizione di distribuzione unii onne. contrario.. i ha

L idea del bucl et w rt eli dividcr l intcrvallu in n sottointervwlli


0,1 di u u le dimen iolli . I

n.a i

n.d j J

Ull tClllpO O ll 1181 C l. iO


lUltC Ic litio cecclto la 5 rivhie t0110
. CClllli lll , Sl OtSCFVI CllC
.. 172 Capitolo 9
Ordiiuvnento in tempo lineare . 1g3

peggiore. Il tempo totale esaminare tutti i bucket nella casuale X


per linea 5 On, e cosi l unica di distribuzione di probabilit Px una variabile
pane 9.4-4 Una funzione per
interessante dell analisi il tempo impiegato dagli insertion sort nella linea 5. Si supponga che una lista di ir numeri abbia una
definita con Pr Pr X x.
Per analizzare il costo degli insertion continua calcolabile in tempo 01.
sort, sia n, la variabile casuale che denota il numero funzione P di distribuzione di probabilit
di elementi memorizzati nel bucket lineare.
Bi. Poich l insertion sort impiega un tempo Mostrare come ordinare i numeri con tempo medio
quadratico
si veda il 1.2 , il tempo
paragrafo atteso per ordinare elementi nel bucket
gli Bi
E On O I 1 tempo
O n, J E fn, J . totale atteso per ordinare tutti elementi in tutti
gli i bucket
allora
Problemi
n-I n-I

OE,j o confronti rreE caso medio


Q 9-/ Limi inferiori suEL ordinamento per
i0 ., 9.I
i0 atteso di
In questo si prover un limite inferiore Qn 1gn sul tempo di esecuzione
problema,
Per valutare sommatoria, si deve che
questa determinare la distribuzione di ogni variabile algoritmo di ordinamento di ir input che opera confronti, sia deterministico
qualunque per
casuale n, Vi sono elementi edi bucket. A
La probabilit che un dato elemento cada con l esaminare un ordinamento confronti d etenninistico
nel bucket randomizzato. Si comincia per
Bi 1/n,.poich ad ogni bucket assegnato equamente
l/n dell intervallo Cosi, la situazione di decisione T . Si assuma che ooni degli input di A sia
0,1 . con albero permutazione
anaioga a quella dell esempio del lancio delle palline del 6.6.2 vi sono
paragrafo n palline probabile.
elementi ed n contenitori bucket e ogni pallina lanciata indipendentemente con il valore della di essere
a. Si supponga che gni foglia di T sia etichenata con probabilit
probabilit p 1/n di cadere in bucket. Cosi
qualunque 1a probabilit che n k segue sono etichettate con l/n esattamente n
raggiunta dato un input casuale. Provare che
la distribuzione binomiale b Ic i, p, che ha valore medio En np l e varianza foglie e che le altre sono etichettate con 0.
Var n j p1 -p l l/n. Per qualunque variabile casuale X, l.equazione 6 30 fornisce io DT sia la somma delle e
de
b. Sia DT la lunghezza di un cammino esterno di un albero T

E albero con k l foglie. e siano RT e LT i


Var n, E di tutte le foglie di T Sia T un
n, n,J profondit
che DT D RT D LT l.
l sottoalberi destro e sinistro di T. Mostrare
l - l
di decisione T con I 1 fog1ie. Mostrare
n c. Sia dk il valore minimo di D T su tuni gli alberi

2-- di foglie in e i i
Pl decisione T con k fon lie che raggiunge il minimo. Sia i il numero
81 . numero di foglie in RT.

I i / 1. la funzione i gi
Usando d. Provare che un dato valore di I- l e i nell intervallo
questo limite nell equazione si conclude per
9.1 , che il tempo atteso l ordinamento 1gl .
per i Ig k i mininsiztata i k/2. Concludere che dl Ql
con l insertion sort Oy. Cosi / per
complessivamente l algoritmo bucket sort impiega tempo n
lineare e concludere che il tempo atteso per ordinare
nel caso medio. e. Provare che. per T, D T, Q n 1g n

elementi Qn lp .

aro B. Si pu est endereilmodello


Esercizi Si consideri adesso un ordinamento per confrontirandoini
,, randomizzazione ti idinodi nodidi
a
ad albero di decisione la prevedendo due e tip
per gestire
nodo randomizzato rappr esenta una scelta
9.4-1 Usando come confronto ordinario e nodi* randomizzati . Un
modello la figura 9.4, illustrare l operazione di BLCKET-SOR I ognuno scelt in
casuale della forma R eow 1. r fatta dall algoritmo B il nodo ha r figli.
sull array A .13..16, .64, .39,
.79, .20, .89, .53, .71, .42 .
modo equamente durante un esecuzione dell algoritnsn.
prababile
, 8. esiste un
ordinamento confronti rsndotnizz zato
9.4-2 f. iMosttare che pere qualunque per
Qual il tempo di esecuzione dell algoritmo bucket di
sort, nel caso peggiore Quale ordinamento confronti detennini tico A cle.. in medie. non ese ue p iii confronti
semplice modifica per
dell algoritmo conserva lineare il tempo di esecuzinne atteso e l algoritmo B.
quinti ne faccia
impiega tempo 0 tr lpt nel caso peggiore

* 9.4-3 9-2 Ordinamento in co in festtpo lineare


Siano dati r punti nel cerchio unitario, p x, tali che 0 .v- -
y, 1 per e c..e a ihi. avedioenirecord
i a. supponga di vere un rray di n record i d,ti tu ordinare
l, 2, .... n. Si suppongo che i pur ti
Si
siano uniformemente distribuiti cio. la
al,.ori mo con te,npo lineare c..e
abbi v,l re 0 o l. D..ire un semplice
probabilit di trovare un in qualunque regione
punto del cerchio sia in I - non iuntivasenondi
a propor .
inemoria fornita doli , rr i . usuri .
memoria l
area di regione. Progettare
Il
n record.
C.. Oltre al1a
quella un al oritmo, con tempo attesn 8n. per timeitsi ne costante,
ordinare n punti rispetto
gli al g loro d, x, j dall origine. -.IC
Ill COll
Suggerimento lX l-l ll lCCOld

definire le d imensioiji dei bucket nel BiicvEt-So n in .rimdi t, riipoitu.


modn da riflettere la chi,. vi b bit in tempo O lnt . Giu.,lil c,.tl.e
distribuzione uniforme dei punti nel cerchio.
c. Si supponga che record abbiano chiavi nell intervallo da l a k. Si modifichi il countin
sort in modo che i record possano essere ordinati in loco in tempo On l . Si pu usare.
oItre all array di input, Ol memoria. Suggerimento come si potrebbe fare per k 3 , Mediano e selezione

Note al capitolo

Il modello ad albero di decisione studiare ordinamenti confronti fu introdotto da


per per
Ford e Johnson 72 . L ampia dissertazione di Knuth suli ordinamento comprende.
123
oltre ai limiti inferiori basati sulla teoria deil informazione, descritti in capitolo.
questo
molte varianti del problema dell ordinamento. Limiti inferiori sugli ordinamenti che usano
generalizzazioni del modello ad albero di decisione sono stati ampiamente studiati da
L i-esima statistica d ordine di un insieme di n elementi l i-esimo elemento pi piccolo.
BenOr 23 .
di elementi la prima statistica d ordine i I. e il
Per esempio. il minimo di un insieme
Knuth attribuisce a H. H. Seward, sia la progettazione del counting -numero
sort, nel 1954, sia l idea n. Il mediano, informalmente. il di
massimo lenii-esima statistica d ordine i
di combinare il counting sort con iI radix sort. L ordinamento radix sort rispetto alla cifro
mezzo dell insieme. n dispari. il mediano unico, cadendo in i n l ll- . Qua o
Quando
meno significati a sembra che fosse un algoritmo noto, ampiamente usato da operatori sia la
gi n pari. vi sono due mediani, che cadono in i n/2 e in i n/2 1. Quindi. qualunque
di macchine meccaniche ordinatrici di schede. Secondo Knuth la su
prima pubblicazione di ii. i mediani cadono in i I s 1 12 e i I t 1 /2 I. Per semplici . i preferisce
parit
questo metodo si trova in un documento del 1929 di L. J. Comrie che descrive le macchine OlllC L A1CO
evitare di considerare due mediani n pari in questn caso. si indiche
quando
perforatrici di schede. Il bucket sort stato usato sin dal 1956, l idea base fu propo ta
quando mediano di indice inferiore i /2.
quello
da E. J. Isaac e R. C. Singleton.
di selezionare l i-esimo elemento da un ittiiente di n
Questo capitolo affronta il problema
che l insieme contenga numeri distinti. iebbeflC di
elementi distinti. Si assume per comodit
situazione in cui l insieme contenga valori
fatto qualunque risultato potrh essere esteso alla

Il problema della selezione essere specificato formalmente come segui


ripetuti. pu5

Input un insieme A di n numeri distinti e un numero i, con I i n.

Output l elemento x e A che pi di esattamente altri i I elementi di A.


grande

Il problema della selezione risolto in tempo Or 1gn infatti si possono ordinare


pubessere
i numeri usando l heapsort o il merge sort e poi semplicemente indirizzare l i-esimo elemento

dell array di output. Vi sono comunque algoritmi pi etf cienti.

di selezionare iI minimo e il teassimo di un


Nel paragrafo 10.1, si esaminer il problema

insieme di elementi. Pi interessante il problema di selezione che viene affrnntnto


generate,
l 0.2 analizza un algoritmo che raggiunge un
nei due successivi paragrafi. Il paragrafo pratico
medio. Il paragrafo 10.3 contiene un algnritmn di
limite O ii del tempo di esecuzione nel caso

maggio interesse teorico che raggiunge un empo di esecuzinne Oi nel caio peggiore.

10.1 IVIinimo e massimo

in ut insiClllc di n elementi . Si
confronti sono necessari deteimirnre il minimo
Quanti per
l confronti si esamina n,.ni elemento
facilmente ottenere un limite superior,- ugu,le a n
puo

ill Ull,llT,l A. ClO


1110llltlltO. NCIIJ ic.gllClltc. M llSCLI111g cllC I lllslCI11C I lSlCCf 1
pt-OCCCllll ,l

l Ilt, 111 , i /l.

A1
AI N I 1l A

i niin tl 1 /

2 fnr i m 2 t I rtglhJr
Mediano e sele-ione 177

3 do if min A J
10.2 Selezione con tempo medio lineare
4 then min m Ai

5 return min appare difficile del semplice di troi me un


11 problema generale della selezione pi problema
minimo, eppure, sorprendentemente, entrambi i il tempo di esecuzione
per problemi
Naturalmente, in modo analogo si pu trovare anche il massimo con n 1 confronti. asintotico lo stesso 8n. In questo si presenter un algoritmo divide-et-imper
paragrafo,
il problema della selezione. L a1goritmo R rlooveeo-SavEcr segue lo stesso niodelk
Ci quanto di meglio si possa fare Si, poich, per il problema di determinazione del per
dell algoritmo del Capitolo 8. Come per il quicksort l idea di partizionare
minimo, si pu ottenere anche un limite inferiore di n 1 confronti. Si pensi a un algoritmo quicksort
ricorsivamente l array di input, ma diversamente dal quicksort, che anaIizza rieorsivamen e
per la determinazione del minimo come a un torneo tra gli elementi. Ogni confronto una
entrambi i lati della RAxoovtzeo-Set.acr lavora soltanto su un lato della partizione.
partita del torneo in cui il pi piccolo dei due elementi vince. L osservazione cruciale che partizione,
necessari differenza risalta nell analisi laddove il quichsort ha un tempo medio di esecuzione
ogni elemento eccetto il vincitore deve perdere almeno una partita. Quindi, sono Questa

n 1 confronti determinare il minimo, e l algoritmo Mtwwuw ottimo rispetto al numero di O n Ign , il tempo medio di R oownzEo-SEt.Ecr Bn.
per
di confronti eseguiti. usa ta procedura Ib oowzao-PAn irto introdotta nel S.- .
RANDOMIZED-SELECT paragrafo
come RANDOMIZED-QUICKSORT, un algoritmo randamizzato, il suo compr-
Un interessante raffinamento dell analisi la valutazione del numero medio di volte che la Quindi, poich
tamenta determinato in dall output di un di numeri casuali. Il e iei
linea 4 viene eseguita. Il Problema 6-2 richiede di mostrare che questo numero medio parte generatore
restituisce l i-esimo elemento dell array Al .. 1-
8 lgn . codice per RANDOlvllZED-SELECT pi piccolo

RANDOMlZED-SELECT A. p, I, i
1Vlinimo e massimo simultanei
l ifp r

In atcune applicazioni, bisogna trovare sia il minimo che il massimo in un insieme di i 2 then return Ap

elementi. Per esempia, un programma grafico pu aver bisogno di rappresentare in scala un 3 RANDOMlZED-PARTITlDN A, t
q- p,
insieme di dati x, y da inserire all interno di uno schermo rettangolare o di altri dispositivi
4 k q-p l
grafici di output. Per far ci il programma deve prima determinare il minimo e il massimo di
5 ifi k
ogni coordinata.

Non troppo difficile ideare un algoritmo che trovare sia il minimo che il massimo
6 then return R oowzeo-SEceer A, p, q, i
possa
di n elementi usando un numero di confrnnti Qn asintoticamente ottimale. Basta semplice- 7 else return R xoos izeo-SeLzcv A, q 1, r, i k

mente trovare il minipo e il massimo in modo indipendente, usando n 1 confronti per


Ra oowizEo-P Rvmow nella linea 3, l array Atp . 1
ognuno, un totale di 2n 2 confronti. Dopo aver eseguito l algoritmo
per
vuoti Ap .. e Aq 1 . r tali che ogni eleinento i
partizionato in due sottoarray non qj
In reaIt, sono sufAcienti solo 3l n/21 confronti trovare simultaneamente il minimo e il
per
Ap .. q minore o uguale ad ogni elemento di A q 1 .. r . La linea 4dell algori m ,-,l
massimo. Per far ci, si mantengono gli elementi minimo e massimo via via incontrati, ma
nel Ap .. qj. L algoritmo determina in quale dei
il numero k di elementi sottoarray quindi
piuttosto che analizzare ogni elemento de ll input confrontandolo con il minimo e il massimo
Ap .. e Aq I .. r si trova l i-esimo elemento Se i .
sottoarray q pi piccolo.
correnti, con un costo di due confronti per elemento, si anaIizzano gli elementi in coppia. Si
I elemento desiderato si trova sul iato basso della e viene ricorsi vamente selczion i
confrontano i due elementi deIla coppia in input, si confronta il pi con il partizione
quindi piccolo de DA
dal sottoarray nella linea 6, Invece, se i /-. l eleincnto desiderato si trova sul lato alto
minimo corrente e il pi grande con il massimo corrente. con un costo di tre confronti per
Poich si conoscono k valori dell i-esimo elemento di A p 1-
coppia. partizione. gi pi piccoli
elementi di A g .. l elemento desiderato l i l -esimo elemento pi piccoli
gli q
Aq I .. r, che viene cercato ricorsivamente nella linea 7.
Esercizi tri are
Il tempo di esecuzione di RA oowizco-Srircv nel ca.,o 8 n- , anche p,r
peggiore
il minimo, si essere cosi sfortunati da sempre u, u,do -.
perch potrebbe partizionare
10.1-1 Mostre che il secondo elemento pi piccolo di n elementi pu essere trovato con e p
elementi rimasti. L al oritmo funziona bene, pero, nel caso ntedin
pi grandi
nI Ignl-2confronti nel caso peggiore. Sicggerin ento trovare anche l elemento ..iiir .
r ndomizzato, nessun input il comportamento del caso pe
particolare provoca
pi piccolo.
Si ottenere un limite superiore Tn sul tempo medio richiesto dlla R ia i
puo
SEi.arr. che opera su un arruy di input di n elementi, co,me serque. Si osservato,tel p ir -r
10.1-2 Mostrare che sono necessari I 3nl21-2 confronti trnvare. nel caio i
per pe iorc.
il minimo che il massimo di n numeri. consider Ire numeri l/n i 2.3.... n l. Aii i i A AI
5t ggeriinento quanti elemento cnn prohabilith 2/n c i elen enti con prohabilith per
sono potenzia1mente i massimn o il minimo e analizz ire come un confl OlltO

int1uenzi questo calcolo.


Mediano e selezione 179

che Tn sia monotona crescente, nel caso Ib xteMtzeo-SFt.Ecr sempre sfortnata Esercizi
peggiore
nel senso che l i-esimo elemento deve essere determinato sul lato della
pi grande partizione.
Cosi si ha 1a ricorrenza
10.2-1 Scrivere una versione iterativa di RwwDowtzco-Szwcr.

n-t
Tn T msx l,n-l T max k,n-k On
10.2-2 Si supponga di usare R xoowttzEo-Sat.Ecr per selezionare l elemento minino
kl
dell array A 3, 2, 9, 0, 7, 5, 4, 8, 6, l. Descrivere una sequenza di partizioni che
n-l
provachi una prestazione come quella del caso peggiore delI algoritmo.
Tjn l 2 Tk y 0 ll
g
k n/2

n-I 10.2-3 Si ricorda che, in presenza di elementi uguali, la procedura R r oowizEo-P Rmto

Tk On . partiziona il sottoarray Ap .. r in due sottoarray non vuoti Ap .. q e Aq 1 .. rl


k f n/ tali che ogni e1emento in Ap .. q sia minore o uguale ad ogni elemento in

Aq 1 . r. Se sono presenti elementi uguali, la procedura RwxoowtzEo-SELE i


La seconda riga segue dalla max 1, n 1 n l e
prima perch funziona correttamente

se k n/2 ,
max p,n gc fk
n k se k f n/2 .
10.3 Selezione in tempo lineare nel caso peggiore
Se n dispari, ogni termine Tl n/2 I, Tl n/2 I 1 ...., Tn 1 compare due i olte nell
sommatoria, mentre se i pari, ogni termine Tl n/2 1, Tl n/2 I 2 ,, T -1 compare
due volte e il termine Si esaminer ora un algoritmo di selezione il cui tempo di esecuzione 0n nel caso peggiore.
Tl n/21 compare una volta. In entrambi i casi, la sommatoria dell
riga limitata Come R oo iIZED-SELECT, l algoritmo Sa.Ect trova l elemento desiderato tramite p tr-
prima superiormente dalla sommatoria della seconda. La terza riga segue dalla
seconda tizionamenti ricorsivi dell array di input. L idea di base dell algoritmo. pero, di garanrir
poich nel caso peggiore T si I O n- , e cosi il termine Ti 1 essere
l/n pu
assorbito dal termine una buona suddivisione quando l array viene pmizionato. Sa Ecr usa l algoritmo di p r-
On.
tizionamento deterministico PwRTittow del quicl sort si veda il paragrafo 8.1 , modificato in
Si risolve la ricorrenza per sostituzione. Si assuma che Tn cn per costante c che
qualche modo da come di input l elemento attorno al quaIe
soddisfi le condizioni prendere parametro perno partizion c.
iniziali della ricorrenza. Usando l ipotesi induttiva, si ha
L algoritmo SEiecT determina l i-esimo elemento pi piccolo di un array di input di

n-l elementi eseguendo i seguenti passi.


Tn ck i9 n 1. Divide n elementi dell array di input in l.nl5J di 5 elementi ciascuno e al piii un
g gli gruppi
n
I n/2 costituito dai rimanenti n mod 5 elementi.
gruppo
n-l In/21- I
2. Trova il mediano di ognuno degli r/5 I gruppi, ordinando con l insertion sort gli elementi
k On
gk g che sono al pi 5 di ogni gruppo.
k I l I
3. Usa S cr ricorsivamente per trovare il mediano x degli I n/5 I mediani trovati al pass6

-,, ,. - , I 1 I- 1 , ... 4. Partiziona l array di input attorno al mediano dei mediani. usando una versione nsodificau
di PwRTITION. Sia l il numero di elementi sul lato basso della partiziane, cosi che ii Asia
cn l 1 Qn
- il numero di elementi sul lato alto.

5. Usa SEcerr ricorsivamente trovare l i-esimo elemento sul lato basso i


C ..h per pi piccolo
j Oh
i l. oppi re l i I -esimo elemento piccolo sul lato alto se i l.
pi
rn,
Per analizzare il tempo ili esecuzione di SELECT, si determina un limite inferiore sul numeri
di elementi piit grandi dell elemento partizionante.v. La figura 10. 1 utile per visualizz rc
2
poich si pu scegliere c sufficientemente in niodo che c n/4 1/2 domini il termine questn calcolo. Alnieno met dei mediani trnvati al sono maggiori o u u li
grande passo
On.

Cosi l i-esimo elemento di un insieme, 3 etementi piii grandi di r, eccettn quei gruppo che hws eno di 5 elementi si n non divisibili
per qualsiasi i. e in particolare il medi ino. poscon
essere determinati in tempo lineare nel caso medio. per 5. e quel gruppo contenente.r stessn. Detraendo questi due gruppi. segue che il ilUtllCI O
di e cernenti piii graiidi di s i almeno

I 3II
j I.
e selezione 181
Mediano
180 Capitolo iO

Esercizi

sono divisi in ruppi di 5. L*algoritmo


SELacr, elementi in input
10.3-1 Nell algoritmo gli
7 elementi Si mostri che
lineare se i gruppi fossero di
funzionerebbe in tempo
lineare se i gruppi sono di 3 elementi.
SeiEcr non funziona in tempo

maggiori del mediano dei


mostrare che il numero di elementi
10.3-2 Analizzare Sa.ecr per
di x almeno f n/a se n 2 38.
mediani x e il numero di elementi minori

in tempo On lpi
fare in modo che ilquicksort sia eseguito
10.3-3 Mostrare come impossibile
Figura 10.1 Analisi dell algorinno SEt.ecr. Gli n elementi sono ra resen nel caso peggiore.
n o n co onn. .Il me d iano d io g ni g ru pp ob bianco e il mediano dei mediani ericherraui ari
pii picco
on.x. recce i anno ddagli elementi ai ii iccoli i da aciosipuvedereche3dei5ele
ci nei ri
pi grandi
trovare l i-esimo elemento pi
a a esrra ixsonoma che un algoritmo usi solo confronti per
gg ioridixe3d . 3 dei 5 eleinenri di ogni gruppo alla si tisrra di.v
i v 103-4 Si supponga li
che si trovare anche
minori i.v. i elemenri di x sono su un fondo grigio. in un insieme di n elementi. Mostrare possono
piccolo nessun
senza eseguire
e gli n i elementi pi grandi
i 1 elementi pi piccoli
u teriore confronto.
Analoeamente, i n umero di elementi minori di x almeno 3nl10 6. Perci. nel caso

peggiore, SELECT chiamata ricorsivamente su al pi 7nl10 6 elementi al passo 5. il


black-box a scatola chiusa per trovare
Sia dato un sottoprogramma cio
10.3-5
Si ora sviluppare una ricorrenza
pu perer iil te
tempo di esecuzione Tn nel caso pe eiore r lineare nel caso peggiore.
Si dia un semplice
agoritmoSELECT.I mediano, che richieda tempo
e -
p assi i, l 2e4e richiedono tempo On. . Il passo 2 consiste di i Ohi n
che risolva iI problema della selezione per qualun-
algoritmo con tempo lineare
chiamate di insertion so su insiemi di dimensione 01 , Il 3
que i.
e i passo rie iede al pi tempo T 7n/10 6 assumendo che T sia monotona crescente. Si
noti che 7n/10 6 n per t 20 e che ualun input di al pi 80 elementi richiede tem o
que dividono
sono i k 1 elementi che
i pu ottenere la ricorrenza di un insieme di n elementi
quindi 10.3-6 I k-esimi quantili
al pi con l elemento di
in k insiemi della stessa dimensione o
l insieme ordinato

-P 81
T n/51 ln/10 6 On
se
se
n
n i
80,
pp.
differenza .
di un insieme.
Fornire un algoritmo con tempo On 1gk per elencare i k-esimi quantili

Dimostriamo, er sost tuzi zi one, che il tempo di esecuzione lineare. . S iassumac h e T nj cn


j
80e costante c. Sostituendo nel un insieme S di n numeri distinti
p n qualche lat d d 11a ricorrenza si ottiene con tempo On che, dato
10.3-7 Descrivere un algoritmo
sono vicini at mediano
k n, determini i k numeri in S che pi
e un intero positivo
Tn c n/5 c 7n/10 6 On
di S.
cn/5 c 7cn/10 6c On

9cn/10 7c On Fornire un algoritmo


due arr6y di n numeri, gih ordinati.
10.3-8 Siano X1 .. n e Y 1 .. n
cn, elementi negli array X e Y.
trovare il mediano fra tutti i 2n
con tempo O lgn per

orche
poich ssi pu
uo scegliere
sci e sufficientemente rande in modo cb e c n /10-7 sia ma della a
fiore
che sta
funzione descritta dal termine On ani n una compagnia petrolifera.
per 80. Il tem po di esecuzinne di Stitica nel caso 10.3-9 Il Benzolo consulente presso
professor di
attraverso un campo
quindi lineare. che va da est a ovest
peggiore un grosso
oleodotto
progettando
deve essere connesso
un condotto laterale
Come negli
neroli ordinamenti
ordi con n Da ogni pozzn,
per confronti si veda il parao ra f o 9.1., , S ELECT e R sDowizt n- petrolio pozzi.
o sud . conse
or , breve o nord
lungo il cumntino pi
SELECT determinano le informazioni sull ordine ine re I ativo tra elementi solo attraverso . cnnfron-r t - direttamente al condotto principale
, dei coine si dovrebbe
D te le coordinate.v e y pozzi.
tti.. Perci,
er il comportamento lineare non risulta u a daa ipotesi
i sull input, nel c ii mostrato bella tigura l0. 2.
come accade minimizza la
quelto che
eegli algoritmi - ottimale clel condntto princip le
di ordinamento del Capitolo 9. . L or d inamento richiede tem o On leiii ne
nel scegliere il luogo
luo o ottimale essere
Miistr tre che il pu
modello che opera tot ile dei conctntli Inter ili
per confronti. anche in media s d a il Prnblcma 9-1 . c perci il nictocl . ln.hexza
-. ten po lineare.
presentatonell introduzionediquestocapitolo,che r d determinato in
.c c
e
e cimento, asintoticamente inetficiente.
e ne l83

un t m O n 1gn nel cso


il mediano di ri elementi con
b. Mostrare come calcolare pesato
usando l ordinamento.
peggiore,
in tempo On nel,--u .- -i .
c. Mostrare come calcolare il mediano pesato
SA -. del
che abbia un tempo lineare ci,m paragrafo
algoritmo per trovare il mediano

10.3.
definito come wp- -. S o P
Il problema della co11oca -ione dell uffieio postale
desidera covare m punto p non
associati Si
p con pesi
1j lV

p,, p ..., p. oe
che minimizzi la somma p, .
necessariamente uno di in input
quelli

d a, b la distanza tra due punti a e b.


i mai are l uAi io
un ottima soluzione per il probi.ma
d. Spiegare che il mediano pesato
reali la distanza tra
sono semplicemente nume
a una dimensione, in cui i punti
postale
i punti a e b d a, b a b.

dell uf io a 2 dimensio-
il problema della collocazione po. td
e. Trovare la soluzione per
tra i punti a x y, e
le coppie di coordinate x, y e la distanza
ni, in cui i punti sono
c - o x
Fieura
ge 10,2.2
. Si vuole determinare la . e e oleodotroeo
dell otro - la distan a Manhattaii d a, b x, 1
posi-ione eesr-ovest che minimi i la hmghe-.a .c b y,

10-3 Sele-ione di efementi piccoli


1 m mo tra i numeri
usati da SELECT selezionare l i-e imi
Il numero T di confronti per
dd notazion 8
Problemi Tn 8 , ma la costante na. s ta
soddisfa, come stato mostrato,
realizzare una diversa pracedura
i piccolo relativamente an, si puo
piuttosto grande. Quando
eonfri r. . nel .-o peggiore.
10-I La un sonoprogramma, ma esegua meno
sequniza degli i nwneri che usi SeLEcr come
pii grandi
trovare l i-esimo elemento pi piccolo
Dato un insieme di n numeri, un algoritmo che usi U, n contronti per
si desidera trovare la sequenza dei a. Descrivere
. p i 1 U
B, ri m
mo asato su confronti. fra n elementi. dove i n/2 e
Trovare l al o oritmo che realizza oonuno dei
i e o i con i miglior tempo di esecuzione asintotico nel caso e fiore a se n 2i,
itempidi s zio ed i cod j Tn
t d e di i . .
U i/2 T 2i altrimenti
rg inare
pn/2
g Q tutti i numeri ed elencare
gli i
pi grandi. coppie. si riapp ichi ri-
confronti disgiunti tra
si cominci con fnl2J
b. Costruire con i nu meri B
lati Stiggerime iro
Cl una coda con priorit e ch am
I SIC -ivi
E, XTRACT-iVIAX I VOltC. il piii elemento di o ni ioppia.
corsivamente sull insieme contenente piccolo
c. sara unn . oritmo
di selezione pper trovare re l -i-esimo numero . quindi i
pi grande. che Ui n O T 2i 1g nli .
izionare b. Mostrare
e ordinare gli i numeri pi grandi.
allora Un ii 0 lgnk
c. Mostrare che se i una costante,

Un n 0 T Zn/k 1.
d. Mostrare che se i 13- per / 2, allora
10-2 Mediano
pesato
Per n elementi distinti x, x...., x c on pesi v, w, ..., v tali che
positivi
il mediano l elemento
pesato x ch dd isfa le seguenti disuguaglianze
Note al capitolo

W,.
da Blum,
2 l. algnritnao trovare il mediano in ten po lineare nel caso peg
iarda fu progettato
per

e migliore che
tempo medio anche
sviluppato uria versione con
Floyd e Rive t f70j hanno
un campione degli
w ricoriivan ente da piccolo
g a orno a un elemento selezinnato
A., .tl
p rtiziona
elementi.

a. Dedurre che il mediano ,


di.-,
i.t,, x ...... x il med 1110 pesato -
degli XE n I/nn perer
COll
pesi


Introduzione
Strutture di dati
i matematici. Mentre gli
informatici lo sono per
Gli insiemi sono fondamentali per gli quanto
algoriuni nel
insiemi manipolati dagli possono,
insiemi matematici sono immutabili, gli
saranno chiamati dinamici.
in altri modi. Tali insiemi
tempo. crescere, contrarsi o cambiare
rappresentare e manipolare
alcune tecniche di base per
I prossimi cinque capitoli presentano
sul calcolatore insiemi dinamici finiti.
da ese uire sugli insiemi.
richiedere alcuni diversi tipi di operazioni
Gli algoritmi possono
di in iiie e cancel/are
molti algoritmi necessitano solo della possibili
Per esempio.
dinamico che offre queste
a un insieme. Un insieme
elementi e verificare l apparreneii -a
operazioni pi complicate.
un di ionario. Altri algnritmi richiedono
operazioni chiamato
della struttura di dati
introdotte nel Capitoln 7 nel contesto
Per esempio, le code con priorit,
e di estrazione del pi piccolo
di inserzinne di un elemento
heap, otfrono le operazioni
dinamico dipende
modo di realizzare un insieme
elemento. chiaro quindi che il miglior

dalle operazioni che devono essere tornite.

Elementi di un insieme dinamico

upprescntato da un
un dinamico. ogni elemento
In una tipica realizzazione di insieme
all oggetto.
esaminati e manipolati se si hu un puntatore
oggetto i cui campi possono essere
in ambienti di programmazione
la realizzazione di a getti e puntatori
Il Capitnlo l I discute
assumono che uno
Alcuni insiemi dinamici
che non l i contengono come tipi di dato primitivi,
sono tutte diverse,
che lo identifica. Se le chiavi
dei campi dell oggetto sia un campo chiave
di valori c tiare. L oggetto pu
agli insiemi di amici come a un insieme
si pu pensare utilizzati in
mi non sono
che occupano altri campi del oggetro
contenere dati satetlite,
l avere anche campi che sono manipolati
modo nell s realizzazione del insieme pun
nessun altri oggetti
dati o puntatori ad
su insiemi campi contenere
dalle operazioni questi posarono

nell insienle.

el ,cnto dell insien e, per


cli del inirc il mininu
Capitolo . Vn nrdinamento totale permea
in un insieme.
di un da elcmcntn
del i linwnlv piii .. .rande
esempio. o di parlare prossinw
18 Parte llI
di dati

Operazioni su insiemi dinamici


essenzi i p ..
jQgQfQfQQQQ$ffQQQfLdi dati s P
Il Capitolo l 1 presenta i conce ti
a
e al eri radicati. Viene anche moscato com.m oggetti
--- c puntatori
pi/e, code, liste concatenate
Le operazioni su insiemi iienti Cg o p iorniscono come
dinamici possono essere raggruppate essere realizzati in di -,
programmazione
in due categorie interroga- possano
zioni, che restituiscono semplicemente essere fami iare ,gc qu.i agbia ei seguito
informaziani sull insieme Molto di questo materiale dovrebbe qua
e operaziosti di mochfica. primitivi.
che modificano l insieme. Segue una lista delle operazioni un corso di introduzione alla
tipiche. Qualunque specifica programmaziane.
applicazione di solito richiede che solo di queste veneano c e o rniscono le operazioni dei dizionari YSER .
poche realizzate. o 1 le tabelle hash,
pito presenta
SE RcH 5, k - uire un
Un interrogazione che, richiesto un tempo 8n eww
dato un insieme S e un valore chiave l , restituisce
e S Nel caso peggiore, re, per
un puntatore.ai a un elemento hash i
in S tale che l-cg r l , oppure i ., , m il tempo medioperle o erazioni
er le ope sulle tabelle
wtc se un tale elemento non e
appartiene ad S. , e
ma la mag ior i e
ta
tabelle e hashsi basa sulla probabilit, p artedelcapitolononrii
IvseR S, x Un operazione l areomento.
di modifica che inserisce nell insieme S l elemento
da x. Di solito si assume puntato .. o
che tutti i campi binari di ricerca. . che sono affrontati
affro nel apito o sc nnatutteleoperazioni
nell elemento x necessari alla realizzazione Gti i alberi p
dell insieme siano stati operaziiine ne rie
nc i
gi inizializzati. su li insiemi dinamici elencate o ra.
sopra. Yele caso peggiore ogni
,
DEczvs S,.r - n elementi, ma su un albero binario di ricerca co-trui
Un operazione di modifica che, dato 8 n n su un albero con
un puntatore x ad un elemento
nell insieme Gli i alberi
a binari di ricer.a erv
5. toglie.v da S. Si noti che iil tempo medio per ogni operazione 0O1 gnn. .
questa operazione usa un a un
puntatore elemento
x, non un valore chiave. molte altre strutture di dati.
per
Mrwwus alberi binari di ricerca. sono introdotti ne apito o
S Un interrogazione su un insieme variante de li
totalmente ordinato S che restituisce .
l elemento di S con la chiave .
.amen da li alberi di ricerca binari.zlialberiR
bin o no.e
rnnose
pi li
piccola.
caso L n a era
MAxiuuw S Un interrogazione su p QZ o OAo B poo O len
, nel peggiore.
un insieme totalmente ordinato S che restituisce uht altro tipo di albe o 0 i K Q
1 elemento di S con la chiave i itolo 19 redenta
pi grande.
i m o -a o. Bench i mecc anismi de li alberi RB .inno a
SuccsssoR S, x Un interrogazione che, dato un elemento ala cui chiave appartiene a un loro roprieth senza studi e i mec snis
insieme totalmente ordinato S. restituisce il successivo . -
elemento in S. o wL
t

essere molto istruttivo dare


areun occhiataalcodice d cipro-r.o- r.
l elemento pi grande aie.i Tutta
u ia. ..-.-
puo
massimo.
CBpltO lo.
O.
PREoEcEssoR S, x Un interrogazione che, dato un diverse da
elemento x la cui o ffrire operazioni
un insieme totalmente
chiave appartiene a P o, i o. o c. li alberi per
ordinato S, restituisce il successivo elemento in S. o xiL se a e na e temn te. Prima si estendono per mantenere
x I elemento pi piccolo p
minimo. i-e
di un insieme di chiavi. vi. q uindi si e tendonoinmo o ie
l i-esimoi elemento
Le interrogazioni Successo e PREDECESSOR sono spesso estese agli insiemi con chiavi intervalli di numeri reali.
distinte. non
Per un insieme di n chiavi, una chiamata MnuiMt w seguita da i 1 chiam te a
Successo elenca elementi
gli del l insieme in modo ordinato.
Il tempo eseguire un operazione
per su insiemi di solito misurato in termini della
cardinalit dell insieme, che fornita come argomento. Per esempio. il Capitolo 14 descrive
una struttura di dati che pu fornire una qualunque delle operazioni descritte
te su un insien e precedentemen-
di cardinalit n in tempo O lgn .

Sommario della III parte

I capitoli dall l f al 15 descrivono alcune strutture di dati che essere


realizzare insiemi possono u,.-ate per
dinamici molte
efficienti
per svariati
problemi. Un
di queste

altra imponante
saranno usate
struttura-Inheap
in seguito
per costruire

c stata
al oritmi i
Capitolo 7. presentata nel
j

in que1 contesero.
- Strutture di dati fondamentali

-i erso semplici
In questo capitolo si esaminer la rappresentazione di insiemi dinamo.

Sebbene mol te strutture di dati com - essere


strutture di dati che usano puntatori. possan

saranno solo sem i.i pile. code. liste


modellate usando puntatori. presentate quelle pi
discuter anche un metodo np ,. . ntare oggetti e
concatenate e alberi radicati. Si per

puntatori con gli array.

3.1.1 Pile e Code

Pile c code sono insiemi dinamici in cui l elemento rimosso dall in i . un l operazione

l elemento cancellato dall insieme qu 11o inserito pi di


DELETE prestabilito. In unapila,

una allineo arrivato, servito. denz UFO l as t-in. first-


recente la pila realizza politica primo
in una coda, l elemento cancellato sempre che stato nell insieme
out . Similmente, quello
a lungo la coda realizza una arrivato, servii. d t ta FIFO first-in,
pi politica prinro primo
diversi modi efficienti realizzare e code su uv. alclatore. In questo
first-out . Vi sono per pile
si mostrer come realizzarle con un semplice array.
paragrafo

Pile

spesso chiamata Pcsw e l operazic ne DFi F TE. che non ha


L operazione di INSERT SU un pila
elemento argomento, spesso chiamata Por. tern.ini in,-lesi sono quelli
nessun come Questi
di caricate a moti . he si trnvano nelle
usati per descrivere l utilizzo delle pile pi ttti
in cui i piatti sono estratti dalla l orine contrario a
catfetterie americane. L ordine pila
con cui sono stati inseriti, infatti solo il piatto in cima accessibile.
quello

nella figura 11.1, si pun realizzare una di al pi i. elementi con un array


Come mostrato pila
ha un ro a SJ che l indice dell clementn in. erito pi di recente.
S1 .. n. L array attributo
dagli elementi S1 . rop dnve 51 l elemento in tnndo alla pila
La pila costituita Sj ,

l e 5 re pj5j

Quando
l elemento

rn S O, la pila
in cima.

non contiene alcun cleinClltO Lt C Vuota. Si pu contlnllare se la

LlC Ull OpCl lZIOl1C POP


vuota cnn l operazione di interrngazinnc St xrv-Eui rv. Se si CsC
pila

C. il
l. Oll l Illl Ll v CCUpPE
supera n. la pila va in r verflow. Nella rc ili//, I/li lll. f 1CUCkl ldl

dell overt1ow dell t pila .

J
190 Capitolo 11 Strutture di dati 191
fondamentali

I 2 3 4 5 6 7 11
1 2 3 4 5 6 7 1 2 3 4 5 6 6 7 8 9 10
S 15 6 2 9 17 3 S 15 6 2 9 17 a 156984
k
4
t t
rop SJ 4 top S 6 7 12
top SJ 5 head Q rai Q

0 c 12
j 2 3 4 5 6 7 8 9 10 11
-- - -15
Figura l l. 1 La reali- a ione di ma pila S con un array. Gli elementi della appaiono solo nelle b Q 3 5 6 9 8 4 17
pila
posi-ioidi grigie chiare. a La pila 5 Ira 4 elementi. L elenrenro in cima 9. La S dopo
chiamate PUSH 5, 17 e PUS S, 3. c La pila S dpo la chia nata POP S ha
b
restituito
pila
l elemedto
le

3. .t t
che quello inserito arrm. tail Q 3 head Q 7
pi ic recentemente. Sebbene l elemento 3 appaia ancora eli esso non y iir
ne1la piln I elemento in cima il 17.

1 2 3 4 5 6 7 8 9 10 11 12

Ognuna delle operazioni sulla essere realizzata con c Q 3 5,, .,-L.-l 6 9 S 4 17


piIa pu poche linee di codice.

t
STACK-EMPTY S tail Q 3 Aead Q 8

l if rop S 0
coda co r ,r arra .. 12 . G1i eleme,r i della co,fa a p ... ,
Figura 11.2 Lc, reali a ione di w,a Q1
then return TRUE

3 else return FALSE

Pc s S. x della coda. La nuova resta ha clriave 6.

1 rop SJ m rop SJ l

I e si procede in modo circolare, nel senato che la locazione I segue immediatamente


2 5 rop S m x Q
un ordine circolare. head Q tail Q la coda u ot .
la locazione n secondo Quando
Poe $ la coda vuota e si tenta di estrane un
Inizialmente si ha head Q tail g 1. Quando

l if Sv ac-Ev re 5 la coda va in underflow. head gj teril Q l la coda piena e se ii tenta


elemento Quando
underflow di inserire un elemento la coda va in overflow.
then error
i controlli dell errore di overAoii e di
3 else Nelle seguenti E queue e Degveue,
topfS top S l procedure
omessi. l l. l-4 richiede di fornire un codice che coiuri lli
underflo sono stati L Esercizio
4 return S top 5 1
queste due condizioni di errore.

La figura 11.1 mostra effetti delle operazioni di modifica Pus


gli e Por. Ognuna delle tre
operazioni sulla richiede tempo 01. EsQI. cuE Q..r
pila
I .i-
Q rai g

Code 2 if mil gj lengtl Q

3 then tnil gj I

L operazione di IrlseRT su una coda chiamata EwquEue 4 else tail Q m Ic il g I


e l operazione di DELETe chiamata
DEQUEUE come 1 operazione Por della DEQUEUE non
pila, ha alcun elemento come ar omei1-
DEQUEUF. Q
to. La propriet FIFO fa si che una coda nperi cotte una fila di persone in un ufficio pubblicu.
La coda ha una tesla l .r O fiead g
head e una coda tail . Quando un ele nne t to viene inserito. prende pn to
in fondo alla coda, come una appena arrivata 2 if Iteztrl l eetd
pedona prende posto alla tane della fil i. Q Q
L elemento estratto sempre in testa alla coda, come la persona
quello in te ta alla fila che 3 then lteacl O e- l
sta aspettando da pi tempo. Fortunatamente. non bisogna p eocciip irti di elen enti dell i l ila 1
else hc sul Q m hcad Q
che non rispettano i1 proprio turno.
3 return.r

Es vr t e Dry vi i .. 0 ti operazi o
l ligtrr l l.2 m iilru li eflelti cl Ile operazioni

inserito nelle coda. Gli elementi clelia en la sono alle locazioni lienrl g . richiede n tempo 01.
lu ir/ g I..... rriii
Strunure di dati 193
Capcmlo 11 fondamenta1i

prev tiey next


Esercizi
I /

head L l 9 16 4
a
11.1.-1 Usando la figura 11.1 come modello, illustrare il risultato di ognuna delle seguenti

operazioni Pusa S,4 , Pusw 5, I, Pus S,3 , Por S , Pus S,8 e Por S .
16 4
vuota memorizzata nell array S1 .. 6. b head L / 25
applicate gd una pila S inizialmente

9 16 l /
un array A .. n j in modo tale che nessuna c hed L l 25
ILI-2 Spiegare come realizzare due pile con 1
di esse vada in overflow a meno che il numero complessivo di elementi sia n. Le
l insieme dinamico l. 4. 9. l 6. Ogni
operazioni di Por e Pvsv dovrebbero richiedere tempo 01. Figura 1 1.3 a Una lista L bidire ioz2ale che ruppresertra

la chiave e i ptutratori rappresentati con frecceJ


elemento nella lista un oggerto con campi per
og coda e il campo della testa contengono
all stsccessivo e precedente. Il campo next della prev
gerro
alla resta. b Dopo l esectcione di
11. 1-3 Usando la figura 11.2 come modello, illustrare il risultato di ognuna delle seguenti wL indicati con mia barra diagonale. L arrribuw head L punta
im muovo oggetto con chiave 25 coperse uova
4, EwgvEuE Q, EwqveuE Q. DEQLELE g . ERt L,s , dove kc x 25 la lista concatenata ha
operazioni ExqvEue Q, 1, 3, L sv-Ics
resta cover chiave 9. El risultato della successiva
testa. nuovo oggerro alla vecchia c
ad una coda vuota p rnra
ExguEvE Q, 8 e DEquEuE g , applicate Q inizialmente memo- Qnesto
dove x punm all oggetto con chiaie 4.
chiamata L svDecEtz L,.r .
rizzata nell array Q1 .. 6.

11.1-4 Riscrivere ENQUEUE e DEQUEUE per controllare l overflow e l underflow di una della lista. Un attributo l ead L
mento x non ha successore ed quindi l ultimo elemento, o coda,
COI .
al primo elemento della lista. Se head Lj wL la lista vuota.
punta
diverse forme. Pu essere concatenata semplice o bidirezionale. puo
Una lista pu avere
11.1-5 Mentre una consente l inserzione e la cancellazione di elementi da una sola Se una lista concatenata sentplice. si omette
pila essere o nn ordinata. pu essere o no circolare.
e una coda consente l inserzione ad un estremo e la cance11azione dall altro. ordiitata. l ordine lineare della lista
parte il di ogni elementn. Se una lista
puntatore peci
una deque doppia coda l*inserzione e la cancellazione da entrambi chiavi memorizzate negli elementi della lista l elemento
permette gli corrisponde all ordine lineare delle
estremi. Scrivere quattro procedure con tempo 01 per inserire e cancellare
minimo la testa della lista mentre il massimo la coda. Se la lista non ordinai gli elementi
eIementi da entrambi estremi di una deque realizzata con un array. lista cireokrre, il puntatore della testa della
gli apparire in qualsiasi ordine. In una prei
possono
delIa lista alla testa. La lista puo cosi
lista alla coda e il puntatore yen della coda punta
punta
resto di questo si assumer che le liste
essere vista come un anello di elementi. Nel paragrafo,
11.1-6 Mostrare come realizzare una coda usando due pile. Analizzare il teiapo di
concatenate con cui si lavora siano non ordinate e bidirezionali.
esecuzione ddle operazioni della coda.

1E./-7 Mostrare come realizzare una usando due code. Analizzare il tempo di Ricerca in una lista concatenata
pila
esecuzione delle operazioni della piIa.
con chiave k nella lista L con una
La Lisv-Se Rcv L, k trova il primo elemento
procedura
all elemento. Se nessun aggetto con chiave
semplice ricerco lineare, resti tuendu il puntatore
nella figura 11.3 a , la
11.2 Liste concatenate k appare nella list . allora viene restituito wc. Per la lista concatenata

al terzo elemento e la chiamata I tsT-


chiamata Ltd-Sz RcH L, 4 restituisee un puntatore
SEARCH L, 7 restituisce n..
Una lista concatenata una struttura di dati in cui gli oggetti sono sistemati secondo un ordine
lineare. Diversamente da un array pero, in cui l ordine lineare determinato dagli indici
dell array, l ordine in una lista conc. ,tenata determinato attraverso un ad ogni k
puntatore LIST-SEARCH L,

l x hciad L
insiemi dinamici, offrendo tutte le operazioni gi elencate per insiemi dinamici, anche se
gli
2 while.v c zii e I ey x w k
non necessariamente nel modo pi efficiente.
3 ElO.V IfdXll Cl
Come mostrato nella figura 11.3 ogni elemento di una lista concatenata doppia o listn
4 lCtlll ll .V

richiede tempc 8wr nel so


Per la ricerca in un liita di n nggett i. l Ltsr-Sr ,u cn
pr lCCdura
x non ha predecessore ed quindi il primo elemento, o tesra. della lista Se uuv i u. l cle- .iore. I es.. m dcll intera lift..l.
inf ..1tti la ricerc,.i richiedere
pc potrebbc
194 Capirolo 11 Strutture di dati 195
fondamentali

Inserimento in una lista concatenata

ni L

Dato un elemento x il cui campo chiave sia stato inizializzato, la procedura L st-IssERt
gi
inserisce x all inizio della lista concatenata, come mostrato nella figura 11.3 b . b nlL
9

LIST-IYSERT L, x

25 4
1 next x m head L nil L

2 if head L wL

3 then m x 25 9
prev head L nlL

4 head L x
se catinella s il L sci ra la connn e lista
Figura 11.4 Una lista concatenata L cfr usa una grigia
5 previ istL In testa e la cda. L nttriburo head L
richiusa in modo circolare con nil L disposto tra
b/dire atonale

Il tempo di esecuzione Ltsv-I sER r su una lista di n elementi 01.


per

chiave 1. La nuota coda f oggetro con clria e 4.


lista ch po la cancel/a.-io ic dell og getto cn
Cancellazione da una lista concatenata

regolare lista bidirezionale in una lista circolare. con le sentinella


La 11.4. ci trasforma una
procedura L sl -DELETE rimuove un elemento x da una lista concatenata L. La procedurJ
riceve un puntatore a.v e estrae I elemento.z dalla lista aggiornando i puntatori. Se si desidera
sia il campo irevt della coda che il campo peci della testa
cancellare un elemento punta alla coda. Analogamente.
con una data chiave, si deve chiamare L st-SE RcH
prima per
recuperare il puntatore all elemento.

LlST-OELETE L, X iievt il L che essere inizializzati a i il L .


sentinella, infatti sia prei nil L posarono

1 if prev x - tL tranne che i riferimenti a tt. e head L


Il codice di List-SzARcw rimane lo stesso di prime,

2 then next prev x c nexr i cambiano come specificato sopra.

3 else heacl L m nerr x


L ST SEARCH L, k
4 if ne. t x c wL
1 x m nevt nif L
5 then pro nextfx J .v
pre 2 while x c nil L e key x c k

La figura 11.3 c mostra come viene cancellato un elemento 3 do.v rext x


da una lista concatenata. Llsv-
l3pt.eva viene eseguita in tempo 01. ma, se si desidera cancellare un elemento con una data 4 returh x
chiave. richiesto tempo On nel caso si deve chiamare LisT-SEARCH.
peggiore perch prima Per inserire un
cancetl e un elemento dalla lista si usa la prncedura Ltd-Dccave .
Per

elemento nella lista si usa la seguente procedura.


Sentinelle

L1ST-INSERT L, X

Il codice di Lise-DELETE l next s m tre.vr nil L


potrebbe essere pi semplice sc si potesse evitare la gestione dei casi
limite relativi ella testa e alla coda della li.itn. 2 m.v
prei next nil L

4 itest itil L c .r
LlST DELETE L, X

5 .v m il Ll
1 nen prei m ne.ir s pre
f. 11

2 nsostra effetti di LisT-Ir si.et e Lidi -Dru tr. u una ietta campione.
pre Aexl s J / rei .s La figura 11.4 gli

Uosa sentinella un oggetto fittizio che consente di semplit icarc la gestione dei casi limite.

codice. 1n si sostituisce con un riferimcntn alla sentineil ni/ L . Come moitr ti nell i ligur t
di dati 197
Strutture fondamentali
196 Capitolo Il

sentinelle aiuta a contrarre cosi il coefficiente 8


il codice in un ciclo, riducendo di n o n- er

Le sentinelle non dovrebb bero essere usate indiscriminatamente. . Se vi sono


ono mo
molte e icco
iccole e
next
liste, la memoria extra usata er l e sentinelle pu rappresentare un significativo spreco di
l key
spazio. In questo libro, si us eranno le sentinelle esse semplificano veram
er m t
quando
prev
COCllCC.

arra kc , nevt e prev. Ogni


11.3 a rappresenrara dagli
11.5 La liscia concarenara della figura
Figura
I puntatori minori ati corrispo tdono
Esercizi degli arra rappresenta un singolo oggetto.
striscia verticale
Le srrisce grigie chiare
alro 1e frecce mostrano coine interprerarli.
indici dell array mostrati in
agli
L conriene l indice de1la resta.
elenienri della lista. La variabile
contengano gli
11.2-1 Lo p erazione I wsaat su insiemi dinamici essere realizzata su una lista concatenata
puo
semplice in tempo 01 Cosa si pu dire per la DEI.ma

Realizzazione di puntatori e oggetti


1I.3
11.2-2 Q alizzare una pila usando una lista concatenat l L. L e operazioni Pus e
Por, dovrebbero richiedere ancora tempo 01. come il Fortran. che non
e oggetti usando linguaggi,
Come possibile rappresentare puntatori
di realizzare strutture di dati
si vedranno due modi
li forniscono In questo paragrafo,
oggeni con arra e
11.2-3 Realiz zare una coda usando tipo di datn Si realizzeranno
una lista concatenata semp l ice L. . L e operazioni concatenate senza un esplicito punutore.
NQUEUE e DEQUELE dovrebbero richiedere ancora tempo 01. con indici degli array.
puntatori

1I.2-4 , multipli
Re e alizzare le operazioni Issai, DEi.Ete e SEARCH d ei d izionari usando liste circolari di oggetti con array
Rappresentazione
concatenate semplici. Quali soi1o i tempi di esecuzione delle procedure
stessi campi usando un array per
un insieme di oggetti che abbiano gli
Si pu rappresentare
si pu realizzare la lista concatenata
11.2- L operazione UNlON esempio, la figura 1I.5 mostra come
SU insiemi dinamici prende come input d d ogni campo. Per
i valori delle chiavi attualmente
e S,e restituisce con tre array. L array l ey contiene
,
un insieme S 5, u S, consistente di tutti gli elementi di 5, e di della figura l l. a
ne.vt e prev. Dato un indice
sono memorizzati negli array
i insiemi S, e S, sono di solito distrutti dall operazione. Mostrare come fornire nell insieme dinamico, i puntatori
della lista concatenata. Secondo questa
Usto con terppo 01 usando una struttura di dati next x e prev .r rappresentano un oggetto
a lista adeguata. x, key x , .
agli array key, ne t e prei
x semplicemente un indice comune
interpretazione. un puntatore
chiave 16 nell lista con-
con chiave 4 segue l oggetto con
II.2-6 Scrivere una Nella figura 11.3 a . l oggetto
procedura che fonda due liste concatenate semplici ordinate in una in k
in l ey 2 , e la chiave 16 compare f .
. Nella figura 11.5, la chiave 4 compare
singo a ista concatenata semplice ordinata senza usare sentinelle. P catenata. coda
vr . compaia nel campo ne.vr della
2 e prev 2 5. Sebbene la costante
e ura ana oga usando una sentinella con chiave marcare la fine di ogni cosi si ha ne t 5
per 1 che sicuramente non possa
di solito si usa un intero come 0 o-
lista. e nel campo della testa,
Confrontare Ie due procedure riguardo alla semplicit del codice. prev L della testa
variabile L contiene l indice
un indice corrente nell array. Una
rappresentare

della lista.
Il.2-7 Dar eunaproceduranonricorsivaconte O h e inverta una lista concatenata sia l accesso ad un
le parentesi per denotare
Nello bonn state usate quadre
semplice di n elementi. La pseudocodice. i casi.
p roc edura
d dovrebbe usare .
solo una quantit s an
costante e di i
di unranspo attributo di un n spetto. In entrambi
array tramite indice che la selezione
memoria oltre necessaria la lista stessa. viene attribuito anche nei
quella per quello che di solito
il significato di key r , irevt x e prei v

linguaggi di prograri7mazione effettivi.


.
11.2-8 S tesare
Spiegare c
come realizzare liste bidirezionali usando o sso l o un np J
puntatnre per
eelemento invece dei soliti due itext e prev
r . v. Si iassumac
. h etuttiipuntatoripossano
di oggetti con un solo array
essere
es interpretati conce - Rappresentazione
interi di I hite def inirei np r . come l ore clusivo tra i k
bbitt di itext...,s e di cio np i . rea x
revt
pre x, x XOR prerei .x . .
j.a Il valore ill.
con interi da 0 i
adorni tipicamente indirizzate
rappresentato
ra resenta con i un culcnl ore
0. . Si raccom.mda di descrivere
. c. I e in f nrmazione nemesi iri.i Le parole
nel memoria
qu
qua
per accedere alla test,t della lista. Mostr ire co ne realizz I . S .
...
tvseRT
tosi e DELcTE .su tali li te. Mnstrare inoltre coome
me invertire una lista di questo tipi
con un tempo Ol.
s wst lillc Alu Dl putll 1lof .
1lc a ctlclo tino
l o CH Ciicre inilirilr gillil
lllclslol izdcllro p issot1o
198 Capitolo 1/ 199
Stmttare di gati fondamentali

l 2 3 4 l 2 3 4 5 6 7 8
5 6 7 8 9 10 ll 12 13 14 l5 l l7 18 19 20 2i 22 3 2
pee pee

l, L
A
key
key
prev
pt8V

ne.rr

Figura I 1.6 La lista concatenata de1le figure 11.3 a e 11.5 rappreseittnta con r arra singolo A
Ogni eleinen1o di lista un oggetto l 2 4 5 6 7 8
che occrrpa un sortoarray contiguo arra .
di lunghe a 3 dentro l
I tre campi I ey, nevt e pee
prev corrispond io rispetrivamenre ag1i spostamenri 0, l e 2. Un
un oggetto pu ttarore a
l i rdice del elemenro
primo de11 aggerro. Gli oggetri corrtenenti L
elementi delfa lisrn sono
grigi chiari e le frecce mostrano la successione degli elementi della lista. key

prev
Si pu usare la stessa strategia
per realizzare oggetti in ambienti di programmazione che non
forniscono esplicitamente tipi di dato
puntatore. Per esempio la figura ,, z ,. La lisw fia ,
11.6 mostra come un p pgpp-QgJE . a
singolo igura .
array A possa essere usato ,
per memorizzare la lista concatenata delle g gi.qqqe rnostraitv a
figure 11.3
e 11.5. Un oggetto occupa un sottoarray contiguo Aj .. k.
,
Ogni campo dell oggetto isra i era.
corrisponde a uno spostamento nel l intervallo f fg$ nresta e P
tra 0 e l I indice lega, DA
j j il puntatore al l aggeno. ,.- . ,.
Nella figura 11.6. spostamenti o g qq / esecu
gli corrispondenti a ley, nevr eprev sono
cn rerru
rispettivamente 0. .. e /e, lista liber
1 e 2. Per 5 g/venM IQ q
leggere il valore di prev i . dato il puntatote
g gggppt
i, si aggiunge al valore i del
lo spostamento puntatore
2, leggendo Ai 2j .
quindi
La rappresentazione a iin una variabile globa f e ie . quando l ins etne
con un singolo lista. La testa della lista libera mantenu
mantenuta
array flessibile nel seiiso che permette di memorizzare vuoto. ., a i
nello stesso array oggetti o 1, a lista concatenata L non
di lunghezza diversa. Il QpPS,
problema di gestire un tale insieme 0
eterogeneo come mostrato nella tigura ..7 i no
di oggetti pi difficile del con la lista L,
problema di gestire un insieme omogeneo. dove tutti i era. m
gli oggetti hanno stessi campi. o nella lista L o nelIa lista
gli Poich molte delle strutture di dati che saranno considerate
sono composte di elementi omogenei, oggetto allocatoque o i era
sar sufficiente usare la rappresentazione M B. S.M
rossimo -,
di oggetti con 1
array multipli. 1. BQ i v, ,

a varia i e g b free n
e liberare oggetti. Si supponga che
rocedure per allocare

Allocazione seguenti al primo e em


e deallocazione di procedure punti
oggetti

Per inserire una chiave in un ALLOCATE-OBJECT 0


insieme dinamico rappresentato con una lista bidirezionale. si
deve allocare un puntatore a un oggetto attualmente inutilizzato nella l if free mt.
rappresentazione della
lista concatenata. fine
pertanto conveniente la memoria error dello spazio libero
gestire di oggetti noh attualmente 2 then
utilizzati nella rappresentazione della lista concatenata
per potere allocare nuovi oggetti. In else x
alcuni sistemi, 3 fi-ee
utilizzato ungarbagecrillectorperdetenninarequuli
oggetti sonoinutilizrati.
Molte applicazioni, fiee m beat .v
per, sono abbastanza semplici e restituiscono direttamente oggetti
inutilizzati al gestore gli
della memoria. Si nalizzer 5 return x
ora il problema di a locare e liberare
deallocare o
oggetti omogenei usando l CS2lllpio della lista bidirezionale rappresent tt con F REE-O B J ECT X
array multipli.

Si supponga l ne.vr r m fi ee
che gli array nelia rappresentazione con array multipli ubbiano lunghezza n
e che in M X
qualche istante l insieme dinamico contenga n m elementi.
2 f lYC .l-
Allora ii oggetti
rappresentano elementi attualmente
gli neII insieme dinamico, e i riunenti ai ir o getti .
sono liberi - liber i i
gli oggetti liberi essere i ,li A o,, ,etti .
ni tl,.l1locati. Q,.
Quando
Ii liita
possonn usati per rappresentare elementi v. tutli
tu
da inserire in
futuro nell insieme dinamicn. d., r . i. l o.
I un e

-.. . -.
Si nuntengono oggetti -il are.e.. L..i fieur, I I.R
l.S mi u
g1i liberi in u singola lista I1 l1. Cl Svl Vlle
ersi diverse liitc oncatcna
concatenat i, che si chiama listn libern.
La lista libera usa iolo l array l. Il X C
next che memorizza lista llbCl.l illterc llltlcsse tlc li liTay
il uccciiivo all interno
puntai re dcll i
200 Capitolo 11 Stature di dati fondamentali
201

pie g l 2 3 4 5 6 7 8 9 10

11.4 Rappresentazione di alberi radicati


next
L
key
si estendono a qualunque
L, 3 prev I metodi rappresentare le liste descritti nel precedente p araerafo
per
ci si interess erinmodospecificohlproblema
p
struttura ur
stru di i dati omogenea. . In questo paragrafo,
Prima si esaminano
Figura 11.8 Due liste concatenare, re alberi radicati attraverso strutture di dati c
con p untatori.
L, grigia chiara ed L, grigia scura e una lista
di i ra
rappresentare
libera nera avere
interconnesse. alberi ra dicati in cui i nodi possono
alberi binari, si presenta un metodo per
gli quindi
un numero quaIunque di figli.
liste concatenate,
ogni nodo di un albero binario con un og . p erie
Le Si rappresenta
due procedure vengono eseguite in tempo i che interessano sono
01, che le rende interessanti da usare. un campo key. 1 ICSt p
si assume che ogni nodo contenga
Possono e sser modificate funzionare
per per qualunque insieme omogeneo di oggetti a seconda del tipo di albero.
purch ad altri nodi e variano
un qualunque campo dell oggetto puntatori
venga utilizzato come campo next nella lista libera.

Alberi binari
Esercizi

i puntatori
mostrato nella figura 11.9, si usano i campi p, left g p er memorizzare
11.3-1 Come
Disegnare la sequenza 13,4,8, 19,5, binario T. Se p j xtt,
11 memorizzata come una listabidirezionale destro di ogni nodo di un albero
al adre, al figlio sinistro e al figlio
usando la rappresentazione su array multipli. Fare la stesso la rappresentazione
per
con un singolo array, boot T . Se
dell albero T memorizzato nell attributo
figlio destro. Il puntatore alla radice

root T wL, l albero vuoto.


11.3-2 Scrivere le procedure At.Loc ve-Oa Ecr e FREz-Ossecr
per un insieme omogeneo
di oggetti rappresentati con un singolo array. di figli
Alberi radicati con un numero illimitato

11.3-3 Perch non necessario classe di alberi


inizializzare i campi prev degli oggetti nella realizzazione un albero binario pu essere es q q ue
Lo schema per rappresentare
delle procedure Acvoc tE-Oe zcr costante k si snstituiscono
e FRee-OsiEcr di ogni nodo sia. al inassimo, una qualche
in cui il numero di figli

1I.3-4 Spesso si vogliono mantenere contigui nella memoria tutti elementi


gli di una lista
bidireziona
zionale allora array multipli bisogna allocare. hn
e si usare, esempio, rappresentazione con
puo per la rappresentazione con array
multipli impiegando le prime in locazioni.
il caso di un ambiente di calcolo a
memoria virtuale Spiegare rom T
paginata. come le procedure Au.ocAvE-OasEcr e FREE-
OBJECT possano essere realizzate in modo che la rappresentazione sia compatta.
Assumere che non vi siano puntatori a elementi della lista al di fuori della lista
stessa. Suggerimento usare la realizzazione di una pila tramite arra .

Il.3- Sia L una lista bidireziohale di lunghezza m memorizzata negli array I ey, e
next prei
di lunghezza
n hezza n. Si s
supponga che questi array siann dalle
gestiti procedure
ALl OCATE OBJECT e FREE OBSFCT che mantengono una lista libera Fbidirezionale.
Si supponga inoltre che degli s, elementi, m siano nella lista L e n m siano nella
lista libeta. Scrivere una procedura CowpwcnF -I sg L, F che, date la lista L e
la lista libera F, , sposti elementi
gli di L in modo che occupino le s
posizioni I.
2,, m dell arra rrav e riconipnnga correttamente la lista libera F, occupan,to le
DOSIZIOlll
p /71 I, in
l11, 2 .... ii. La
procedura dovrebbe avere tempo di esecuzione
- .-
8m e dovrebbe be uswr
usare so
solo unu -
quantit costante di spazio ., extra. . Dimostrare
cs ion
cura la correttezza della nnrq i /itt
pracedura. iiii v i n /ri,i ha i s ywntli ps
-...,, ,....,,.rtrnJ. s, , nu,slrr Ii.
il cl Stl7 . I lcclntvi / hy,ron
l crssri
c....,.. a sinistrnj e tiyf t v in l l5l
rrltiii. l ft .x in
202 Capitolo 11 26
Strutture di dari fondamentali

rom T
indice I e lefi tigli

l 12 7 3

8 NIL

3 4 10 en.

4 10 5 9

5 2 NIL NIL

6 18 l 4

7 7 N IL N IL

14 6

9 21 NIL N1L

10 5 riic wc

tempo On che. dato un albero binario


11.4-2 Scrivere una ricorsiva con
procedura
nodi, stampi le chiavi di ogni nodo dell albero.
Figura 11.10 La rappresenra.iane
figlio-sinistro, fratello-desrro di ah albero T. Ciascwi nodo r Iw
i seguenri campi altoi, left-child x
px in iir basso a siiiistra e right-siMing .c in be ssv a elesrra i.
Le clriai i non so o mostrate. non ricorsiva con tempo On che. dato un albero bin. . .
11.4-3 Scrivere una procedura
di ogni nodo dell albero. Usare una pila come strut . .
di n nodi, stanapi le chiavi

di dati ausiliaria.
limitato da una costante
grande, quando molti nodi hanno tigli viene sprecata
pochi molt
memoria.

tempo O tt che stampi tutte le chiavi di un all .


Fortunatamente, vi 11.4-4 Scrivere una procedura con
uno schema ingegnoso rappresentare
per alberi con un numero usando una rappre.- . -
arbitrario radicato arbitrario con n nodi, do e l albero memorizzato
di figli usando alberi binari, che ha il vantaggio di usare solo uno spazio On per tazione figlio sinistro, fratello destro.
qualunque albero radicato con r nodi. La rappresentazione
figlio-sinistro fratello-destro
mostrara nella figura 11.10. Con e prima, ogni nodo contiene un puntatore p al padre e re e r T
punta alla radice dell albero T. Per, invece con tempo On che, dato un albero binar
di avere un ogni figlio. 11.4-5 Scrivere una procedura non ricorsiva
puntatore per ogni nodo
ha solo due Usare, oltre allo spazio l albero. un
puntatori di n nodi, stampi la chiave di ogni nodo. per
l. lefi-child v di spazio extra e non modificare l albero, neanche tempor u c- -
punta al figlio a sinistra del nodo x, e quantit costante
pi
2. right-sibling xj mente. durante la procedura.
punta al fratello immediatamente alla destra di x.
Se il nodo x non ha figli, aIlora left-child x tvtL e se il nodo x il figlio a destra
pi di suo
allora rigkt-sibling s sinistro, fratello destro di un albero radicato arbitr ri
padre, Nn.. 11.4-6 La rappresentazione figlio

raggiunti. Mostrare come otteis ri


il padre e tut ti i figli del nodo possono essere
Altre rappresentazioni degli alberi iolo due e un Valore booleano.
stesso risultato usando per ogni nodo puntatori

Gli alberi radicati taluolta si rappresentano in altri mndi. Nel Capitolo 7. per esempio. si
rappresentato uno heap, che si basa su un albero binario completn. tramite un singolo arra Problemi
e un indice. Gli alberi che compaiono nel Capitolo 22 venarono attraversati soltanto verso Ii
radice cosi sono solo
presenti puntatori al padre e non vi sono ai hgli.
puntatori Sono possibili tra liste
molti altri I I-I Confronti
schemi. Lo schema migl inre dipende d ill applicazione.
ir guctlle tabell , o di esec/ii
Pcf O isuno dei tipi di liste tuli qi p
quattro
C11 ICgllltO.
O/Ill Opt .l ,lZIOllC CICllCJl,.l
,.l1llllOllCO. lit..l C.,lSO
pt . 2, 1E lC. pCf
Esercizi

-
11.4-I Dise n e albero binarie, radicato nell ii clice 6. che i rapt rcscnl t uenti
cl i ic
Clllpl.
204 Capitolo 11
Strutrure di dari fondamentali 205

non ordinata, ordinata, non ordinata, Se si ignorano


ordinata. le linee 4-6 della procedura, si ha l usuale a1goritmo di ricerca in una lista
concatenata concatenata bidirezionale concatenata
bidirezionale ordinata, in cui l indice i punta di volta in volta ad ogni della lista. Le
posizione
semplice semplice linee 4-6 cercano di avanzare ad una posizione scelta a caso. Un tale avanzamento
j
vantaggioso se I ey
SEARCH L, I j j pi grande di kc i e pi piccolo di k in tal caso j indica una posizione
nella lista che i dovrebbe attraversare comunque durante l usuale ricerca. Dato che la lista
liwsrRv L, .r compatta, si sa che scelta di j tra 1 ed n indica oggetto della lista e non un
qualunque qualche
DELETE L, elemento della lista libera.
.l
a. Perch nella procedura Cose cr-L sv-SEARCH si ipotizza che tutte le chiavi siano distinte
SuCCESSOR L, .i
Dedurre che quando la lista contiene chiavi ripetute non necessariamente avanzamenti
gli
PREDECESSOR L, X casuali aiutano asintoticamente.

Si possono analizzare le prestazioni di Cowpwcr-L sv-SEARcv suddividendo la sua esecuzione


Mirini ahi L
in due fasi. Durante la prima fase, si trascura la ricerca di k che eseguita nelle linee 7-9. Cio
M wx i is L la prima fase consiste soltanto dello spostamento in avanti nella 1ista attraverso avanzamenti
casuali. Allo stesso modo. la fase 2 tralascia avanzamenti eseguiti nelle linee 4-6, e quindi
gli
opera come l usuale ricerca lineare.

11-2 Realizza ione di un mergeable heap con liste concatenate Sia X, la variabile casuale che descrive la distanza nella lista concatenata cio. attraverso
Un znergeabfe heap offre le seguenti la catena dei puntatori nerr dalla i alla chiave desiderata I dopo r iterazioni della
operazioni MAwa-HE r che crea un mergeable heap posizione
vuoto . I4SERT, Mi4l31Llkt, EXTRACT MIXC fase 1.
UYION. Ivlostrare come realizzare i mergeable heap
usando liste concatenate in ognuno dei seguenti casi. Cercare le rea1izzazioni b. Dedurre che il tempo di esecuzione atteso
pi efficienti di Cowvwcv-Lisr-SewRcv Ot EX per ogni
possibili delle operazioni. Analizzare il tempo di esecuzione di ogni operazione in termini di r 0.
cardina1it dell insiense o degli insiemi dinamico su cui opera. c. Mostrare che E X, y/p . Ime rro usare l equazione
g / SLsgg I 6.28 .
a. Le liste sono ordinate.
d. Mostrare che
p p y g /g y f
b. Le liste non sono ordinate.
e. Provare che E X,J /t y 1 e spiegarne il significato intuitiYO.
c. Le liste non sono ordin te e gli insiemi dinamici da fondere sono disgiunti.
f. Mostrare che CowPACT-L1$T-SEARCH eseguita con tempo atteso O v .

11-3 Ricerca is uita lista ordinata compatta

L Esercizio l 1.3-4 richiede di mantenere in modo compatto una Note al capitolo


lista di n elementi nelle prime
n posizioni di un array. Si assuma che tutte le chiavi siano distinte e che la lista compatta sia
anche ordinata, cio, key i l ey next i ogni i I, 2,, n tale
per che ne vt i w iit.. Sotto Aho, Hopcroft e Ullman 5 e Knuth sono ottimi riferimenti le strutture di dati di
ipotesi, ci si aspetta 121 per
queste che il seguente aleoritnso randomizzato essere usato la
possa per base. Gonnet fornisce dati sperimentali
90j sul1e prestazioni di molte operazioni sulle
ricerca nella lista in un tempo on.
strutture di dati.

L origine delle code e delle come strutture di dati in informatica incerte. dato che
COE1PwCr-LtST-SEwRCH L, k pile
nozioni corrispondenti esistevano in matematica e nelle d uff cio cartucce
gi pratiche prima
l i head L
dell introduzione dei calcolatori. Knuth cita A. M. Turing lo sviluppo di nei
121 per pile
2 n tength L di un inker nel 1947.
programmi
3 s hile i w zie e I e i I, Anche le strutture inentore
per di dati basate sui non noto un . Secondo Knuth
puntatnri
4 do j R. soo. I. n i puntatori furono certarnente usati nei ilcnl nori con le memorie a tamburo. Il
primi
linguaggio A-l sviluppato da G. M. Hopper nel l95 I prevedeva la rappresentazione delle
5 if / cg i keyp e l ey j l
fi rmulc. algebriche come alberi binari. Knuth d5 credito al ingozggio IPL-II, sviluppato nel
6 then i e- j
l 956 d A. Newell, J. C. Slum e H. A. Simon. di over ricnnoiciuto l impnrtanza dei puntatori
7 i e- ne.i-t i e di caverne promnsso t utilizzo, ll Inro lingu,.ig, io IPL-lli sviluppatn nel l 57 includeva
8 if /-cg i l esplic infamante npcr izi ini iu1lc pile.
9 then return i

IO return ivi
Tabelle hash

Molte applicazioni richiedono un*insieme dinamico che fornisca soltanto le operazioni

INSERT, SEARCH, e DELETE dei dizionari. Per esempio, un compilatore di un linguaggio di

mantiene una tabella dei simboli, in cui le chiavi degli elementi sono
programmazione
stringhe di caratteri che corrispondono a identificatori del linguaggio. Una tabella
qualunque
hash una struttura di dati efficace realizzare i dizionari. Sebbene la ricerca di un elemento
per
in una tabella hash richiedere lo stesso tempo di ricerca in una lista concatenata un
possa
tempo 8n nel caso in pratica le prestazioni del netodo hash sono estremamente
peggiore
buone. Sotto ragionevoli ipotesi, il tempo medio di ricerca di un elemento in una tabella hash

Ol.

Una tabella hash la del semplice concetto di array ordinario.


generalizzazione pi
L indirizzamento diretto di un array ordinario fa un uiu efficace dell possibilit di c .samiitare

una arbitraria di un array in un tempo O l . Il paragrafo 12.1 discute in dettaglio


posizione
l indirizzamento diretto. Esso essere applicato ci si poiana permettere di allocare
pu quando
un array con una posizione per ogni possibile chiave.

il numero di chiavi effettivamente memorizzate piccolo rispetto al numero totale


Quando
di possibili chiavi. le tabelle hash diventano un alternativa efficace all indirizzamento diretto

di un array, una tabella hash usa tipicamente un array di dimensione proporzionale al


poich
numero di chiavi effettivamente memorizzate. Invece di usare la chiave come indice per

indirizzare direttamente l array, l indice calcolato utilizzando la chiave. Il paragrafo 12.2

le idee e il paragrafo 12.3 descrive come gli indici dell array possano
presenti principali
essere calcolati a partire da le chiavi utilizzando funzioni hash. Nel inoltre sono
paragrafo
e analizzate alcune variazioni sul tema la base comune a tutte che l uso delle
presentate
tabelle hash una tecnica estremamente efficace e pratica. le operazioni di base dei dizionari

in media richiedono solo tempo 01.

12.1 Tabe11e ad indirizzamento diretto

L indiriZzamento diretto un tecnica semplice he funziona bene quando l universo U delle

chiavi ragionevolmente Si suppong i che un applicazione necessiti di un insiente


piccolo.
dinamico in cui ngni elemento abbia una ihiai e ottenuta dall universo U 0. 1...., m 1 .

dnve m non sia troppo Si a iuiiscrh che nes una coppia di elensenti abbia la stessa
grande.
chi vc.

im ui,.t un array, o lahellaml indiri cm,ento diretto.


Per rappresentare l indie din..uq ico.,i

o slrit, corrisponde d uis i chiave nell univer n U. L


T0 .. in l. in cui o ni poiizione.
208 Capirolo 12
Tabelte futsh 209

0 come usare un vettore di bit rappresentare un insieme dinamico di elementi


per
chiavi dati satellite
distinti senza dati satellite. Le operazioni del dizionario dovrebbero richiedere

tempo 01.

12.1-3 Suggerire come realizzare una tabella ad indirizzamento diretto in cui le chiavi

memorizzate non siano necessariamente distinte e gli elementi possano avere dati

sateIlite. Tutte le tre operazioni del dizionario IxsERt, Dat.e E e Space dovreb-

bero richiedere tempo Ol. Non si dimentichi che Dei prende come argomento

un puntatore all oggetto da cancellare e non la sua chiave.

12.1-4 Si desidera realizzare un dizionario usando l indirizzamento in un array gran dissi no.
Figura 12. I La renli a iotte di un insigne dinamico All inizio elementi dell array contenere dati non significativi e ini-
tramire una tabella ad indiri anniento direrro T gli possono
Ogni chiave nell universo U 0, l, Descrivere
..., 9 corrisponde a un indice nella tabella. L insieme di ch ia i
zializzare l intero array impraticabile a causa della sua dimensione.
effettive determina le nella tabella
posi-ioni che contengono i piantatori agli elementi. Le aln-e uno schema realizzare un dizionario ad indirizzamento diretto su un array di
per
posi-ioni, grigie scure, contengono NIL.
tipo. Ogni oggetto memorizzato dovrebbe usare uno spazio 01 le
questo
operazioni INSERT, DELETE e Sz acw dovrebbero richiedere tempo Ol ognuna
figura 12.1 illustra l approccio la posizione / punta l inizializzazione della struttura di dati dovrebbe richiedere tempo 01. Soc
ad un elemento dell insieme con chiave geri-
k. Se l insieme non contiene elementi con ie iro aiutare a determinare se un dato elemento nell array valido o no. usare.
chiave k, allora Tk NIL. per
Le operazioni del dizionario come struttura addizionale. una pila la cui dimensione data dal numern di chiavi
sono banali da realizzare.
effettivamente utilizzate nel dizionario.

DIRECT-ADDRESS-SEARCH T, k

return Tjk
12.2 Tabelle hash
DIRECT-ADDRESS-INSERT T, X
La difficolt dell indirizzamento diretto ovvia se l universo U grande. memorizzare una
Tfkey x m x
tabella T di dimensione U essere impraticabile. o addirittura impossibile. a causa della
pu
DIRECT-ADDRESS-Delete T, x 1imitatezza della memoria disponibile su un calcolatore. Inoltre. l insieme K di chiavi

T key x m effettivainente irrili-- are pu essere cosi piccolo rispetto ad U che la maggiur parte dello
n.
spazio allocato per T sarebbe inutilizzato.

Ognuna di queste operazioni veloce richiesto Quando l insieme K di chiavi memorizzate in un dizionario mo to pi piccolo dell uni-
solo tempo Ol.
Per verso U di tutte le chiavi, una tabella hash richiede mnlto meno memoria di una
alcune applicazioni, elementi nell insieme possibili
gli dinamico possono essere memorizzati
tabella ad indirizzamento diretto. In la memoria richiesta puo essere ridotta a
direttamente nella tabella ad indirizzamento particolare.
diretto stessa. Cio, che memorizzare
piuttosto O K . e la ricerca di un elemento nella tabella hash richiede ancora solo tempo 01.
la chiave di un elementn e i funi dati satelIite in un oggetto esterno alla tabella, con un
L unico problema che limite vale per il rei epa inedio. mentre per indirizzamento
puntatore da una della tabella questo
posizione all oggetto, si memorizzare l oggetto nella
pu diretto vale il tempo
per nel caso peggie i e.
posizione stessa, risparmiando cool spazio Inoltre spesso non necessario memorizzare il
campo chiave dell oggetto, Con l indirizzamento diretto un elemento con hivve I memoriuato nella posizione k.
poich se si ha l indice di un oggetto nella tabella. si ha la sua
chiave. Tuttavia, se una chiave noni memorizzata, si deve avere modo codificare
qualche per
che la posizione vuota.
l universo U di chiavi e le di un tabella hash T0 .. in 1
posizinni

Esercizi
li U 0. I, ..., m l .

12.1-1 Si consideri un insieme dinamico S rappresentato do una tahella ad indirizzan1ento


diretto Tdi lunghezza n. Descrivere una procedura che trovi il mai imo elelllr .IltO
di S. Qual il tempo di esecuzione della procedura nel casn peg iore
solo n valori. La memoria richieit l i tlCI ltt I ill n1od COll i polldeAtC.
gcitire

12.1-2 Un vettore di bit semplicetnente un array di bil 0 c I. Un elettore di hi di vi ono tecniche effic ci risolvere il
tenomeno chiamato collisione. Fortunataincnie. per
lUllgllCZZQ ll1 l 1ClllCClC lllOllO l11CI10 SpZIO Cl/ Ltll illT l all /ll Dt .ILl l1 t. IV
plll1l Il01 contlitto creato d Ile colliitoni.
Tabe1le hash 211

hk

II k

hk hk

hk

m-l

Figura 12.2 Uso di mia ione hash h per it corrisponde a le chiavi e le posi ioni nel1a ra1 elii i ish
fun porre Figura 12.3 Risolu ii ne delle co1lisioni roncalena.ione. Ogni Tj nella
per posi ione
tabella basii. Le chiavi k, e k, corrispondono alla stessa posizione, q rindi collidono. hl h ,
coiitiene una lista caircatenara di rurre 1e chiavi il cui i alore hash j. Per esenrpio.

It l lr l , h k, .

Naturalmente la soluzione ideale dovrebbe essere di evitare del tutto le collisioni. Si

potrebbe cercare di raggiungere questo obiettivo scegIiendo una funzione hash h appropriata.
casuale , CHAINED-HASH-DELETE T, /
Un idea quella di scegliere h in modo che appaia evitando cos1 collisioni o
hash , cancella x dalla lista Tf/ l ey x
almeno minimizzando il loro numero. Il termine stesso che richiama l immagine di

mischiare e tritare, rende bene l idea di questo apprnccio. una funzione hash di esecuzione l inserimento O l nel caso Per la rive ,, il te p
Naturalmente Il tempo per peggiore.
h deve essere deterministica nel che un dato input l dovrebbe sempre lo stesso proporzionale alla lunghezza della lista. come ii analizzer
senso produrre di esecuzione nel caso peggiore
valore hash richiedere tnnpo 0 11 s
output hk Poich AU j m, per, vi sono sicuramente due chiavi con lo stesso pi precisamente fra poco. La cancellazione di un elemento. pu
una funzione hash ben si deve trovare .v nei . -
evitare del tutto le collisioni quindi impossibile. Perci, seppure le liste sono bidirezionali. Se le liste sono semplici. prima
che sembri casuale, minimizzare il numero di collisioni, ancora necessario T h l-e x , cosi che il nero del di x essere a -.i, o
progettata, possa puntatore predecessore possa
un metodo risolvere le collisioni che inevitabilmente si verificano. rimuovendo.v, in questo caso la cancellazione e la ricerca hanno essenzialmente lo stesso
per

Il resto del la tecnica di risoluzione delle collisioni semplice. tempo di esecuzione.


paragrafo presenta pi
chiamata concatenazione. Il paragrafo 12.4 introduce un metodo alternativo per risolvere le

collisioni chiamato indirizzamento aperto.


Analisi dell organizzazione hash con concatenazione

Risoluzione delle collisioni per concatenazione


sono le dell organizzazione ha h con concatenazione In particolare.
Quali prestazioni
tempo impiega la ricerca di un elemento con una data chiave
Nel sne1odo di coircatenazione, si mettono tutti elementi che collidano nella stessa quanto
gli
una hash Tcon che memorizza n elementi, si definisce ilfarrore
posizione in una lista concatenata. come mostrato nella figura 12.3. La posizione j contiene Data tabella m posizioni
di eleggenti memori - -ari in i g bis
un alla testa della lista di tutti elementi memorizzati che corrispondono alla di carico per T come iilm, cio il nwi rero medio
puntatore gli
di cio si immagina che a riman. i o
se non vi sono elementi conearenata. L analisi sar espressa in termini a,
posizione j la posizione j contiene rai.
anche se n ed in tendono all infinito essere minore, maggiore a uguale 1 l .
Le operazioni del dizionario sono facili da realizzare con una tabella hash T quando le u pu
le n chiavi corrispondono ll
collisioni sono risolte concatenazione. Il comportamento nel caso peggiore scnnfortante tutte
per
stessa creando una lista di lunghezza n. Cosi il tempo di ricerca nel caso pe- - o
posizione
che non mi liore di c uell i
CHAli4ED-HASH-I NSERT T, X O sr il tempo calcolare la funzione lugli tempo
pi per
sarebbe necessario i si usasse una lista concatenata tutti gli elementi. Chiar 1mei
inserisci r in testa alla lista T lt ley v j per
tabelle hash non sono usate le lorn prestazioni nel caso peggiare.
per
da quanto, in media. I, I un i
CHAINED-HASH-SEARCH T, l Il comportamento medio dell org..ionizzazione hash dipende

ricerca un elemento con chiave I nella lista Th4

elementi. ipotesi si dice di unifornritsemplice dellu fi st iolte Itaslt.


Questa

terminologia informatica. /I
richiesto cercare un elemento chi ire l di pend l in 61 clo line tre alla luh ll
per c in
Tabelle hash 213
Capitolo 12

Qual il significato di analisi Se il numero di nella tabella hash


lista T jh k . Mitterido da il tempo Ol richiesto calcolare la funzione hash e questa posizioni
parte per
almeno proporzionale al numero di elementi nella tabella, si ha n Om e. di conseguenza,
accedere alla posizione hl . si consideri il numero medio di elementi esaminati daI1 algoritmo
a n/in O m Im Ol. Quindi, la ricerca richiede in media tempo costante. Poich
di ricerca, cio i numero di elementi nella lista T hl che sono controllati per verificare se
l inserzione richiede tempo 01 nel caso si veda l Esercizio 12.2-3 e la
le loro chiavi sono uguali a l . Considereremo due casi nel la ricerca senza successo, peggiore
primo,
canceIlazione, quando le liste sono bidirezionali, richiede tempo 01 nel caso
cio nessun elemento nella tabella ha chiave k, nel secondo, la ricerca con successo trova un peggiore,
tutte le operazioni del dizionario essere eseguite in media con tempo 01.
elemento con chiave l. possono

Esercizi
Teorema 12.1

In una tabella hash in cui le collisioni sono risolte per concatenazione, nell ipotesi di
uniformit 122-1 Si supponga di usare una funzione hash casuale h per definire la corrispondenza di
semplice della funzione hash, una ricerca senza successo richiede in media
tempo 01 u. n chiavi distinte in un array T di lunghezza m. Qual il numero medio di collisioni
Pi precisamente, qual la cardinalit media di v, hv hy
y

Dintostrazione. Nell ipotesi di uniformit semplice della funzione hash, equamente


122-2 Si inseriscano te chiavi 5, 28. 19, 15, 20. 33, 12, 17, 10 in una tabella hash in cui
probabile che qualunque chiave I corrisponda a una qualunque delle m posizioni. Il tempo
le collisioni sono risolte concatenazione. La tabella ha 9 posizioni e la funzione
medio della ricerca senza successo di una chiave k cosi il tempo medio richiesto per per
hash li k k mod 9.
analizzare fino alla fine una delle m liste. La lunghezza media di una tale lista il fattore di
carico n n/m, per cui il numero medio di elevamenti esaminati in una ricerca senza successo
u, e il tempo totale richiesto incluso il tempo per calcolare li l- 81 a. D 122-3 Dedurre che il tempo medio una ricerca con successo con il metodo della
per
concatenazione lo stesso se i nuovi elenlenti Sono inseriti in testa o in codh alla lista.

Suggerimenro mostrare che il tempo medio di ricerca con successo lo stesso per
Teorema 12.2

qrialunegue ordinamento di qualunque lista.


In una tabella hash in cui le collisioni sono risolte per concatenazione, nell ipotesi di
uniformit semplice della funzione hash. una ricerca con successo richiede in media
tempo 01 n. 122-4 Il professor Marley ipotizza che si possono ottenere dei miglioramenti sostanziali
delle prestazioni se si modifica lo schema di concatenazione in modo che ogni lista
sia mantenuta ordinata. La modifica del come modifica il tempo di
professore
Dimostrazione. Si assuma che la chiave che si sta cercando sia, in modo equamer te
esecuzione per la ricerca con successo. la ricerca senza successo, l inserzione e la
probabile, una qualunque delle n chiavi memorizzate. Si assuma anche che la procedura
cancellazione
Capisco-HASH INSERT inserisca un nuovo elemento in coda alla lista piuttosto che in testa.

Nel Esercizio 12.2-3 i mostra che il tempo medio di ricerca con successo lo stesso se
122-5 Suggerire come allocare e deallocare memoria elementi dentro la tabella
i nuovi elementi sono inseriti in testa o in enda alla lista. Il numero medio di elementi per gli
hash stessa collegando in una lista libera tutte le posizioni inutilizzate. Si assuea che
esaminati durante una ricerca con successo I pi il numero di elementi esaminati quando
l elemento una posizione possa memorizzare una bandierina o flag e, inoltre. ur elemento e
cercato stato inserito poich ogni nuovo elemento va alla fine de11a lista . Per
un puntatore, oppure due Tutte le operazioni del dizionarin e della li tu
trovare il numero medio di elementi esaminati, si pretende la media, sugli n elementi della puntatori.
libera dovrebbero richiedere ten po medio Ol. La lista libera deie essere bi-
tabella, di I pi la lunghezza media della lista in cui l elemento i-esinto aggiunto. La
lunghezza direzinnale o sufficiente una lista semplice.
media di tale lista i 1 /m, e cosi il numero medio di elementi esaminati in una
ricerca con successo

12.2-6 Mostrare che ie vin, vi un sottoinsieme di U di dimensione n che i onsiste


AU
-E . ,g -i di chiaviche cnrrispondnno allo itessa posizione, cosi che l or anizzazione hash

il
i con concatenazinne richiede nel cvsu peggiore un tempo di ricerca 8 ahi .

t i

rn
12.3 Funzioni hash
a I
l

In questo paru,.rzto saranno discusse aliune che ri uardano I,.t clef inizi ne di buone
Per cui,
questioni
il tempo totale richiest un t ricerca con
per
funzioni hih e quindi si re schemi la lor i crcuzione divisione.
-l/ iu presentan per per per
la lunziOllC ll tSll c O rd Ol a.

-I
moltipliiaziotte e universale.
Tabelle hash

Requisiti di una buona funzione hash di divisione


12.3.1 Il metodo

una chiave l a una d-lie


definire funzioni hash, si fa comspondere
Una buona funzione hash soddisfa a pprossimativamente l ipotesi di uniformit semplic Nel metodo di divisione per
la funzione hash
della divisione di k per in. Cio
ogni chiave coms il resto
p onde a ciascuna
c delle m posizioni in modo equamente e ro a i e
robabile. P m posizioni, prendendo
fo 1 n, ueho- ni chiave sia estratta in modo indipendente da U d l
h l- k mod m.
distribuzionedi p robabia ilit P cio Pk la probabilit che k sia estratta.
a a. Alloraora lii otesidi di
otesi
allora hk .
ni 12 e la chiave k 100.
uniformit semplice della funzione hash che esempio, se la tabella hash ha dimensione
Per
della funzione ha. h abbastanza
un operazione di divisione, il calcolo
Poich richiesta solo
l
Pk per j O, 1,...,m 1. 12.1 veloce.
khk j certi valori di m. Per esempio
di divisione, di solito si evitano
Quando si usa il metodo
, hk dato dai bit
Sfortunatamente, in eenrale no
nonpossibilecontrollarequestacondizione,p di 2, se m 2, allora p
p h Pd l ito non dovrebbe essere potenza poich
di probabilit sulle chia i
non conosciuta. che si sappia a priori che la distribuzione
significativi di k. A meno
i.
le configurazioni dei p bit meno, i,,ni ,cati,
Talvolta raramente si conosce come equamente probabili tutte
ma la distribuzione P. Per esem io, si su on prevede
i bit della chiave. Le pi
hash in modo che dipenda da tutti
che le chiavi sono numeri
umeri reali i casuali
rea casu l d
distribuiti in modo indipendente e uniform m 11 - meglio scegliere la funzione
come chiavi. p, i 4
tratta numeri decimali
. n questo caso, mostrare di 10 dovrebbero essere evitate se l applicazione
si pu che la funzione hash
tutte le cifre decimali di l. Infamie . i pu
hash non dipenderebbe da
altrimenti la funzione .-.
interpretata in base due,trin- h
hk LkmJ m 2 l e k una suinga di caratteri
mostrare che quando te so
corrirponderw mo allo.
uno scambio tra due caratteri adiacenti
soddisfa l equazione identiche eccetto che per
12.1 .
valore. .
In pratica,
rustica, oss
possono essere usate tecniche euristichepercreareu eareuna f unzione h ashchesicom
h h orti esen pio.
vicini a potenze esatte di Per
di m sono valori non troppo
bene con buona Informazioni ioni Buoni valori primi -000
probabilit. u...,
qualitative su P sono talvolta utili nel processo o di i comune
voler allocare una tabella hash, con concatenazione, per
e mizione della funzione si supponga di
hash. Per esempio. si consideri la tabella dei simbo elen,enti ir
richiede 8 bit. Esaminare in media
stringhe di caratteri. dove un carattere
i ono string e qualsiasi di caratteri che rappresentano identificatori in di imen.,i nei
gli presenti cosi si alloca una tabella ha.,h
,, ricerca senza successo essere soddisfacente,
uunprogramma.unfattocomunecheidentifi
. i locatori mo 1to simili, pu O013 m.
come pt e pts, siano present n vicino a
bel stato scelto un numero primo
m 701. Questo numero perch
in uno stesso programma. Una b uona funzione hash dovrebbe minimizzare la h la tunzione hash
ngni chiave k come un intero.
vicino ad alcuna potenza di 2. Trattando
id 11o tesso identificatore corrispondano alla stessa posizione.
sarebbe
U
Un a
approccio
r comune consiste nel derivare il valore h as h in mo d o c h e sia indipendente da
u unque con figurazione esistere nei dati. Per esempio il d d d hl k mod 701.
possa
s calcola il valore hash come distribuiscc r - o1 r-
guito il resto della divisione della chiave er uno funzione hash
Per si potrebbe controllare quanto questa -reali .
precauzione,
i numero primo sia in qualche modo correlato con con chiavi scelte su dati
mente l insieme di chiavi tra le posizioni. provando
qua c e particolarit nella distribuzione di probabiiit, t d d buoni risultati.
q
Si noti infine che alcune a pp licazioni i di i funzioni
f hash richiedere i
potrebbero propriet moltiplicazione
.. , 12.3.2 Il metodo di
orti di quelle tornite da funzioni hashsh uniformi. Per esempio, si potrebbe volere che e h
vicine distanti . d
corris p ondano a va
val ori hash che siano d bel Pria i n P
La propriet definire funzioni hashnpera in due passi.
ll metodo di inoltiplicazione per
c I, ado o si usa a la scansione lineare, definita nel frazion ria di kA.
q paragrafo 12.4. 0 A l e si estrae la parie
la chiave k per una costante A nell intervalln
del risultato. In br ,
m e si prende la parte intera
si moltiplica questo valore per
Quindi
Interpretazione delle chiavi come numeri naturali h rush
funzione

hl Lm /-A mod 1 3,
Molte funzioni hash assumono h e I universo delle chiavi sia l insieme i l. 2, ... d
0. -l.kAJ.
-kA tr zionaria di lA, cio kA
numeri naturafi. Per cui, mod 1 rappresenta la
se t h.. avi non soho numeri naturali, biSO o oP dove pare
m non criti,o. Tipi i
i che il valore di
me ta i. er esempio, una chiave che una .strin A pUo vantaggio del metodo di mnltiplicarione
oQ Un
t
, cn ii
pui
Q c a
me un intero espresso
. pp, .. inr, i ll 1lche intero p, poich
pp rep. entazione in una adatta. 2. cio ill 2
posizionale base . Coii
o si sceglie una potenza
di pCf
i suppdnga oche la din1
, ent,,catore
enti locatore nel modo se uente. Si
pt potrebbe essere
.. interpretato
p .. cotture la coppia
co di interi in rappresentazione la funzione su multi calcolatori
realizzare
,
a e
ne .,. i,poichp 112et I lhnellac ndificaASCII quindi.esprcssocomeun .- .. e
intero in base l28,pt diventa 112 l28 I 16 14452. Di solitn in ualun ue a l-
e
k f. l . i I ha e se . d o tipn
p q uest. p e r intetpreture ogni chiave conw. e un
nit iillivi ili i ,.
lei bit ii
numern t
naturale I hi coniisti pi
anche h grande . .. Nel se uito .si assume
.. che le chi wi si
.- mo numeriieri natura
naturali. i significativa. Il valore hih desider to di p p
Tabelle bus

w Qit l
identificatori con le i
hash casuale che mette male in comspondenza gli posizi, -..
. della
che ci accada piccola ed la stessa insieme di identir-,
probabilit per qualunque

stessa dimensione.
--
vanno da un dato universo L hifi
X b PJ Sia H un insieme finito di funzioni hash che
aniversale se per ogni coppi- - -hi
all intervallo 1, .... m l . Tale insieme detto
0.
P o x. y c U, il numero di funzioni hash h c H per cui hx hy preci ara..-.
distinte
H,
con una funzione hash scelta in modo casuale da la probabii .
estrae p bit m. In altre parole,
di un -. . -i. io
collisione traxe esattamente 1/I11, che esattamente laprobabilit
hk y perx
e hy sono scelte casualmente nell insieme 0, 1, ..., m 1.
se h x
Figura 2.4 II incrodo di moltiplica io te perdefinire uita t, -...
fim-ione Irash. La rappresenta ione coi teorema mostra che una classe universale di funzioni hash
Il seguente
ir bit della chiave k moltiplicata il valore su ir bit
per pari a LA 2 J, dove 0 A I fama cosranre
comportamento buono nel caso medio.
opport ma. I p bit significativi della me meno significativa
pii del prodotto forviano il valore ltash
desiderato hk.

Teorema E2.3
Sebbene questo metodo funzioni valore della costante A, con
per qualunque qualche valore hash ed usata la corriipi ..-- -
Se h scelta da un insieme universale di funzioni per
funziona meglio che con altri. La scelta ottima dipende dalle caratteristiche dei dati su cui , n, il numero medio di ..
i n chiavi su una tabella di dimensione, ,, dove
vengono prese le chiavi. Knuth discute la scelta di A in dettaglio
123j e suggerisce che di l.
che coinvolge una chiave.v minore
particolare

A 1 12 l
i5 0.6180339887 ... j
-
distinte, sia c, una variabile casus .. .--,.- -e 1 ir
probabile che Di nostra -ione. Per ogni coppie y, di chiavi
funzioni ragionevolmente bene.
Pich. definizione....-.. . in. .o
hy h- cio se y e collidono usando h e 0 altrimenti. per
Per esempio. se si ha / 1234S6, m 10000 e A come descritto nell equazione 12.2 . allora
coppia di chiavi collide con probabilit 1hn. si ha

hk 10000 123456 0.61803... mod 1 J E c, l/m.

10000 76300.0041151 ... mod l J in una taheli. ... .....-.... h T di


Sia C, il numero totale di collisioni che coinvolgono la chiave.r
- 0.0041151 ..J fornisce
10000 dimensione ni contenente o chiavi. L equazione 6.24

al. l 51 . J
E il Et x
41. g
CT
l g X

12.3.3 Funzione hash universale n l

Se un avversario dispettoso scegliesse le chiavi cui


su calcolare la funzione hash, allora Poich n m, si ha E C, l.
potrebbe scegliere n chiavi che corrispondano tutte alla stessa posizione, provocando un
tempo medio di ricerca 8n. Qualunque funzione hash sottoposta a questo tipo di gi 1 . t -. t 1Clle.
ab..a.,t..
seteplice definire un,.l classe universale di tunzioni hash.
comportamento nel Ma quanto
caso peggiore il sok modo efficace di migliorare la situazione L111
di , . . Nll 1
scegliere una funzione hash in nv do easuale cosicch sia indipeirdenre dalle chiavi che v nno
effettivamente memorizzate. approccio, chiamato
Quest 1tashing universale, mantiene un , . -. - , ..f , i,i1. rii hiCStB
.. y-
buona prestazione nel caso medio, a prescindere dalle chiavi scelte dall avversario. l...... . , una
ialore di un hyte siu minore eli in. Si denoti COll Cl Cl .
che il massimo
L idea di base di eli selezionare, i
quest approccio in modo casuale. Ia funzione hash al gfall insiet1se I, ..., m j. Si d. t t t. i
sequenza di r l elementi scelti a caio 0.
tempo di esecuzione du una classe di funzioni attentamente definite. Come nel caro del Ire R.
corrispondente funzione hash
quicksort, la scelta casuale che nessun input
garantisce particolare provochi sempre il
.3
mod in . l
h x a,.v,
g
i0

Cori cl inizioilc,
qucita

I 2.4

della funzione hash. Unu cotti v si ha solo se il compilatore


V
prestazione ecc lie una fusione
hl 1n clCI11Cllll.
Tabelle hash 219

ogni componente a di a nell equazione 12.3 a essere


E23-5 Mostrare che se si obbliga
Teorema 12.4 h definito nell* equazione 124 non uni versale.
diversa da 0, allora l insieme H
La classe A definita dalle equazioni 12.3 e 12.4 una classe universale di funzioni si considerino le chiavi.i 0 e y I.
Suggerimento

Dimostrazioge. Si consideri coppia di chiavi distinte.v, assuma ch 12.4 Indirizzamento aperto


qualunque y. Si
i procede in modo analogo se la differenza in uno qualunque degli altri byte. Per
valore fissato di a,, a,,, a esattamente memorizzati nella tabella hash stessa. Cio
qualunque vi un valore di a, che soddisfa Nell indiriwamento aperto tutti gli elementi sono
l equazione dell insieme dinamico o vu.. Quando si
hx hi questo a, la soluzione di elemento della tabella contiene o un elemento
ogni
le pasizioni della tabella finch o si trova
r
ricerca un elemento, si esaminano sistematicamente
ao xo m . non nella tabella. Non vi sono liste n elementi
Vo y, mod l elemento desiderato o chiaro che
ga x,
succede la concatenazione. Quindi nell in-
memorizzati fuori della tabella, come per
Per verificare finca nessun altro elemento pu essere
questa propriet, si noti che, poich ni primo, la quantit non nulla x y dirizzamento aperto la tabella hash pu riempirsi
ha un inverso moltiplicativo modulo m, e cosi vi un unica soluzione a, modulo m si il fattore di carico non mai superare l.
per inserito pu
vedail p aragrafo33.4
. .Q . Quindi, d o ni coppia di chiavi x e y collide esattamente m valoriori
va concatenazione alt interno della tabella
per Naturalmente, si potrebbero memorizzare liste per
di a, poich essi collidono esattamente una volta ogni valore di a ..., a veda l Esercizio 12.2-5 . ma il
per possibile a,, nelle altrimenti inutilizzate della tabella si
hash, posizioni
cio per l unico valore di a , mostrato sopra . Poich vi sono m valori lai tutto i puntatori. Invece di seguire i
possibili per vantaggio dell indirizzamento aperto di evitare del
sequenza a, le chiavi x e y co llidono esattamente con m Im l/m. H esaminare. La memoria extxa liberata dai
probabilit Quindi si calcola la sequenza di posizioni da
puntatori.
universale. h la tabella a parit di occupazione di
non memorizzati fornisce pi posizioni per
puntatori
collisioni e un recupero pi veloce.
memoria. consentendo potenzialmente poche
si esaminano in successione le
Esercizi Per eseguire l inserzione usando l indirizzamento aperto,

finch si trova una vuota in i.ui


della tabella. cio si esegue una scaiisione. posizione
posizioni
0. l, ..., tn l che richiede tempo di
inserire la chiave. Invece di essere fissata dalla sequenza
129-l Si supponga di voler eseguire una ricerca su una lista concatenata di lunghezza n.
e5mninate dipende dalla chiave che deve esse e inserita.
dove ogni elemento ricerca On , la sequenza di posizioni
contiene una chiave /- insieme con un valore hash hl . Ogni
hash includa il nunu r
determinare la posizione da esaminare, si estende la funzione perch
chiave una lunga stringa di caratteri. Come si trarre vantaggio dalla Per
potrebbe hash divent i
da 0 come secondo input. Cosi la funzione
dei valori hash nella ricerca di posi-ioni gi esaminare che pane
presenza di una data chiave nella lista

1, ..., m l - 0, 1, ..., nr 1 .
h U x 0,

123-2 Si supponga di avere una corrispondenza tra una stringa di rcaratteri e in posizioni. che ogni chiave / , la sequenza di scansiosre
pp, Con l indirizzamento aperto si richiede per
dove la stringa trattata come un numero in ba e 128 e di usare il metod d
0, h k, 1, ..., h k, m 1
ivisione. Il numero i facilmente rappresentato come una di macchina di h k,
parola
che ogni elemento della tabella hash si
32 bit, ma la stringa di r caratteri, trattata come un numero in base 128, richiede una di 1, ..., n 1, cosi
sia permutazione 0,
chiave fino a riempire tutta la
molte parole. Come si pu applicare il metodo di divisione calcnlare il valore considerato come una per la nuova
per eventualmente posizione
elementi nella tabella T siano chiai i
hash
as della
e a stringa
s d
di caratteri senza usare di un numero costante di parole di tabella. Nel seguente si assume che gli
pi pseudocodice,
l elemen o stesso che la contiene. Ogni
memoria al di fuori della stringa stessa senza informazioni satellite., la chia, e I, proprio

contiene o una chiave o wi e la posiziaite vuota .


posizione

12.3-3 Si consideri una versione del metodo di divisione in cui f l / mod m, dove
e/ ,- ,- - HwSH-It SERT T, l
rn 2 una .
stringa di caratteri rappresentata in base 2 . Mostrare recieche
e se
la stringa r essere derivata l im0
pu da una permutazinne dei caratteri della stringa

y allora x e y corrispondono allo stesso valore hash. Dare un esempio di 2 repeat j h/. i

applicazione in cui questo proprieth ere t delle difticolt itt una funzione hush. w
3 if 7U1
5
4 then m l
123-4 Si consideri u na tabella hash di dimensione rn 1000 e uosa funzione hash lr 4 5 return j
5
Ln gA mod 1J erA 11 . C,,lcol..ire le pusiliotli currispo,ldetlti,lie illi,n i
6 else i i l
61, 62, 63, 64 e 65.
7 until i in

8 error OVt. l f1 1D
sllll i tabuli h iih
Tabelle hash 22I
220 Capitolo 12

L algoritmo di ricerca della chiave k scandisce la stessa sequenza di posizioni esaminata Scansione lineare
dall algoritmo di inserzione quando I stata inserita. Quindi, la ricerca terminare senza
pu
successo quando trova una posizione vuota, poich k sarebbe stata inserita li e non 1, ..., m l , il metodo di scansione lineare usa la
proprio Data una funzione hash h U m 0,
in una successiva posizione della sequenza di scansione. Si noti che asserzione
questa funzione hash
assume che le chiavi non vengano cancellate dalla tabella hash. La HAsH-SEARcv
procedura
come l I, i AHI i mod n
input una tabella T e una chiave k, restituendo j se la posizione
prende j contiene la
chiave l, O NIL se la chiave non presente nella tabella T. k, la prima esaminata T h k . Quindi si
i 0, 1, ..., m 1. Data la chiave posizione
per
via fino a scandire la posizione Tm 1 . Quindi si
scandisce la posizione T jh k 1J, e cosi

le posizioni T0, T1, ..., finch si raggiunge T h l -1 .


HASH-SERCH T, k torna in modo circolare a scandire
determina l intera sequenza di scansione, con la
Poich la posizione iniziale della scansione
l i 0
scansione lineare sono usate solo m diverse sequenze di scansione.
2 repeat j m h k, i
realizzare, ma un conosciuto come
La scansione lineare facile da presenta problema
3 if T j k
Le posizioni occupate si accumulano in lunghi tratti.
fenomeno di agglomerazione primaria.
4 then return j se vi sono n m/2 chiavi nella tabella.
aumentando il tempo medio di ricerca. Per esempio,

5 i i l occupata e ogni con indice dispari vuota.


dove ogni posizione con indice pari posizione
richiede in media 1,5 accessi. Pero se ie posizioni occupate
6 untilTg wioi in allora la ricerca senza successo
medio di accessi cresce a circa n/4 in/8. Di solito
sono le prime n m12 locazioni, il numero
7 return sial
se una vuota preceduta da i posizioni piene.
gli agglomerati si verificano perch posizione
vuota la prossima a essere riempita i 1 /in. ir
allora la probabilit che la posizione sia
L operazione di cancellazione da una tabella hash ad indirizzamento aperto difficile. vuota. Per cui, tratti i
di 11nr se la era
confronto a una probabilit precedente posizione
Quando si cancella una chiave da una i, non si pu semplicemente marcare lineare non un
posizione quella tendono a diventare ancora lunghi e la scansione
posizioni occupate pi
posizione come vuota memorizzandovi wL. Cosi facendo essere impossibile
potrebbe buona approssimazione di una funzione hash uniforme.
recuperare qualunque chiave / la durante l inserzione, la i era stata
per quale, posizione
esaminata ed era stata trovata occupata. Una soluzione di marcare la posizione memoriz-
zandovi il valore speciale DELETED invece di r n.. Si dovrebbe allora modificare la procedura Scansione quadratica
HASH-INSERT
perch tratti una tale posizione come se fosse vuota in modo da inserirvi una
nuova chiave. Cosi facendo, i tempi di ricerca non dipendono soltanto dal fattore hash della forma
per, pi La scansione usa una funzione
quadratica
di carico n. Perquesta ragione, le chiavi devono essere cancellate, di solito si sceglie
quando k
lt l , i h c, i ci- mod n,
la tecnica di risoluzione delle collisioni concatenazione.
per
h una funzione hash ausiliaria, c, e c, c 0 sono costanti
Nell analisi si fa l ipotesi di u tifornut della liaslt dove come nella scansione lineare
funzione ogni chiave considerata ha.
esaminata Thk le posizioni esaminat
in modo equamente probabile, una delle m di I, ..., m l come ausiliarie e i 0, 1, ..., m-1. La prima posizione
qualunque permutazioni 0,
che dipende in modo dal numero
sequenza di scansione. L uni fornaith della funzione hash successivamente sono distanziate di una quantith quadratico
generalizza la nozione di uniformi t
meglio della scansione lineare, ma i valori di -..
semplice, definita alla situazione in cui Ia funzione i di accessi. metodo funziona molto
prima, hash produce non un singolo valore Questo
ma un inten vincolati fare uso dell intera tabella hash.
sequenza di scansione. Per, in verit, una funzione hash uniforme difficile c, e m sono per poter
da realizzare Inoltre, se due chini i
e in pratica vengono usate delle opportune approssimazioni come l hashing Il Problema 12-4 mostra un modo selezionare questi parametri.
per
doppio, definito nel seguito . iniziale. allora le loro sequnsze di scansione somalo le stesse. poich
hanno la stessa posizione
a una forma sonile di ag l -
Tre sono le tecniche usate di solito calcnlare Ir I,,O hk0 implica h l ,, i 1 k i . Questo porta pi
per la sequenza di scansione richiesta per
l indirizzamento aperto scansione lino re, scansione e hashing doppio. Tutte
quadratica
sono usate solo m distinte sequenze di scansione.
queste tecniche che 0, h k. 1 ..., hl. rn 1 una iniziale determina.l intera sequenzz, quindi
garantiscono lig. sia permutazione di

Hashing doppio

maggior numero di sequenze di scansione e. come ri si potrebbe aspettare. di in prati i


risultati migliori.

doppiai usa una fu szione lu eh folla tnrtna


te. L l ashii g

hl. i h, 4 ih, l mod m.

t
222 Capitolo 12 Tabel/e hash 223

0 hash con indirizzamento aperto


Analisi dell organizzazione
l

2 viene espressa in
dell indirizzamento aperto, come quella della concatenazione.
L analisi
3 n ed m che tendono all infinito. Si ricorda
termini del fattore di carico a della tabella hash. per
4 il numero medio di elementi
che se n elementi sono memorizzati in una tabella di m posizioni,
5 con l indirizzamento aperto, si ha al pi un
ogni a nlm. Naturalmente,
per posizione
6 n m, che implica u l.
elemento posizione, e quindi
per
7 ideale, la
venga usata una funzione hash uniforme. In questo schema
Si assuma che
8 equamente
0, h k, l, ..., h k, m 1 ogni chiave k , in modo
sequenza di scansione h k. per
di 1, ..., m 1. Cio ogni possibile sequenza di
probabile, una qualunque permutazione 0,
un inserzione o una ricerca. Naturalmente una
scansione usata in modo equiprobabile per
di scansione stabilita, il che significa che considerando
data chiave ha associata una sequenza
spazio di chiavi e l operazione della funzione hash sulle
la distribuzione di probabilit sullo

chiavi, ogni sequenza di scansione equamente probabile.


Figura 12.5 1nser ione con hashing doppio. 1 questo caso si Iw una tabella hash di di rens o e 13 possibile
i, mo 3 eh k l kmod 11 . Poich 14 -1 mod13 e 14 3 mod I i, la chiave 14sar inserita medio di accessi in un organizzazione hash a indirizzamento
Si analizza ora il numero
nella posi-ioide 9 cl e vuota, dopo che le posi -ioni 1 e 5 siano srate esaminate e trovate occupare. hash, cominciando dall analisi del numero di
gi aperto nell ipotesi di uniformit della funzione

accessi fatti in una ricerca senza successo.

dove h, e h sono funzioni hash ausiliarie. La posizione esaminata T h, l ogni


prima
posizione esaminata successivamente distanziata dalla precedente posizione di una qua t t
Teoret ta 12.5
i, , modulo m. Quindi, diversamente dal caso della scansione lineare o quadratica, in questo irln l, il
hash a indirizzamento aperto con fattore di carico n
Data una tabella
caso la sequenza di scansione dipende dalla chiave I in due modi, la posizione iniziale. assumendo
poich di una ricerca se rai s recesso al pi 1/ 1 n,
numero medio di accessi
la distanza, o entrambe, possono variare a seconda della chiave. La figura 12.5 fornisce un
l uniformit della funzione hash.
esempio di inserzione con l hashing doppio.

Il valore h, k deve essere primo rispetto alla dimensione ni della tabella hash per qualunque
senza st,cces.,o o,,ni ccesso tranne l ultimo a una posizione
chiave Dimostra-,io,re. In una ricerca
da ricercare. Altrimenti se m e h, k avessero un massimo comune divisore d 1 per
e l ultima considerata vuota. Si
occupata che non contiene la chiave desiderata posizione
qualche chiave k, allora una ricerca di taIe chiave andrebbe ad esaminare solo una frazione
della tabeIla hash. veda il Capitolo 33. Un modo di assicurare definisca
l/d Si comodo questa
condizione di scegliere m come potenza di 2 e definire h, in modo che sempre un i accessi a posizioni occupate
produca p Pr esattamente
numero dispari. Un altr6 modo scegliere t primo e h, in modo che restituisca sempre un i
0, si poisonu trovare al pi n posizioni occupate.
0. 1, 2, .... Peri n si ha p poich
intero minore di n . Per esempio si pu scegliere in primo e porre peri
positivo
cui il numero medio di accessi
per
h I kmodni,

h, k l k mod m , 12.6
t gip,.
2. i0
dove m scelto in modo che sia di poco minore di in peresempiom- l o m Per esempio.

Per valutare l equazione 12.6 . si definisce

Pr almeno i accessi a posizioni occupate


q
si trova la chiave o sono state esaminate tutte le posizioni.
i 0. l. 2, 5i usare l identit 6. 8
per puo quindi
L hashinz do i o rappresenta un miglioramento della scansione lineare o quadratica per

q,.
gip,
in il
chiave. la posizione iniziale h, l e la distaiiza h, k variare in nsodo indipendente.
possono cui si acvede sia
di i l La che la prinla posizione
Ne risulta che il comportamento il valore q per prob,hilitb
del l hashin z doppio sembra essere molto vicino a quello Qual
ideale n/in. cui,
dello schema della funzione ha h occupata per
uniforme.

Il

/I
Tabetle hash

Teorema 12.7
Con una funzione hash uniforme, un secondo accesso, se necessario, sulle rimanenti in l
Data una tabella hash ad indirizzamento aperto con fattore di carico a I, il numero
posizini ancora non esaminate, n-1 delle sono occupate. Si fa un secondo accesso solo
quali
se il primo ad una medio di accessi in una ricerca con sisccesso al pi
posizione occupata per cui,

- -. . n
l
ln ,
1
l

nell ipotesi di usare una funzione hash uniforme e assumendo che ogni chiave sia
In generale, l i-esimo accesso fatto solo se i primi i l accessi sono a posizioni occupate e la ricercata nella tabella in modo equiprobabile.
posizione esaminata in modo equamente una delle restanti m i l
probabile qualunque
posizioni, n i 1 delle quali sono occupate. Per cui,
Dimostra-ione. La ricerca di una chiave k segue la stessa sequenza di scansione seguita p-

-. . l inserzione dell elemento con chiave / . Dal Corollario 12., se I la i I -esima chiai .

. . inserita

1/ 1
nella

i/in
tabella

in/ m
hash,

i. Eseguendo
il numero
la
medio

media
di

su
accessi

tutte le
fatti

n chiavi
in una

nella
ricnca

tabella
di

hash
k al

si ha
pi
.

- -. numero medio di accessi in una ricerca con successo

i
1 m
...
peri 1,2, ..., n, poich n j/m j
ilni se n me j
0. Dopo n accessi, tutte le n posizioni i0
E i0
occupate sono state esaminate e non saranno scandite, 0 per i n.
pi quindi q, 1
in-n
Si pu valutare Kir
ora l equazione 12.6 . Data l ipotesi che n l, il numero medio di accessi
di una ricerca senza successo
dove H, 1/j 1 i-esimo numero armonico come definito nell equazione 3.5 i.

Usanda i limiti 1n i H 5 1n i 1 dalle equazioni 3.11 e 3.12 . si ottiene


1 gip, 1 q,
i0

l QQ Q
IR.7 m m n l

l a
l/x dx
Q
J nr-n
L equazione 12.7 ha un interpretazione intuitiva un accesso sempre fatto, con probabilit
a ne necessario un secondo, con approssimativamente l
probabilit ri ne necessario un 1 n n/ m n
terzo e cosi via. C

l
1n I/ l a
Se u una costante, il Teorema 12.5 che una ricerca C
pronostica senza successo richieda
tempo 01. Per esempio, se1a tabella hash mezza piena, il numero medio di accessi in una
come lignite sul numero medio di accessi in una ricerca con successo.
ricerca senza successo al pi ll 1 D.5 2. Se piena al 90 per cento, il numero medio di
accessi al pi 11 1 0.9 10. con successo nteni
Se la tabellu hash piena a meth, il numem teedio di accessi in una ricerca
.55 .
Il Teorema 12.5 fornisce le prestazioni della H is -Irsenia di 1.387. Se la tabella hash piena al 90 per cento, il numero medio di accessi meno di
procedura in modo immediata.

Corollario 12 k Esercizi

L inserzione di un elemento in una tabella hash ad indirizzamento aperto cn f , ttore di c rico 22. 2S,
l2.4-I Si consideri l inserzione delle chiavi 10, 3 l, 4, 15. 17. 88. 5 in uno tahelb
arichiede al piii 1/ 1 a accessi in media, nell ipote i di usare una funzione haih uniforme.
hash di lunghezza n 11 ungendo l indirizzamento aperto con funzione ha. h

Dimostrazione. Un elemento viene inserito e


solo se vi sparin nella tabella. n l. usando la scansione lineare. usando lu scansione con c, 1 c c,
percio quadratici
L inserzione di una chiave richiede un i ricerca senza successo seguita dalla mem ri7.- usando l haihin doppio cvn h. k I I- mod nt l .
zazione della chiave nella
privata posizione trovata vuota. il nun1ero n eiu di acCei.i
Quindi
al 11 1 a.
pi W come cielineala nel teito
IZ.4-2 Scrivere in lu H xsit-DELts F.
pseudocodice procv lur
Il calcolo del numero medio di accessi in una LpLClill
ricerc t con successo i. L111 l ihoriOiL . I11 CllllC llt HASll-INSI RT C lli ill-Sl hRCli
plC. VCJ ll10
ll VlOIC
po pii pi. IClltl

.
I I I I . TI I
Tabelle hash 227

22 Capitolo 12

in tempo O lp nel caso senza usare


a. Mostrare che SEARCH pu essere realizzata peggiore,
12.4-3 Si supponga di risolvere le collisioni con un hashing doppio cio si usi la funzione
oltre necessaria a memorizzare gli elementi dell insieme.
memoria extra quella
hash h l-, i il , k mod m. Mostrare che la sequenza di scansione
h, k aperto di m
Si supponga di realizzare l insieme con una tabella hash a indirizzamento
della sequenza di posizioni b.
h k, 0, 1 /, 1, ..., hl, m 1 una permutazione
la minima m ir di memoria extra
con tunzione hash uniforme. Qual quantit
1, ..., m l se e solo se h, l primo rispetto ad m. Sirggerimenro si veda posizioni.
0, sia almeno altrettanto buono
richiesta il tempo medio di una SE Rcw senza successo
il Capitolo 33. perch
La risposta dovrebbe essere un limite asintotico su m n
quanto il limite deIla parte a
in termini di n.
12.4-4 Si supponga di usare una funzione hash uniforme e una tabella hash ad indirizzamento

aperto con fattore di carico a 112. Qual il numero medio di accessi in una ricerca
L2-3 Limite alla dimensione della tabella nel/a eoticatenazione
senza successo il numero medio di accessi in una ricerca con successo
Qual
hash di i posizioni, con le collisioni risolte per concatena-
Ripetere i calcoli i fattori di carico 314 e 718. Si supponga di avere una tabella
per
inserite nella tabella. Sia equamente probabile che ogni
zione e si supponga che n chi i siano
Sia M il massimo numero di chiavi in una qualunque
chiave comsponda a ogni posizione.
* z2.4-5 Si supponga di inserire n chiavi in una tabella hash di dimensione in usando EM,
sono state inserite. Occorre adesso dimostrare che
dopo che tutte le chiavi
in la probabilit che posizione
l indirizzamento aperto e una funzione hash uniforme. Sia p n,
il valore medio di M. ha un limite superiore O lpt /1g lpt .
-
non si verifichi alcuna collisione. Mostrare che p n, m e Sug geri,nenro.
k chiavi cadano in una data da
a. Dedurre che la probabilit Q, che particolare posizione
si veda l equazione Dedurre che n eccede m la probabilit di
2.7 . quando
evitare le collisioni va rapidamente a zero.

- --
12.4-6 Si consideri una tabella hash od indirizzametsto aperto con fattore di carico e.
k, cio la probabilit che la posizione contenente il maggior
b. Sia P, la probabilit che M
Trovare il valore non nullo di a per cui il numero medio di accessi di una ricerca
numero di chiavi ne contenga l . Mostrare che P, n g,.
senza successo sia uguale a due volte il numero medio di accessi di una ricerca con
di Stirling 2.11 mostrare che Q e Il .
il numero medio di accessi di una c. Usare l approssimazione equazione per
successo. Usare la stima l/ajln l/ l u per
c 1 tate che ll r k, c Ignl1g 1g . Concludere
ricerca con successo. d. Mostrare che esiste una costante Q per

che P, l/n- I- l c lpi/1g lpi.


per

e. Mostrare che
Problemi
clgn 1 f clgn clgn
E BI 5 Pr W a Pr M
1glgn Iglgn 1glgn
organizzazione
12-I Limite alla scaitsioire lunga in un Iiash
pii
n m/2. Concludere che EM O lpt/Ig Ignei .
Una tabella hash di dimensione m usata memorizzare n elementi, con
per
L indirizzamento aperto usato per la risoluzione delle collisioni.

a. Assumendo l uniformit della funzione hash, mostrare che peri 1,2, ..., n, la probabilit 22-4 Scansioite qtcadratica
. l, ..., in 1,
che l i-esima inserzione richieda strettamente di I- accessi al pi 2 chiave I- da cercare in una tabella hash con posizioni 0,
pi Si supponga di avere una
allo spazio del le chiavi l insieme 0. l, ...,
h. Mostrare che i 1. 2, ..., , la probabilit che l i-esima inserzione richieda pi di 21gn e di avere una tunzione h che faccia comspondere
per
accessi al pi l/ r -. m I . Lo schensa dell s ricerca si i il seguente.

La variabile casuale X, denoti il numero di accessi richiesti dall i-esima inserzione. Nella 1. Calcolare il valore i - hl . e porre j 0.

si gi mostrato che Pr X 21 n l/n-. La vm iabile casuale X max X denoti la chi ve L. Se trovata o se la posizione vuota.
parte b 2. Esaminare la posizinne i per cercare
il massimo numero di accessi richiesti da una qualunque delle n inserzintsi. la ricerca.
terminare

c. Mostrare che Pr X 21gu 1/n. Porre l mod m e i m i mod m e tornare al passo


3. j Q j
O lgii . 2.
d. Mostrare che la lunghezza meia de Ia sequenza di scansione pi lunga EX in sia di
Si supponga che potenza
sc.msionequvdratica
cchema u i tanz i dell schema generale di
a. Mostrare che quesito
in un stntico i valori appropriati delle osl inii r, e c, per l equazione l2.5 .
12-2 Ricerca insieme producendo
le chi ii i Ll llllll1 l 1 111 dell I till tll l.
Finor si fatta l ipoteci di lavorare cnn usi insieme dinamico di n elementi in cui h. PIOY ifl CllC lli .1 D I iO CfllClI 1 IIL ll Ill11 l p ll/LOI1C
pC 10fi

siano numeri. Si consideri ora l insietne it itico che non richiede le operazioni l re e Dt .i.u i

ma la sola operazione SE zcw. Sia disponibile una di tempo ese ,.uiii


quantit,.irbitraria per

si eie uit t r ipid l-


una sgli n elencanti in mo tn che l operazione Si ,svrsl
preelaborazione

111CAlC.
228 Capito1o 12

12-5 Hashing k-universale

S ia h una classe di funzioni hash in cui ogni Ji facomspondere l universo U delle chiavi
a 0, 1,..., m 1 . Si dice che M k-universale se, per ogni sequenza fissata di k chiavi distinte Alberi binari di ricerca

A x ,, h x, sia una qualunque delle m sequenze di lunghezza I- con elementi presi da 0,


1, ...,m 1.
R
a. Mostrare che se 2-universale, allora universale.

b. Mostrare che la classe R definita neI paragrafo 12.3.3 non 2-universale.


R
c. Mostrare che se si modifica la definizione di nel paragrafo 12.3.3 cos1 che ogni funzione
contenga anche un termine costante b, cio se si sostituisce hx con

sulle vengono realizzate molte delle operazioni


lt,, x Gli alberi di ricerca sono strutture di dati quali
ga,x b mam,
MAXIMUM, PREDECESSOR, SUCCESSOR,
i0 definite sug1i insiemi dinamici, incluse SEARCH, M1NIMUM,
H sia come un dizionario che come
allora 2-universale. e DELETE. un albero di ricerca puo essere usato
INSERT Quindi
una coda con priorit.
albero binario di ricerca richiedono un tempo proporzionale
Le operazioni di base su un
Note al capitolo completo con n nodi tali operazioni sono eseguite
all altezza de ll albero. Su un albero binario
l albero una catena lineare di n nodi, tuttavia,
nel caso con un tempo O lp . Se
peggiore
caso di 8 n . Nel paragrafo 13.4 si
le stesse operazioni richiedono un tempo nel peggiore
Knuth 12 e Gonnet 90 sono ottimi riferimenti per l analisi di algoritmi basati sull orga-
in modo casuale O lgn , per cui
nizzazione hash. vedr che l altezza di un albero binario di ricerca costruito
Knuth accredita a H. P. Luhn 1953 l invenzione delle tabelle hash, insieme
insiemi dinamici richiedono tempo 8 lgit .
con il metodo di concatenazione risolvere le collisioni. All incirca nello stesso le operazioni di base sugli
per periodo,
alberi binari di ricerca siano ostruiti in
G. M. Amdahl propose l idea dell indirizzamento aperto. Nella non si pu sempre garantire che gli
pratica,
binari di ricerca le cui nel caso
modo casuale, tuttavia vi sono varianti degli alberi prestazioni
Il Capitolo 14 una tale
le operazioni di base sono comunque buone. presenta
peggiore per
O lgn . Il Capieolo l9 presenta i B-alberi
variante, RB-alberi, che hanno infatti un altezza
gli
di basi di dati su memoria secondaria ad
che sono adatti per la gestione
particolarmente
accesso casuale dischi .
di base degli alberi binari di ricerca, i paragrafi
Dopo la delle propriet
presentazione
di ricerca elencare i valori in modo
seguenti mostnno come visitare un albero binario per
binario di ricerca, come trovare il pi piccolo
ordinato, come cercare un valore in un albero
o il precedente di un elemento e come
o il pi elemento, come tmvare il successivo
grande
un elemento da un albero binario di ricerca.
inserire o cancellare

alberi sono state nel Capitolo 5.


Le matematiche de li presentate
principali propriet

13.1 Che cos un albero binario di ricerca

il nome. ad albero binario. come


di ricerca organizzato. come suggerisce
Un, lhero binario
du una strutture di dati con
I 3.1. Un tale albero es ere rappresentato
naostrato nell tigura puri
un campo key e ai dati satellite. ciascun
in ciascun nodo un oggeno. Oltre ud
cui
puntatori
ai nodi corrispondenti al
lei. ri,,f t e p che rispettivamente
nodo contiene i campi pu t uro

II albe l O il CUi CU 11po C i all..


Il nvo radi c i I tltlicu llO lo ak p ldt
contiene il v flore vi..

in modo che iia


li chi vi sotto sempre meinorizrate
In un albero binario di ricerca

dell albero bittar. ci eli ricerca


sodctisf.ittri la propriet
Alberi binari di ricerca 231

Esercizi

2, 3. 4, 5 e 6 sull insieme di hiavi


Disegnare alberi binwi di ricerca di altezza
13.1-1
l, 4. 5, 10, 16, 17, 21 .

binario di ricerca e la propri dello


la differenza tra la propriet dell albero
13.1-2 Qual
essere usata elencare in modo ordinato
heap La dello heap pu per
7.1 propriet
in tempo On Giustificare la ri.posta.
le chiavi di un albero di n nodi

che esegua una visita in ordine simmetrico.


D scrivere un alooritmo non ricorsivo
E3.1-3
b usa una come struttura di ati
vi una semplice soluzione che pila
Suggerinrento
complicata, ma elegante che non usa la pila.
Figura 13. I Alberi binari di ricerca. Per vi anche una soluzione pi
qualunque nodo x, le chiavi nel sottoalbero sinistro di x sono ausiliaria
verificare se due sono uguali.
che assume che si possa puntatori

le visite anticipza e differiu di un


inario di ricerca di alte -.a 2 cor 6 irodi. Un albero binario algoritmi ricorsivi che eseguono
b di ricerca meno efficiente di alte a 13.1-4 Descrivere gli
4 che contiene le stesse chiavi.
albero di nodi in tempo 8 itl.

Sia x un nodo di un albero binario di ricerca. Se y un nodo algoritmi ci nfronto


del sottoalbero sinistro di r, di n elementi con gli per
13.1-5 Dedurre che poich l ordinamento
al-oritmo ha. ato su
caso un tempo Qn lg . qualsiasi
richiede nel peggiore
Perci, nella figura 13.1 la chiave della radice binario di ricerca a partire da una . equenza
a, 5, le chiavi 2, 3 e 5 del suo sottoalbero confronti usato costruire un albero
per
sinistro non sono di 5, cosi come le chiavi 7 e 8 del tempo Qn 1gn nel caso peggiore.
pi grandi suo sottoalbero destro non sono arbitraria di n elementi richiede
pi piccole di 5. La stessa vale tutti i nodi dell albero.
propriet per Per esempio, la chiave
3 nella figura 13.1 a non pi della chiave 2 del
piccola suo sottoalbero sinistro e non pi
grande della chiave 5 del suo sottoalbero destro. di ricerca
13.2 Interrogazioni su un albero binario
La propriet dell albero binario di ricerca consente di elencare tutte le chiavi in un albero
bii1ario di ricerca in mo do ordinato attraverso un di una chiave
semplice algoritmo ricorsivo, chianaato su un albero binario di ricerca la ri er a
L operazione comune eseguita
visita in ordine simmetrico. pi
Questo algoritmo deriva il suo nome dal fatto che la chiave della sugli alberi binari di ricerca possono
nell albero. Oltre l operazione di SEwacv.
memorizzata
radice di un sottoalbero elencata tra i valori del PRfDECiSSOR. In
suo sottoalbero sinistro e quelli del suo MIYIMUkl, MAXIMUh1, SUCCESSOR
CSSCfC tCdllZZGtC ltltctTOgQZIOA1 COm2
sottoalbero destro. Ana amente, una visita ih ordine essere eseguite
atiticipato elenca la radice operazioni e si mostrer che po. sono
prima si esamineranno queste
i valori di entrambi questo paragrafo
quindi i sot .oalberi e una visita in ordine differito elenca i valori lt.
dei su un albero binario di ricerca di altezza
in tempo O lt

tutti gli elementi di un albero binario di ricerca T si chiama IvoRoER-TRE -W ix root T .


Ricerca
INORDER-TREE-WALK X

una data chiave in un a lbero binario


I ifxwwc si usa ricercare un triodo con
La seguente procedura per
chiave /-. Taa SE RcH restituisce
2 alla radice dell albero e una
then INORDER TREF.-Wwt.v lefr r di ricerca. Dato un puntatore
altrimenti restituisce ite.
nd un nodo con chiave k. ie esiste
3 stampa le un puntatore
x
4 INOR DE R- TRE WALK l igltr v
TR r -Sz acs .i. k

Per esempio l if.v vie o l l ey r


la visita in ordine simmetrico elenca le chiavi di ciascuno dei due alheri binari
di ricerca della figura 13.1 nell ordine 2. 3. , 5, 7, 8. La 2 then return.r
cnrrettezza del1 algnritmo deriva.
per induzione, direttamente dalla dell albero l ey .v
propriet binario di ricerc s. L aIgoritm i 3 if k

return Ti r r.-St i ii i /i v. 4
th n
chiamata iniziale.lu r
Tnrt .-Sr svcv right s . L
5 else return
nodo nell albero una il figi in sinistro e l altra
per per il destro.
Alberi binari di ricenu

che TazE-Mu wuw sia comtta. 5


La dell albero binario di ricerca garantisce
propriet w
chiave del sottoalbero destro dir g
x non ha il sottoalbero sinistro, allora ogni
nodo
sottoalbero con radice in x I ei- r . S
l-cg r , la chiave minima del -
almeno quanto perci
nessuna chiave del sottoalbero destro pi picccl -
nodo x ha il sottoalbero sinistro, aIlora
-1 - i
non pi di kc v , perci la
key r ed ogni chiave del sottoalbero sinistro graade
trovata nel sottoalbero con radice in le ..
del sottoalbero con radice in x pu essere
minima

Lo TREE-Mzxtwuw simmetrico.
pseudocodice per

TREE-MAXImUM x

l si hile right x c sta

Figura 13.2 Interro 2 do x- right v


a-i oidi su un albero binario di ricerca. Per cercare la chiave 13 nell alb
segue il cammino 15 6- 7 m 13 a partiredalla radice. ,
La piit piccola chiave teli nlb r I 3 return x
g n o dalla radice tutt e,i puntatori left. La c/tiare 20 d
pi grande
o l . rii i pi n a ori right. Il successore cammini discendenti nell albero, sono e eguit
g det nodo con chiave 15 il nodo co chiave Poich entrambe le procedure seguono

tempo Oh su un albero di altezza h.


h o ob od estro, quin i i suo successore il suo antenato il cui
pi i prossimo fig
q sio caso il nodo cori chiave 15 il suo successore.
Successore e predecessore

La comincia la ricerca dalla radice e segue riuscire a trovare 1 .-


procedura un cammino discendente nell albero un albero binario di ricerca, talvolta importante
Dato un nodo di .- ..-
come mostrato nella figura 13.2. Per ogni nodo x che incontra, confronta la chiave I con dalla visita simmetrica dell a beva. S-
successore secondo l ordinamento determinato
kc x . Se lle ddue chiavi sono uguali la ricerca termina. -pi la pi chini e pii .
. See I i picco
icc 1o d i k cg v .laricerca il successore di un nodo x il nodo con piccola
le chiavi sono distinte
continuanelsonoalberosinistrodir,poichlaproprietdell il . u ce. - i.- .
1b b d di ricerca consente di determinare
di / ey x . La struttura di un albero binario
- ..i. . .. .
c e non si possa trovare nel sottoalbero destro. In modo simmetrico, se k d d La seguente restituii-e. e
g un nodo senza dover confrontare le chiavi. procedura
ey x , a ricerca continua nel sottoalbero destro. I nodi inco tr t d l a ricorsione oppure en. se, ha la chi , e pi. ,,-.
di un nodo.v in un albero bin rio di ricerca
successore
formano un cammino che discende dalla radic d 11 1b ero e quindi il tempo di esecuzione
dell albero.
di TRAE-SEARcw Oh dove h l altezza dell albero.

La stessa procedura pu essere scritta in modo iterativo trasformando l TREE-SUCCESSOR x


i e. e a maggior dei calcolatori versione pi efficiente. l if righr v w rii
parte questa

then return TRE -Mwiwuw righr i


ITERATIVE-TREE-SEARCH A , i
3 ymp xj
1 while x W NIL C k y key x
4 svhile y w Sii e x right y
2 doif k bey x
5 do m v
3 then x lep x
6 y pfyj
4 else x right v
7 return v
5 return x
destro del nodo A
suddiviso in due casi. Se il sottoalbero
Il codice di TRAE-Svcccssoa
de tro che i i- ..
di x propri il nodo amministra del sot toalbero
Minimo e massimo vuoto, allora il successnre pi
Per esempio nella fi
trovato nella linea Z attraverso la clsiamau Trar -Mlvus uw right r .

chiave 15 il nndo con chiave 17.


Un elemento dell albero binario i ricerca la h 13.2 il successore del nodo con
.. re
ttrovato seguendo
. g i puntatori lefi dalla radic
adice ,
hnn -
che .si incontra x c. come .
mostrato nella a
ffsgura13. .Laseeuente anche un antenato di.i. Per e et .v
.. rocedu
procedurarestituisceunpuntatorealminimoeIementodelrotto ilberii e n o e rotto i erie di.r il cui figlio iiitistro
essere l antenato pi prnssimo
con con chiave 1 5. Per trin .
radice in un dato nodo r. 13. 2 il successore del nodo con chi ive l 3 il nodo
nella hgura
un figlio,ini.,-tro di, . .,
d,, v tinchi si in ontra un nodo che
si risi le semplicemente l albero

TRee-MiiilMUM X nelle linee 3-7 dell i proi edura Ti u -Succrssox.


p tdre cio gestito

1 whi1e lefi x c tvit.

2 do.a c lefi xj

3 return.v
Alberi binari di ricerca 235
234 Capitolo 13

Il tempo di esecuzione di TREE-SUCCESSOR su un albero di altezza h Oh, infatti o si segue

un cammino che risale o uno che discende l albero. Anche la procedura TRAE-PREoEczssoR, 13.3 Inserzione e cancellazione
che simmetrica alla TRE -SuccpssbR eseguita con un tempo Oh.
la medifica dell insieme dinamico
Le operazioni di inserzione e cancellazione provocano
In conclusione si dimostrato il seguente teorema.
La struttura di dati deve essere n odi amicata per
rappresentato con un albero binario di ricerca.
che la propriet dell albero binario cti ricerca
cambiamento, ma in modo tale
riflettere questo
Teorema 13.1 di un nuovo
che la modifica dell albero per l inserzione
continui ad essere verificata. Si vedr
Le operazioni di un insieme dinamico Sewzcv, MtwtMvw, MAxmvu, SuccessoR e della cancellazione in qualche modo
relativamente semplice mentre la gestione
elemento
PREDECESSOR essere eseguite su un albero binario di ricerca di altezza h in
possono complessa.
pi
tempo Oh.

Inserzione

Esercizi di ricerca T si usa la procedura TRcz-l i f. .p f,


inserire un nuovo valore v in un albero binario
Per

- nella appropriata nell lhcro.


13-2.I In un albero binario di ricerca, si supponga di avere numeri tra l e 1000 e di voler T e altri campi di in modo da inserire posizione
modifica
cercare il numero 363. Quale delle seguenti sequenze non pu essere una sequenza

di nodi esaminati .RT T.


TREE-li

4 a. 2,252, 401,398, 330,344. 397,363. 1 v zn

b. 924, 220,911, 244, 898. 258, 362.363. 2 .i root f Tj

c. 925, 202.911, 240,912, 245, 363. 3 l 1llC X W YJIL

d. 2, 399, 387, 219, 266,382. 381,278, 363. 4 dOyE X

e. 935, 278,347, 621, 299. 392. 658.363. 5 if l cg - key x

6 then x lefr x

13-Z.2 Il professor Volpini pensa di aver scoperto un importante propriet degli alberi 7 else x- iight x

binari di ricerca. Si supponga che la ricerca di una chiave k in un albero binario di


8 .. y
ricerca termini in una foglia. Si considerino tre insiemi A, le chiavi a sinistra del
9 i i wc
cammino di ricerca B, le chiavi sul cammino di ricerca C, le chiavi a destra del
10 then root TJ m
cammino di ricerca. Il professor Volpini afferma che qualunque tripla di chiavi a

e A, b c B e c e C deve soddisfare a b c. Dare il controesempio 11 else if / ey - l cg i


pi piccolo

possibile a11 affermazione del professore. 12 then left y


i
13 else right y m

13-2.3 Usare la propriet dell albero binario di ricerca per provare rigorosamente che il
alle Torr-SA zcq
13.3 mostra come opera TaEE-INSERT, Analogamente procedure
codice di TREE-Svccessoa corretto. La figura
dalla radice dell albero e segue un commi no
e IreR tw -TRE -SE e , la TaEr,-lr,,sF w comincia

13-2.4 La visita in ordine simmetrico di un albero binario di ricerca di n nodi pu essere

realizzata trovando il minimo elemento dell albero con TREE-Mn I IUiv1 e poi

eseguendo it I chiamate n TRAE-Succrssoe. Provare che quest al oritnto

eseguito in tempo On. tale che - sia inserito.


si ass gttano i valori ai puntatori in modo
linee 8-13
la prncedura TREE INSERT G odo
nperazioni su alberi di ricerC
Come le altre primitive
13-2.5 Provare che k chian1ate successive a TaFE-Succzssor in un albero binario di ricerca iu albero di altezza h richiede tempo Oh.
eseguita un
di altezza h richiedono tempo Ok h a prescindere dal nodo da cui si p irte.

Cancellazione
13-2. Sia T un albero binario di ricerca in cui le hi n i s ivi tutte cliitinte. ii i.i un n iclii

foglia e sia y il di x. Mnstrvre che I cg y o la chiglie eli T


padre piii piccola piii

grande di Rep .v nppure la chiave dell albern Tpiii ci l,ci- .i j.


pi grande piccnl
Alberi binari di ricerca 237
CapitoIo E3

tratta tre casi in modo leggermente diverso.


Il codice di TREE-DELETE questi

TREE-DELETE T,

l if lefi .- wc o rigiv - sn.

2 then pm.--

3 DISC l M TREE-SUCCESSOR

4 if lefrfv w n.

5 then .r - lefi$v

6 else .r m right y
Figura 13.3 Inser ione di wt elemento con chiave 13 in un albero binario di ricerca. I nodi chiari
grigi
indicano il nimmino dalla radice 7 ifx w zn.
alla posizione in cui l elemento inseriamo. La linea tratteggiata
albero
indica il collegamento aggiunto nel inserire il nuovo elemento. m
per 8 then px pi

9 if p v mx

10 then roor TJ -r

l l else if y lefi p y

12 then lefrp y c x

13 else right p/s J -.v

14 if v z

15 then / ey key y

l6 t Se s ha altri campi, copia anche questi.

17 return v

estrarre. Il nodo y il nodo di input .- se


Nelle linee 1-3 l algoritmo determina il nodo y da
- - nelle linee 4-6
ha al pi un figlio oppure il successore di - se ha due figli . Quindi

vi. se y non ha figli. Il nodo i estratto nelle linee


assegnato ad r il figlio non Ni . di y oppure
e di.z. L estrazione di y in qualche modo complicata
7-13 modificando i puntatori di fy
adeguata delle condizioni che si verificano quando
dalla necessit di un gestione particolari
nelle linee 14-16, se il nodo estratto il successore di
, w,. o quando y la radice. Infine,
di y. Il nodo restituito nella linea
, il contenuto dell oggetto.- vene snstituito coi quello
lo possa riutiIizzzre nella lista libera. La procedura
I 7 in modo che la procedura chiamante

eseguita in tempo Oh u un albero di altezza h.

Riassumendo, si dimostrato il seguente tenrema.

c Teorema 13.2

din unico essere eseguite in


Le operazioi i IwscRv e Dvgv a su un insieme possono
Fi ura 13,4 bimiriu di ricerca di altezza h.
tempo Oh utilizzando un albero

il conteiruui di coi il conteiruro di y.


Esercizi

veriivne ricordai va della Tut F.-lvsr u r.


13.3-f F mire un prcwcdura

baia costruito ttravcrio una equenzu


13.3-2 Si uppong t chi in albero bi ariii ili ri e vu
se il nodo ha due figli. si estrae il s uccisore la
y di cl e non ha fi lio inistro siveda l Esercizio
inserzioni cti valori distinti, D iiurrc che il numerai eli nodi csaniinati per
ricerca
. , i di
l3.3-4 esisos ituisc .- ni lla chine e i cisti -
satellite di,-, con l,.i chiave e i dati iatellite ie di i v tliirc i it ito inserito
y. di un v flore i uncipiii il llllllll. li dl 11illli esgininati qu indo qucl

ll c
ll CI I l O.
Alberi binmi di cerca 241

Lemma 13.5
5
di n numeri distinti, e sia la v iabile casuale
Sia I , I, ..., k una permutazione casuale

che rappresenta la cardinalit dell insieme

S . l i n e k f ogni l i . 13.1
k per

H I n-esimo numero armonico e p 4 32 soddisfa


Allora Pr S p 1 H l/n-, dove
2.
l equazione 1np- l p

Si pu determinare la cardinalith dell insieme S tramire n pm ve di Bernoulli,


Dimostrazione.
si verifica nell i-esima se k, pi degli elementi 4, k..
dove un successo prova piccolo
si verifica con lli. L. prove,-.,ano
k,, Un successo nell i-esima prova probabilit
a I , indipendente da come
indipendenti, la probabilit che i , sia il minimo tra k, k, ....
poich
sono ordinati k, k, ..., l .

alla che 5 i p- ll H . Il valore


Si pu usare il Teorema 66 per dare un limite probabilit
chiavi 21 9 4 25 7 12 3 10 19 29 17 6 26 18
atteso di p H 1n si. Poich 1, per il Teorema 6.6 vale
G. S p
z 25 19 29
G,.
19
Pr gS p 1H Pr S p pH
L. 4 I t2 s o
9 12

b
l-In
- p /H.
Figura l.5 1 due insiemi G, e L, cfr contengoi o le chiavi su un czimmiirv dalla radice di im albercr
p- l p In n
birrario di ricerca
- in
fino alla chiav e k, 17. I nodi con chiat i in G, sorto neri e i au di con chiosi tn
In p-1 jp

l/n

che segue dalla dehnizione di p.

albero binario di ricerca costruito in


Si hanno ora strumenti limitare l altezza di un
corrente Z l. La chiave 29 nvn in G essendo del mininro corrente l 9. Le strutture di L gli per
piii grande
e di L, soire sinu ietriche. modo casuale.

Al fine dell analisi si pu semplificare in qualche modo scenario. Si supponga che Teorema J3.6
questo
n numeri distinti siano inseriti uno alla volta in un insieme dinamico. Se tutte le permutazioni z ezza costruito in modo iasu. l
f media 4i un al/ero binario di ricerca
dei numeri sono equiprobabili, volte cambia, in media, il minimo dell insieme Per
quante distinte O lgn .
rispondere a questa domanda si supponga che l i-esimo numero inserito sia k,. per i I, 2.....
n. La prababilit che k, sia il minimo dei i numeri lli, il rango di k, tra i primi
primi poich
i numeri equiprobabile che sia uno degli i possibili casuale delle n chiavi e sia T l albero
qualunque ranghi. Di conseguenza il Dimostra -ione. Sia l ,, I-., t una pernn tazione
numero medio di camhiamenti il ininimo dell insietae
per

l
g- e
ii
essere almeno t/2. Per maui

13.2
dove K 1n n O l l r -esimo numcrn nrm inicn si vcd l Equaiionc .i c il Pnihlcln i Pr l k,. T t Pr jc,j i vi , i. ivt.

Q.
E aillini 11110 ii11 1 Pl tl . Si 11,i
pt AG

k, , per v lli I i tl
1n ir. il seguente lemma mo tr ch * i minima la proh ibili che si i no to pii renale. Pr Q 112 Pi j l, I i j e
43
Alberi binari di ricerca
242 Capitolo 13

Pr k, i n e l, k, pe ogni li r/2
Problemi
vr s rz,
dove S definita come nell equazione 13-1 Alberi bi tari di ricerca con chiavi agaali
13.1 . Per giustificare questo ragionamento, si noti
i-.. ,
che la probabilit non decresce se si estende il rango di i da i nella realizzazione degli afe.-.
j ad i n, poich all insieme La presenza di chiavi uguali pone qualche problema
sono aggiunti pi elementi. Analogamente, la probabilit non decresce se si rimuove la ricerca.
condizione che k, l, poich si sta sostituendo una casuale di un numero di viene usata in . -. n
permutazione a. Quali sono le prestazioni asintotiche di TRE -IwsERv quando per
elementi che pu essere minore di n quei k che sono di k, con una inizialmente ni..
pi grandi permutazione elementi con chiavi identiche in un albero binario di ricerca
casuale di n elementi. I
si propone di migliorare TRE -INSERT verificando della linea 5 se l-ey,. kc
Ci prima
Usando un ragionamento simmetrico, si pu che vale l uguaglianza si . e u. ui. -
provare verificando della linea 11 se l e ., I eyjv . Se
prima
le prestazioni asintotiche dell i -.z ..- di
segenti strategie. Per ogni strategia, si trovino
Pr L t/2 Pr S t/2 ,
identiche in un albero binario di ricerca inizialmente i i.
n elementi con chiavi
cui, dalla disuguag1ianza e x. Pe-. . .l .
per 13.2 , si ottiene strategie sono descritte la linea 5 in cui si confrontano le chiavi di
per
stessa strategia alla linea 11, si dovr sostituire y ad r.
Pr d /-. T t 2Pr S t/2 .
, -
b. Mantenere una variabile booleana b xJ sul nodo x e assegnare adx lei i J opz
-. -
Se si sceglie r 2p 1H, dove H l n-esimo numero armonico e p 4.32 soddisfa in base al valore di h x , che si alterna tra FwvsE e TRUE ogni volta che il n.w -

Inp 1 p 2, si puo applicare il Lemma 13.5 concludere che durante la TaEE-Ir scRT.
per

Pr d / ,. T 2p 1 H e. Mantenere una lista di nodi con chiavi uguali ad.v ed inserire - nella li. t .
2Pr AS p 1 H
..- --
d. Assegnare in modo casuale ad.v left i oppure right v . Fornire le prestw. .
2/n- .
e derivare informalmente quelle ne1 caso medio.
peggiore
Poich vi sono al pi nodi in un albero binario di ricerca costruito in modo casuale. la

probabilit che la profondit di qualturque nodo sia almeno 2p lH dunque, dalla


13-2 Alberi lessicografici
disuguaglianza di Boole 6.22 , al pi n 2/n- 2/n. una frazione ad almeno
Quindi, per pari ,n-.
1 2/n delle volte, l altezza Date due stringhe a a ,ago ... a, e b b ,b, ... b, dove ogni a, ed ogni b, apparta.
di un albero binario di ricerca costruito in modo casuale minore
a lessicograficanrettre miaorc .l-ala
di 2p 1H, e al 2/n volte l altezza non supera n. L altezza media allora al insieme ordinato di caratteri, si dice che 1a stringa
pi pi
2p 1H 1 2/n n2 O lgtl . stringa h se vale una delle due seguenti aftermazioni

a, h,perognii 0. l.....i- l .
1. esiste un intero j,con0 j min p,q , tale che

Esercizi
2. p q e a, b, perngni i 0, I, ...,p.

allora 10100 10110 dalla re ill l pr


13.4-1 Descrivere un albero binario di ricerca di n nodi tale che la profondit Per esempin, se a e b sono stringhe di cifre binn ie.
media di un
3 e 10 l 00 101000 la regola 2. L ordinamento simile a quello usati nei i.v 4 .
nodo nell albero sia O lgn ma l altezza dell albero sia m lgn . essere j per
Quanto puo
l altezza di un albero binario di icnca di n nodi mostrata nella figura 13.6 memorizzai 1 t-. i -
grande se la profondit media di La struttura di dati albero lessicografico
un nodo 8 lgn si cerca la chiave a a , a,... n, dal nodo di pro .
binurie 10 I l, I 0. O I I, 100 e 0. Quando
ce n, 1. Sia S un insieme di strin he hinarie Ji t
i si va a sinistra se a, 0 e a destra

hannn come somma n mostrare con e usare un albero le iici ntt P


13.4-2 Mostrare che la nozione di albero binario di ricerca di n chiavi scelto in modo cui lunghezze
Per I esempio ella t-, uro 1 ,.5. I, ,P
casuale. dove ogni albero binario eli ricerca ordinare lessicograficamente S in tempo 8 nj.
di n chiavi pu es ere scelto in modo
equtprobabile, dell ordinamento dovrebbe essere la sequenza 0. O l l. 10, 100. l 01 I.
i diversa dalla nnzinne data in questn di albero binario di
paragrafn
ricerca costruito in modo casual . Suggerimento elencare le possibilit 3.
peri
di ricerra cortruit in m
13-.3 Profoitdit media di tn nodo in un albero binarie

1343 Data una costante r 1, si determini t in modo che la probzbilitii che l altezza di ui casuale

albero binario di ricerca costruito in modo casuale sia almeno tH risulti minore di
1h .

f h -. -
13.4-4
3.4-4 Si consideri l al oritmo R i nowlzco-Qutcvson cheopera ili R s rx wizt .n-Qvicvsovr del
su un isequcnz i li inpirt un albero bin irio di ricerc e l esecuzione p n

dell input, tranne che l/n il tempo di esecuzione i On I,,nk


per pernn,trazioni.
244 - Capitolo 13
Alberi binari di ricerca -4

in cui i confronti ordinare un insieme di


Descrivere una realizzazione del quicksort per
f.
elementi sono esattamente stessi di quelli necessari ad inserire gli elementi in un albe
gli
i confronti sono fatti essere differente. ms i
binario di ricerca. L ordine in cui pu

confronti devono essere gli stessi.

13-4 Il numero degli alberi binari diversi con n nodi

con n nodi. In questo bisogna trovare una


Sia b i1 numero di alberi binari diversi problema
n
formula per b e una stima asintotica.

a. Mostrare cheh, l e che, pern 1,

n-I
bob,-i
I- O

Figura 13.6 Un albero lessicografico che memori-a 1e srringlte binarie 1011, 10, O l l, 100 e 0. La b. Sia Bx la funzione generatrice
chinve di ogni r odo essere deten rinata attraversando
pu il camminino dalla radice a quel nodo. Non
necessario, quindi, minori are le chiat i nei nodi nella figura sono inostrare le ehiai i so1o per 8x
maggiore chiare a. I nodi sono scuri se le chiavi corrispondevi pb x
ti non sono nell albero ta1i nodi sono
solo tracciare
n0
presenti per il cammino per altri s odi.

la definizione di funzione Mostrare che B .v


si veda il Problema 4-6 per generatrice .
Cominciamo ricordando dal Capitolo 5 che la lunghezza .v8 x - l e quindi
del cammino interno PT di un
albero binario T la somma delle di tutti i nodi
profondit x di T profondit che si denota con
Et x, T. B .z 1 4x .
l

Lo sviluppo in serie di Taylor di f .v nel iniziale.v a dato da


punto
a. Dedurre che la profondit media di un nodo in T
f,
fx x a ,
g
d x, T PT . O
g
xCT
dove f x la derivata di ordine I di f in.z.
Pertanto, si deve mostrare che il valore medio di P T di On lyt . c. Mostrare che
b. Siano rispettivamente T,e T i sottoalberi
T ha n nodi,
sinistro e destro dell albero T Dedurre che se
.
PT P Tp
allora

P TR n l .
.
usando lo sviluppo in serie di Thylor di al 4A nel punk
l n-esimo nwnero Catalano
e. Sia P ir la lunghezza media del cammino interno iniziale x 0.
di un albero binario di ricerca di n nodi
costruito in modo casuale. Mostrare che si pu usare la generalizzazioni
si vuole. invece di usare lo sviluppo in serie di Taylor,
Se
I
Pn P ti i 1 n 1 . nn 1 ... n ,.
gPi numern reale n e pualunpue intero k, si interpreta
i0 conce
se l 0. 0 altrimenti.
d. Mostrare che Pn essere riscrittcl COlllC
pu
d. Mastrare che

n-I
4tl

Pn Pk On . bn ,, O 1/n .
g l
Al

e. Facendo riterimento all anzlisi della versione randomizzata di quichsort. concludere che
Pn O ii Izt.
Note al capitolo

l insietne . -
partizionare di elementi che devono essere ordinati. Ogni nodo , ,- . , , I ,. i enn ltclon
di un albero hinurio u
di ricerca partiziona l insieme di ekmenti che ricadono nel sattoalbcro radicato in esso.

I11oclo ilidipetld iltc vclio li f wlc dc li ai1tii 3 .


RB-alberi

Nel Capitolo 13 si mostrato come un albero binario di ricerca di altezza h posi . ere

utilizzato realizzare le operazioni di base su un insieme dinamico come S - i -


per
PREDECESSOR, SUCCESSOR,MINIMUlv1, IViSERT C DELETE-
MAXlM in tempo O h . Perci
U 1,
*
operazioni sono veloci piccola
se l altezza ma se l a1tezza grande allo
dell albero . li ri

a ottenute con una lista concatenata. Gli RB- I -


prestazioni diventano paragonabili quelle
bilanciati di
rappresentano uno dei molti schemi di alberi di ricerca che consem . i
eseguire le operazioni di base degli insiemi dinamici in tempo O lgn nel caso pe .- -

14.1 Propriet degli RB-alberi

Un RB-albero un albero binario di ricerca con in pi un campo binario in ogni nndi . il .


eofore, che essere RaD rosso oppure st. cx nero . Attraverso precise re..., l,. d,
puo
colorazione dei nodi
su qualsiasi cammino dalla radice a una foglia, si ottiene che n . . u
di qualsiasi altro l alNr
cammino di un RB-albero risulti lungo pi del doppio quindi
approssimativamente bilanciato.

Ciascun nodo dell albero contiene i campi color, key, lefi, riglrr e p. Se un figlio o il p

di un nodo non esistono, allora il corrispondente campo vale NIL. Questi vali r
puntatore
sono considerati come a nodi esterni foglie dell albero binario di ricerc i. tn i l
puntatori
interni dell albern mantenuta la normale impostazione basata sulla chi ne.
per i nodi
Un albero binario di ricerca un RB-albero se soddisfa le seguenti propriet RB

1. Ciascun nodo rosso o nero.

2. Ciascuna foglia sii. nera.

3. Se un nodo rosso allora entrambi i t igli inno neri.

4. Ogni can,mino semplice da un nodo,d una foglia sua discendente contiene lo ..t o

numero di nodi neri.

Un esempio di RR-albero tnnstratu nella figura 14.1.

incluso. nd una foglia cl1i lm i


Il numero di nodi neri su un cammino da un nndo.v, non

h n no il n edeiimo numro di notti 1 -


deti. it i dato che tutti i cammini discende iti d l nodo

Si lettnisce lu h-altezza di un RB-albero c in e l i h-ulterza della st raice.

i t iv i RB-alberi risultano casere buoni all ri


Il se ucnte l mmu mostra per r uale gli
ricerca.
RB-alberi 249

Esercizi

di altezza 3 contenente le chiavi


l albero binario di ricerca completo
14.I-I Disegnare
tre diverse colorazioni dei nodi in
le fo lie iz e fornire
1, 2..., 15 . Aeeiuneere
rispettivamente b-altezza uguale a
che i tre risultanti RB-alberi abbiano
modo
45
3 e 4.

rossa. Se la si colora di nero, l albero


Cl che la radice di un RB-albero sia
14.1-2 Si supponga

ancora un RB-albero

Figura 14.1 Un albero RB con i nodi neri in nero e quelli rossi in Ogni rodo iit un
grigio. albero RB un nodo x nd una
semplice lungo da
rosso o nero. ogni nera Mostrare che in un RB-albero il cammino pi
foglia su. i figli di un nodo rosso sono entrambi neri ed ogni cannnino 14.I-3
doppia di del cammini
discendente ha una lunghezza al pi quella
foglia sua
Ogni nodo cor at. eticlrertato con la sua b-altez a i nodi NtL hanno una b-alte a uguale 0. dal nodo.v ad una foglia sua discendente.
a semplice pi corto

interni in un RB-albero con b-altezza


Lemnra 14.1 il pi nuntero di nodi
E 4.1-4 Qual grande possibile

uguale a k il pi numero possibile


Un RB-albero con nodi interni ha, al pi, un altezza di 2 1g n 1. Qual piccolo

il rapporto alto trai nodi interni


un RB-albero con n nodi che realizzi piii
Dimostrazione. Per cosa mostriamo che il sottoalbero radicato in un 14.1-5 Descrivere
prima qualsiasi nodo.s ha il pi ba. i
questo rapporto Quale albero
contiene almeno 2 1 nodi rossi e quelli interni neri. Qual
interni. Dimostriamo questo risultato induzione sull altez-
per
e qual questo rapporto.
za di r. Se l altezza di x 0 allora x deve essere una foglia e chiaramente il sottoalbero rapporto possibile
n.
raicato in x contiene almeno 2 l 2- l 0 nodi interni. Per il passo di induzione si
pu considerare un nodo x che abbia un altezza e sia un nodo interno con due figli.
positiva
Ciascun figlio ha una b-altezza di bh x o bh x l a seconda che il suo colore sia 14.2 Rotazioni
rispettivamente rosso o nero. Dato che l altezza di ciascun figlio di x inferiore all altezza
binari di ricerca impiegano tempo
di x stesso, C TREE-DELETE sugli alberi
si pu applicare l ipotesi induttiva concludere che anio fielio haQ aalmeno
meno Le operazioni TREE-INSERT
. .
per
l .
gbh x - 1 nodi interni.Quindi il sottoalbero radicato in x contiene almeno 2 1
pb4 r - I -1 l ghhlrl
fl l 1 nodi interni, dimostrando cosi il risultato che si voleva ottenere.
caebiare il colore a qualche
ripristinare necessario
Per completare la dimostrazione 14.1. Per queste propriet
del lemma, sia h l altezza dell albero. Per la propriet 3 paragrafo
e modificare la struttura dei puntatori.
almeno meth nodi su qualsiasi cammino semplice nodo dell albero
dalla radice ad una foglia, esclusa Ia radice.
il nome di rotazione
devono essere neri. Di conseguenza che catgbia la struttura dei puntatori prende
la b-altezza della radice deve essere almeno h/2 cui L operazione
per l ordiisansento delle chiarii
di ricerca che non modit ca
un operazione locale deil albero
n 2 - l. i due tipi a
La figura 14. mostra
secondo la visite in ordine simmetricu.
u un nodo.i. -.i
P ortando si esegue una rotazione sinistra
l I a sinistra della disuguaglianza ed applicando il logaritmo nd entrambi i lati ii sinistra e quella destra. Quando
rotazione
ottiene Ig n 1 h/2 o h 2 Ig n l .

Rin r-Ru u BT, y

Una conseguenza immediata di questo lemma che le operazioni degli insiemi dinan1ic i. /
7
Se ecv, PREDECESSOR, SUCCESSOR, IVllNlMVE1 C MAXIMUM es ere realizzate
possnnn su un RR- Roane T.x
Lr
albero ottenendo tempi di esecuzione O lgn , dato che su un comune P v
albero di ricerca di P
-- . , ercr .ir,ne Rica -R n.,m T,
-i, u... ,- ... . L o
.,
, . , ,lt, .lie i slrlla d ,. -..
, ,- , , ... fl,nra ioHe
.a.,
rr

RB-albero di in ut, s

..., ..c ..r,rulr I imita ii r,r lire stlrls,ic..


. , i,,
e.c r

anche queste due ultime operazioni essere eseguite su un RB-alhero


posiann in tempo O Igii .
I hi i i y
yn el
250 Capitolo 14 RB-alberi 251

assume che il figlio destro non sia sn.. La rotazione sinistra fa perno sull arco dar ag. Essa
pone y come nuova radice del sottoalbero, x come figlio sinistro di y ed il figlio sinistro di y
come nuovo figlio destro di x.

La procedura Lcm-RovwvE assume che right x w zn..

LEm-Ro ve T, r

l y m right x t Inizializzazione di y.
LEpr. Rotore T, x
2 right x c left y t Rotazione del sottoalbero sinistro di y

t nel sottoalbero destro di x.

3 ifleft y wwi.

4 then p lefr y m x

5 pbl px t Collegamento del di.v ad y.


padre
6 if p i- et.

7 then roor T y

8 else if x lefr p x

9 then lefi p .r y
10 else rigltr p v y
I 1 left y x la stessa seepre i-a di alr ri clelle chiavi.
v Spostamento di x alla sinistra di y. moilijic atri proelucrwo

12 px mg

La figura 14. illustra il funzionamento deIla procedura LEw-RotwtE. Il codice per la 14.3 Inserzione
procedura Ricm-Romance simile. Entrambe le procedure sono eseguite in tempo 01 e se
operano solo sui puntatori e lasciano inalterati tutti altri campi di un nodo. tempn O lp .
gli RB-alLiero di n nodi essere eseguita in un
L inserzione di un nodo in un puo

il nodo inserito si colora di rosso. Per


Esercizi se fosse un comune albero binario di ricerc i, poi

La maggior del codice della


moditicato ricolorando i nodi ed eseguendo le rotazioni. parte
14.2-1 Disegnare 1 RB-albero che risulta dopn che stata eseguita la procedura TREE- durante la fase di
RB-1YSERT serve i v ri casi che si possono presentare
INSERT con chiave 36 sull albero procedura per gestire
della figura 14. I. Se si colora di rosso il rindo
inserito, risistemazione dell alber6.
si ottiene ancora un RB-albero E se lo si colora di nero

RB IYSERT T
14.2-2 Scrivere la Rica -Rotwl e.
pseudocodice per1u procedura
1 TRcv.-I sw r T,.i-

COIOI X RED

14.2-3 Siano a. b e c nodi mbitrari rispettivamente dei sottoalberi a, pe ydell albero di


3 ivhile x W r or T e cerle rp .v REt
sinistra della figura 14.2. Come cambiano le profondit di a. l e r quando eseguita
la rotazione destra sul nodo do itp .i-l lr filg fg .i
y d ila fi ura

5 then y m rightp Q s jj

14.2-4 Mostrare che albero di n nndi essere trasform.ito 6 if color yf zn


qualsiasi puo in un qualsiasi altro
lbero di n nodi t caco l
uinn lo On rotarioni. Siiggeriitieirro mostrare che sono 7 t/1 A CY lc l
C Bl. tCK
prima f

i
f I

sufficienti al pi n 1 rotazioni destre trastormare albero in unalheni v. D I


per qualsiasi r oliir y - at,s C 1S

binario in cui o ni no lu ha i lu un liglio destro . t C lYiO I


9 t IC l
Iplj lXll I - Ill

1 C liO l
l ll
i II i
RB-alberi 253

252 Capitolo 14

Il else if .v right p x

11 then x m P CQSD 2
p .r

l Lzn-RotAvE T, x i caso 2
a
14 color p x J - B CIACK t caso3
V

15 co or p p x M RED t caso 3

P CSSO 3 Caso I
16 Rtam-Rov tE T, p px
right left
17 else analogo al ramo then con e scambiati

18 color roor Tj - 8LACK

Il codice di RB-INSERT meno complesso di quanto sembri sar esaminato suddividendolo


b
in tre Per cosa si devono determinare quali violazioni alle propriet
parti principali. prima
de11 RB-albero vengono apportate dopo che il nodo stato inserito e colorato di rosso nelle

linee 1-2. In secondo luogo si esaminer il risultato globale del ciclo while nelle linee 3-17.
CBSO -

Infine, come terzo si spiegheranno i tre casi in cui suddiviso il ciclo del hile e si
punto,
vedr come si comportano raggiungere il loro obiettivo. La figura 14.4 mostra il
per
comportamento della procedura RB-IwsERv su di un esempio.

sono le di un RB-albero che essere violate nelle linee J-2 La


Quali propriet possono
l e la prpriet 2 continuano ad essere soddisfatte dato che il nuovo nodo inseritn
propriet
c
rosso e ha figli wi. Anche la propriet 4, che dice che il numero di nodi neri sempre lo stesso

cammino da un dato nodo, soddisfatta in quanto il nodo x sostituicce un nodo


per qualsiasi
zar. nero , viene colorato di rosso e ha figli r n.. Perci l unica propriet che potrebbe essere Caso 3

violata la propriet 3, che dice che un nodo rosso non avere figli rossi
Q
pu pi precisamente
violata se il padre di x rosso, dato che x stesso viene colorato di rosso nella
questa propriet
linea 2. La figura 14.4 a mostra un esempio di tale violazione quando si inserisce il nodo.i.
risalire
Lo scopo del ciclo whi1e nelle linee 3-17 quello di far nell albero questa
violazione, mentre la prppriet 4 rimane sempre valida. Infatti, all inizio di ciascuna d

iterazione, z ad un nodo rosso con padre rosso l unica violazione alle propriet
punta
dell albero. Per ogni iterazione ci sono due possibili uscite il puntatore x risale l albero

oppure viene eseguita qualche rotazione ed il ciclo termina.


,.... - , - -. , ochdy, lo ic ili.r, ross , si.ai. -,
3.
In realt vi sono sei casi da considerare nel ciclo while, ma tre sono simmetrici agli altri tre sono etr r m

a seconda che il padre di x, p x , sia il figlio sinistro oppure i figlio destro del nonno di .s-.

ppi , che individuato nella linea 4. Nella procedura stato fornito solo il codice del caio
. - -, i in C. A e weslci nui r i r,
in cui risulti figlio sinistro. Si anche fatta un ipotesi di lavoro importante stabilendo che .
pr iene esegui a r . .

la radice sia sempre nera propriet che viene garantita dalla 1inea 18 ogni i oltre che il

procedimento di inserzione termina per cui px non la radice e quindi p p .r esiste. ohe i rn ctlberii RB.

zio
Il caso 1 si distingue dai casi 2 e 3 per il colore del tratello del padre di x, detto . Nella

linea ad y assegnato il puntatore riglv p y x allo zio di .r, nella linea 6 eseguito un

controllo per cui se y rosso si esegue il caso l altrimenti il controllo passo si casi 2 e 3. In

ogni caso il nonnn di.v, ppi . llCfO 111fatti il padre px rosso e la propriet .i violata

solo tra.v e p .v .

La situazione del caso 1 linee 7-10 mostrata nella tigura 145. Il c isn l eseguito quando
l
sia p r che sono rossi. Datn che ppv J nero, si colorano v e y di nern e p p sj J di rosso, LlllllOLIOI1 f
l.
.. . I, loviudi.l .
I .. .
risolvendo cos il problema che.a e px sotio masi adiacenti e nlanienend la pri prii. 4, m r rc . .. ,
, -, - cl ihbiatlu etTcttuare al, . .i
a questo essere violata I 3 se il padre di i rosio c uindi ii e .
punto potrebbe propriet r fg s c te ri1
..
-
..
-,
I,l ., l l 1l3l-lt.l.,l 4, 10pi ill

d
.,
una r uzioi.. c destra c leI DfC iCl- ,.l
ripete il ciclo ivhile assegnando ed x il valore pp r .
4
camhi,n
C... enti di colore . dei nodi .

l
R8w1Sesi

Capimlo 14

Esercizi

nuovo.v C 5 i ia
il colore rosso al nuovo nodo in.-- r.
143-1 Nella linea 2 di RB-IRSERT si assegna
i ii i - P-r-h-
a A D y nero la propriet3 non potrebbe essere
che assegnando adx il colore

allora non si scelto il colore nero per x


a B x a 8

y Y
alla radice dell zl . Q--1
linea IS di RB-Issen si assegna il colore nero
143-2 NelIa
il vantaggio

B inserzioni successive delle ischi- - 1-- .


b Mostrare RB-alberi che risultano dalle
143-3 gli

x A y E ,O, 3 1. 12, 19, S in un RB-albero inizialmente vuoto.

a p
a p .- --
la b-altezza di ciascuno dei sottoalberi u. p, y, 5. e nelle
149-4 Si supponga che - r
Figura 14.5 ll caso 1 de1la RB-IisERv. La 3 violata dato che.v e suo nodo in ogni figura con la sua t - l .-
pn cedura propriet padre p .r e 14.6 sia k. Etichettare ciascun
la trastormazione in . ..
verificare che sia mantenuta la propriet 4 dopo

-.-.. . ..
costruito con insnimenti cucce,,i
143-5 Si consideri un RB-albero di n nodi
ha almeno un. .. - .-
esse RB-Ivsezv. Mostrare che se n 1 alloro l albero
3 pu av enire .wlco rn il nno o .v, che rosso, e suo se anclt ines . procedura
propriet pa -e

-----
etficientemente RB-Issavate la mppreien i-
143-6 Descrivere come realizzare

che l esecuzione termina in quanto non ci sono due nodi rossi adiacenti. Il corpo del while non memoria il puntatore al padre.
pi RB-alberi prevede per
non ripetuto un altra volta in quanto ormai px tiero.

Qual il tempo di esecuzione della procedura RB-It sen Dato che l altezza di un RB-

albero di n nodi O lgn , la chiamata TREE-Issai costa un tempo O lgn . Il ciclo ehil i 14.4 Cancellazione
ripetuto solo se si esegue il caso 1 con il conseguente spostamento verso la radice del
ai -* ni4
x. Per cui il numero totale i volte che il ciclo while essere ripet t 01 . RB-albero di n nodi, la cancellazione
puntatore pu Come le altre operaziani di base su un
per
-ItSERT,impiega 1e -i
Quin i un tempo totale di O lgn . Vale la pena osservare che non si di un nodo da un RB-albero . perii.
impiega un tempo 01 La cancelhzione
gn .
eseguono pi di due rotazioni in quanto se si esegue il czsg 2 o il caso 3 il ciclo termina. di un nodo.
complicata dell inserimento
pi
im e -
dei caii limite si usa una sentinella
Per semplificare nel endice la gestione
ite. .i i il P
T. nilfT un oggertn con gli
veda il I l.2 . Per un RB-albero
ivi si paragrafo
mentre a,.li. l... . t., Pi
vulore del suo canspo cofnr st,icK
di un comune nndo dell albero. Il
CBSO 3 nari.t .-.
Nel RB-albero tutti i punt
right e I e snno assegnati valvri arbitrari.
p. left.

cnn alla sentinella i iIfT .


sostituiti puntatori
ui, rom-t . r
un h lio vit. di un n dna come
Si usano le sentinelle in mndo da ge, tire
a p y

as,.c.-n.i .-, . ..
Figun 14.6 . 1 asi . 2 e. 3 della c proc lu
rr ccdura, RB-I,
B-lvst-,ta. . Conle
C nel caso 1, lag rr,prietit 3 c ,.iolata si r nel dovri, fare attenzi ne ud
g, si deve manipol..u e un nncto t,,-lio di,,i
quando
caso 2 siri nel caso 3 iir c vanto.
a i nil T .
Tu t.-Dt i, n i p--.. -
r RB-Dn r ti . i una s mp1 ie na li t .a della proceclura
una rota. ione simstra, che rei La procedura

i li li . ... ...
t l/ lllll I IKi
Csc Ull c l FO
liti ll ll i Ville l l C J
ll P Cll ll I ll COlll ll C
l pllll

nsentn delle RB.


propriet
RB-alberi M 7
256 Capitolo J4

c casi
RB-Da.aiE 7 LEFT-ROTATE T, pr
T,
c caso
nil T o righr - w e- right p x
I if lefi nil T 8

-- e color right v Bl.ACK


if color left iv st.. ck
2 then y 9
I C50
then co or ia - Reo
3 else y m TREE SLICCESSOR z 10
e case
4 if lefifi c nil TJ 11 Z C- pX

BLACK
then r m lefi y else if color right tv

E- BLACK
c caso
6 else tben color 1eft ivj
x c- right i 13
r caso -
color v m Reo
pt-al - bl 14

w t caso
8 if p y RIGHT-ROTATE T,
nil T 15

riglitfy x
P. CQSc
9 u -
then root TJ - x 16
t CBCa
10 else color i - color pl. ll
if y left p vll 17
I CASO -
M BLACK
Il then cfr pv - x 18 COIOI p X

I CQSO-
color ar - st.sci
12 else rigkrlpyl x 19 eig n

D CQ50 -
13 ifyc 20
LEFT-ROTATE T. t

l C 15c -
14 then I-e D 21 x c roor TJ
right left
2 ramo then con e scambiati
1 Si copiano anche i dati satellite di y. else analogo al

l6 if color y BLACK 3 COIOI- Y C BLeXCk

17 then RB-DEt.EtE-Ftvt v T..v


la sua rimozione t . .. he
RB-DELETE C nero, allora
18 return Se il nodo y estratto dalla procedura
v .. ult
un nodo nero in meno. Quindi la propriet-
qualsiasi cammino che contenesse y ha ora
ovviare a questo coniie-. nd
violata da qualsiasi antenato di y nell albero. Si pu problema
Vi sono
son tre differenze tra le procedure -
TzEE-DEI.Ev e e RB-D- ecmE. . P er cosa, tutti i
prima extra di nodi . ri di
nero cio se si addiziona 1 al numero
riferimenti a vie - che il nodo.v abbia un colore
in TREE-DELETE .
50110 SIQt1 i sostitultl con nferlmelltl alla Sentinella ll l T in u . ni d
soddisfatta. Quando si estrae
che contiene x, allora la propriet
RB -DeLeTE. In secondo luogo, il controllo verificare se x mt. nella linea 7 di TRAE-DcLt. E qualsiasi cammino
per che facendo cosi u. ni d
la sua stessa colorazione sul tiglio il problema per
stato rimosso e l assegnamento eseguito y nero, si forza
r pt incondizionatamente nella linea 7 la propri,-.- l.
-doppiamente di nero, violando in questo modo
B DELETE. s potrebbe essere colorato
l Per cui, se i la sentinella nil T, il suo al padre si riferisce al padre
puntatore ivi el
di ripristinare la prnprieth 1. Lo
e nodo ha il compito
y estratto. La terza differenza la chiamata alla procedura RB-DzcEvE-Fixuv che La procedura
RB-Dccvve-Fixuv
verso la radice de11 - ii er
eseguita nella linea 1-22 di spostare il colore nero di troppo
17 se y nero. Se y r osso, le RB rimangono valide anche ciclo ivhile nelle linee
propriet l.
colorato di nero nella linea 23 pni
uan ooilnodo,
il nodo estratto, dato che in questo - ad un nodo rosso, nel qual caso
quan caso nessuna b-alt ezzamo d fi tcatanell albero finch 1 .r punta rimossa
opp -
e non ci sono nodi rossi adiacenti. caso la colorazione nera in pi semp1icemente
Il nodo x passato a RB-D F alla radice. nel qual
unico r io di y prima che eseguite rotazioni e ricolorazioni appropriate.
y fosse estratto se y aveva un figlio diverso da iit.. o ure la possono
es ere
sentinellanil Tjseynonavevafigli.Nell ultim diverso dalla radice e con un ..fiore
c . . sempre ad un nodo nero,
g namento incondizionato nella Dentro il ciclo while,.r punta
inea 7 assicura che il p adre di.i.r s
sia adesso .. figlio sinistro o destro di suo pair ll
il nodo che erara il
i a
ad u id Nella linea 2 si verifica se.v sic un
precedentemente nero extra.
il codice il . . .- in iii
nel caso chex fosse unn no
nodo o interno
i, con chiave. ... sia nel caso che fosse laa sentinella
sentine nil T il caso in cui,v iu un tiglio sinistro per
J. Abbiamo toniito il codice per
.- . 2- simmetrico. Si nnntiehe un put l.H,
Si pu adesso esaminare come la roce r ur - E E- E-F xv - ripristini , fosse figi io destro- cnme riportatn nella1inea
p oc . proprie
e l albero di ricerca.
che n i l1cl i c p
neri nel canuisinii da alla foglia, ii
altrimenti il numero di nodi y v
RB-DELETE Fl iUP T, x del nu nero nel cammino da p .v a.v.
piccolo
nella fr ura 14.7. Prima di cS ll11111-HA
I while.v w root T e cofr r r m. cv. I C uattro iaii segn lati net codice sono i latrati

2 do if x lefi g s

then w righrfp xj

if colorjiv vcn

5 then- cr lr r v oL, cv L lliO I


111 Ll 1.1l 11ll lllCI J i nvi1i
LlChiO
6 rolor p m er n riCorC1i che ii pu ni i torr v i ani gtAgi ll tl C l VL tlCI li EX1I l . All
f.i- Clil l
9
RB-alberi
Capirolo 14

violare nes.una i.lie


e quindi eseguire una rotazione sinistra su p v j senza
i colori di ir e p r
figli di w, adesso nero per u .i
Caso l Il nuovo fratello di x, uno dei
degli RB-alberi.
propriet
il caso l in uno dei casi 2, 3 o 4.
trasformato
a x in ba. e al i liire
il nodo ir nero essi si distingunno
I casi 2, 3 e 4 si manifestano quando
a e figun l- , ibi
e 10-11 della RB-DB.EIe-Fnuv
dei figli di n. Nel caso 2 linee procedura
colore nero sia ii h
che anche w nero, si toglie un
S e entrambi i figli di w sono neri. Dato
y a Y neri a
rosso ed aggiungendo un colore
x con un solo colore nero, w di colore
a x, lasciando
come nuovo x. Si i . .- i
del ciclo while con pv
Successivamente si ripete l esecuzione -he
CASO 2 px. nodo x roseo. mt
B c dal caso I. il colore c del nuovo
--- Il
nu che se si arriva al caso 2 passando
si torna a controllare la condizii ne
era rosso il ciclo quindi termina quando
b x il p v originario

del while.
a a il suo figlio ini. zi
si verifica ir nero,
Il caso 3 13-16 e figura 14.7 c quancto
linee - ini. tro
i colori tra sv ed i suo fi lio
y 5 z figlio destro nero. Si possono scambiare
J rosso ed il suo
alcuna delle de li RB-
destra su v senza violare propriet
left iv e poi eseguire una rotazione
un figlio destro rosso per ui i
ii di.r adesso un nodo nero con
Caso 3 alberi. Il nuovo fratello

trasformato il caso 3 nel caso 4.


-lie
s il fratello w di.z nero ed 1 ri
c 14.7 d si verihca quando
Il caso 4 linee 17-21 e figura
una rotazion . iv i.-tra ..u
scambi di colori ed eseguendo
a destro di n rosso. Facendo alcuni
p delle
nodo.v senza che sia violata nes.u. .a
il colore nero di troppo del
si pu eliminare
px, sor,e iu
Y del alla radice dell albero per
RB. L assegnamento ad .i puntatore
propriet del ivhile.
controllo della condizione
terminare il ciclo while al successivo
di un RB-alb.ri di i nitidi
di RB-DecHe Dato che l altezza
il tempo di esecuzione
Qual di Oilg. l.
la chiamata a RB-DzLv e-Fisi .
della senza
O lpi , il costo totale procedura,
d x terminare la eduu dopo
RB-DEcere-Fnev i casi I, 3 e 4 fanno pro
Dentro la procedura
e al pi tre rotazioni. Il c . o
a p costante di cambiamenti di colorazione
l esecuzione di un numero
del ciclo il puntatore
while, spostanda
il quale si potrebbe ripetere l esecuzione
b e 2 l unico per RB-
e senza rotazioni. Quindi la procedura
l alto al pi O lgn volte
x nell albero verso per
e anche il temp di
ed esegue al pi tre rotazioni,
F,eur..
Figura 14.7 Icasidelcicloirhiledellaproce h raRB-DECEDE-F - - ixt r. i .1 no d ii,tnere1tosonoqaellineri. impiega un tempo O lp
q DELETE-FIXUP
.
n chiari sono che . essere
. sia c
di colvrevreneronero RB-Dzt.vE O lp .
quelligrigiscurisoirninodlrosnsie q, trelli grigi qs elli possiamo esecuzione complessivo della procedura
c e rosso e sono rap resenlari da c e c . Le lettere a r appresentano sottoalberi arbirrari. In
p...

ha m cok n v n
o , u mo x,
ureico , Esercizi
ivne B A
pi. caso che implica la ripeti del ciclo il caso 2. a 11 1 fO
o scant ialt o il colore tro i dell e. eruzione
r dice di un RB-albero nero prima
Mostrare che. se il colnre della
14.4-1
allora nero anche dopo.
di RB-Decevz.
, -, -i,
termi,ra in il co1 r c rosso. c II .. . c. i ns,c i
quctnto
n
e D ed eseguendo una rota ione destra. d Nel cas 4, il colore er . I /
ri ulta dalle succe iive in. erzio-
si trovato l RB-albero che
PlllllO I . . .. FQ l011l d L S glCCllClO IHlC1 P Pt l.,lOI1C Sllil sll ll
l4.4-2 Nell Esercizio 143-3
vuoto. alo, trar ora
19. 8 ics un albero inizialmente
scii.a iolare alcuna delle propriet degli alberi RB . quimli il cicfc terntiita. ni delle. chi ivi 41. 38. 3 1, l 2,
delle chiavi nell ordine
dalle c trvellaziuni successive
RB- alberi che risultano
gli
8. 12. 19. 31. 38. 41.
neridallaradiceuciascunodei sottnalberi y,6. ee 2 h opo la tras Tnrnnizione.

esaminare o modi tic ire


RB-Di .u .tr -F x v si potrebbe
14.4-3 In quali lince della procedura
, a ore i numero di nodi neri dalla ractice
l, sentinella il T
ad a i 2 count c , sia prima che dopo la trasformazione. In m do analogo. si pristino
veriticare li altri caii l 43-5 .
Esercizio
iii. el un altn per
r rr biondo una sentinella per
il coclice di Li rr-R
144-4 Sempliiicare

il all ragliai.
e e avere i ig i neri, si poiana ic mhi ir mantenere puntatoiv

I
RB-alberi 26I

14.4-5 Per ciascuno dei casi della figura 14.7, fornire il numero di nodi neri dalla radice

a ciascuno dei sottoalberi u, p,, j e verificare che ciascun numero dopo la

trasformazione rimane inalterato. Quando un nodo ha come colore c o c , usare nei

calcoli la notazione count c o count c .

. -
14.4- S
Si suppon a che un nodo x sia inserito con la pmcedura RB-IwsERv e quindi sia

subito cancellato con RB-Da.eTE. L albero risultante uguale a quello iniziale

Giustificare la risposta.

b
Problemi
10. L albero binario te
coi chiavi 2, 3. 4, 7, 8, 1 perSistll
148 a Un albero binario di ricerca
Figura
14.1 Insiemi dinamici persistenti
dni i odi raggiungibili dalla
r e la versioi e composta
Durante ri tmo, talvolta si ha la necessit di memorizzare le versioni ragg i mg ibili dal1a radice precedenre
la vita di un al passate dai nodi
si inserisce la chiave 5.
radice r. f nodi sn ri soi o aggiunti quando
di un insieme dinamico che viene aggiornato. Un tale insieme chiamato te. U grigi
persistei
o o per realizzare un insieme persistente consiste nel ricopiare tutto l insieme ogni volta

che modificato, ma approccio pu rallentare molto l esecuzione del programma ed


questo di giun-ione su RB-alberi
14-2 Opera ione join
anche richiedere troppo spazio. Talvolta si puo fare di meglio. che ogni
S, e S, ed un elemento.v tale per
di join due insiemi dinamici
L operazione prende
Si consideri un insieme persistente S con le operazioni Ir sERt. De.EvE e Sz RcH realizzato restituisc un insieme 5 S v .v
I cg v, I-ey vj I cg x j. Essa
X C S, e.t, e S,. si abbia
di questa operazione au RB-alberi.
In questo si esamina la realizzazinne
u 5,. problema
separata per ogni versione dell insieme. Per inserire la chiave nell insieme, si crea un nunvo come
sua b-altezza nel campo bh Tj. Spiegare
un RB-albero T, si memorizza la
nodo con chiave 5. nodo diventa il figlio sinistro di un nuocio nodo con chiave 7. a. Dato
Questo e RB-DEt.ETE senza richiedere
campo essere mantenuto da RB-Iesina
il nodo con chiave 7 gi esiste e non essere modificato. Analogamente, il nuovo questo possa
poich pu asintotico. Mostnre che
e senza aumentare il tempo di esecuzione
ulteriore memoria
la b-altezza di ciascun nodo in tempo
si discende l a1bero T, si pu determinare
il nodo con chiave 10 che esiste. Il nuovo nodo con chiave 8 diventa a sua volta il figlio mentre
gi
01 ogni nodo visitato.
destro di una nuoia radice r con chiave 4 il cui figlio sinistro il nodo con chiave gi per
che distrugge T e T, restituendo un RB-
realizzare l operaziane RB-Joti T,, x, T
esistente. Quindi si ricopia solo una parte dell albero, condividendo alcuni nodi che erano Si desidera
Sia n il numero totale di nodi in T, e T,.
nell albero di partenza, come mostrato nella figura 14.8 b . Si assuma che ciascun albero T TA u x u T,.
presenti
Descrivere un algoritmo con
nodo abbia i campi le , left e right ma non il campo il padre. veda anche l Esercizio di che bh T, bh T, .
per Si b. Si assuma senza perdere eneralit
-6. hanno una b-altezza uguale a
14. che trovi in T,, fra i nodi che
tempo di esecuzione O lgri
la chiave
a. Per un generico albero binario persistente di ricerca, identificare i nodi che devono essere bh T , il nodo y nero con piii gr nde.
T essere sostituito da
cambiati inserire una chiave k o cancellare un nodo radicato in Descrivere conce possa
per y. c. Sia T il sottoalbero y.
le propriet di un albero binario di ricerca.
b. Scrivere una PERSISTENT-TREE-INSERT che, dati un albero T ed una v T, in un tempo Ol senra violare
procedura persistente T u r
l. 2 e 4 degli RB-alberi siano
chiave I- da inserire, restituisce un nuovo albero persistente oche rappresenta il risultatn da assegnare ad .i perchc le propriet
d. Qual il colore
v lere la propriet 3 in un tempo 0 lgn .
de11 inserzione di k in T. Descrivere come es.,ere f,t u
mantenute possa
l
e. See l altezza di un albero binario . di ricer c a T ,,qua
I, l isonoi tempoelospazio di esecuzione di 1 8-Jow O lp .
persistente e. Spiegare il tempo
perch
impiegati dalla procedura PcRstsl-E 1--TzrE-Ir,se t L o spazio impiegato proporzionale
al numero di nuovi nodi inseriti.

d. Si supponga di aver incluso in ciascun nodo anche . I


il camp d q uesto can i
Note al capitolo
- . -
sarebberonecessarieulterioriri COpl Q tUI C ClQ pel tC Cll P ER S I.ST ENT-- T REE-I- N .SER1 . Provare
c ree cheie
1tl gUCSlO CBSQ PERSISTEI-TREE INSERT richiederebbe un t m o d . Q k d ove i dovuta a Adel son-Vel 4ii e L. ndis f . che
di un, lhcro di ricerca
L idea del bil usciamcnto alberi
il numero dei nodi nell albero. chi lo ati A V L Ygli
un i cl lise eli alberi di ricc va bi limai ili poi
cent akron nel 1962
pre richieste
e. Mostrare C empiere
l uso di RB-alberi er ar aiitire che o hi inscrzi ne u can .ill iziiinc richicd.i nl inlillutii .illr ivers l li Tolaziolti. poiiun
liberi AVL il hildncianlento
tempo e spazio pari a O lgn . nel caso peggiore.
.ilhcri -3 . da 3. E. Hopcrott
ricercu., hi,im,. li . tu prc.,ci tat
n nodi. Un altr. classe di,rlheri di
262 Capirolo 14

non pubblicato nel 1970. In un a 2- 3, il bilanciamento mantenuto con la mani I -


zione dei gradi dei nodi dell albero. . Ad una generalizzazione d al 1b -
2-3,
ayer e cCreight 18 e chiamata
B-alberi ,
dedicato il Capitolo 19. Estensione di strutture di dati
B-
Gli RB-alb eri furono inventati da Bayer 17 con il nome di 1b b
ui as e e gewick 93 studiarono estesamente le loro ed introdussero la
propriet
convenzione rosso/nero.

Vi sono molte altre varianti de i alberi binari bilanciati forse i pi affascinanti n i sono g i
gli
alberi auto-aogiustanti .
splay presentati da Sleator e Tarjan 177 , che sono U
e ag iata di questo tipo di alberi data da Tarjan 188 . Gl 1b
ngono il bilanciamento senza alcuna esplicita condizione di bilanciamento come il
, s *
colore.
1 . D altra le o p erazioni a -
parte, p laay che includono rotazioni sono eseguite nell al-
bero tutte le volte che si fa un accesso all albero. Il costo ammortizzato veda il Capitolo
si che strutture i J. ti
non richiede niente di pi
18 di ciascuna operazione su un aibero con n nodi Vi sono molti casi in cui la programmazione
O lgn . i i - ano
manuale , tabelle hash o alberi binari. ma
da come esempio liste bidirezionali,
per
di dati originali. In que. te
altri casi in cui si deve ricorrere a strutture pi
anche molti
struttura di dati per intero
sempre necessario una nuova
circostanze non sar progettare
dati classica agiungendovi ult- rieri
estendere una struttura di
spesso sar sufficiente
che di ott i ere
e quindi definire su di essa le nuove operazinni permetteranno
informazioni
di dati. tut , i,.
dall applicazione. L estensione di una struttura
il comportamento richiesto
aggiunte dovranno e ere
un operazione semplice. dato che le informazioni
non sempre
corrispondente strutl r i di
corretto dalle operazioni della
mantenute ed aggiornate in modo

dati di base.
sono costruite a partire i
due strutture di dati che
In questo capitolo si discuteranno
struttura di dati che essere utilizz t
Il paragrafo 15.1 descrive una puo
struttura a RB-albero.
si potrh determini u
insieme dinamico e mediante la quale
le operazioni di selezione su un
per
di un dato elemento nell ordin.i . n
velncemente l i-esimo elemento pi piccolo o il rangn
di estensione di una strut tur
Il paragrafo 15.2 il processo
totale dell insieme. generalizza r.ito
l estensione di RB-alberi. Nel p.ir.
dati e presenta un teorema che potr semplificare
struttura di dati la,.e.,ti, n
usato come supporto al progetto di una per
15.3 questo teorenm
temponli. Con un .1
di intervalli, come esempio intervalli
di un insieme dinamico per
velocemente un
intervallo di tempo, sar determinare
struttura di dati. dato un certo possibile

intervallo dell insieme che gli si sovrappone.

15.1 Selezione su un insieme dinamico

in I i-e, in o
di selezione su un insieme particolare
Nel Capitolo l 0 si introdotto il concettn
n. . semplicemente. l clcmci
n e ementi. dove i c l, 2...,.
elemento di un insieme di

ii vedr i A
costi tempo On. In questo paragrafo
tale elemento su un insieme non ordinato

il rango di un cle,ll ti ai
nello atei , modo determinare
Si vedrh.,mche come sia possibile
in tempo Ol ill.
Ii su. nell insiemc ordinato
posizinne
vieni di i li /i
di tl ili che annuente per
15.1 c moitr ta un i itruttur
Nella figura
di strutture di dati 25
Estensione
264 Capitolo 15

Questo campo contiene il numero dei nodi interni del sottoalbero radicato in x x incluso .
cio la dimensione del sottoalbero. Definendo si-e Ntt. 0, si ha la seguente identit.

si-e x si-e lefr x si-e right x 1.

Per gestire correttamente i casi limite per il valore un., una realizzazione effettiva potrebbe
verificare esplicitamente se il nodo argomento zn. tutte le volte che si accede al campo si e
o pi semplicemente, come gi visto nel paragrafo 14.4, usare una sentinella il T si
per e
rappresentare n., ponendo si-e nil T 0.

seno i nodi rossi menrre


un albero RB esteso. 1 nodi grigi
15.1 Un albero di scie ione, che
Figura c Ire
nodo x Ira n campo si e r
Ricerca di un elemento con un dato rango neri. Oltre agli asuali campi, ciasci n
i nodi scuri sono quelli
nel sorroalbero radicato iii x
rappresenta i1 numero di nodi presenti

Prima di mostrare come l informazione sulla dimensione essere durante le


possa gestita chiave 41 , il suo
sottoalbero sinistro del nodo con
operazioni di inserzione e cancellazione, si esamineranno 41 e i 4. Dato che la dimensione del
le realizzazioni di due algoritmi di
elemento del
cui il nodo con rango 4 il quarto pi piccolo
selezione che utilizzano informazione aggiunta. Cominceremo analizzando un ope- rango nel sottoalbero 6, per
questa 30 ed il
ricorsiva,.v il nodo con chiave
razione di ricerca di un elemento sinistro del nodo 41. Dopo la chiamata
dato il suo rango. La procedura OS-SELECT x, i restituisce sottoalbero
chiamata ricnrsiva. per trovare
2. Quindi si effettua una nuova
il puntatore al nodo che contiene la i-esima chiave nel sottoalbero radicato n .. suo rango nel suo sottoalbero
pi piccoIa nodo con chiave 38.
nel sottoalbero radicato nel
il secondo 4 2 2 elemento pi piccolo.
significa che nle nodo h
sinistro ha dimensione 1 e ci
operazioni. Per trovare la i-esima chiave in un albero di selezione T si richiamer Si trova ora che il sua sottoalbero
pi piccola restituisce i1
Quindi la procedura
la procedura con OS-SELECT l OOE T , i. 2 ed perci il secondo elemento pi piccolo.
rango
al nodo con chiave 38.
puntatore
al all ahezz
OS-SELECT X. i della OS-SeLecv , pi. proporzionale
Il tempo complessivo procedura
livello. Dato che l altezza di
ricorsiva si scende di un
I r c si-e teft s l dell albero, dato che ad ogni chiansata
dove n il numero dei nodi.
anche di un albero di selezione O lgn ,
2 ifi r un RB-albero e quindi
dinamico di n elementi O lgnl.
di OS-SecEcr u un insieme
si ha che il tempo di esecuzione
3 then return x

4 elseif ir
del rango di un elemento
Determinazione
5 then return OS-SEt.Err left x , i

6 else return OS-SELECT rightjx , i r OS-R v restituisie


di un albero di selezione T, la procedura
Dato il puntatore ad un nodo.v
simmetrica di T.
lineare determinato con una visita
L idea chiave la posizione di r nell ordinamento
della procedura OS-SEl.ecr simile a quella degli algoritmi di selezione Y1Stl
nel Capitolo 10 il valore di sizejlefr x il numero di nodi che s nella visite
precedono
OS-R.ir T, .v
simmetrica del sottoalbero radicato in x. si -e lei x 1 rappresenta il rango di r
Quindi,
all interno del sottoalbero radicato in x. 1 r m si e left r I

Nella linea I di OS-S azcr si calcola r, il rango di x all interno del sottoalbero radicato in VX
-,-
s sei rallorailno i nodo.v .v proprio l i-e imo elemento pi piccolo per cui i ella linea 3 sii 3 while y
c root Tj

restituisce x. Se i r allora l i esimo elemento nel sottoalbero sinistro di.v ed


pi piccolo 4 do if y rightQ y
ecco perci la chiamata ricorsiva della linea 5 se invece i r, allora l i-esimo elemento pi r e- r si. e efl J trlll
then

6 i C pX
del sottoalberob ro ra
radicato - . -
ppiccolo . in.v.- corrisponde all i r -esimo elemento c dele 7 return r
pi piccolo
sottoalbero radicato in ri lit .v . Questo elemet to i determinato in modo ricorsivo nel line.,i li he
6 della procedur .

Perverificarecomeo er l a procedura OS-Su. cr si consideri l i ricerca di l iliciaiietleiinui


elemento pi piccolo nell albero di cleii 11C lll ll Jk tlella l igura l . I. Si cominci con.v
come radice, la cui chiave 26, e con i l 7. Dato che la dimensione del sotto ilhero iiniS11
Estensione di strutture di dari

2 Capitolo 15

RIGHT-ROTATE T, y
iterazione
iter del ciclo while si considera il sottoalbero r ad icato in p yj. j. Si i contato il numero l9
19
i no i che precedonox nella visita simmetrica del sottoalbero radicato n . d 4
X 12
i numero di nodi nel sottoalbero radicato nel fratello di y che d ono.vnella 1i LEm-RovatgT, x

visita simmetrica, pi I er y se p y anch esso x. Se y un figlio sinistro. allora


precede 4 7
n p f v j n qualsiasi nodo del sottoalbern destro di pp 6 4
precedono
menti, 1 duc ci p. . i
y un glio destro e tutti i nodi del sottoalbero sinistro d J d
L aggiornamenro della dimensione dei sottoafberi durairte le mt ioni.
figura 15.2 rvr, i,, c.. G
sull orco su cui eseguire fa
p o ps stesso. Perci nella linea 5 si aggiunae si-e lefrfp y jj aggion,ati sono solo ql,elli
incidenti
che de,ano essere ,-. --
1a conoscen.a del campo si e di.v. y e dell.
sono locali. dato else richiedono
agginrnamenri
,
root T ,allorala isce il valore di r, che comsponde al rango
ranno di i kcevx . v mos1rati c ome triangoli.
p rocedurarestitu proprio sotroalberi

Si supponga, per esempio, di eseguire la procedura OS-RAw trovare il ran o del nodo
per
con chiave 38 nell albero di figura 15.1.1 all inizio del ciclo while si ottiene la seeuente
seguente
aggiornati. La modifica della pri eduta
mostra il modo in cui i campi sono
sequenza di valori I eyfy ed r La figura 15.2
per
Rtom-RovAvz simmetrica.
iterazione keyjy la se , na t- - -
al due rotazioni durante
che in un RB-albero sono operate, pi. .-
Dato . 3ui. .
38 2 aggiornare i campi si e 01
di inserzione, il costo addizionale per .
dell operazione l- .
di selezione di n nodi 0
30 4 I inserimento di un nodo in un albero
il tempo complessivo per
in un comune RB-albero.
3 4 asintoticamente uguale a quello per l inserzione
di due fasi la i p . ..- -
da un RB-albero composta prima
4 26 17 Anche la cancellazione -
tre rotazioni oppure na p.
di ricerc i. la cecondacausa al pi
itruttura di ba e dell albero
u nd
Quindi la procedura restituisce il valore 17 come rano
ango d e 1 no d o con chiave 38. fase si estrae Lin t , i
veda il paragrafo 144 . Nella prima
alcun modifica strutturale si
dal t1i d - --
Dato che ciascuna iterazione del ciclo while cottoalberi sufficiente risalire il cammino
impiega tempo 01 ed y sale nell albero di la dimensintte dei
Per aquino . re - l .-
nodo sul cammini . D.ili
un livello
hvello aad ogni iterazione. . il tempo di esecuz ione -
d i OS-R.. AYK C Il l caso eeeinre del campo si e di ciascun
radice de relllel1t ndu di l il valore st
impie - i-
all altezza dell albero lb ha lunghezza O lgn , il tempo
proporzionale O1 d i selezione di ir nodi. RB-albero con ii nodi, cammino
in un questo t- - -
Le 01 rotazioni della, eiond
il mantenimento del composi e 0 lpt .
prima fase per
Mantenimento della dimensione dei sottoalberi .
e. impiegano temp. il.- .
la gestione dei campi si
la cancellazione. compresi i tempi pe
- composto da n nodi.
Dato o il campo o si. e per ciascun
. nodo, le procedure OS-SELECT e OS-R- pos AoCQC un albero di selezione
Y in ormazioni utiQ, i per il problema della se1ezione. Ma tutto lavora arebbe
questo
stato inutile se questi cam -
p i non p otesses ero essere mantenuti efficientemente dalle
a e o e
Esercizi
i bbase che modificano -a
unn RB-alber ero. SiS vedr adesso come le informazioni d
sull
ri p osa o essere mantenute sia nell operazione di inse h d c i 5. l.
10 sull RB-albero T di figura
15.E-I Mostrare come opera OS-Select T,
o o senza modificare i tempi di esecuzione asintot d i queste operazinni.

Nel paragrafo 14.3 si osservato carne lo erazion e di inserzione in un RB-albero sia I i on ni -


. . T di t vzura 15.
a opera OS-R i v T..v iuil RB-albero
a i ue ffasi. Nella si
. discende e l aIb bero dalla radice in. crendo il ni.iovo 15.l-2 Mostrare cnme
primat se
me ig io iunnodogiesistente. Ne1lasec n .a fase si risale l albero cambiando i che l cg .v 35.

eseguen o rotazioni in modo da rispettare le proprieth RB.


...,
Per
P gestjre la dimensione dei sottoalheri, nella
e aprimafasesufficienteincremen
rim versione iterati i di OS-St. crct.
e,, , .,-l 15.1-3 Scrivere una

g i no ox attraversato nel cammino dalla radice


Q verso.o . BOO
. , t
2 UI.. 8 . atOChesulcamn
A.... ino i on e input
p ercorso
c soci.o oo nndi,i o. u i o
ricor ii u OS-Kr
-R, sw T. 4 che prende
l5.1-4 Scrivere una procedura
n enimento del campo si -e O lgn . JA
il r u codi k nell insiClll
di selezione Te un chi I v k C fC illtlll Ce
albero
Nella seconda fase le modifiche alla struttura de l l albero tutte dicerie.
s di l. Si aiiuu a che le chiavi in Tsian i
, rappresentato
ue. no trelfOtQzioneuts operazioneloca .i

arco su quale avviene la rotazione. Rie etto i I eli ii Ici ione di n nulli cal tA Ittttlleto n ll tr ll i. .
CIvI11Cllt0.1 di n alberi
C QQ IlC
pQfBgl 1fO I 4. . SJlil iUftlClClltL l i iun ere Ie e uei li lin i. 15.1-5 D il1llll

13 n intcnt de li eliminanti ilell tlhcrii


si ey m si e.j

I4 si e v si e lei x si.e rigl r l l


2 Capitolo 15 Estensione di strutrure di dati 29

15.1-6 Si osservi che il campo ordinamento totale degli elementi dell insieme, come
si e sempre utilizzato da OS-SEwcr o da OS-R vv. insiemi dinamici che prevedono un
solo
per calcolare il rango dir nel set toalbero radicato in x. Di conseguenza, Mtvtwuw, Mmxwut t, SuccessoR e PmoEcessoR.
si supponga
di memorizzare direttamente in ogni nodo il suo rango in ogni nodo x memorizza la dimensione del
rispetto al sottoalbero di cui Per il passo 2 si scelto il campo si-e, che
esso la radice. Mostrare come informazione aggiunta rende le operazioni efficienti.
questa possa essere mantenuta nelle sottoalbero radicato in x. Di solito, l informazione pi
operazioni di inserzione e cancellazione. ricordi essere rea1izzate usando solo le
Si che entrambe le operazioni Per esempio, le operazioni OS-SEiacr e OS-Rw x potevano
possono richiedere rotazioni. . ma non sarebbero state eseguite con tempo Q lp .
chiavi gi memorizzate nell albero,
costituita da un che da dati, come
Talvolta, l informazione aggiunta puntatore piuttosto

15.1-7 Mostrare come si possa usare un albero nell Esercizio 15.2-1.


di selezione contare, in tempo Oi 1gn .
per
il numero di inversioni veda il Problema si verificato che le operazioni di inserzione e cancellazione possano
si 1-3 in un array di dimensione ii. Per il passo 3,
si-e. mentre il loro tempo di esecuzione O lgn rimane
mantenere l informazione del campo
mantenere l informazione aggiunta, dovrebbe essere
15.1-9 inalterato. In linea di principio, per
Si considerino n corde di un cerchio, ciascuna definita attraverso i suoi estremi. Per esempio, memorizzando
sufficiente un piccolo numero di modifiche all, i struttura di dati.
Descrivere un algoritmo con tempo On Ign per la determinazione del numero di e OS-R iv.
in ciascun nodo il suo rango nell albero, le operazioni OS-Szxecr
coppie direttamente
di corde che si intersecano all interno del cerchio. Per esempio, se le n corde minimo implica la modifica di
risultano veloci, ma l inserimento di un nuovo elemento
sono tutte diametri che si incontrano pi
nel centro del cerchio, allora la soluzione dimensione del
informazione in ogni nodo dell albero. Invece quando si memorizzala
corretta Si assuma che nessuna questa
. coppia di corde si tocchi in un estremo. informazione
di un nuovo nodo implica la modifica di questa
sottoalbero. l inserimento

soltanto in O lgn nodi.

OS-SELECT C OS-Raitv. D altra parte


15.2 Per il passo 4, si sono sviluppate le operazioni
Come estendere una struttura di dati
funzinnalit che spinge aII estensione di strutture di
la necessit di realizzare nuove
proprio
di dati, che sviluppare nuove
dati. Pi raramente si estende una struttura piuttosto per
11 processo di estensione di una struttura di 15.2-1.
dati di base in modo da offrire funzionali rendere efficienti le operazioni conse nell Esercizio
i
oape erazioni, per pi gi previste,
addizionali si verifica abbastanza frequentemente nel progetto di algoritmi. Nel prossimo
paragrafo si utilizzer una struttura di dati opportunamente modificata per offrire operazioni
su intervalli. In questo si esamineranno Estensione di RB-alberi
paragrafo i passi necessari estensione della
per questa
struttura di dati. Inoltre, sar anche dimostrato un teorema che in molti casi di
permette
estendere facilmente RB-alberi. estesa un RB-albero. si puo dimostrare che certi tipi
gli si utilizza come struttura di dati
Quando
efficientemente mantenuti dalle operazioni i
L estensione di una struttura di dati di intormazioni addizionali possono essere
pu essere suddivisa in quattro passi La dimostrazione
e cancellazione, inmodo da rendere il passo 3 molto semplice.
1. scelta della struttura di dati inserzione
di base
le ar *omentazioni del I S, l in cui si esaminata
del seguente teorema eeneralizza paragrafo
2. determinazione dell informazione aggiunta che deve essere mantenuta nella struttura di trasformare un RB-albero ill Ull Ql uCfO I
la di aggiungere il campo si-e per
dati di partenza possibili
selezione.
3. veri
erifica ca he e l informazione aggiunta
gg possa essere mantenuta attraverso le usuali operazio-
ni di modifica della struttura di dati di partenza
Teorema 15.1 Estensione di u RB-albero
4. sviluppo delle nuove operazioiti.
da n nodi e si supponga che il
che estende un RB-albero T composto
Sia f un campo
Come prescrive metodo di progetto,
qualsiasi non si deve procedere nello sviluppo dei dimeni
passi seguendo ciecamente un ordine prestabiIito, anzi la maggior del conii t
parte progetto
di prove ed errori cui lo sviluppo dei
per diversi passi, in parallelo. Per
generalmente, procede
esempio, la determinazione dell informazione da aggiungere e lo sviluppo il tempo O lgn di operazioni.
delle nuove senza int1uenzare asintoticamente queste
l
in grado di mantenere in modo etticiente le informazioni aggiunte. Cii nonostante. questo i che ul1u modilica del campo f di un nodo
metodo in quattro Di neutra iodate. Lapidea di base della dimoitr zivne
passi fornisce una che di focalizzare
guida perinette gli sforzi nell esten-
dere la .stntttura
ntttura ed anche un bonn modo per organizzare la docunlent rione sull, nu, ,,
struttura di dati estesa.

,- -
dalfattochegliR -
li RB-alberi risultano effici nti .
sono impiegati operazioni iu
quando peraltri c . O1 la iornamento di ovili che dipcndonu ala tale nuidit ica.
per
270 Capito1o 15 strutture di dali 271
Estensione di

L inserimento di un nodo x in un albero T composto da due fasi veda il paragrafo 14.3 , RB-E UX1ERATE X.O.
si estendere RB-alberi con una nuova operazione
152-D Si desidera gli
Nella prima fase x inserito come figlio di un nodo che esisteva. Il valore di f in.v tali che a I IA.
px gi x pu tutte le chiavi / di un RB-albero radicato
b che restituisce
essere calcolato in tempo 01 dato che, ipotesi, esso dipende solo dal contenuto degli altri con un algoritmo che
per come RB-ExUI IERATE essere realizzata
Descrivere possa
campi di x stesso e dalle informazioni associate ai figli ix, che sono entrambi sn.. Dopo che sono restituite e n
per tempo 8 in 1gii , dove m il numero di chiavi
impiega
che f x stato calcolato, la modifica propagata all indietro sull albero, cui il tempo necessario aggiungere
per dei nodi interni dell albero. Sug gerimeirro non
il numero
complessivo impiegato neIla fase dell inserzione O lgsr . Nella seconda fase, I unica
prima dell RB-albero.
nuovi campi ai nodi
modifica strutturale all albero deriva dalle rotazioni. Dato che in una rotazione cambiano solo
due nodi, il tempo impiegato in ogni rotazione l aggiomamento dei campi
per f O lgsi .
Quindi, visto che al pi ci sono due rotazioni ogni inserzione, il tempo complessivo
per per
l inserzione 15.3 Alberi di interva11i
di O lp .

Come l inserzione, anche la cancellazione composta di due fasi veda il paragrafo 144 i.
si operazioni su insiemi dinamici di
RB-alberi saranno estesi per offrire
Nella fase si verifica una modifica In questo paragrafo gli
prima all albero solo se il nodo cancell ato sostituito dal r, t..
coppia ordinata di numeri reali t,, r, dove
intervalli. Un intervallo chiuso una
suo successore e poi di nuovo o il nodo cancellato o il suo successore sono ef-
quando Intervalli aperti o semiaperri
r, rappresenta l insieme r e R t, r t .
fettivamente estratti. La degli L interval1o t,,
propagazione aggiornamenti di f causata da modifiche
queste
costa al pi O igl dato che agpornamenti modificano l albero localmente. Modificato
gli ottenuti agli intervalli
intervalIi siano chiusi l applicazione dei risultati
l RB-albem, si assumn che gli
la seconda fase richiede al pi tre rotazioni e per ogni rotazione si impiega al pii
tempo aperti e semiaperti immediata.
O lp per propagare gli aggiornamenti di f. come l inserzione. il tempo
Quindi, per in
di eventi ciascuno dei quaIi si manifesta
complessivo la cancellazione O lp . Gli intervalli sono adatti alla rappresentazione
per
richiedere ad una base di dati di
continuo di tempo. Per esempio, si potrebbe
n per odo
un certo intervallo. La struttura i
temporali, eventi si sono verificati durante
interva11i quali
In molti casi, come il nmntenimento del campo si-e alberi di selezione. una tale base di
per per gli il cnsto ad essere utilizzata rappresentare
dati di questo paragrafo ben si presta per
dell aggiornamento una rotazione di 01, anzich O lgn ,
per come dimostrato nel
dati di intervalli.
Teorema 15.1. L Esercizio 15.2-4 ne fornisce un esempio.
come un oggetto i con campi low i t, l estremo
Si pu rappresentare un intervaIlo t,. r

Esercizi

ciao vale esattamente una delle tre


i soddisfa la di tricotomia degli intervnlli
propriet
152-1 Mostrare come le operazioni di interrogazione su un insieme Xtiwwii .. seguenti
dinamico propriet
MAX1MUM, SUpCESSOR C PREDECESSQR essere eseguite, su
possano un albero di si sovrappongono.
a. i ed i
selezione esteso, in tempo Ol nel caso Le asintotiche
peggiore. prestazioni delle
b. high i loire i ,
altre usuali operazioni sull albero di selezione non dovrebbero essere modificate.
c. high i low i .

15.2-2 possibile La figura 15.3 mostra queste tre possibilith.


mantenere la b-altezza dei nodi di un RB-albero come nuovo campo dei
nodi senza per influire sulle asintotiche di una
questo prestazioni qualsiasi opera-
zione ordinaria sugli RB-alberi Giustittcare la risposta.

152-3 possibile mantenere efficientemente la profondit dei nodi in un RB-albero come


u1teriore campo dei nodi dell albero Giustificare la risposta.
la

IS.2-4 Sia 8 un operatore binario associativo e sia a un campo mantenuto in ciascun nodu
di un RB-albero. Si supponga di voler includere in ogni nodo l
un ulteriore campo
f tale che f r a s-, 8 cc r,J O 8 a i- , dnve x, i,....,.v l elenco in ordine
simmetrico dei nodi del sottoalber radicatn in x. Mostrare c
che il campo f pu essere b
aggiornato con un tempo Ol j dopo una rotazione. Ad ttare il ragionamenti
cegilito per mostrare che anche il campo si,,e ne li alberi di ielczione u eiicr.
mantenuto con un tempo 01 ngni iotazione.
per
I ni i f. c lriylr fi f Irni fi .
di strtture di dati 273
272 Capitolo 15 Esrensione

26 26
Passo 2 informazione aggiunta
25 30
19m20
17 19 che il pi degli
intervatli stessi, ciascun nodo x contiene un valore, inax .v , grande
16 Oltre agli
21
nel sottoalbero radicato in x. Dato che in qualsiasi
15 23 estremi degli intervalli memorizzati
8w9 l estremo sinistro, niax x contiene il pi
intervallo l estremo destro vale almeno quanto
6 10
tra estremi destri nel sottoalbero radicato in x.
58 grande tutti gli
03

0 5 10 15 so Passo 3 mantenimento dell informazione aggiunta

e di cancellazione essere eseguite


Si deve verificare che 1e operazioni di inserzione possano
di n nodi. A tale scopo, se sono dati l intervallo inr x
in tempo O lgn su un albero di intervalli
determinare il valore di max v net modo seguente
ed i valori max dei nodi figli di x, si puo

max x max high iist x , nrax left x . max right x .


in

15.1, si deduce che l inserzione e la cancellazione possono


Da questa formula. per il Teorema
Dl QX

dei campi mcr dopo ogni rotazione


essere eseguite in tempo O lgn . Infatti. l*aggiornamento

01. come mostrato negli Esercizi 15.2-4 e 15.3-1.


essere effenuato in tempo
pu

Passo 4 sviluppo delle nuove operazioni

Im zRvwc-SEwRcw T, i . che trova nell albero


L unica nuova operazione di cui si ha bisogno
b
i oppure restituisce tut t. se non ci sono intervalli
T un interva11o che si sovrappone all intervallo
.
Figura
Fr eural 15 4 Un albero di inten alli. a Un insiemedii e i 10 intena
intenalli, i, disc
isegnatoordinatoderlbasscriers
nato r nell albero che si sovrappongono a i.
i e tremi sinistri. L albero di inte va1l/ else li ra r
non rico i n d d iiroti rispetro agli estrei ii sinistri.
INTERVAc-SEARCH T, i

1 x roor Tj

Un albero di intervalli un RB-albero che memorizza un 2 while.v c sic ed i non si sovrappone a int x
insieme dinamico di elementi.
con ciascun elemento x contenente un intervallo int i . Sugli alberi di intervalli sono previste 3 do if lefr x o wc e ina.v lefi .v j lo i
le seguenti operazioni.
then x lefi x
INTERV L-INSERT T, x a eiun ,e 1 elem ento x, il cui campo inr si suppone contenga un
5 else x right .r
intervallo, all albero di intervalli T.
6 return x
ImERv t.-Da.ere T, x rimuove l elemento.v d ll albero di intervalli T.
, a
INTERt AL-SEARCH T, i res
restituisce il puntatore -
, ad un elemento s nell albero ero di i intervalli
interra i T tale assegnattdo ed.v il i flore della radice
La ricerca di un intervallo che si sovrappone v i comincia
,
che inr xJ si sovra pp one all l intervallo i, oppure sta .se un tale elemento i non verso le foglie. Essa termina quando viene troi to un intervallo
dell albern e procede quindi
nell insieme. itmpiega tempo
sic. Dato che cia cuna iterazione del ciclo
g oppure quando. assume il x zlore
La figura 15.4.. mostra come un albero
b di intervalli O lgi . si conclude che I i procedura
rappresenti un insieme di ll . P 01 e dato cl1e l vltezza di un RB-albero di n nndi
a progettazione di un albero di intervalli e delle operazi . g . d esso,i Itnrvv,sc-Se i cw impie a tempo O lpr .
seguiranno i quattro del metodo nel se ne
passi proposto paragrafo 15.2. la cnrrettezza delln lsvvav.xt.-St wRcw.
Prima di prendere in considerazione procedura

Passo 1 struttura di dati di base

Si sce lie un RB-albero in cui ciascun nodo.s contiene un intervallo inr .vj c la chi,tvc di i
., he a iud v ito non ii s wrapj onc l i. Aquinato punlo.
come on
interv i della1 dice, il nodo contenenle 8. 9.
.. .v, e o. Qi il di la vincita in orcliii
simmetrico dell vlbero elenca intervall
ali d ittiti rispetto ull slrcnso.iiniitro.
F femionedisf hd f 275

max lefr x 10 pi di low i 22, cui il ciclo continua con il figlio destro di
piccolo per
x come nuovo x. L intervallo 15, 23 memorizzato nel nodo si sovrappone a i, per cui la
procedura restituisce il puntatore a questo nodo.

Come esempio di ricerca fallita, si supponga di voler trovare un intervallo che si


sovrapponga a i 11, 14 nell albero di intervalli della figura 15.4. Di nuovo si comincia con
la radice come valore di x. Dato che l intervallo della radice, 21 , non si sovrappone b
16, a
i e dato che inax lefr x 23 maggiore di low i 11, si prosegue sul nodo sinistro che 15.2.11 / chn . l lr -l
Gli lli /1 ch os .-i n d IT or
Fig 1S.5
contiene l intervallo 8, 9. Si noti che nessun intervallo nel sottoalbero destro si sovrappone a desrrr.. ess un intenallo
tratteggiata. Caso 2 la ricerca continaa
in ciascun caso con una linea a
a i, come si vedr nel seguito. L intervallo 9 non si sovrappone a i e inax lep x 10
8, nel
sotroalbero
c un inten ...ili
.i i
pi piccolo di loire i 11, per cui si va a destra. noti che nessun intervallo nel sottoaIbero si sovrapporte a i sinora-i0118 110ll l lOSlrala , oppure
Si un inten allo che ,
j ni. inten allo
i non si sovrappone a i qiutlsiasi
sinistro si sovrappone a i L intervallo 15, 23J non si sovrappone a i ed il figlio sinistro wc sinisrro di.v tale cl e high i max lefi xj . Quindi
J.
sorroalbero destro di.v, daro che loire ij fo v i
per cui si va a destra quindi il ciclo termina e la procedura restituisce il valore zn..
i del

Per verificare la correttezza della IvrERvAc-SEp,Rcw, si deve capire sia


procedura perch del campo
nrax lefr x lo v i . Inoltre per la det nizione
sufficiente esaminare condizione della linea 3 si ha che
un solo cammino a partire dalla radice. L idea di base che, in qualsiasi
essere un intervallo i tale che
nodo x, se int x max, nel sottoalbero sinistro di x ci deve
non si sovrappone a i, la ricerca sempre in una direzione certa se
procede
nell albero c un intervallo che si sovrappone a i, prima o poi sar trovato. Il seguente high i inax lefi xj
teorema enuncia questa propriet in modo pi preciso. loiv i .
ono e dato che
situazione. Dato che i ed i non si sei rappon
La figura 155 b illustra questa
Teorema 15.2

Si consideri una qualsiasi iterazione del ciclo while della IivEav i-


procedura
intervallo i del
SEARCH T. i. la proprieth dell albero di ricerca implica che perqual. i..-i
intervalli e quindi

1. Se eseguita la linea 4 la ricerca a sinistra , allora o il sottoalbero sottoalbero destro di x,


prosegue sinistro
di x contiene un intervallo che si sovrappone a i oppure nessun intervallo nel higl i lo i i J
sottoalbero destro di x si sovrappone a i.
.
low i
2. Se eseguita la linea 5 la ricerca a destra , allora il sottoalbero
prosegue sinistro
di x non Per la tricotomia degli intervalli. i e i non si sovrappongono.
contiene alcun intervallo che si sovrapponga ad i.
cotuinua u uno ei figli
Il Teorema 15.2 che se la procedura lmERvAc-SEARcv
garantisce
allora una ricerca che parta
trova nessun intervallo che si sovrappone a quello dato,
di x e non
Dimostrazione. La dimostrazione di entrambi i casi dipende dalla tricotomia degli intervalli.
dall altro figlio di x sarebbe ugualmente vana.
Si prova prima il caso 2 che pi semplice. Si osservi che se viene eseguita la linea 5, allora
a causa della condizione della linea 3 si ha lefr xj at oppure inax left x J low ij. Se lefr x
NIL allora il sottoalbero radicato in lefi x chiaramente non Esercizi
pu contenere un intervallo che
si sovrapponga a i, dato che non contiene alcun intervallo. Si supponga perci che lefi x w un albero di
che operi sui i di di
et e max lei x low i 153-1 Scrivere lo per Lager-Ro pze
J. Sia i un intervallo del sottoalbero sinistro di x si veda la figura pseudocodice
15.5 a . intervalli ed ag giorni i campi inax in teisipo 01.
Dato che max lefr r J il piii estremo destro degl i intervalli del
grande sottoalbero
sinistro di x, allora si ha
nodo tale ch Operi correttamente
Riscrivere il codice lxirRvwi-5aAzcw in
159-2 per
high i j max feft xJJ
si assuma che tutti intervalli siano aperti.
quando gli
low iJ.

i. restituisce li e rvallo
e quindi. 3-3 Descrivere un algoritmo efficiente che. dato un intervallo
per la tricotomia degli intervulli, i e i non si sovrappongono, il che completa l5
lu ii- se un tale
estremo sinistro. oppia
dimostrazione del caso 2. che si sovrappone a i, che abbia il piir piccolo

Per intervallo hon esiste.


dimostrare il caso 1, si ta l ipote i che nei sottoalbero sinistro di x non esistann intervaIli

i elencare
inlcrv Alo i. descrivere com piii ann
1.5 7-4 Dati un a hcro di intcrv ioli Ti d nn

destr o di x possa sovrapporsi a i. Si osservi che se viene ese uitu la linea 4. allor i la .l . o
per ijinco cji output. O -ir n tl . lf
il numero de li intcrv,. lli diti

che luii1 modifichi l albcro.


276 Capitolo 15
Estensione di srruttnre di dati 277

153-5 Descrivere possibili modifiche da apportare alle procedure per gli alberi di
un algoritmo con tempo On lpr che. dati due
b. Si supponga m non costante. Descrivere
intervalli in modo da offrire l operazione Imzav t.-SE RcH-Ex cri.v T, i. che
f la permutazione di Giuseppe Flavio n, tn .
interi n e m, calcola
restituisce il puntatore ad un nodo.v dell albero di intervalli T tale che low inr v
l
loii i e liigli inr x big/t i , oppure n. se T non contiene un tale nodo. Tutte
le operazioni, compresa IvrEav i-Se Rcw-Ex crcv, dovrebbero essere eseguite in
tempo O 1gn su un albero di ii nodi. Note al capitolo

alberi di intervalli che appaiono nella


153-6 Mostrare come mantenere un insieme dinamico Preparata e Shamos 160 descrivono parecchi
Q di numeri per offrire l operazio-
importanti da un di vista teorico sono quelli proposti
ne Mtr -Gev, che restituisce la differenza tra i due numeri vicini tra loro in Q. letteratura. Tra essi i pi punto
pi
e E. M. McCreight 1981 che, in una base di
Per esempio. se 1, 5,9, 15, 18,22 allora Mtv-Gev g restituisce 18 15 indipendentemente da H. Edelsbrunner 1980
Q
in tempo Ok 1g i , tutti i / intervalli che si
3, datoahe, 15 e 18 sono i due numeri vicini tra in Q. dati di n intervalli, di elencare,
pi loro Rendere quanto pi permenono
efficienti le operazioni IxsERv, DELEGHE, SEaRcv e MIN-GwP ed analizzare sccvrappongono a un intervallo dato.
possibile
i loro tempi di esecuzione.

153-7 Le basi di dati VLSI comunemente rappresentano un circuito integrato come una
lista di rettangoli. Si assuma che ogni rettangolo abbia i lati paralleli a li assi.i- e y.
in modo che la rappresentazione di un rettangolo sia costituita dalle sue coordinate
.r e y minime e massime. Fornire un algoritmo che decida in tempo On 1gn se un
insieme di rettangoli cosi rappresentati contenga due rettangoli che si sovrappongono.
Non necessario che l algoritmo elenchi tutte le coppie che si intersecano. ma deve
rispondere che esiste una sovrapposizione se un rettangolo ne copre interamente un
altro. anche se i loro lati non si intersecano. Suggerimento far scorrere una retta
attraverso l insieme dei rettangoli.

Problemi

l5-I Punto di massAna sovrapposizione

Si supponga di voler cpnoscere il punto di massima sovrapposi--ione di un insieme di


intervalli un punto che ha il pi grande numero di intervalli che gli si sovrappongono nella
base di dati. Mostrare come tale punto possa essere aggiornato in modo efficiente mentre gli
intervalli vengono inseriti e cancellati.

15-2 Permuta -ione di Giuseppe Flavio

Il problema di Giuseppe Flavio definito nel modo seguente. Si supponga che n persone
siano disposte in circolo e che sia d, to un intern positivo ni n. Cnminciando datla per ana
numero I. si procede intornn al cerchio allontanando ogni m-esima persona. Dopo che ana

persona stata allontanata. il conteggio continua con le persone rimaste nel cerchio. Questo
procedimento ripetuto finch tutte lc n persone sono tateullo ttanate. L ordine cnn il quale
le persone sono allontanate dal cerchio rappresenta la permuta ioide di Giuseppe Flaviv ir, m
de li interi 1. 2, ... n. Per esempio la permutn ir ne di Giuseppe Flavio 7, 3 i 3. 6. 2, 7. 5. l. 4 .

a. Si supponga m costante. DescriVCli Llll lllgoritmo con tempo On che. dato un intero n.
calcola la permutazione di Giuseppe Flavio n, ni .

N.d.R.
ll probi m,i i i. hiatnau coii pr.rch iprite i irril no i irn ru cimtu dello iteri del i ciil Ciiuii pp Flaviu.
prinni
Introduzione
Tecniche evolute per i/progetto e l analisi
di algoritmi
In questa verranno tre metodi molto importanti per il progetta e l analisi di
parte presentati
lgoritmi efficienti la programmazione dinamica Capitolo 16 , gli algoritmi greedy Capi-

tolo 17 e l analisi ammortizzata IS . Nelle precedenti di questo libro sono


Capitolo parti
state diverse tecniche algoritmiche di vasta applicabilit, quali divide-et-impera.
presentate
e la soluzione delle ricarrenze. Le tecniche algoritmiche che verranno
la randomizzazione
in sono sofisticate di descritte in precedenza e sono
presentate questa parte pi quelle
essenziali affrontare in modo efficace numerosi computazianali. I concetti e le
per problemi
tecniche introdotte in verranno applicate all analisi ed alla realizzazione di
questa parte
algoritmi che si incontreranno in seguito.

La dinamica, come il metodo divide-et-impera. risolve problemi


programmazione
computazionali mettendo assieme le soluzioni di un certo numero di sattoproblensi. In
programmazione un scritto in un
contesto con il termine non si intende programma
questo
linguaggio di programmazione ma un metodn di soluzione tabulare.
qualche

Come abbiamo descritto nel Capitoln I, gli algoritmi basati sul metodo divide-et-impera

suddividono il in un certo numero di sottoproblemi indipendenti, risolvono


problema
ricorsivamente i sottoproblemi e infine fondono assieme le soluzioni ottenute per determina-

re la soluzione del problema originale.

Il della dinamica, invece, si applicare anche quando i


metodo programmazione pu
sottoproblemi non sono indipendenti in altri termini la soluzione di alcuni sottoproblemi
I
richiede di risolvere sottoprobletni comuni. ln questi casi, un algoritmo basato sul metodo

fa lavoro di quello strettamente necessario dato che risolve pi volte i


i divide-et-impera piii
comuni. Gli algoritmi di dinamica risolvono ciascun
sottoproblemi prngri mmazione
snttoproblema una nla vnlta e memorizzano la soluzione in una tabella.

dinamica viene adottata risolvere problemi di


La programmazione generalmente per
I

ammettono diverse soluzinni. A ogni soluzione associato


ottimizzazione. Questi problemi
un valore e si desidera determinare una soluzione con il valore ottimo il ntasiimo o il minimo

con valore nttimo i on viene detta la soluzione ottima. ma bendi una


valnre . Una soluzione
4
soluzione ottima del cl ito che esistere diverse soluzioni con valore nt timo.
irohlema. possono
Inoltre molte strate ie li soluzione di problensi di ottimizz rione richiedono di risolvere piii

stese , sottopr blcmw si ripresenta di una sequenza di decisioni l idca fondznentale


per pii,
ynrrogu-ione agli Afg orini 28
-. Parte IV

della programmazione. dinamica di memorizzare le soluzioni di sottoproblemi in


questi
modo tale che possano essere utilizzate nel caso in cui si richieda di risolvere un sottoproblema
risolto in precedenza. Nel Capitolo 16 si vedr come semplice idea di
questa permetta
trasformare algoritmi con complessit esponenziale in algoritmi con complessit polinomiale.
Generalmente gli algoritmi per la risoluzione di problemi di ottimizzazione sono costituiti
da sequenze di passi elementari in cui, a ogni passo, si presentano un certo numero di scelte
alternative. Per alcuni problemi di ottimizzazine, I*uso di tecniche di programmazione
dinamica per decidere la scelta migliore risulta inutilmente oneroso lo stesso risultato

potrebbe essere ottenuto con algoritmi pi semplici e pi efficienti. Gli algoritmi greedy
adottano la strategia di prendere quella decisione che, al momento, appare come la migliore.
In altri termini, viene sempre presa quella decisione che, localmente, la decisione ottima.
senza preoccuparsi se tale decisione porter a una soluzione ottima del nella sua
problema stabilisce il costo ammortizzato di
al metodo degli accantonamenti, nel senso che
In non sempre esiste un algoritmo che determina che simili
globalit. generale, greedy la soluzione successi-
operazione, sovrastimando, inizialmente, il costo d p erazioni
ottima di un qualsiasi tuttavia algoritmi essere utilizzati ogni
problema. gli greedy possono per f
. Differente- e-
viene u t i 1iz zato compensare i costi sottostimati.
ottenere le soluzioni di alcune classi vamente, questo a dd e b ito per d
di problemi.
assoc l d 11a
ente dal metodo degli aggregati, dove il credito
Un semplice esempio fornito dal deI resto con un numero minimo di monete.
problema il credito pi visto come
struttura di dati. nel metodo del potenziale propriamente
Questo problema pu essere cosi formulato si deve minimizzare il numero totale di monete il
della struttura di dati.
o pi semplicemente potenziale ,
necessarie per dare il resto a un cliente. Una strategia che risolve potenziale,
questo problema consiste
nel selezionare ogni volta un certo numero di monete di valore massimo la cui somma non
supera l ammontare di denaro che deve essere ancora restituito.

Esistono numerosi in cui un metodo fornisce una


problemi greedy soluzione ottima molto
pi velocemente di un metodo di dinamica. Tuttavia
programmazione non sempre si in
grado di affermare con che una soluzione sar efficace.
precisione greedy
Nel Capitolo 17 verr introdotta la teoria dei matroidi che spesso pu essere molto utile per
determinare la bont di un metodo greedy.
L analisi ammortizzata uno strumento analizzare algoritmi che
per eseguono sequenze di
operazioni identiche. Invece di limitare il costo di una sequenza di operazioni definendo
separatamente il limite del costo di ciascuna operazione della sequenza, l analisi ammortiz-
zata fornisce un limite dyl costo dell intera sequenza di operazioni. Il niotivo dell efficacia
di questa idea dato dal fatto che molto spesso impossibile che tutte le operazioni della
sequenza siano eseguite nel loro caso Alcune
pessimo. operazioni potranno essere molto
costose, mentre altre risultare economiche.
potranno particolarmente Tuttavia. l analisi
ammortizzata non solamente uno strumento di analisi, ma permette anche di ragionare sul
progetto di algnritmi infatti il progetto di un algoritmo e l analisi del suo tempo di esecuzione
sono attivit collegate in modo stretto.

Nel Capitolo 18 Verranno introdotti tre metodi diversi per effettuare l analisi amnsortizzata
di algoritmi. Nel metodo degli aggregati si determina
prima un limite superiore Tn del costo
totale di una sequenza di n operazioni. Il costo ammortizzato di una operazione dato da T n l
n. Nel metodo degli accantonamenti si stabilisce il costo ammortizzato di oceani operazione.
Quando si considerano operazioni di tipn diverso, aIlora accadere
pu che il costo ammor-
tizzato di una operazione vari a seconda del tipo. Il metodo degli accantonamenti addebita un
costo aggiuntivo a determinate operazioni della sequenza questo addebito deve essere
considerato credito
come un relativamente
prepagnto a quello specifico op etto de.Ila
struttura di dati.

Successivamente, il credito usato perdefinire il costo di quelle operazioni a cui altrimenti


verrebbe addebitato un costo minere di que lo reale. Il metodo del ha c iratt risti-
potenziale
Programmazione dinamica

dinamica, come il metodo divide-et-impera, risolve problemi


La programmazione
assieme le soluzioni di un certo numero di sottoproblemi. In
computazionali mettendo
-programmazione un programma scritto in un
contesto con il termine non si intende
questo
ma un metodo di soluzione tabulare. Come abbiamo
linguaggio di programmazione
qualche
basati sul metodo divide-et-impera suddividano il
descritto nel Capitolo 1, gli algoritmi
sottoproblemi indipendenti, risolvono ricorsivamente i
in un certo numero di
problema
le soluzioni ottenute determinare la soluzione del
sottoproblemi e infine fondono assieme per
dinamica, invece. si pu applicare
originale. Il metodo della programmazione
prnblema
non sono indipendenti in altri termini la soluzione di alcuni
anche quando i sottoproblemi
i medesimi sottoproblemi. In questi casi, un algoritmo
sottoproblemi richiede di risolvere
fa pi lavoro di quello strettamente necessario dato che
basato sul metodo divide-et-impera
comuni. Gli algoritmi di dinamica
risolve pi volte i sottoproblemi programmazione
una sola volta e memorizzano la soluzione in una tabella
risolvono ciascun sottoproblema
nuovamente la soluzione ogni volta che deve essere risolto
in questo modo si evita di calcolare
I

lo stesso sottoproblema.

viene adottata risolvere problemi di


La dinamica generalmente per
programmazione
ammettono diverse soluzioni. A ogni soluzione associato
ottimiz.azione. Questi problemi
i
una soluzione con il valore ottimo il massimo o il minimo
un valore e si desidera determinare
ottimo non viene detta la soluzione ottima, ma bensi una
valore . Una soluzione con valore
che esistere diverse soluzioni con valore ottimo.
soluzione ottima del prob e ma. dato possono
dinamica essere diviso in quattro tasi
Lo sviluppo di un algoritmo di programmazione pu

f O pB. iSl

1. Caratterizzazione della struttura di una soluzione ottima.

1 2. Definizione ricnrsiva del valore di una soluzione ottima.

valore una soluzione attinia con una strategia bnttom-up.


3. Calcolo dd di

a partire dalle intornlazioni cakolate.


4. Costruzione di una soluzione ottimu

li rammazione dinamica di un certo


Le faii l-3 definiieoito l base di u soluzioni pm

solamente il valore di una soluzione ottimo.


Nel caso it cui ii debba determinare
problema.
riHsiesto di costruire una
il 4 non x,ieise in con,ickra ivne. Tutt,via. quotando
pz so preso

auiili.irie iltc l . cilitano l esecrazione d1 p iiiu 4.


programmazione dinamica 285

Nei paragrafi segueriti utilizzeremo il metodo della dinamica 8


programmazione per risolve- Mzmtx-Mu.ttt tv A,
re alcuni problemi di onimizzazione. Nel 16.1 affronteremo
paragrafo il problema del l if colusmts A w robes 8
prodotto di una sequenza di matrici in modo da minimizzare il numero complessivo dimensioni
di
2 then error non compatibili
moltiplicazioni scalari. Dopo esempio di programmazione
questo dinamica, il paragrafo 16.2
discute le due caratteristiche 3 else fo i m 1 to rows AJ
peculiari che deve pnssederc un problema affinch la program-
mozione dinamica risulti una de for 1 to cofumns B
tecnica di soluzione efficiente. Il paragrafo 16.3 descrive la 4 j m
soluzione del della lunga sottosequenza comune
problema pi di due sequenze. Infine, nel 5 do C i,j m0
paragrafo 16.4 viene usata la programmazione dinamica determinare una triangolazione
per 6 for l m 1 to co1umns A
ottima di un poligono convesso considerevoli
quest*ultimo problema presenta e sorprenden-
7 do C i. m C i, jj A i, k B k,J7
ti analogie con il problema del j
prodotto di una sequenza di matrici.
8 return C

16.1 Prodotto di una sequenza di matrici


I Per mettere in evidenza che parentesizzazioni differenti del medesimo prodotto matriciale

consideriamo una sequenza di tre matrici A,, A. A. .


danno origine a costi differenti,
delle matrici siano, rispettivamente, 10 x 100, 100 x 5 e 5 x
Supponiamo che le dimensioni
Il nostro primo esempio di programmazione dinamica un algoritmo che risolve il problema A A, , allora
50. Se si calcola il prodotto della sequenza con la parentesizzazione A, per
del prodotto di una sequenza di matrici. Sia A A A una sequenza di n matrici, si vuole dal A, A, si eseguono 10 100
calcolare la matrice di dimensioni 10 x 5 risultante prodotto
calcolare il prodotto matriciale
scalari. A questo numero dobbiamo sommare le 10 5 50 2500
5 5000 moltiplicazioni
A A, -A A, A con la matrice A,. Pertantn
16.1 moltiplicazioni scalari necessarie moltiplicare la matrice
per
Possiamo v al utile l espressione scalari. Invece, se il prodotto della sequenza i ielle
16.1 utilizzando come sottoprogramma l algoritmo standard abbiamo un totale di 7500 moltiplicazioni
del di due matrici, dopo una A. , sono necessarie 100 5 50 25000
prodotto opportuna parentesizzazione che elimini le ambiguit caIcolato con la parentesizzazione A, A,
sulI ordine dei tra le matrici scalari calcolare la matrice A,A, di dimensioni 100 x 50. A questo numero
prodotti della sequenza. Un di matrici viene detto moltiplicazioni per
prodotto
completamenteparen1esi ato se consiste 10 100 50 50000, ovvero il numero delle moltiplicazioni scalari
di un unica matrice, o il prodotta, delimitato da dobbiamo aggiungere
di due A, con la matrice A,A . Pertanto abbiamo un totale di
parentesi. prodotti di matrici completamente Dato che l operazione di necessarie per moltiplicare la matrice
parentesizzati.
matriciale associativa, Risulta evidente che il calcolo del della sequenza di
prodotto tutte le parentesi zzazioni definiscono la medesima matrice 75000 moltiplicazioni scalari. prodotto
risultato. Per esempio, considerando la sequenza matrici 10 volte veloce se viene effettuato considerando la prima parentesizzazione.
di matrici A,, A, AA , il pi
prodotto
matriciale A, A A, A, essere completamente matrici essere formulato nel modo
pu parentesizzato in cinque modi distinti Il problema del di una sequen-a di puo
prodotto
n matrici A .. A dove la matrice A ha
seguente. data una sequenza di A,, , generica
A, A, A,A, , x p con i 1,2, ..., n. si deve determinare una strutturai parentesizzazione
dimensioni p i-1 i

A, A,A, A, , del AIA, A cile minimizzi il numero conlplessivo di maltiplicaziolli


completa prodotto

A, A, A,A , scalari.

A, A,A, A, ,
Determinazione del numero di parentesizzazioni
A, A, A, A .

con un algoritmo di dinamica. dl


La struttura Prima di presentare la soluzione, programmazione
della parentesizzazinne di una sequenza di matrici influisce sul costo del
calcolo del matriciale. Prima di tutto determiniamo
prodotto il co to dell al oritnso he
tutte le non fornisce un algoritmo di risoluzione
calcola il esaustivo di possibili parentesizzaziotti
prodotto di due matrici. La seguente procedura in pseudocodice descrive di una sequenza di
eft cicnte. Con Pn indichiamo il numero delle diverse parentesizzaziuni
l algoritn o standard del di due matrici.
prodotto Nel seguito con rons A e cc lm u s Aj
di una sequenza di matrici puo essere sempre
indichiamo rispettivarnente n matrici. Dato china parentesizzazione
il numero di righe e di colonne di una matrice A
Due n .atrici A e B possono essere moltiplicate solo se il numero di cnlonne di A ugiule iecjuenza originale. un genericn I I,
rentesizzazione delle rimanenti matrici ilella per
al numero di righe di B. Se A una matrice p x q e B una matrice q x r. il risultato dell i
n 1. abbi imo la seguente equazione di ricorrCAe. l

I SCII I

Nel seguito, i te mpo di esecuzion . verr sei ipre espresso ii termini lei nun ero li
moltiplicazioni PkPn k sc tt 2 .
scalari. g

c uesl t cquszionc di ricorreh/a


Il Prohlctna l 3-4 chiedev di dil11OYll lli Clll, II S 11U/lOlli di

d ti cl il1 t segusini elci numeri Catnlani


Progranuna ione dinamica 287

286 Capirolo 15

sottoproblemi consistono nel problema di determinare il casto minimo di una parentesizzazione


Pn Cn I, numero di moltiplicazioni scalari
di A A. A l i j ii. Sia in i. j il minimo
i iI per
calcolare la matrice A, il costo minimo del calcolo della matrice
CIOVC necessarie per pertanto

prodotto A,, dato da ti 1, n.

j allora la sequenza
cn Possiamo definire in i, j ricarsivamente nel modo seguente. Se i

matrice, dato che A A non necessario eseguire alcuna


consiste di una singola pertanto
Q 4 /n . calcolare il prodotto. Da consegue che m i, ij 0 per i I, 2,
operazione scalare per questo
cui i il calcolo di m i, tiene in considerazione la struttura di una
.... n. Nel caso in j, j
Il numero di soluzioni, quindi, esponenziale in n pertanto per determinare la parente sizzazione
determinata al passo 1. Infatti, assumiamo che la parentesizzazione ottima
soluzione ottima
ottima di una sequenza di matrici il metodo di soluzione brutale della ricerca esaustiva risulta
A,A, A sia ottenuto combinando assieme i prodotti A, e
sia tale che il prodotto
particolarmente inefficiente.
l vedere che il valore di m i, ottenuto sommando i costi minimi
A,
k I. j
con i j. facile j
A, e A, con il costo del di queste due matrici. Dato
del calcolo dei sottoprodotti prodotto
Struttura della ottima che il calcolo del tra A, e A,, richiede l esecuzione di p, p, p moltiplicazioni
parentesizzazione prodono
scalari ne consegue che

Il primo passo del paradigma della programmazione dinamica la caratterizzazione della m i, m i,k mk l,p Pi-iPcPp
j
strut tura del la soluzione ottima. Nel caso del problema del prodotto di una sequenza di matrici assume che il valore di l sia noto ma chiaramente questo
L equazione ricorsi va precedente
questo passo pu essere realizzato nel modo seguente. Per ragioni di convenienza di valori di l sono i dato che k i, i I..... Poich
non il caso. Tuttavia, i possibili j j-1.
notazione, indichiamo con A, la matrice risultato della valutazione del prodotto matriciale necessariamente assegnare a t- uno di questi val ori. il valore
la parentesizzazione ottima deve
A A, A, Una parentesizzazione ottima del prodotto A,A, A, divide il problema nei due dal valore che minimizza l equazione Pertanto
migliore da assegnare a l dato precedente.
sottoproblemi del prodotto delle prime / matrici e del prodntto delle rimanenti matrici. per costo minimo della ottima del prodono
la definizione ricorsiva del parentesizzazione
un qualche intero k tale che l k ir. In altri termini, prima si determinano le matrici A,
A A,, A diventa
e A ,, per un determinato valore di / . Infine, la soluzione finale A, il risultato del
0 se i j,
prodotto delle due matrici ottenute in precedenza. Il costo della parentesizzazione ottima dato
li.il min m i,k m k 1,j p pqp, se i j. 16.2
dalla somma del costo del calcolo della matrice A, con il costo del calcolo di A,
, lkj

a cui si deve aggiungere i1 costo del prodotto delle due matrici. tenere
tn i, definisce i costi delle soluzioni ottime dei sottoproblemi. Per
Il valore di j
A questo punto vogliamo mettere in rilievo una proprieth cruciale del problema che stiamo ottima, definiamo s i, valore k per cui.
traccia del modo in cui costruire una soluzione jj quel
esaminando. La parentesizzazione di A, A, A, nella parentesizzazione ottima di A, A, A una ottima. In altri termini,
dividendo il prodotto A A A. si ottiene parentesizzazione
i iI j
devenecessariamenteessereunaparentesizzazioneotri nadiA,A, A,, Ilperchdellavalidit n i. L ml I, j
s i, j quel valore k tale che m i, j p, p, p,.
di questa propriet presto detto. Se esistesse una strategia meno costosa per ottenere una

parentesizzazione di Q, A, A allora sarebbe possibile ottenere una parentesizznzine di


A, A, A, con un costo inferiore di quella ottima sufficiente sostituire la parentesi zzazione Calcolo dei costi ottiaii

di A,A, A nella parentesizzazione ottima di A, A A, Chianmente questo ragionamento


a una contraddizione. facile vedere che una analoga vale anche la abbastanza facile definire un algoritmo ricorsi vo,
porta propriet per Alla luce delle considerazioni precedenti
di A,, A, A nella ottima di A, A, A deve equazione di ricorrenzo che calcola il costo minimo vt 1. n del prodotto
parentesizzazione parentesizzazione basato sulla 16.2 ,
necessariamente essere una ottima di vedremo nel ronfo 16.2, algoritmo esponenziale nel
parentesizzazione A A ,
A, A, A,. Tuttavia, come par questo
l algoriuno ingenuo che controlla in modo esaustivo tutte le pnssibili
Pertanto, una soluzione ottima del del eli una sequenza di matrici tempo. come
problema prod6tto
contiene al suo interno le sol uzinni ottime dei due sottoproblensi. L esistenza di ottostrutture parentesizzazinni del prodouo.
ottime all interno di una soluzione ottima, con e vedremo nel 16.2. uno dei segni una osservazione decisiva. Nel del prodotto di una
paragrafo Questo il punto per fare problema
distintivi e dei criteri di scelta I applicazione delle tecniche della abbiamo un nunero relativamente basso di sottoproblemi un problema
per programmazione sequenza di matrici
dinamica. scelta di i e j. cnn 1 i n, per un totale di n 8 -.
per o ani possibile j ,

cammini del suo albem di ricorsione. richiedere di


Un algoritmo ricorsivo. nei diversi pu

Soluzione ricorsiva
n muni il secondo se no distintivo e criterio di applicabilith d ll prugr imnsazione

d namica.
Il secondo passo del paradigma della rammazinne dii amica consiste ne l i definizione
pro
del valore i urr soluzione ottima ricoriii anicnte in termini dei valori ilill olu ivni ovini

dei sottoproblen i. Nel czso del del di una scqcienz i di n itrici. i


prnblema prodolto
programma-ione dinamica 289
gg Capitolo 16

linee diagonali che da A e da A, Si noti, inoltre. che ogni


Invece di calcolare in modo ricorsivo la soluzione dell equazione di ricorrenza il punto di intersezione delle partono
16.2 .
contiene i valori relativi a sequenze di matrici della stessa
con la terza fase del della dinamica. calcoliamo il linea orizzontale della tabella
procediamo paradigma programmazione
MATRIX-CHAIi-ORDER determina le righe della tabella con una
costo della soluzione ottima con una modalit bottom-up. La descritta di seguito lunghezza. La procedura
procedura
elementi di ogni riga vengono calcolati da sinistra verso
assume che la generica matrice A sia di dimensioni x p con i 1, 2, .... n. 11 dato di modalit bottam-up, mentre gli
p,,
dipende dalla valutazione del scalare p, p, p e dagli
l. Infine destra. Ogni elemento m i, prodotto
ingresso della procedura una sequenza p p,, p ..., p , dove fength p n la j
tabella m i, k e in k 1, j , k i, i 1, ..., j 1.
utilizza una tabella ausiIiaria in 1 .. n, I .. n memorizzare i costi m i, ed una elementi della per
procedura per j
tabella ausiliaria s 1. n, I .. n memorizzare il valore dell indice k per cui m i, un strunura dei cicli della M tRtx-Cvww-DRoER si
per j Da una semplice analisi della procedura
costo ottimo. trova una soluzione in tempo On . I cicli sono annidati uno
vede facilmente che l algoritmo
di annidamento, inoltre n il numero dei valori che possono
dentro l altro, con tre livelli
dei cicli nella le variabili i, 1 e k .
MATRLX-CHAIN ORDER p assumere le variabili di controllo presenti procedura
di mostrare che il tempo di esecuzione di questo algoritmo
1 n length pj l Nell Esercizio l.1-3 si richiede

Q ir .
2 fori I ton
memoria necessaria memorizzare le tabelle m e s 8 n- . In
Inolue, la quantit di per
3 do m i, i -0
si dimostra molto pi efficiente dell algoritmo
conclusione, la pmcedura MwvRm-Ca t -ORoaR
4 fori 2 ton
esponenziale che controlla in modo esaustivo tutte le possibili parentesizzazioni.
5 dofori I ton I l
S
6 60 j -i l- l

7 m i, j m
i
8 forkc itoj 1 J

do J
9 q - m i, k m l- 1, j p, p, p

10 ifq m i, j

Il then m i, j q

12 s i, j l

13 return m ed s

L algoritmo costruisce la tabella m nello stesso ordine in cui viene risolto il problema debbia A, A AI 4
A

parentesizzazione su unh sequenza di matrici di lunghezza crescente. L equazione 16.2


54wtklx-Cw la-ORDER he I caso iir cui n 6 e
Figura 16.1 Le tabelle r e n calcolnte dall t procedura
mostra che il costo m i, del calcolo del prodotto di una sequenza di j i 1 matrici dipende
j siano.
le dinrensioiri delle matrici
solamente dal costo del calcolo del prodotto di sequenze di matrici di una lunghezza minore
matrice dimensione
di j i l. In altri termini, per I i, i 1... j- l, la matrice A il risultato del prodotto

A, 30 x 35
di k- i l j i 1 matrici, e la matrice Al, il risultato del prodotto di j k j i l
l
A 35 x 15
matrici.
2.... A. 15 x 5
L algoritmo per prima cosa linee 2-3 esegue l istruzione i i, i e- 0 per i I, n il
A, 5 x 0
costo minimo per sequenze di lunghezza 1 . In seguito, durante l esecuzione del ciclo formato
A, I x 20
dalle istruzioni delle linee -12, viene utilizzata l equazione di ricorrenza 16.2 percalcolare Ox i
A
il valore .
m i, i 1 , per i l, 2, ..., n l il costo minimo per sequenze di lunghezza I
.
Quando il cielo viene eseguito una seconda volt si calcola il valore sn i, i 2j. per i l.
..., i 2 il costo minimo per sequenze di lunghezza l 3 e cosi via. A opii pa sn del ciclo
il costo in i, jj ca1colato nelle Jinc .e 9- l 2 dipende solamente dai valori della tabella ni i, / j e
ni k 1, j calcolati ai passi precedenti.

La figura 16.1 descrive il risultatn di questa prncedura u una sequenza di n 6 matrici.


facile vedere che viene utilizzata solo q rella della tabella che rimane al di sopra dell.i S0 35 15 -0 13000,
parte 3 pp , pp
diagonale principale il s ulore m i, j dctinito solo i j. Nella figura la cliagonali .
AQ
71 -5 .
quando 3 j
$j j j ji
. 6 ID 0 5.

principale della tabella i isposla orizzc ntalmente e la sequenza delle matrici i elenchi - 43 tS 0 35 10 0 I1375
m 2, 4 i r 5. 5 p f pp

subito sotto la figura. Per cnme dispost ila tabella nella figura 16. I, i pu notare che il coito
7125.
mininso ni i, j del prodotto di una scquenra di matrici A A, A risei trovato s ipr
pii
290 Capitolo E6
Progranuna ione dinamica 29 J

Costruzione di una soluzione ottima


l.1-3 Sia R i. il numero di volte che la Mwmix-CHwtv,-ORoER accede
j procedura
all elemento m i, nel calcolo degli altri elementi della tabella m. Si dimostri che
j
Nel paragrafo precedente, abbiamo mostrato che la procedura Mwvex-Cwwts-Oro deter- il numero totale di accessi alla tabella m dato da
mina il numero ottimo di moltiplicazioni scalari necessarie per calcolare il prodotto di una
sequenza di matrici tuttavia la procedura non mostra direttamente sia la reale strategia n n
quale
JR i, j
di esecuzione dei prodotti matriciali. Il quarto passo del paradigma della programmazione il gi
dinamica ha il compito di definire la strategia che permette di costruire una soluzione ottima
la soluzione del essere facilitata dall utilizzo del-
del la strategia dipende dalle infnrmazioni sulle soluzioni ottime dei sottoproblemi 5uggerimenro problema pu
problema,
calcolate nelle fasi l equazione i- nn l 2n 1 /6.
precedenti. g,,

Nel nostro esempio, la tabella s1 .. n. I .. n contiene tutte le informazioni necessarie per


determinare la migliore strategia di calcolo dei matriciali. Un elemento 16.1-4 Si mostri che la parentesizzazione completa di una espressione con n elementi ha
prodotti generico
s i, j della tabella contiene que valore k per cui la parentesizzazione ottima di A A, A esattamente r 1 coppie di parentesi.
ottenuta combinando assieme le parentesizzazioni ottime di A A, Ae A,, A, - A.

Questa informazione ci assicura che l ultimo prodotto matriciale nel calcolo ottimo di A,
dato dal prodotto A, A, C111818mente
questi prodotti matriciali possono essere 16.2 Elementi di programmazione dinamica
calcolati in modo ricorsivo il valore s 1, s 1, n definisce solamente l ultimo prodotto
matriciale nel calcolo di A, Anatogamente, s s l, n 1, n definisce l ultimo
,. prodotto solamente un esempio di applicazione della
Nel paragrafo precedente abbiamo mostrato
matriciale nel calcolo di A,, La seguente procedura ricorsiva calcola la matrice A
tecnica della dinamica a questo naturale chiedersi quale sia la
programmazione punto
risultato del prodotto di una sequenza di matrici. I parametri della sono la sequenza
procedura risolti con tecnica. In
classe di problemi che possono essere questa questo paragrafo
di matrici A A, ... A . la tabella s costruita dalla MwvRtx-Cesti-Oeoee e gli
procedura ottima e sottoproblemi comuni, che un
esamineremo le due propriet basilari. sonostruttura
indici i e j. Si assume che la chiamata iniziale della procedura sia Ma,TRtx-CwAii-Mt t.rivLs A.
di ottimizzazione deve affinch si applicare la tecnica della
problema possedere possa
5, I, 11 .
dinamic a. Inoltre. una variante della tecnica della program-
programmazione presenterenso
mazione dinamica, detta ricorsione con memorizzazione nsemoi -ation , che si avvantaggia
MATR1X-CHAIY-MULTIPLY A, s, i, j della dei sottoproblemi comuni.
propriet
l ifj i

2 then X c iX4tRtx-Cvew-Mua1t t.v A, s, i, s i, j Soltostruttura ottima


3 Y C LXIATRIX-CHAhv-MULTIPLY A, s, s i, j 1, j

4 return MATRIX-MULTIPLY X, Y Il primo di risoluzione di un di ottimizzazione mediante Ia tecnica della


passo problema
5 else retufn A dinamica consiste nella caratterizzazione della struttura di una soluzio-
programmazione
ne ottima. Diciamo che un una sottostrattura ottimava nel caso in maui una
problema presenta
soluzione ottima del contiene al suo interno soluzioni ottime dei sottoproblemi.
problema
Nell esempio di figura 16.1, la chiama a della procedura Mwmlx-Chage-h4uuivcv A, s, l, 6
Ogni un una sottostruttura ottima, questo potrebbe essere un
qualvolta problema presenta
calcola il prodotto della sequenza di nsatrici secondo la parentesizzazione
buon indizio dell applicabilit della tecnica della dinamica. Tuttavia.
programmazione
A, .4, A, A, A, A 16.3 volere indicare anche l applicabilith di una strategia greedy vedi
questo potrebbe
Capitolo 17.

Nel 16.1 abbiamo mostrato che il problema del di una sequenza di


Esercizi paragrato prodotto

contiene soluzianiuttime dei che trovano le di A, A, A,e


problemi parentesizzazioni
16.1-1 Si determini una parenteiizzazione ottim del di una sequenza di matrici
prodotto A adottato dimostrare che i snttoproblemi
A ,, A, La tecnica che abbiamn per
di dimensioni 5. 10, 3, 12. 5, 50, 6.

migtiore del sottoproblema e si dinaostra che ipotesi .s contraddiie l ipotesi di


questa porta
j6.1-2 Si definisca un algoritmo efficiente, Palivv-Orr w, i-Pwver s, stampare la ottinsalith del originale.
per problema
parentesizzazioiie ottima di una sequenra di matrici. La Piu -Ovn w -
procedur i
Psr ris ll COI11t. CUOIO l1 tl1l.ll l .l COhlIUI1 1 Ci lll I iM 11 -
p Ll ll11CtPO pli CCJtll ,I

CHAIt-ORDLR. S i discolpo le caratteristiche e le propriet del l algoritmo proposti .


Pmgrammazione dinamica 293

292 Capitolo 16

Spesso, la sottostruttura ottima di un indica l esistenza di un insieme di


problema
sottoproblemi detto spa.-io dei sotroproblenri a cui si applicare la tecnica della
pu
programmazione dinamica. Generalmente, per un certo esistono diverse classi di
problema
sottoproblemi che naturali .
essere considerate come le classi di sot toproblemi Per

mw
possono
esempio,

j, ri
lo spazio dei sottoproblemi che abbiamo considerato nel caso del di una
prodotto
sequenza di matrici include tutti i sottoproblemi le sottosequenze della sequenza di
per
inpesso.

i
Avremmo potuto anche scegliere come spazio dei sottoproblemi sequenze arbitra-
rie di matrici
soqoproblemi
costruite

troppo
a partire

grande
dalla

un
sequenza
algoritmo
di ingresso.
di programmazione
Tuttavia

dinamica
quest ultimo
basato
spazio

su questo
dei

3,.3
ri 4..4 2..2
i 3.3
2..2 3..3 1..1 2.2

spazio dei sottoproblemi dovrebbe risolvere un numero di maggiore di


problemi quello
strettamente necessario. di REcuRsivE-M TRtx-CH tii p. 1, 4 . Ogni nodo
Figura 16.2 L albero di ricorsione della chiamata
illustrata dai sottoalberi n grigio sosriruita
contiene i parametri i e j. La parte della computa ione
Se caso della dinamica, un buon metodo di definizione dello spazio dei
programmazione l. 4.
da un singolo accesso iir tabella nella chiamora di Me ioizeo-MwvRtx-Ceca p.
sottoproblemi consiste nell analizzare la sottostruttura ottima del e di ogni
problema
sottoproblema. Per esempio, dopo avere esaminato la sottostruttura ottima del del
problema
prodotto di una sequenza di matrici, applicare lo stesso meccanismo esaminare
possiamo per
RECURSIVE-MATRIX-CHAIN p, l, j
le strutture ottime dei sottoproblemi, dei sottosottoproblemi e cosi via. Al termine di questa
analisi scopriamo che tutti i sottoproblemi l if ij
non sono altro che prodotti di sottosequenze di
A,. A .... A, . Pertanto, lo spazio dei sottoproblemi naturale e maneggevole da 2 then return 0
pi
considerare dato dalle sequenze di matrici della torma A ...., A, cnn l i n.
A. i il j 3 mi jc
j

4 for kc itoj l

Sottoproblemi comuni 5 do C/ E RECURSIVE-.vtATRIX-CW.tIs p, i. k

Rzcuastvc-MATRIX-CHAIN J, li 1, j f p
p

La seconda propriet. che un di ottimizzazione deve soddisfare affinch si possa


problema 6 if ni i,
q j
applicare la tecnica della programmazione dinamica, che lo spazio delle soluzioni sia
piccolo , 7 thea n i, jj q
nel senso che un algoritmo di risoluzione ricorsivo risolve di una volta stessi
pi gli
sottoproblemi. che continuare a enerare 8 return in i, jj
piuttosto nuovi sottoproblemi. GeneraImente, il
numero totale di sottoprnblemi distinti polinomiale nelle dimensioni dei dati in ingresso.
Diciamo che Inalbero di ricorsiona dalla chiamata della procedura
un problema di ottimizzazione ha sottoprobletni comu ri ni .I i so in cui un La figura 16.2 mostra prodono
nodo dell albero ha come etichetta i valori dei
algoritmo ricorsivo richiede di risolvere di una volta lo stesso La differenza REcuRsivE-M mx-Cvisw p, l, 4. Ogni
piii problema.
e con la tecnica divide-et-impera i e j. Si noti come alcune coppie di valori siano ripetute.
principa che quest ultima tecnica. a opri passo ricorsi vo. parametri
genera un completamente nuovo. Invece, algoritmi di programmazione dinami- di esecuzione Tn del calcolo di ni 1. n con questa
problenu gli Infatti. si pu dimostrare che il tempo
ca si avvantaggiano della dei sottoproblemi comuni. Ogni sottoprnblema ri olto
proprie
una cola volta e le soluzioni di tutti i sottoproblemi sono memorizzate almeno una unith di tempo. Da un analisi della
in una tabella. Q indn istruzioni delle linee 1-2 e 6-7 richieda
si presenta nuovamente il medeiins sottoproblema la ua soluzione viene trovata con un equazione di ricorrenza
si ottiene la seguente
procedura
semplice accesso alla tabella. L icceiso olla tabella richiede s nipre un tempo costunte.
T1 1,
Per illustrue la propri ti dei ot tojirc blc mi comuni, consideriamo nuovamente il problema
n l

1 Tn k i j per n l .
Tn
come la procedura gTk
fv1 reix-C , ii-Or trr riutilizzi le nluzioni dei sottoproblemi delle righe
interiori durante I ii oluzione dei sottnprublemi delle righe superinri. Per esempio, l ele-
2, .... it I, si una volta coiae T4
n iti come un termine Ti. i l, presenti
Si generico per
mento nei 3. 4 viene utilizzato ben volte. durante il calcolo di or 2. 4. n
per quattro l. 4j.
m 3, 5 e in 3. 6j. Sc. m 3. A Ioidi calce l. tt 11uos ametlte ogni vC lta, itlvecc che Citare fl iC1 IVCre ec uazione di ricorrenza
IJ C ll I I tUOl1 8 lll l i0111Al ilOf1 i
SOllllllDtOI pO iSll110

COI11C

Tn 2g Ti n . 164
i i I g
t. I
termini clcll cquazione di ricorreivz. 1 i.2 .
294 Capitolo 16 dinamica 95
Prog ranuna-ione

Mediante il metodo di sostituzione dimostriamo che Tn Q2 . In dimo- della ReciRst E-


particolare. La seguente una versione con memorizzazione procedun
,perognin 2. procedura
striamoperinduzioneche Tn 2 Labasedell induzioneimmediatadato
MATRIX-CHA1N.
che Tl 1 2. Per n 2 il passo induttivo risulta

MEh10lZED-MATRIX-CHAIN p
n-I

n n length p 1
Tn 22 1

il 2 forim 1 ton
n-
3 do for j i ton
22 n
4 do mji, j m
i0

g pn-I
5 return Loovue-Cewti p, 1, n

2 2 n
LooKUP-CHAIN p, i. j
pn-I

l if m i, j

Questo conclude la dimostrazione. In conclusione, il numero totale delle operazioni eseguite 2 then return m i. j
a una chiamata della Recuastve-Mwmn-CHwtw p, l, risulta essere esponenziale in n. 3 ifi j
Si confronti il precedente algoritmo ricorsi vo top-down con l algoritmo di programmazio- 0
4 then m i. j

5 else for k m i to j 1

i. k
dinamica li risolve ciascuno una sola volta. Al l algoritmo
6 do q c Loovup-Citi p.
programmazione contrario.
Loovuv-Cv. i p, I- 1, j p,, p, p,

7 if q ai i, j
sottoproblema si ripresenta pi volte. allora una buona idea domandarsi se non siapossibile
8 then m i. j q
applicare la tecnica della programmazione dinamica.
9 return rn i, j

della 11., ti-C .i -


Ricorsione con memorizzazione Mewo,zzo- V Rix-ChA r,, allo stesso modo procedura
La procedura
m i. rapprese l
m1 .. n, 1 .. nj dove un generico elemento j
GRDER, utilizza una tabella
la metri,.e A, O.-. i
scalari necessarie per calcolare
Esiste una variante della ro rammazione dinamica numero minin,o di moltiplicazioni
che, pur adottando una strategia di tipo
il valore indicare che it corrispond nne
top-down, spesso elemento della tabella inizialmente prende per
presceta la stessa efficienza delle soluzioni algoritmiche di prnerammazio- - .la
, essere ancora calcolato. Se, al nwmento
-, numero di moltiplicazioni scalari deve
ne dinamica. L idea di mem orizzare il naturale, ma inefficiente, algoritmo ricorsivo. iv onte
. Conte
... i. j , m i, . allnra la procedura. empii .
in tutte chiamata della procedura Looxup-Cap,t .p, j
le soluzioni di p ro ram mmazione dinamica anche in questo caso le soluzioni i i deiei i ime
calcolatn in precedenza linea 2. Altrimenti.
te restituisce come risultato il costo m i. j
sottoproblemi vengono memorizzate in una tabella, ma la novit di in
principale que ta il co to. lo si memorizu
della RECURSIVE-MATRI -C w. si calcola
a ternativa data dalla strategia di controllo della costruzione nel caso procedura
della tabella che sostanzial- indi are
usare il valore speciale per
m i. e poi si restituisce il valore calcolato. Conviene
mente quella definita dall algoritmo ricorsivo. j
datn che stesso valore utilizzati . la
che l elemento della tabella non significativo quello
Un al r itmo ricorsiio con memori-a-ione men oi -ed utilizza ima tbellQ Ill illl valnre iniziale
RecuRsivz-M tetx-CHA come
linea 3 della procedura
i, j reititui ce ietilP
In conclusione. la chiamata della procedura Loovuv-Cerve ,
m i. j.
iniz almente assume un valore speciale indicare che n,lta in,-..i la
per il Valore di quell elemento non i viene calcul t, etTettivamente solo la prima
il valore u, i, ma v.,flore
j. questn
ancora stato calcolato. Quand . durante l esecuzione dell al oritmo ricorsivo. si richiede
chiamati con i parametri i e i.
, - procedura
di risolvere la p rima volta u n enericn ,
pper sottoproblema, allora . czlcol i
si la soluzione
ic u ione e
mx-CHwti sia et tiiiel1 C d
. ura 16.2 mostra come la prncedura 1 -, lotzt n-Ma1 piii
la si memorizza - La fi
nella tabella. a. Q
Quamio viene richiesto . di risolvere nuovamente lo sateismo
sottoproblema. .. sem
p p I icemcnte
ic si accede , allatabeltae si restituisce, come ris ltato. il valore
e non i lciilzli diretumente.
sono ottenuti mediante un accesso ila beli i
memorizzato.

Questa soluzione nr iu oidi che i ir

I.
ne utilizzo
I .. di tecnicllC l1ISllii
, 1Vi. . 1 LILI i. lll 1plOI1II Illl VLI1Ll ll 1
p Il lllll ll1 Ut/ll//, Ill IIlll11C
lll11C ILlllilXll lli I,
dinamica 297
Progranvnazione
296 Capirolo K

- di X B, C, 8, D. A, 8, dove
.z, Per esempio, Z 8, C, D, B una sottosequenza A,
tabella, pertanto. in totale si impiega tempo On . Quindi, la tecnica della ricorsione con
la corrispondente sequenza di indici risulta 2, , 5, 7 .
memorizzazione trasforma un algoritmo Q2 in un algoritmo On .
una sequenza Z una sottosequen a comune
Date due sottosequenze X e Y, diciamo che
In conclusione, il problema del prodotto di una sequenza di matrici essere risolto in un
pu se X B,
di entrambe le sequenze X e Y. Per esempio, A,
tempo On sia da un algoritmo top-down, che impiega una tecnica di ricorsione con di X e Y se Z una sottosequenza
C, A una sottosequenza comune di
C, B, D, A, B e Y 8, D, C, A, 8, A la sequenza B,
memorizzazione, che da un algoritmo bottom-up di programmazione dinamica. Entrambe le
comune LCS - di Xe Y, dato
Xe Y. La sequenza 8, C, A non la pi lunga sottosequenza
soluzioni si avvantaggiano della dei sottoproblemi comuni ci sono solamente 8 n-
propriet lunghezza 4. La sequenza
C, B, A , che comune a X e Y, ha
sottoproblemi distinti e le due calcolano soluzione che lunga 3 e la sequenza B,
procedure la di ogni sottoproblemu
D, A, 8 non esiste alcuna
C, 8, A una LCS di X e Y, come pure la sequenza 8,
esattamente una sola volta. Senza I uso della memorizzazione, l algoritmo ricorsivo naturale B,
di 1unghezza maggiore o uguale a 5.
richiederebbe un tempo esponenziale dato che sottosequenza comune
lo stesso sottoproblema verrebbe risolto i
sono date due sequenze X X,,
volte. Nel della lunga sottosequenza comane
problema piii
lasottosequenzacomunedi Xe Ydi lunghezza
In ...,x e Y v,,y ...,y e si vuole determinare
generale, se tutti i sottoproblemi devono essere risolti almeno una volta, allora un
della LCS essere risolto
massima. In questo mostreremo come il problema possa
alooritmo bottom-u d i pro rammazione dinamica pi efficiente di un fattore costante paragrafo
efficiente con la tecnica della dinamica.
rispetto a un algoritmo ricorsi vo top-down con memorizzazione. Il motivo che in modo programmazione
non c alcun
costo per la ricorsione e si ha un costo minore il mantenimento della tabella. Inoltre. la
per
struttura regolare degli accessi alla tabella di alcuni essere utilizzata da un lunga sottosequenza comune
problemi pu Caratterizzazione della pi
algoritmo di rara mmazione dinamica per ridurre ulteriormente i vincoli di tempo e di
spazio. Tuttavia, se nello spazio dei sottoproblemi esistono dei sottoproblemi che non tutte le
il problema della LCS consiste nell enumerare
Un metodo di soluzione ingenuo per
necessitano mai di essere risolti. allon una soluzione ricorsiva con memorizzazione ha il di
che ogni sottosequenza sia anche una sottosequenza
sottosequenze di Xe nel controllare
notevole vantaeeio di r v ere solo quei sottoproblemi che sono strettamente necessari. sulla
risolutivo bisogna mantenere l informazione pi
Y. Durante ogni fase del procedimento
Dato che ogni sottosequenza di X corrisponde
lunga sottosequenza trovata fino a quel punto.
Esercizi richiede un ten po
2...., m di indici di X, la soluzione ingenua
a un sottoinsieme l.
impraticabile sequenze lunghe.
esponenziale. rendendola. pertantn, per
l.2-I Si confronti l equazione di ricorrenza 16.4 con l equazione di ricorrenza 8.4 che
della sottostruttura ottima, come
Tuttavia, il problema della LCS soddisfa la prnpriet
viene fuori dall analisi del tempo medio di esecuzione dell al oritmo del t.
quickso nel seguito, la classe naturale dei
dimostrato dal teorema seguente. Come vedremo
i dia la motivazione intuitiva del le soluzioni delle due equazioni di
perch di delle due sequenze
de della LCS conciate nelle coppie prefissi
ricorrenza debbano essere sottoproblemi problema
cosi diverse.
X r, v ..., x diciamo che X i prejisso
di ingresso. Pi data una sequenza
precisamente,
con i 1, 2...., in. Pere empio. se
della sequenza X se e solo se X l X ...xe ,
i-esiino
16.2-2 Q
Qual il m o d o piii efficiente determinare il numero ottimo di moltiplicazioni vuota.
per allora X B. C. 8 e X la sequenza
X A, B. C. B, D, A, B, A,
scalari nel problema del prodntto di una sequenra di matrici enumerare tutte le

possi ili parentesizzazioni del prodotto e calcolare, ogni il


per parentesizzazione,
I ottima di ana LCS
numerodimoltiplicazioni scalari,oppureeseguirelaproceduraREcuRsivz-Mavex- Teorema l. 5ottostruttura

e sia Z ,, , .... una


CHALX Si giustifichi la risposta. Siano X r,,x ...,x Y y,,y ....y due sequenze

LCS di Xe Y.
qualunque
16.2-3 Si disegni l albero -, di X, e Y,
di ricorsione della procedure VIERGE-SORT, descritta nel 1. Se.v allora .v s e Z,, una LCS
paruera- y,
fo I.. 1, quando viene applicata a un vettore con 16 elementi. Si spieghi il motivo -, di X,, e V.
2. Se. - W e w x ,. allora Z una LCS
- y
pper cui la tecnica de v ricorsione con memorizzazione t on un aumento di
produce LCS di X e Y
3. Se .v w e ,w . allora Z u
eefficienza . viene applicata d y y
quando a un buon aal or t ri mo d i tipo
t d ivi e-et-imper i
come il fu1zem-Sonar.
una sottosequenza comune di
Se fobie . allora si costruire
Di nostra ione, l - c,v potrebbe
y . Chianinente. questo
Y di lungherza I 1 baiterebbe concatin iri. a Z l elemento.v
Xe
sottoicquenza cotnune di X e Y.
16,3 II problema che Z si i la ho ga
della pi lunga sottosequenza comune uno contraddizione dell ipotesi i

hcr a ch .
di e Y, di liin I 1. Dimoitriah1o queste pretisso
Il che nnlizzerento sottoiequenza comune X,
pro,sinodo problema il probi d 11. I Ullg,.l SOttOSC.gUcI1Z.,1 COI11LlllL..

Ullu iOttOSC i
Llcl1l. 18 . i . lll1I
c COll ClC Uslollc I

lieve i m,l iure di l l. Al or. cunc itenando


eC menti
Lmr..., -.. OllOSCCjllill/ 1 COI11U11C 1Vdi X, c l, di lun
eventu,.ilmehte nessuno...-. Furnnlme i Iit-, C,,l Q d. llll,.l .. St.. fllClll J X
X ......... IA..i
.
X ..T,.... X
.

etto
iene st ttovequen -a di X se eiiite una sec u nz t. strali -
.. ...... .ci il in lcic1 iii cit C im man itihcequeniv.
mente crescente.
s tl e. i ....
,... i
i, d.
di illclici di X tale elle tlttti indici I. 2.... I. v tic Nci T.. I Ci i l acrw iinii termini
r.,
r,, per eli j
Progranvna ione dinamica
298 Capitolo E6

le due sequenze X r,. x.....-


LCS-Lemma ha come di ingresso
La procedura parametri
1V con l elemento x y si ottiene una sottosequenza comune di X e Y di lunghezza maggiore
di I-. Pertanto otteniamo una contraddizione dell ipotesi. ..
l ordine delle righe. In altri termini. prim
elementi della tabella sono calcolati seguendo
-, r.- -
2 Se c.z, allora Z una sottosequenza comune di X, e Y. Se esistesse una della riga, quelli della seconda
calcolano, da sinistn verso destra, gli elementi prima poi
sottosequenza comune W di X,, e Y di lunghezza maggiore di k, allora W sarebbe anche una tabella b1 .. m, 1 .. n per sempliti -.
via. La utilizza anche una seconda
e cosi procedura
sottosequenza comune di X e Y. Questa una contraddizione dell ipotesi che il generico elemento b ..
che Z sia una LCS di una soluzione ottima. L idea intuitiva
la costruzione 1
di Xe Y. punta alla scelta della soluzione ottima
alla della tabella che corrisponde
posizione
restituisce le due tabelle b e c il i ali -.-
3 Si dimostra con un ragionamento simmetrico a quello usato nel nel calcolo di c i, La procedura
punto 2. sottoproblema g.
c vt, n la lunghezza di una LCS di X e Y.
dell elemento

Il Teorema di caratterizzazione 16.1 dimostra che una LCS di due sequenze contiene al suo
interno una LCS dei delle due sequenze. il della lunga
prefissi Quindi, problema pi LCS LEiSGTH X, p
sottoseqdenza comune soddisfa la propriet della sottostruttura ottima. Inoltre, come vedre-
1 m length XJ
mo nel seguito, una soluzione ricorsiva soddisfa anche la propriet dei sottoproblemi comuni.
2 n c length Y

3 fori I tom
Soluzione ricorsiva dei sottoproblemi
4 dee i.0 0

5 for j c- 0 to i
Il Teorema 16.1 implica che, si vuole determinare una LCS di X
quando v, r,...., x e
Y 6 do c 0. j 0
y,, y ..., y, , si devono considerare uno o due sottoproblemi. Infatti, se.v i, per
determinare una LCS di X e Y basta trovare una LCS di X e Y e concatenare 7 fori 1tom
rn- l e-
a quest a
I
LCS l elemento.v y . Nel caso in cui x w y, allora si devono risolvere 1 to n
due sottoproblemi do for j
bisogna trovare sia una LCS di X, e Y che una LCS di Xe V,. La pi grande di queste due do if v i
9
LCS una LCS di X e Y.
then c i, - ci 1, j l l
10 j
facile notare che il problema della LCS soddisfa la propriet dei sottoproblemi comuni.
b i, j m
Per trovare una LCS di Xe Y si deve necessariamente trovare sia una LCS di X, e Y sia una
LCS else if chi i 1. j e i. j l
di Xe Y,. Entrambi i sottoproblemi devono risolvere il problema di trovare una LCS
di X, e Y,. Chiaramente, molti altri snttoproble mi devono then c i, j m ci 1. j
affrontare e risol vere i mede in ,i
sottoproblemi. -T
14 h i, j -
Come nel caso del problema del di una sequenza di matrici c i. 1
prodotto la nostra soluzione else c i. j j
ricorsii a del problema della LCS comporta la definizione di una m
equazione di ricorrenza per m
16 I i. j
determinare il costo di una soluzione nttima. Definiamo c i. come
j la lunghezza di una LCS
delle sequenze X e Y. Se uno 17 return b, c
o l altro degli indici i e j ueuale a 0. allora una delle due
sottosequenze ha lunghezza 0, la LCS ha lunghezza 0. La
quindi sottnstruttura ottima del
dell LCS-
problema LCS permette di derivare la formula ricorsiva le tabelle restituite cnmc risultato dallachiznsata procedura
La figura 16.3 nsostra

0 i0
SC o j O, della i 0
in tempo 01 e quindi il tempo di esecuzioise proi eduta
eli. j ci 1, j I 1 tzbella calcolato
se i j0 e x, y,,
l6.5
max c i. j 1, ci 1, j se i j0 e x, y,.

Costruzione di uoa LCS


utilizzat t co l x .ice
LCS-Lc w puo essere per
La tabella b restituit i l Ila procedura
Calcolo della lutighezza di una LCS iutti ti
ige li
. tllClli,.l ,, .ll
.. . NC AO
c .
Utilizzando l equazione di ricorrenza oritmo
16,5 poisi mo facilmente criverc un al
ricorsivo, esponenziale in tempo. che calcola la luisghezz i di una LCS di due iiqiisnze.

tecnica della r imm.wiollc dinan ic iruvare


pro pcr le ioluzioni con uria mn lith hottciin-up.
300 Capitolo l
dinamica 30I
Pmgrnmnazione

j 0 1 2 3 4 5 5
a sostanziali miglioramenti asintotici. ia in temP
casi, tuttavia, le modifiche possono portare
a, D C A a
che in spazio.

non utilizzare 1- t ll .
i 0 0 o Per esempio, la soluzione del problema della LCS potrebbe
o o o o
dal valore di Atri r
I A .p T T g Infatti. il valore di un elemento c i. j dipende solamente
generico
elementi della tabella c c fi 1, j- 1, ci 1, j e c f i j- 1 J. Dato il valore di e i..i po. o
2 p tre i oliari stato
0 -.I 2 2 determinare, in tempo 01 e senza accedere alla tabella h, quale di questi
molto imito alla
t utilizzato calcolare c i, Quindi, utilizzando una procedura
o per j.
I. 2 2 2
PRO-LCS costruire una LCS in tempo Om n. Yell E -- ciglio
4 1 33
procedura possiamo
0 1 l 2 2 modifica riduia li . p io
16.3-2 si chiede di scrivere la Sebbene questa
procedura.
5 t 1 --t
t calcolo di una LCS non
D richiesto di una O mn , lo spazio necessario per il
2 2 2 3 3 quantit
bisogno di uno spazio d-11 i rdine
6 .A T diminuisce in modo asintotico infatti abbiamo sempre
0 1 2 2 3 3 4
8 mn per memorizzare la tabella c.
7 t t tp l
B
0 l 2 2 3 4 diminuire lo spazio asintotico richiesto dalla LCS-I
4 Tuttavia. possiamo procedura
.i - 1
infatti la procedura, a ogni istante, necessita di sole due righe della tabella c. la ri
Figura
F o 6.3. Le tabelle c e b calcolare dalla . ao
procechrra LCS-LE ENGTH app l icata alle seqr,er,-e X realt. si utilizzare una di .pi
A. in precedenza e la riga in esame. In pu quantit
...,,, .,C,A,B,A . E el ..
ge emenro delfa tabella di rlgn i e coloima
. . j contiene il valore
maggiore dello spazio richiesto memorizzare na riga della tahell-l
c r, e leggermente per
va ore e emenro c 7, 6 nell ai qolri
effettivi solo nel caso in cui .i -
l Esercizio 16.3-4. Questi miglioramenti sono
O,l,. b a U, f n, o di una LCS se il problema richiede di restituire gli lC l
,... d. determinare la lunghezza
j .c .j- e j c 6n c allora la tabella di dimensioni minori non conterrebbe abbastanza inti nv i P
LCS.
i una sufficieirte segnire le frecce b i, a partire dall angolo n.
N
inferiore destro del1a tabella. ricostruire una LCS in un tempo dell ordine di O i
gni ffreccia ddel I ti p o sul l ca nnrino corrisponde a l
cn elemento in C/ 11O fg C
jj LCS,. B,, I, ,.

Esercizi
PRttvT-LCS b, X, i, j

determini una LCS di 0, 0. I, 0. 1. 0. 1 e 0, 1. 0, l, 1. 0. 1. l. 0 .


l ifi 0 oppure 16.3-I Si l.
j 0

2 then return .
mostri come ia ricostruire una LCS in tempo O vi
l.3-2 Si possibile
3 ifb i, j 4
utilizzare la tabella f . ma avendo disposizione la tabella c e le SCQU
4 then PRIxT-LCS b, X, i 1, j l X
XX CYQ V fV
X

5 x,.
print
- 1 LCS-l-
6 else if b i, 16.3-3 Si dia una versione ricorsiva con memorizzazione Jella procedura
j
7 then eseguibile in tempo O mn .
P m-LCS b, X, i i, j
8 else PRtrlv-LCS b, X, i. j 1
di una LCS utilizzando solamente - miil .
16.3-4 Si mostri come calcolare la lunghezza

elementi della t debella c pi uno p izio addizional Ol. Succe siian - ti .


Per esempio, considerando la tabella b descritta nella figura l 6.3.
.. la d U lensenti uno
pO P A come risolvere lo sesso con solo min ni. n pi
n1ostri probleina
D ato c e in tutti i livelli della ricorsione si decrementa l
sempre d spazin addizionale Ol.
j, si ha,che il tempo di esecuzione della procedura Om n.

in 1CI11pO O I1 IQ pi lllll l . l .9
16.3- Si determini un sl oritmv per trovare
Una soluzione efficiente
pi n numeri.
monotona crescente di una sequenza i

uan ,
s oilprogettodiunalgnritmo,ca
Quandosiconclu . - - - -
pi t a spessn
.. di accorgersi . che il tempop di Ign la lun a ii ti l
J G.3-6 Si determini un al ori mo tro, , . e in tempo On pii,
esecuzione e la di memoria utilizzata per
quantit dall al o itmo essere n i liorati.
possono
Questo accade molto frequentemente nel caso d IA
goritmi che hztin uno snluziune
immedinta con tecniche di ranuzzzioiw. dinamica.
pro
Alcune
Al modifiche . semplificare a e
possono c., la .struttur ura d e ll 1g - indole 1
goritmue mi liorur I etticient,t lllOt II/1I1t lL LOllOlCC ltCll/v C llltli l il c llc sii mi 1
i un fattore costante. ma senza a nti lineame
porture t, d ella ff icicn a. fn alcuni d in rcii .
programma inne dinamica 303
302 Capirolo 16

16.4 Triangolazione ottima di un poligono I


i
I
I
I

In questo paragrafo esamineremo il problema della triangolazione ottima di un poligono I


I
I
I
I
convesso. A dispetto della apparenza esteriore, vedremo che questo problema di natura I
I

I l

geometrica delle considerei oli e sorprendenti analogie con il problema del prodono I i
I

presenta I
I 5
l I
di una sequenza di matrici. i
I
I
1

i
Un poligono una spezzata chiusa del piano bidimensionale. Ovvero, un poligono una I g
I
I
I
I
spezzata che si richiude su se stessa ed formata da una sequenza di segmenti di retta. detti I
I

i lati de1 Un che unisce due lati consecutivi chiamato un vertice de


poligono. punto

poligono. Un detto semplice se non contiene intexsezioni con se stesso in questo


poligono l

paragrafo considereremo sempre poligoni semplici. L insieme dei punti del piano racchiusi
b
del che a
da un poligono semplice detto interno del poligono. L insieme dei punti piano
stanno sui lati del detto Infine, l insieme dei che stanno triangola io re di un cr r 7
poligono perimetro. punti Figura 16.4 Dire triangola ioni di tn poligono
coiivesso. Ogrri pc ligono
in un m,mea rii rricmgoli a
all esterno del detto esterno. Un poligono semplice detto convesso se. presi due Ira rm,rirmero di corde uguale a 7 3 4 e li,.ide il poligw,o rri
poligono lati

che appartengono al perimetro, o all interno del poligono, il segmento di retta T-2 5.
punti qualsiasi
che li unisce formato da punti che appartengono al perimetro o all interno del poligono.
Analogia con la parentesizzazione
Generalmente un poligono viene rappresentato elencando, in senso orario, l insieme dei

suoi vertici. Pertanto. se P 1 VA l un convesso. allora P costituito da


C
poligono
delle soiprendenti unalogie con il
n lati i,v,. i,i , .... i,v, dove viene interpretato come i Nel seguito tutte le operazioni Il problema della triangolazione di un poligono pre enta
.
come che descrive il prodotto di
aritmetiche che coinvolgono indici dei vertici del sono sempre detmite nsodulo della di una espressione quella
gli poligono problema parentesizzazione
spiccare analogia fare riferimentn a
il numero dei vertici del una sequenza di matrici. Il modo migliore per questa
poligono.

Siano i e v. due vertici non adiacenti, il segmento ,v, detto corda del una corda strutture ad albero.
poligono
una espressione corrisponde a un albero binario
i,v, divide un in due v, ,,, ..., v e v, , ..., i . Una triangota-io te Una completa di
poligono poligoni parentesizzazione
dell espressione. La figura 16.5 descrive
di un consiste in un insieme T di corde del che divide il poligono in un completo, altrimenti detto albero di parsi tg
poligono poligono
del della sequenza di matrici
insieme di triangoli poligoni con tre Iati disgiunti. La figura 16.4 descrive due possibili Inalbero di parsiisg della parentesizzazione prodotto
triangolazioni di un poligono di 7 lati. In una triangolazione le corde non hanno intersezioni 16.6
i - s
con la sola eccezione dei punti terminali , inoltre l insieme T delle corde massimale una
etichettata con uno dei con ponenti atomici matrici
corda che non appartiene all insieme T interseca almeno una delle corde in T. I lati dei Ogni foglia dell albero di parsing

triangoli risultanti da un triangolazione possono essere sia corde della triangolazione che lati
che rappresenta l espressione E,. ed un
del la radice del sottoalbero ha un sottoalbero iinistro.
poligono. Infine, ogni triangolazione di un poligono convesso con ri vertici ha n 3 corde
E, Esiste una corrispondenza biunivoca tra
e divide il poligono in n 2 triangoli. sottoalbero tleitro. che rappresenta 1*espres ione

di n elementi un mici cnmpletamente.


alberi di parsing e le es pressioni parentecizzate
Nel problema della tria rgola -ione ottima di tn consideriamo un gli
pvligoiro poligono
convesso P i . i,..., v, ed una funzione peso w definita sui triangoli formati dai lati e

dalle corde di P. Il problema consist nel determinare una triangolazione che mitsimizza li

somma dei pesi dei triangoli nella tri n,,olazione del poligono. Una funzione pe.,-o a,-,oci t,
in modo naturale ai triangoli

L D L j1 it /,. 4 l, .1, j
l,i l,l

dove, i- v. la distanza euclidea tra i e i . L algoritmo che stiaimo ettando non dipene
pro
dalla sci.lta della funzione peso 1 i tunz on peso essere definita in modo irbitrario.
puo

, a micnc il umetto lhcro cti deit.


prog ramma ione dinamica 305
304 Capitolo 16

o l algoritmo, I elemento m 1, n conterr il peso della triangolazione


Dopo avere eseguito
I

A ottima. Nel seguito. descriviamo le ragioni cui vale questa propriet.


per

A ottima
Sottostruttura di una triangolazione
A,

VA di un convesso P v, v,...., v con ir 1 venivi


Sia T una triangolazione ottima poligono
un k, dove l k n l. Il peso di T dato
che contenga il triangolo hi ,v,y, per qualche
che appartengono alla triangolazione dei due
dalla somma dei di hv av e dei triangoli
pesi 0

La triangolaziane dei sottopoligoni detieniti


AI sottopoligoni 1 p l Vg C
1
Vg V
.

una triangolazione di uno dei


da T deve essere necessariamente ottima, poich qualunque
A AI AI A. minore contraddirebbe l ipotesi di minimalit del peso di T.
A, due sottopoligoni con un peso

a b

Figura 16.5 Alberi di L albero Soluzione ricorsiva


parsing. a di parsing del prodorro di nntrfci A, A,A,ia, A,A I

sovrapposra all albero di Ogni matrice A corrisponde al lato l 1, i l. 2...., 6. minimo del calcolo del
parsi g. per Allo stesso modo in cui abbiamo definito m i. j come iI costo prodono

definiamo t i. j . l i a, come il peso di una triangolazione


matriciale A A A. per j
i r l

il ragionamento, assegneremo 0 a o ni
ottima del i . i ...., v. Per facilitare peso
poliscono
In generale, quindi, una triangolazione di un con n lati corrisponde a un albero di triangolazione ottima de P .
poligono degenere del tipo l V Il peso di una poligonn
poligono
parsing con n 1 foglie. Da un albero di si costruire, con un n.
parsing pu procedimento dato dal valore dell elemento t 1.
quindi,
simmetrico, una triangolazione. Infatti, gli alberi di parsi ng sono in corrispondenza biuni i oca
in modo ricorsi vo. La base della ricorsione il I l O
A questo cerchiamo di definire ti j
con le triangolazioni di poligoni. punto
vertici r i, i 0, peri 1. 2, ..., n. Quando j- i I. Ia
degenere di un poligono con due soli
Il prodotto completamente di n matrici comsponde a un albero di pzrsing con almeno tre vertici. Il no.. ro
parentesizzato sequenza di vertici v,, v definisce un poligono
i,
con n foglie, e, pertanto, corrisponde anche a una triangolazione di un con n l i con k i. i 1, .... I. la somma tra
poligono obiettivo quello di minimizzare. per tutti i vertici . j
vertici. Le figure 16.5 a e b mettono in evidenza corrispondenza biunivoca ogni v..... v e v. i
questa il peso di Ai,v i ed i pesi de11e triangolazioni ottime dei poligoni v,,
matriceA delprodottoA, A, -A,corrispondeaun lato i,i diunpoligonoconn l vertici. . La fonnul azione ricorsiva risulta
....
mentre una corda i .v. con i j, corrisponde alla matrice A, calcolata durante la i alutazione
del matriciale. se I j,
prodotto 0

Difatti, il del di una sequenza di matrici un caso


l il min t i,k r k
I, j iu Dz , vqv, sc i j. 16.7
problema prodotto particolare del s k -I
problema della triangoldiione ottima. 1n altri termini, ogni istanza del del
problema prodotto che
equazione di ricorrenza con l equazione di ricorrenza 16.2
di una sequenza di matrici essere, equivalentemel te, Si contronti la precedente
pu riformulata come un prnblerna di
triangolazione ottima. Dato il prodotto di una sequenza di matrici A, A ... A, destiniamo un
matriialeA A, A, Se si eccettuula presenza della tunzione paio.
convesso P v,, v per calcolare il prodotto
poligono v,, con n I vertici. Se la matrice A ha dimensioni
p, con i I, 2, ..., ii, allora la funzione definita
pes

N AV l l
p p / .

ottima viene eseguita in un tempo On con un uso di sp ilio


Una triangolazione ottima del P rispetto funzione detmi ce la procedura della trian ol azionare
poligono questa peso l ulbero
di parsing della ottin a del A A, ... A, 8 n- .
parentesizzazione prodotto
Sebbene la propriet simmetrica non sia vera il problema della triangolazione ottima vr ii
un caso particolare del del di una sequenza di matrici
prnbletna prodotto accade che l,i Esercizi
procedura Mwmtx-Cvw -OaoER. definita nel 16.1. con alcune tlloditiche
paragrafo picc 1e
convesso con it verti i hi
Si dimostri che o ani triangol ione di un poligono
l6.4-1

li 3 corde e divide il uno itl u 2 trian i li.


poli

diventare un rif ri tsento z i, cl iitoltre l i li eu 9 i iene e nu dific t t


vcloc riwilvcrc iI
l i.4-2 Il Guinevere sostiene che un il iiritin i piii vr
pfOICll lr
9 do in i. I i l I,jj wA ii
q

L upinioni. c cl i correll l .
tl Ii n isura dcll uiva di tnt tri w il . prolcci lv.
pc .s i
Programma ione dinamica 307
30 CapitoIo 16

16 4-3 Si supporiga che la funzione dipenda dalle corde di una triangolazione invece
peso
che dai triangoIi. Il peso della triangolazione rispetto a questa funzione w
peso
dato dalla somma dei delle corde della triangolazione. Si dimostri che il
pesi
problema della triangolazione con corde un caso del
pesate particolare problema
della triangolazione con triangoli pesati.

I.4-4 Si determini una triangolazione ottimadi un ottagono regolare con lati di lunghezza
unitaria. Si utilizzi la seguente funzione peso a b

w Ev,v,vq v,v, vpVI t VAV f, su fama cvn di dintensione umraria. a /I piir corto
Figura 16.6 Sette punti del piano griglia quadrari
carnnrino noir bitonico. b Il piis corro cannnino
dove v v la distanza eucl idea tra v e v,. Un detto regolare se tutti i lati camniirro chiuso di lunghe-a 24.88.... Qgiesto
poligono n
bitonico lo stesso insieme di La sua lunghe 25.58....
e tutti gli angoli interni sono uguali. per punti.

a tutte le righe con l eccezione dell ultima. del


Si vuole minimizzare la somma, relativamente
Problemi determini un
spazi ausiliari necessari completare ogni riga. Si
cubo de numero di per
che stampi in modo un paragrafo di n righe
algoritmo di programmazione dinamica preciso
16-1 Il problema del commesso viaggiatore bito iico e euclideo sia il tempo di esecuzione che i vincoli di spazio dell algoritmo
su una stampante. Si analizzino
Il problema del commesso viaggiatore euclideo richiede di determinare il pi breve cammino proposto.
chiuso che connette un insieme di n punti del Yella sua formulazione
piano. generale il
problema NP-completo. e pertanto si ritiene che non esistano soluzioni nel
polinomiali 16-3 Distanza di editing
tempo. Cfr. Capitolo 36. -intelligente linea di testo, sostituisce una esistente
un terminale moditica una
Quando
J. L. Bentley ritiene che il essere notevolmente semplificato se si essere
problema possa xl .. m con una stringa risultato y1 .. n J. Questa modifica pu
stringa sorgente
considerano solamente i camvrini bitonici. I cammini bi tonici sono cammini che essere cancellato.
quei partono fatta in modi diversi. Un carattere della stringa sorgente pu
generico
dal punto pi a sinistra e vanno da sinistr verso destra finch non viene raggiunto caratteri
il punto pi a carattere, oppure copiato nella stringa risultato altri possono
sostituito da un altro
destn. e poi tornano al punto di partenza collegando da destra verso sinistra. essere scambiati
punti La figur due caratteri adiacenti della stringa sorgente possono
essre inseriti, oppure
16.6 b descrive il pi breve cammino bitonico su un insieme di 7 punti. Nel caso dei un certo numero
cammini copiati nella stringa risultato. Dopo avere eseguito
nel momento in citi sono
bitonici possibile defimre un algoritmo di risoluzione che risulta nel tempo. sorgente.
polinomiale accadere di cancellare un intero suffisso della stringa
di operazioni. pu
Si un algoritmo che determina algoritmo
progetti un cammino bitonico ottimo in tempo O n- . Si la stringa sorgente nella
Per esempio, supponiamo di volere trasformare
assuma che non esistano del con la stessa ascissa. altrove . detmito dalla
punti piano Suggerimento si effettui una Un modo effettuare trasformazione
stringa risultato per questa
scansione da sinistra verso destra mantenendo le ottime le
possibilit per due parti del
seguente tinta di operazioni.
cammino.

1011C Stringa risultato Strin ga sorgente


OpCl ll
l -2 La stampa precisa t sto
Ignri
copiare a
Si consideri il problema della stampa li un su una
precisa paragrafo stampante. Il testo in
copiare l gnritnso
ingresso una sequenza di n parole di lunghezza t,, l .... i, dove la lunghezza di una paro
alt OI1iI110
sostituire g con t

in un certo numero di linee. con il vincolo .he Qltl O itmo


ogni ines pu i on tenere al massimo At caratteri. scansbiare or con m
Il criterio adottato dire che una stampa il seguente. 13 I110
per precisa A.,sumi,mo che ua certa inserire i 1131OY

altrove 131110
infierire e
consecutive siano separate e. ,vttamente da imo spazio allora il numero di spazi necess ri per
cancellare itmo Ql llOVC
completarelari adatoda,15
j p i g , equestonunseronondeveesserette etisia.
ione 309
Programma dinamica

v i valore v
di assegnare a ogni arco u, v e E una probabilit p u, p u,
Supponiamo
Chiaramente, ci sono altre sequenze di operazioni che lo stesso effetto. l arco v da u ed emenendo il suono
producono indica la di attraversare u, partendo
probabilit
Le operazioni cancellare. sostituire, copiare, inserire, scambiare e cancellare un suffisso comspondente. Naturalmente la somma delle probabilit
cammino
degli

definita
archi

come
che escono

il prodotto
da

delle
un
1
hanno un certo costo. si aspetta che il costo dell operazione che sostituisce un carattere determinato vertice 1. La di un
Ci probabilit
La probabilit di un cammino. la cui
sia minore della somma dei costi delle operazioni che cancellano ed inseriscono un carattere. it degli archi che appartengono al camminn.
probabi
interpretata come la probabilit che un attraversamento
Nel caso contrario. l operazione di sostituzione non dovrebbe essere utilizzata. Il costo di origine il vertice v,, pu essere
cammino. Chiaramente la scelta di
una certa sequenza di operazioni di modifica dato dalla somma del costo delle singole casuale del a partire dal vertice v, seguirh quel
grafo
degli archi che escono dal vertice
operazioni nella sequenza. Nel nostro esempio, il costo della trasformazione della arco va fatta in accordo all e prnbabilit
parola quale percorrere
algoritmo altrove
nella parola risulta in esame.
della a in modo tale che. se l algoritmo
b. Si modifichi l algorittno di risoluzione parte
2 costo copiare costo sostituire costo scambiare 2 costo inserire costo suffisso .
il cann ri ro pi che parte da v, ed abbia
restituisce un cammino, allora questo sia probabile
Si considerino due sequenze x1 . inj e y1 .. n ed un insieme di costi di operazioni la di esecuzione dell algoritmo proposto.
s come etichetta. Si analizzi il tempo
distan -a di editing trar e definita come il costo delIa sequenza pi economica di operazioni
che trasforma x in y. Si vuole definire un algoritmo di programmazione dinamica che

determina la distanza di editing tra xl .. m e y1 .. nj e stampa la sequenza ottima delle


Note al capitolo
trasformazioni. Si analizzino sia il tempo di esecuzione che i vincoli di spazio dell algoritmo

proposto. con i iavori di R.


dinamica iniziato nel 1955
Lo studio sistematico della programmazione
caso della lineare. la parola
Bellnian. In contesto, e anche nel programmazione
questo
16-4 La pia rifica ioire di ana festa aziendale di risoluzione sono basati su tabelle.
si riferisce al fatto che i metodi
programmazione di
Il presidente dell azienda A.-B. dinamica fossero in tecniche
Corporation ha chiesto al professor McKenzie di effettuare Sebbene elementi di gi presenti
programmazione
una consulenza risolvere a Bellman la definizione della teoria matematica
per il problema della pianificazione di una festa aziendale. ottimizzazione note in precedenza. si deve
essere
L azienda ha una struttura gerarchica pi precisamente, la relazione supervisore di dinamica 1.
della programmazione
definisce un albero la cui radice il presiente dell azienda. L ufficio del ha risolve il problenu de di una
personale un algoritmo che prodotto
convivialit Hu e Shing f 106 hanno presentato
con un numero reale la di ogni impiegato. Affinch la festa Inoltre, hanno dimostrato la
quantificato con un tempo di esecuzinne O i Ign .
sequenza di matrici
aziendale risulti tutti i partecipanti, il presidente non desidera che alla fesu ottima di un ed il problema del
piacevole per tra il problema della triangolazione poligono
corrispondenza
partecipino sia un impiegato che il suo immediato supervisore.
di una sequenza di matrici.
prodotto
il problema della lunga sottocequenza
a. Si definisca un algoritmo e la lista degli invitati. L obiettivo di massimizzare La definizione di un algoritmo che risolva pi
per prepara
attribuibile a nessuno in particolare. Knuth 43
l a somma della convivialit degli ospiti. Si analizzi il tempo di esecuzione comune in tempo O mn setnbra non essere
proposto.
l problema della LCS. Una risposta
si domandato se esistesse una soluzione non quadratica
b. Come pu il professore esser certo che il presidente sia invitato alla festa aziendale
che hanno definito un
domanda stata data da Ivlasel e Paterson 143
positiva a questa
di ditnensione liinitata. viene eseguito
algoritmo che, se le sequenze sono tratte da un insieme
16-5 L algoritmo di Vilerbi nessun elemento campaia pi di
/1 , con ii n. Nel curo in cui
in tempo O nm particolare
ha dimostratn he il problema puo
Le tecniche della dinamica essere u che utilizzate nel caso i una volta nella sequenza in ingresso. Szymansk l84j
programmazione possono
1g m . La nsaggior di questi risultati possono
algoritmi per il riconoscimet to del parlato, basati su particolari grafi orientati G V. E . Ogni esrere risolto in tempo O n n r parte

arco i c E etichettato con un suono a u, v a un della distanza di editin Problema 16-3 .


u. appartenente insieme twsitnZ di suoni. es ere estesi al problema

Questi graf etichettati definiscono un mndello formale per l analisi del parlato in un
linguaggio particolnrmente semplice. Ogn camnsino nel gr to che da un determinato
paiate
vertice i, corrisponde a una possibile sequenza di suoni. L etichetta di un cammino orientato
definita dalla concatenazione delle etichette degli archi che app rtengono al cammino.

a. Dato un grafo etichettato G, un vertice i , e una sequenza s a,. a, ..., a di elementi

sia ve la cui etichetta sia l sequenzu.c, se tale cammino esiste. Nel caso invi .ce in maui il
cammino non esista, l algoritmo invr stampare il messaggio Nr u C iiwi . Si
l
utile fare riferimento u concetti intrndotli nel Capite lo 23.
Algoritmi greedy

di ottimizzazione sono costituiti da


Generalmente algoritmi la risoluzione di problemi
gli per
si presentano un certo numero di scelte
sequenze di passi elementari in cui, a ogni passo.
di ottimizzazione, l uso di tecniche di programmazioiie
alternative. Per alcuni problemi
migliore risulta inutilmente oneroso lo stesso risultato
dinamica per decidere la scelta
algoritmi semplici e pi efficienti. Gli algoritmi greeA
essere ottenuto con pi
potrebbe
che, al momento. appare come la migliore.
adottano la strategia di prendere quella decisione
decisione che. locahnente, la decisione ottima.
In altri termini, viene sempre presa quella
a una soluzione ottima del problema nella. uv
senza se tale decisione porter
preoccuparsi
discussi di ottimizzazione che poi. ono
tn questo capitolo verranno quei problemi
globalit.
essere risolti tnmite gli algoritmi greedy.
che determina la soluzione ottima di un
In generale, non sempre esiste un algoritmo greedy
essere utilizzati ottenere le
tuttavia algoritmi greedy possono per
qualsiasi problema, g1i
Yel 17.1 in esame un problem
soluzioni di alcune classi di problemi. paragrafo prenderemo
il problema della selezione di atti it, .
non banale ma allo stesso tempo piuttosto semplice
con un algoritmo cl
essere risolto in modo efficiente greedi.
Questo problema pu
di base del metodo Il
17.2. invece, le caratteristiche greedi.
paragrafo presenteremo
molto importante delle tecniche greedy il pro etto
17.3 una applicazione
paragrafo presenta
di Huffn an . Nel 174 esaminercmo
di codici la compressione dei dati endici paragrafo
pr matroidi
alla base di quelle strutture combinatorie dette per
una della teoria che sta
parte
empre a ottenere una soluzione ottima. Interne.
strutture algoritmi greedy riescono
queste gli
alla risoluzione del problema della
il paragrafo 17.5 una applicazione dei matroidi
presenta
di durata unitari con
della sequenzn di esecuzione scheduling di progr nsmi
detmizione
scadenze e penalit.
a risnlvere un umpia la,,, i
La tecnica i potente e si adatta p,rti,.nlor,nente be e
greedy
un certo numero di algoritmi che piiiii no
Nei capitoli successivi presenteremo
problemi.
del metodo Tra questi ricordiamo gli
essere visti coine esempi di applicazione greedy.

il mininso albero di coperlur i


di un in ieh e 37 . L algoritm i per trovare
copertura Capitoln
nietodn Sebbene non ii si in
tuie l esempio clas icn di applic izionc del greedy.
24, i ilio
e acre utile le z er
dipendenze logiche tra questo czpitulO c J il Capitoli potrebhe

capitoli contentpor use imenee.

eiviily in oi lo eiilneii .
in tic i n
N.d.l. L.i trauzionc letterale del icrrniiv.
Algoritnu greedy
312 Capitolo J7

i s f,.
17.1 Selezione di attivit
l I 4

Il nostro primo esempio consiste nel dell assegnamento di una risorsa condivisa da
problema
un certo numero di attivit in competizione tra loro. Dimostreremo che Ia selezione di un 2 3 5
insieme che contiene il massimo numero di attivit in competizione e mutuamente compa-
tibili pu essere ottenuta con un elegante ed efficiente algoritmo greedy.
0 6 3
Sia S 1, 2, ..., n un insieme di n attivit che intendono utilizzare una determinata 3
risorsa.
per esempio una sala di lettura, che non essere utilizzata contemporaneamente da due o
pu
pi attivit. Una generica attivit i caratterizzata da un tempo di inizio s, e da
attivazione 4
4 5 7
un tempo di fine conclusione dove s, Una volta selezionata, l attivit i completata
f, f,.
nell intervallo di tempo aperto a destra Due attivit i e j vengono dette coi rpatibi/i
s,. f .
se gli intervalli s,. f e s., f non si sovrappongono i e j sono compatibili se vale
ovvero, che
5 3 8
s, f oppure s f . Il problema della selezionare di attivit consiste nell individuazione di un
insieme che contiene il massimo numero di attivit mutuamente compatibili.

Un algoritmo che risolve il problema 6


greedy della selezione di attivit descritto dalla 6 5 9
procedura seguente. Si assume che le attivit in ingresso siano ordinate in modo crescente
rispetto al loro tempo di fine
7 6 10
fi f ... f. 17.1 4

Chiaramente.questanon unalimitazione,datochepossiamo sempre ordinare le attivit inquesto


modo in tempo On 1gn . La assume che i parametri .s e f siano dei vettori 8 8 11
procedura array .
4

GREEDY-ACTIVITY-SELECTOR $. f 9
g 8 12
1 n length s

2 A e- I
10
10 2 13
3 jml
4
4 fori m2ton

doif s f I l 12 14
8
6 then A A u i
7 1
J

8 return A Il

tempo

0 l 2 3 4 5 6 7 8 9 10 1l l2 13 14
Le operazioni eseguite dall algotitmo snno visualizzate nellu figura 17.1. L iniieme A
contiene le attivit selezionate. La variabile j indica l ultima attivi inserita nell insiemeA.
. - - acro sr di nn invienle Cr ll Hlldici
e e er c e
Dato che le attivjt sono considerate in ordine non decrescente. rispetto al l ro tempo di f ic.
abbiamo che f rappresenta sempre il massimo tempo di tine di tutte le attivit cl1e
, rctla rgrifr ictticri. e i e
appartengono AA. Pi ri .- s nlcrlndalot
precisamente, care an

fj max f .. k e A 17
- sr tele.-icnritla
..- e1 i rnelilan ll i sierheA.
-3 lirelt r
ire,r ill ail r,
e, ,s d .st a j i rttti .il,
e linee hanno il compito di selezinnare l attivit numero I ftreo i,si
r .ics i.
inizialmente l insieme.4
colltiene solaltlente attivit e, all 1 V friabile
qliest i pert lllti . j viellc. loie il ltn il s 1lore t. Le
.
linee 4-7 cnnsider mo uno dopn1 altra tutte le iii ricvnten cl lc in 1. Si l allivititi
at ti itil LtI11LVI1CI ICJ.lllYll t / VIClld llliCI II I 11 i ril
t i i.

, ..
se una certa attrvit i compatibile con . i chi tiillc le allivit
tutte le attivit selezionate tino i c uel i ns ns- i i in i i
punto ut t 1n
sufficiente, l eqct izione controll re
per 17.2 . lince 5 che il tcinp ali inizio Ioli ittiviti .i
314 Capitolo 17 Algoritmi 315
greedy

siano ordinate in modo crescente rispetto al loro tempo di fine. abbiamo che la procedura e Esercizi
in grado di selezionare un insieme S con n attivit in tempo 8n.

La procedura GREEDY-ACTIVITY-SELECTOR seleziona sempre l attivit con il pi dinamica che risolva il problema
piccoln 17.1-1 Si definisca un algoritmo di programmazione
tempo di fine tra i tempi di quelle attivit che essere ancora selezionate. Pertanto. dell a consiste nel calcolare il
possono la della selezione delle attivit. L idea di base goritmo
scelta dell attivit una scelta nel senso che. intuitivamente, vengono lasciate il che contiene il maggior numero di attivit
greedy numero m di elementi dell insieme
maggior numero possibile di opportunit la selezione delle attivit rimanenti. Il mecca- l. 2..., i. i l, 2..... n. Si supponga
per mutuamente compatibili tra 1e attivith per
nismo di scelt greedy, quello che massimizza la quantit di tempo che deve essere come nel caso dell equazioi e 17. 1. Si
quindi, che le attivit in ingresso siano ordinate
ancora assegnata. della soluzione con il tempo di esecuzio-
confronti il tempo di esecuzione proposta

ne della GREzov-Acrtvn v-SecErroR.


procedura
Dimostrazione della correttezza dell algoritmo greeds
di sale siano condivise da un insieme di attivit.
17.1-2 Supponiamo che un certo numero
in modo tale da utilizzare il minor numero
Gli algoritmi non trovano sempre la soluzione ottima di un Si vogliono selezionare le attivit
greedy qualsiasi problema.
un algoritmo efficiente che determini gli
Tuttavia. la procedura GREEDY-ACTIVITY-SELECTOR trova sempre la soluzione ottima di di sale. Si definisca greedy
possibile
qualsiasi istanza del della selezione di attivit. assegnamenti tra le attivit e le sale.
problema
anche con il nome di problema della colorazione
Questo problema conosciuto
creare un grafo di intervalli nel modo seguente
di un di isttervalli. Possiamo
Teorema 17.1 grafo
mentre archi mettono in relazione le
i vertici del rappresentano le attivit. gli
La grafo
procedurQ GREEov-AcvtX ITY-SEI.ECfOR trai a sempre soluzioni di cardinalit mas- necessari
Determinare il mini no numero di colori
attivith che sono incompatibili.
sima nel problema della selezione di attivit. con
tale che non esistonn vertici adiacenti colorati
colorare ogni vertice in modo
per
il minimo numero di sale di lettura da
il medesimo colore, corrisponde a trovare
Dimostraziosre. Sia S I, 2, .... n l insieme delle attivit che devono essere selezionate. assegnare alle attivit in esame.
Dato che le attivit sono o diinte ordine crescente relativamente ai tempi di fine. zbbiami
per
che 1 attivit 1 ha il pi tempo di fine. Si vunle mostrare che esiste una soluzione
piccolo di attivit, non vero che una qualunque
17.E-3 Nel caso del della selezione
ottima che inizia problema
con la scelta greedy della attivit numero I. di elementi.
di onenere l insieme. con il maggior numero
strategia greedy permette
Supponiamo che A r- S sia una soluzione ottima del della selezione di attivit. mostri un esempio in cui la strategia cl1e
problema di attivit inutamente compatibili. Si
Inoltre. supponiamo che le attivit che appartengono all insieme A siano ordinate in modi tra le attivit che sono compatibili con le
seleziona l attivith con la minore durata.
crescente rispetto ai loro tempi di fine c che la prima attivit in A sia l attivitl . Se/- l allo non determina la soluzione desiderata. Si
attivit selezionate in precedenzi,
l insieme A comincia con una scelta Altrimenti. se t w 1. si dimnstra che esiste che seleziona sempre l attivith che si
greedy. u consideri anche il caso della strategia
differente soluzione ottima 8 che inizia con una scelta ovvero con I attiguit 1. Sin 8 rimanenti.
greedy. sovrappone il meno con le attivith
possibile

cosi dimostrato cle esiste sempre iran assegnamento ottimo che inizia con una sceltagreedi.
1 .2 Strategia greedy. concetti di base
Inoltre. dopo avere fatto Ia scelta dell vttivit 1, il problema si riduce a troi are una
greedy

ottima di un mediante unu


Un lgoritnio di on nere una soluzione problema
l attivit I. Se greedy permette
A una soluzione ottima del originale 5. allora A A I un i
problema
soluzione ottima del problema della elezione delle attivit 5 i c S s la
f, . Qual

numero di attivltb m,ggiore di quello di A . allora inserendo I-attivit l in 8 si otterrebbe un,


i
discuteremo alcune delle dei rrretodi greedy.
propriet peculiari

scelta reedy permette di ottenereun.i.i lu .ioide ottil11U. R

della scelta rccdy e la iottostrutlur oitim .


Algoritmi 317
greedy
316 Capitolo 17

in questo esaminiamo
differenze tra le due tecniche, paragrafo
Propriet mettere in evidenza le sottili
della scelta greedy
varianti di un classico di ottimizzazione.
due problema
Q- 1 definito nel modo seguente.
--aino de11o zaino
Il problema discreto dello o problema
La prima propriet chiave la propriet della scelta reed si pu ottenere una soluzione l articolo i-esimo ha
negozio si trova di fronte a n articoli
Un ladro durante una rapina in un
o a e pren en o delle decisioni che sono ottimi locali oreed . u ir sono numeri interi. Il ladro
dove sia v che
un costo di v dollari ed un peso di v chilogrammi,
doVe li al oritmi reedy si differenziano da i alpwitmidipro rammazio edimmic un di
zaino sopportare al massimo peso
articoli costosi. ma il suo pu
nc e ne a programmazione dinamica a orni ve
vengono vuole prendere gIi pi
p asso prese delle decisioni, ma la
$V. Quali sono articoli pi convenienti da rubare
W chilogrammi. un qualche intero gli
tra e ternative dipendere dalla soluzione dei sottoproblemi. Invece, in un per deve
pu
di problema dello zaino 0 - 1 perch un articolo
noto con il nome
aalgoritmogreedysiprendesem p re q uellade ecisione che al momento appare come la mi lior ior Questo problema e lo stesso
una parte di un articolo,
. .. o lasciato stare il ladro non puo prendere
e in seguito si risolve il sotto essere preso
p rooblema originato da quella scelta. La modalit i di i scelta
sce ta- di i un
non essere volte .
algoritmo dipendere dalle decisioni articolo pu preso pi
greedy pu prese fino a quel punto B d vuole
.... dello zaino il ladro
deElo zaino o generico ,
d I qu e esce
111. 1te future
f 0 o dalle soluzioni dei sottoproblemi. Pert, d ff Nel continuo problema
problema il valore
trasportare in modo da massimizzare
o o un insieme di articoli da
mm m ica, che risolve i sottoproblemi con una modal t b P sempre scegliere prendere
scelta del tipo o
non si trova di fronte a una
M reedy adotta una modalit to -d, d 1 d trasportato. ma in questo caso il ladro
generalmente dello zaino
di articoli. Un articolo nel problema
una Cl opo altra con un meccanismo di scelta e on v lasciare , ma scegliere di prendere parti
p greed puo dello zaino
d oro, mentre un articolo nel problema
1 pu essere visto come un lingotto
0-
visto come della d oro.
Naturalmente. pu essere polvere
si deve dimostrare che una strategia di scelta reedypermettediottenereuna generico
la propriet della sottostruttura
del delln zaino soddistano
o ima g o aie, e questo pu richiedere una abilit ed in e n Entrambe le formulazioni problema
l elemento j di valore massimo
dello zaino 0- 1, si consideri
Generalmente accade
a e cche e I d imostrazione
. consideri una soluzione ottima elobale generica ottima. Nel caso del problema carico si
Chiaramente. se si rimuove l articolo j da questo
i caso e eorema 17.1. . . Success v ssivamente . dimostra.
si che la soluzione che al pi W chilogrammi.
pu esessere
ere pesi
1V n, che il ladro mettere
che al massimo pu
mo i icatainmodotalecheil rimo as so di risoluzione sia determinato da una scelta . ottiene il pi valore trasportato pesa
ereed grande
originali con l esclusione dell articolo j.
iaramente si deve anche dimostrare avendo a disposizione n l articoli, quelli
che in uesto modo.io i n p u pob a assieme
carico ottimo il peso w di una parte
zaino e si toglie dal
. imi e a ema originale ma con dimensioni ridotte. Infine. si a lica u Nel caso del dello genericn.
pro probiema trasportato che
il pi valore
induttivo reedy il carico rimanente necessariamente grande
per dimostrare
. rare cche e si uo
puo a
applicare
licar una strategia di scelta a o ni ni o dell articolo j, allora
paz
pas.o. a disposizione s l articoli
mettere assieme avendo
r e di ottenere un simile al roble al massimo 1V v che il ladro pu
y permette problema pesa
originale ma con dimensioni ridotte, si nif oca ridurre la dimostrazione di conene ll- e ic. io chilogrammi dell articolo j.
dello zaino pu essere
imostrazione che la soluzione ottima una sottostruttura alquanto simili. il problema generico
presenta ottima. Sebbene i due siano
problemi soluzione del
non trova la
mentre una strategia greedy
risolto con una strategia greedy.
del dello zaino generico. prima
zaino 0- 1. Per onenere una soluzione problema
Sottostruttura dello
ottima problema Seguendo una strategia
uni t - di peso di ogni articolo , /w..
di tutto si deve calcolare il valore per
dell articolo con il pi
cosa la maggiore quantit possibile
greedy, il ladro per prima prende
Un . un a sottostrrsttura - .o si esaurisce quando
problema ppresenta . o11ima .se una . o uzione
soluzione o ootti Q l po D accade che la dotazione dell articolo
valore unith di peso. Se
grande per
0 mo una soluzione ottima dei sottoproblemi. ro rieth allora il ladro prende la maggiore quantit
Questa in grado di trasportare altre case,
il ladro ancora
fOndamentate importanzu valore unit di pe o.
per accertarc l a licabilit s- risalta avere il pi grande per
dell articolo che, a questo punto,
ai sica possibile altre cose. Pettmto.
c e eg i al oritmi reedy. Cnme esenl io di .sottostruttura ottima si consideri non pi in grado di trasportare
termina il ladro
ime Questa operazione quando reedy viene
amen e u imnstrazioneclelTeorcma
. .1. N
17.1. Nelladimostrazione
ll del teoreinasi mnit valore unith di pe o. l ulgoritmn
articoli relativ assente al loro per
.. ordinando gli la
e u o,,uz.o e o,n, A e idem, d il problema dello z tino soddisfa
1gl . La dimostr azione che
eseguito eo6 un tempo O ii
era una soluzione ottima del della esercizio 17. - l.
problema lasc iata cnme Esercizio
della scelta greedv
propriet
zione e eattivitperS ic S f, . non funziona nel caso del
vo...linmo mostrare che L,,trategia greedy
A questo punto i11
di questo descritto
il c ivo p uticolare problema
dello ai o 0- 1. Consideriamo
prnblema di 50 chiln rammi. Il
,reedy , sopport.tre un peon
Analisi com arata de,li c, a , oritmi e della .. zione dinamica
inan,ica 17. abbi..imo tre articoli e lo zaini pui
programnsazione t,cura a lt,i
Il.iecundo articoln
r unrni c un co to di 60 dollari.
articolo ha un peso di 10 chilo
primo trticulo ha u i di 30
ali 100 doll tri. li teri peio
. di 20 chilogram 1ii ed un coito
Oatuche1 i
propriet dellasottui rutturlOltil11 . . ic C un peso l
1C
unith di pi.io ilell articolo
rvmn i di I 20 doli ri. Quintali. il v flore per
U .,
. 1llllC l,
lil CS
chilo ed un conio
pOlfC

,,
CClllC..ll
Genie ,
I c i pro ratntli 17ii lli. clin ltllic unchcC i u.
Cfll,llluO d i .LlfllClClllL Lttl llQOlllI110 CC
L tCC6l. V
i
i irr t1c in ciitc eni v I .. cr
ppu i. poltvL hc

ispenia ile ima soluti nsc di din unic . 1 ir iclezion.,i, li


prt r immazionc la iollilionc tribuna
caii dc.,crill, nill, li,,ur..i 17. I .
vcclcrc d., ll analiii elci
Algoritmi 319
greedy
318 Capitolo 17

con la sua automobile il tratto della autostrada che


17.2-4 Il professor Mida sta percorrendo
sua automobile in di percorrere n
da Roma a Montecarlo. La grado
porta

ar ico o 2
ar ico o 3

50
30 $120

30 $129
20
30
580 chilometri

di servizio
vorrebbe
con

fare
dislocate
un

il minor
pieno
lungo
di benzina

numero
il trano
e la sua

di autostrada

possibile
cartina

di soste
che
riporta

per
sta
le distanze

percorrendo.
rifornire di
tra

benzina
le stazioni

Il professore
la sua
I
20 al quale il professor Mida in grado di
$100 20 $1QO macchina. Si progetti un algoritmo grazie
anico o I
si debba fermare si dimostri che la
determinare a quali stazioni di rifornimento
20 20 $100
10 di ottenere una soluzione ottima.
10 $60 10 $60 strategia proposta permette
10 $60
$60 $100 $120 aino $220 $160 $180 $240 di punti r,......s sulla
Si progeni un algoritmo efficiente che, preso un insieme .r,
17.2-5
a b unitaria
c il pi insieme di intervalli chiusi di lunghezza
retta dei reali, determini piccolo
in esame. Si discuta la correttezza della soluzione proposta.
Figura 17.2 La strategia ione -airi che contenga tutti i punti
g ree non permette di ottenere la sotu del problema dello 0 - l .

il problema dello zaino generico in tempo


17.2-6 Si mostri come sia possibile risolvere
la soluzione del Problema 10-2.
On. Si supponga di poter considerare
peso. c ll problema de1lo aino hn ut a sola -ione orri,na con la strategio che sele iona
generico gli
articoli rispetto al loro costa u dir di
per peso.

17.3 Codici di Huffman


articoli 2 e 3, tralasciando l articolo 1. Le due soluzioni che tengono conto
possibili
diffusa ed efficiente la compressione di dati.
de11 articolo 1 sono entrambe ottime. I codici di Huftmsn costituiscono una tecnica per
quasi-
del file che deve essere compresso. questi
Generalmn te. a seconda delle caratteristiche
Tuttavia, la strategia gteedy che seleziona di tutto l articolo 1 trova la soluzione 20 7r
prima va dal al 90 7 . L algoritmo
di risparmiare una di spazio che
ottima di questo stesso visto generale, codici permettono quantit
problema nella sua formulazione come mostratn
pi ottima di rappresentazione di ogni
da Huftman per det nire la strategia
in hgura 17. c. La strategia che seleziona di tutto l articolo 1 non trova la soluzione greedy. proposto
prima la frequenza delle occon enze
come stringa binaria, fa uso di una u bella che contiene
del 0 - 1 dato che il ladro non in grado carattere
problema di riempire lo zaino al massimo della su
capacit, e lo spazio lasciato vuoto di ciascun carattere.
fa diminuire il valore effettivo per uni di del
peso
un file di dati contenente 100000 caratteri. La frequenza
CQT1CO. Supponiamo di voler comprimere
della t gura 17.3. Si nnti che appaiono
dell occorrenza dei caratteri nel tulle descrittu
Nel caso del problema 0- 1, prima di prendere la decisione di inserire o nseno un articolo
e che i caratrere a appare 45000 volte.
nello zaino, si deve solamente sei caratteri distinti
comparare lu soluzione del sottoproblema in cui lo zaino contiene
una tale di informaziot e sono
quell articolo, con la soluzione del sottoproblema in cui Le itrateeie che permettona di rappresentare quantith
quell atticolo non selezinnato.
in esame il problema delle di un
formulazione dd db ori ine numerose. In qiiesto prenderemo progettazione
Questa problema a numerosi sttoproblemi comuni una paragrafo
codice in cui ogni carattere rappresen-
caratteristica distintiva della i caratteri pi semplicemente
programmazione dinamica. Infatti. il problema 0 - I pu essere codice binario per
abhiaimo bisogno di tre bit
risolto con tecniche di programmazione tato da un unii stringa binaria. Con un codice a lunghe -a fissa,
dinamica. Cfr. Esercizio 17.2-2.
001..... i 101. metodo richiede 300000
rappresentare sei caratteri a 000. b Questo
per
codificare tutto il tulle. Possiamo fare di ine liu
bit per
Esercizi

E 7.2-1 Si dimostri che il problema delln zaino soddisfa la proprie della scelta greeds .

17.2-2 il carattere f. codice richiede


Si descriva un l SAluzione di programmazione dina nica del dillo z tino bit l 100 r ppresci ta Quesito
problenu quattro
0- 1 tale da essere eseguita in tenip O n7V . dove n in numero degli articoli e 11 c
b
la capacit di carico dello zaino del laro. S
45 13 I 16
Frcqllir z. in migli ia

AI O l O I I lO ll I
COLllCi,,l Illll,,lit..ll,I f ILS 0 0

17.2 3 Suppnniamo che la equcnz dc. li irticoli, he/z 10 I lt I I I l i O l 1 lO


nel problema delln zainoO-l. orctin il i Coicc w lun variahilc

zaino. Sl iscuta la cori cltcz . i clelia soluzione iodata.


pro
321
Algoritmi greedy
320 Capitolo 17

4 1 13 3 12 3 16 3 9 4 5 4 1000 224000 bit

per
seguita.
rappresentare

questo un
il file,
codice
con un risparmio

ottimo per
approssimativo

il file in esame.
del 25 . Infatti, come vedremo nel

I
Codici prefissi

In questo pia jrafo prenderemo in considerazione solamente quei codici dove nessuna parola
del codice anche un prefisso di qualche altra parola del codice. Questi codici sono conosciuti

con il nome di codici prefissi- . Si pu dimostrare ma noi non lo faremo che la compressione
b
onima ottenibile con un codice per i caratteri pu essere sempre ottenuta con un codice

prefisso. Pertanto, nowsi perde in generalit se restringiamo la nostra attenzione solamente di 17.3. Ogni foglia

agli schemi di codifica figura
17.-1 Gli alberi che corrispondono
codici Figura
ai prefissi.

I codi
codici prefissi hanno delle buone propriet che permettono di semplificare la codific
ottimo a 0.
L albero descrii e il codice prefisso
b 001...., f l O I. h
compressione e la decodifica. Generalmente, la codifica sempre semplice per un lunghe.. a fissa a 000.

di caratteri binario si concatenano b 101.... f 1100.


qualunque codice le parole che rappresentano i caratter
del file. Per esempio, con il codice di lunghezza variabile descritto nella figura 17.. possiamo il
abbastanza facile calcolare
T che rappresenta un codice prefisso.
codificare il file contenente i tre caratteri abc come 0 101 100 0101100. Il simbolo A partire dall albero
c nell alfabeto C. indichiamo
codificare il file. Per ogni carattere
viene utilizzato indicare la concatenazione. numero di bit necessari per
per la profondi della foglia
c nel file. e con cl, c
operazione la frequenza assoluta del caranere
Lo di decodifica piuttosto semplice di un codice con f ci che codifica
nel caso prefisso. Dato che della
rappresenta anche la lunghezza parola
etichettata con c. Si noti che d c
cndificare un file risulta
c. Il numern di bit necessari per
cui inizia il file codificato identificata senza il carattere
alcuna atnbiguit. Pertanto. possiansi
identificare la parola iniziale del codice, trastormarla nel carattere originario, da . 17.3
rinsuoverla
g f ,c
file codificato e ripetere il procedimento di decodifica sulla rimannte del tile
parte cEC
codificato. Nel nostro esempio, la stringa 001011101 rappresentata in modo unii oco come il costo dell albero T.
Diciamn che valore descrive
questo
0 0 l01 1101, che viene decodificata come aabe.
furba
Il procedimento di decodifica richiee una rappresentazione del codice in
pretisso. un codice di Huffman
Costruzione di
modo tale che la parolai iniziale del codice essere facilmente identificata. Un
possa
rappresentazione efficiente del codice prefisso data da alberi binari in cui le foglie ottimo. conosciuto
che costruisce un codice prefisso
Huffman ha un a1goritmo
rappresentano i cantteri. I codice binario di una essere interpretato come i progettato il codice
parola puo costruisce l albero Tche rappresenta
di endice di Huffman. L algoritmo
cammino di accesso che dalla radice a quel carattere. In questo contesto il numero i con il nome
porta un insieme contenente C
bottom-up. Inizialmente si considero
ottinso con una modalit -fusione-.
di I operazioni di
l albero, si esegue una sequenzu C
foglie. per costruire
poi.
di n caratteri. e che o ni carattere
si suppone che C simun alfabeto
non sono alberi binari di ricerca daln che le foglie non sono ordinate e, inoltre, i nodi interni Nella seguente,
procedura
non contengono chiavi.

Il codice ottimo di un file rappresentato sempre da un albero binario dove n ni la cui frequenza
pienamente li fusione un nuovo oggetto
fondere insieme. 11 risultato dell operazioni
che sono stati fu i insieme.
iornma delle trequeme degli oggetti
i. d t dalla

nessuna che inizia


zia con 1.... 1
1n questo.

Potrebbero piacerti anche