Sei sulla pagina 1di 4

1)Teoremadell'esperto: (n) T(n/ ) log(n) T = 5 5 + n

3/2

lim
noo n
log (5)
5
n log(n)
3/2
= 0
lim
noo
n log(n)
3/2
n
log (5)0.1
5
= 0
Caso1con .1 = 0
(n) (n ) T =

2

2)Spiegarecos'l'alberodelledecisionidiunalgoritmo.Direperchl'alberodelle
decisionidiunalgoritmogeneralediordinamentohaaltezzamaggioreougualedi
dove ladimensionedell'arrayiningresso. og (n!) l
2
n

Vedidimostrazionedellimiteinferioredelcostodiunalgoritmodiordinamentonellalezione67

3)Descrivereunodeglialgoritmivistialezionepercalcolareilnumerodiinversionidi
unarraydinelementiintempo (nlogn) O

MERGESORT(A,n)
returnMERGESORTRIC(A,1,n)
MERGESORTRIC(A,p,r)
if(pr)return0
q=(p+r)/2
inv1=MERGESORTRIC(A,p,q)
inv2=MERGESORTRIC(A,q+1,r)
inv3=MERGE(A,p,q,r)
returninv1+inv2+inv3
MERGE(A,p,q,r)
n1=qp+1
n2=rq
fori=1ton1
L[i]=A[p+i1]
forj=1ton2
R[j]=A[q+j]
L[n1+1]=
R[n2+1]=
inv=0
i=j=1
fork=ptor
if(L[i]R[j]andin1)
A[k]=L[i],i=i+1
else
A[k]=R[j],j=j+1
inv=inv+n1i+1
returninv

4)Calcolareilmassimonumerototaledinodiinunalberorossonerodialtezza
nera econunsolonodorosso.Dimostrarecheilmassimonumerodinodisiha k
quandoilnodorossounodeifiglidellaradice

Siccomelalberocontieneunnodorossoessononvuotoequindi .Se k 1
dallalberotogliamoilsottoalberoconradiceilnodorossoelosostituiamo
conunodeiduesottoalberiradicatineisuoifigliotteniamounalberorosso
nerocontuttiinodineriealtezzanerak.Questalberounalberobinario
completodialtezzakedhaquindi

k
i=0
2
i
= 2
k+1
1
nodi.Perottenereilnumerodinodidellalberooriginariodobbiamoag
giungereilnodorossoeilnumerodinodidelsottoalberotralasciato.Seil
nodorossositrovaaprofondit ilsottoalberotralasciatounalberobinario i
completodialtezza econtiene k i

k
i=0
2
i
= 2
ki+1
1
nodi.Ilnumerodinodidellalberooriginale,infunzionedellaprofonditacuisitrovailnodo
rosso,quindi:
2
k+1
1 + 1 + 2
ki+1
1 = 2
k+1
+ 2
ki+1
1

chemassimoquandolaprofonditidelnodorossominima.Siccomelaradicedeveessere
nera,laprofonditminimadelnodorosso1(ilnodorossofigliodellaradice).Dunqueil
massimonumerodinodie
2
k+1
+ 2
k
1

5)ScrivereunaversionedellafunzioneSearch(x,i)chedatalaradicexdiunalbero
rossoneroaumentatoconilcamposizeeduninteroicercalachiaveiesimainordine
digrandezza.Sisupponeche dove ilnumerodichiavipresentinellalbero 1 i n n
T.Lacomplessitasintoticadeveessere (log(n)) O

SEARCH(x,i)
/*Precondizione:1<=i<=size[x]*/
ifleft[x]=nilthennl=0
elsenl=size[left[x]]
ifi<=nlthenreturnSEARCH(left[x],i)
ifi=nl+1thenreturnkey[x]
returnSEARCH(right[x],inl1)

ditemisesbagliomalOSSELECTdipag281nonrispondeesattamentealladomanda
facendolerestituirex.keyalpostodix??grazie

6)SivuolerealizzareuntimerusandounarrayA[0...k]permemorizzarei bit k + 1
dellarappresentazionebinariadelvaloredeltimer.Leoperazionisono ...b b b
k 1 0

SET(A,n)checaricailtimeransecondieDECREMENT(A)chediminuiscedi1secondo
ilvaloredeltimer.L'operazioneSET(A,n)sipueseguiresoltantoatimerazzerato.
ScrivereleduefunzioniSET(A,n)eDECREMENT(A)edanalizzarnelacomplessit
ammortizzata.

Vedipagina4delfile:(20022004consoluzione)Appelli2.pdf

7)Huffman

Caratteri a b c d e f g
Frequenze 24 14 13 13 6 2 3
Codici 11 10 001 01 0000 00010 00011

8)Forestadiinsiemidisgiuntiinmododaesegu
MAKESET(x)
x.p=x
x.rank=0
x.somma=key

FINDSET(x)
if(x.p=x)returnx
x.p=FINDSET(x.p)
returnx.p

UNION(x,y)
x=FINDSET(x)
y=FINDSET(y)
LINK(x,y)

LINK(x,y)
if(x.rank>y.rank)
y.p=x
x.somma=x.somma+y.somma
else
x.p=y
y.somma=y.somma+x.somma
if(x.rank=y.rank)
y.rank=y.rank+1

SUMSET(x)
x=FINDSET(x)
returnx.somma

Potrebbero piacerti anche