Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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