Introducció
Curs 2017
Curs d’algoŕısmia:Continuació d’EDA
Què veurem?
I Eines matemàtiquesI Notació asimptòticaI RecurrènciesI Conceptes bàsics de probabilitat
I Metodologia per a dissenyar algorismesI BacktrakingI Dividir i vencerI Estructura de dades avançades: Hashing, Cryptohashing,
BlockchainI VoraçosI Programació dinàmicaI Algorismes per a fluxes en xarxes: AplicacionsI Introducció a les xarxes complexes
I Problemes concrets
I Problemes ”reals”
Bibliografia:
Referències principals:
Algorismes.
Algorisme: recepta per a resoldre un problema.
Arrel (n)x0 = 1 y0 = nfor i = 1 to 6 doyi = (xi−1 + yi−1)/2xi = n/yi
end for
Babilònia (XVI BC)Avui coneixem que: limk→∞ xk →
√n i ho fa ràpidament!
Un algorisme és correcte si per a qualsevol entrada s’atura i dónauna resposta correctaHeuŕıstica: mètode per a resoldre un problema, que pot noaturar-se i pot no donar respostes exactes.
El primer algorisme no trivial
Donats a, b ∈ Z:
mcd(a, b)if b = 0 thenreturn a
else if b = 1 thenreturn 1
elsemcd(b, a mod b)
end if
Euclides 300 BC Proposició VII-2 als Elements
Conseqüència que si b|a⇒ mcd(a, b) = b,altrament a = bt + r ⇒ mcd(a, b) = mcd(b, r)
”The algorithmic lenses”
L’algoŕısmia representa una nova manerade mirar els problemes en diferents àmbitsde la ciència i la tecnologia. L’algoŕısmiaestudia quines són les particularitats del’estructura interna del problemes queajudin a dissenyar algorismes més eficients.A més de la informàtica, l’algoŕısmia hacanviat la manera d’abordar i resoldre elsproblemes en camps com:
I Matemàtiques
I F́ısiques
I Biologia i epidemiologia
I Economia
I Sociologia...
Donat un algorisme: Què volem estudiar?
I Si és correcte,
I Si és eficient (el seu cost)
Què vol dir cost:
I Temps
I Memòria
I Capacitat de comunicació...
En aquest curs:Cost d’un algorisme = temps de computació T (n), parametrizatper grandària n.
Important
Les mesures de complexitat han de ser independents de lestecnologies existents
Anàlisis d’algorismes
:
Anàlisis cas pitjor: El màxim temps per aresoldre un problema amb grandària n,assumint l’entrada ve donada per unadversari.
Anàlisi mitjà: el nombre esperat de passos que un algorisme utilitzaper a resoldre un problema, sobre totes les possibles entrades ambgrandària n, agafades d’una distribució de probabilitat donada.
→
Deter. Algo.→
Escollir un estudiant per ajudar a la recerca
Tenim n estudiants, {1, . . . , n} i volem entrevistar-los per agafar elmés adient (cada estudiant ve identificat per un enter entre 1 i n)Després d’entrevistar cada estudiant hem de decidir si elpreseleccionem o no.A la fi del procés escollim un sol estudiant, però indemnitzem acadascun dels preseleccionats no escollits, amb S > 0 e. Volemminimitzar el cost de les indemnitzacions
Hiring (n)best:=0for i = 1 to n do
interview iif i is better than best then
best:=i and pre-select iend if
end for
Complexitat
n1 2 3 4
A la llista de l’adversari els estudiants estan escollits de maneraque ordenadament van de menys apte a més apte. A cada pasl’algorisme es veu forçat a pre-seleccionar cada estudiant
Complexitat cas pitjor: T (n) ≤ c1Sn (a on c1 és una constant)
Notació asimptòtica.
Estudiem el comportament de T (n) quan n pot prendre valorsmolt grans (n→∞)
if n = 10, n2 = 100 i 2n: 1024;
if n = 100, n2 = 10000 i2n = 12676506002282244014696703205376;
if n = 103 n2 = 106 2n és un numero amb 302 d́ıgits
1064 = nombre d’àtoms en la terra (< 2213)
Notatció:lg ≡ log2; ln ≡ loge ; log ≡ log10.
Comparació dels temps de computació amb elsprocessadors actuals
Assumint una entrada amb grandària n = 1 es pot resoldre en 1µsegon:26 THE BASICS
100
103
106
109
1012
1015
1018
1021
1024
0 10 20 30 40 50 60 70 80 90 100n
µs
n
n 2n 3
2n
n !
1 minute
1 day
1 year
age of universe
FIGURE 2.5: Running times of algorithms as a function of the size n . We assume that each one can solvean instance of size n = 1 in one microsecond. Note that the time axis is logarithmic.
Eulerinput: a graph G = (V, E )output: “yes” if G is Eulerian, and “no” otherwisebegin
y := 0 ;for all v ∈V do
if deg(v ) is odd then y := y +1;if y > 2 then return “no”;
endreturn “yes”
end
FIGURE 2.6: Euler’s algorithm for EULERIAN PATH. The variable y counts the number of odd-degree vertices.
2.4.2 Details, and Why they Don’t Matter
In the Prologue we saw that Euler’s approach to EULERIAN PATH is much more efficient than exhaustivesearch. But how does the running time of the resulting algorithm scale with the size of the graph? It turnsout that a precise answer to this question depends on many details. We will discuss just enough of thesedetails to convince you that we can and should ignore them in our quest for a fundamental understandingof computational complexity.
Temps de computació en funció de la grandària d’entrada n
n n lg n n2 1.5n 2n
10 < 1s < 1s < 1s < 1s < 1s50 < 1s < 1s < 1s 11m 36y
100 < 1s < 1s < 1s 12000y 1017y1000 < 1s < 1s < 1s > 1025y > 1025y104 < 1s < 1s < 1s > 1025y > 1025y105 < 1s < 1s < 1s > 1025y > 1025y106 < 1s 20s 12d > 1025y > 1025y
Algorismes eficients i algorismes pràctics
Temps de computació: n1010
és un polinomi, però el temps decomputació pot ser elevat.De la mateixa manera, si tenim cn2 per una constant c = 1064, laconstant té rellevància fins a entrades amb grandària n = 1064.
A l’algoŕısmia, factible (feasible)= temps polinòmic, altrament nofactible (unfeasible).
A la pràctica és dif́ıcil implementar computacions amb valors mésgrans que n4, per a valors ”reals” de n.
A la pràctica, les constants grans tenen rellevància, però quanconsiderem asimptòtiques (n→∞) sempre podem agafar valors den més grans que qualsevol constant.
Big Oh: O.
DefinitionDonades f , g : R→ R, definim:
O(g(n)) = {f (n)|∃c , n0 : 0 ≤ f (n) ≤ cg(n), ∀n ≥ n0}
f (n) ∈ O(g(n)) or f (n) = O(g(n))
n0
f(x)
cg(x)
f(x) = O(g(x))
lim supn→∞
f (n)
g(n)≤ c .
n10 = O(en): Escollir c = 1 and n0 = e5. Per tant,
∀n ≥ e5, 10 ln n ≤ n, ⇒ e10 ln n ≤ en.
Notem que una constant k > 0, k = O(1), (si c = k , n0 = 1 ⇒k ≤ 1k).⇒ la funció constant f (x) = n per a un valor constant n també ésO(1).Però, la funció f (n) = n no és O(1)!!!
Omega: Ω.
DefinitionDonades f , g : R→ R, definim:
Ω(g(n)) = {f (n)|∃c , n0 : 0 ≤ cg(n) ≤ f (n),∀n ≥ n0}
f (n) ∈ Ω(g(n)) o f (n) = Ω(g(n))
n0
f(x)
cg(x)
f(x) = ω(g(x))
lim infn→∞
f (n)
g(n)≥ c > 0.
DefinitionDonades f , g : R→ R, definim:
Θ(g(n)) = {f (n)|∃c1, c2, n0 : 0 ≤ c1g(n) ≤ f (n) ≤ c2g(n)∀n ≥ n0}
f (n) = Θ(g(n)) sii f (n) = Ω(g(n)) i f (n) = O(g(n))
f(x) = Θ(f(x))
c1g(x)
f(x)
c2g(x)
limn→∞
f (n)
g(n)= c , on c = max{c1, c2}
Donat f (x) = akxk + ak−1x
k−1 + · · ·+ a1x + a0, llavorsf (x) = Θ(xk) (si ak 6= 0).
Notem: La notació asimptòtica es pot utilitzar dintre d’una equació
2n2 + 3n + 1 = 2n2 + Θ(n) = Θ(n2).
Little-oh: o
DefinitionDonades f , g : R→ R, definim:
o(g(n)) = {f (n)|∃n0,∀c > 0 : 0 ≤ f (n) ≤ cg(n), ∀n ≥ n0}.
f (n) = o(g(n))
lim supn→∞
f (n)
g(n)= 0.
∀� > 0, n1−� = o(n) però ∀� > 0, n1+� 6= o(n)
Little omega: ω
DefinitionDonades f , g : R→ R, definim:
ω(g(n)) = {f (n)|∀c > 0, ∃n0 : 0 ≤ cg(n) ≤ f (n)cg ,∀n ≥ n0}.
f (n) = ω(g(n))
lim infn→∞
f (n)
g(n)=∞.
Notem: n2/2 = ω(n) però n2/2 6= ω(n2)
Quadre resum
Śımbol L = limn→∞f (n)g(n) intüıció ..
f (n) = O(g(n)) L 0 f ≥ gf (n) = Θ(g(n)) 0 < L g
Noms utilitzats per classes de funcions
classe definition
polylogarirthmic f = O(logc n) for cte. c
polynomial f = O(nc) for cte. c or nO(1)
subexponential f = o(2n�) ∀1 > � > 0
exponential f = 2poly(n)
Igualtat asimptòtica
DefinitionGiven functions f , g : R→ R, definim: f (n) ∼ g(n) iflimn→∞
f (n)g(n) = 1
Per tant, f (n) ∼ g(n) vol dir que quan n creix, les dues funcionsesdevenen molt similars.
Recordatori: Probabilitat
Espai de probabilitat (Ω): Resultats d’un experiment.
Examples:
Llançar dues monedes, cara H o creu T:Ω = {HH,HT ,TH,TT}. |Ω| = 4.
Llançar dos daus, cara H o creu T:Ω = {(1, 1), (1, 2), . . . , (1, 6), (2, 1), . . . , (6, 6)}.|Ω| = 36.
Escollir aleatòriament un vector Boolea amb dimensió 4Ω = {(0, 0, 0, 0), (0, 0, 0, 1), . . . , (1, 1, 1, 1)}, |Ω| = 24.En el cas d’un vector Boolea n-dimensional:Ω = {(0, 0, . . . , 0), . . . , (1, 1, 1, . . . , 1)}, |Ω| = 2n.
Esdeveniments
Esdeveniment: E ⊆ Ω.
Donat un espai Ω, definim F com el conjunt de tots elsesdeveniments a Ω.
Exemples:
I Llancem 2 monedes, sigui E1 l’esdeveniment que hi hagi almenys una cara i sigui E2 l’esdeveniment que hi hagiexactament una cara:E1 = {HH,HT ,TH} i E2 = {HT ,TH}. Per tant,E1 ∩ E2 = {HT ,TH}.
I llancem dos daus, sigui E1 l’esdeveniment que el primer dautingui un 1, i sigui E2 l’esdeveniment que el dau 2 tingui 1.E1 = {(1, 1), . . . , (1, 6)} i E2 = {(1, 1), . . . , (6, 1)}.Notem: E1 ∩ E2 = {(1, 1)},E1 ∪ E2 = {(1, 1), . . . , (1, 6), (2, 1), . . . , (6, 1)}.
Probabilitat
Donat el conjunt d’esdeveniments F sobre un espai Ω, definim lafunció de probabilitat Pr : F → R+ tal que:
I Per a tot esdeveniment E : 0 ≤ Pr [E ] ≤ 1,I Pr [Ω] = 1,I Per a tot E1 i E2 a F , Pr [E1 ∪ E2] = Pr [E1] + Pr [E2].
Espai de probabilitat: (Ω,Pr []).
Desigualtat de Boole (Union-Bound)Donat un conjunt finit d’esdeveniments E1,E2, . . . ,En
Pr [∪ni=1Ei ] ≤n∑
i=1
Pr [Ei ]
Exemple
Llancem 2 daus i sigui (x1, x2) el resultat.
Considerem els esdeveniments E1 = {x1 ≥ 3} i E2 = {x2 ≥ 3}.
Aleshores Pr [E1] =46 =
23 = Pr [E2],
En aquest cas és fàcil calcular Pr [E1 ∪ E2] = 3236 =89 = 0.7
Alternativa: Fitar Pr [E1 ∪ E2]Sigui (x1, y2) el resultat de llancar 2 daus i considerem elsesdeveniments E1 = {x1 ≥ 3},E2 = {x2 ≥ 3}, aplicant Boole:
Pr [E1 ∪ E2] ≤ Pr [E1] + Pr [E2] = 43 = 1.3
Esdeveniments independents
Donat un esdeveniment E de Ω definim Ē = Ω− E
Donats esdeveniments E1,E2 a Ω:
Pr [E1 ∩ E2] = 1− Pr[Ē1 ∪ Ē2
]E1 i E2 són independents sii Pr [E1 ∩ E2] = Pr [E1]Pr [E2]
Exemple Llancem 2 monedes i considerem els esdeveniments E1: hiha al menys una cara, i E2: hi ha al menys una creu.Ω = {HH,TT ,TH,HT} ⇒ Pr [E1] = 34 = Pr [E2] =
34
Són E1 i E2 independents?
Notes que Pr [E1 ∩ E2] = 24 6=34
34 =
916 ,
per tant, E1 i E2, no són independents.
Esdeveniments independents
Donat un esdeveniment E de Ω definim Ē = Ω− E
Donats esdeveniments E1,E2 a Ω:
Pr [E1 ∩ E2] = 1− Pr[Ē1 ∪ Ē2
]E1 i E2 són independents sii Pr [E1 ∩ E2] = Pr [E1]Pr [E2]
Exemple Llancem 2 monedes i considerem els esdeveniments E1: hiha al menys una cara, i E2: hi ha al menys una creu.Ω = {HH,TT ,TH,HT} ⇒ Pr [E1] = 34 = Pr [E2] =
34
Són E1 i E2 independents?Notes que Pr [E1 ∩ E2] = 24 6=
34
34 =
916 ,
per tant, E1 i E2, no són independents.
Taula de d́ıgits aleatoris
Sigui A[10] una taula amb 10 registres. Distribüım uniformementels enters {0, 1, . . . 9},
I Quina és Pr [A[i ] = 7]?
I Si A[0] = 3,A[1] = 1,A[2] = 3,A[4] = 6, quina ésPr [A[5] > 7]?
I Si A[0] = 3,A[1] = 1,A[2] = 3,A[4] = 6, quina ésPr [A[5] = 7] i Pr [A[6] = 8] i Pr [A[7] = 9]?
I Quina és la probabilitat de que ∀i , 0 ≤ i ≤ 9, A[i ] = i?I Per 0 ≤ i ≤ 8, quina és la probabilitat de que
Pr [A[i + 1] = 7|A[i ] = 7]?I Si tenim una taula A[n] i n enters, quina és la probabilitat que
una assignació aleatoria amb una distribució uniforme sensesubstitucions produeixi una sequència ordenada ?
Probabilitat condicional
Donats esdeveniments E1 i E2, la la probabilitat condicional que E1succëıx donat que E2 succëıx ve definida per
Pr [E1|E2] =Pr [E1 ∩ E2]
Pr [E2]
Notem que si E1 i E2 són independents: Pr [E1|E2] = Pr [E1]
Probabilitat condicional: Exemple
Una faḿılia té 2 fills. La probabilitat de tenir un noi és 12 que és lamateixa probabilitat de tenir una noia.
1. Donat que el primer fill és un noi, quina és la probabilitat deel segon fill també sigui noi?
2. Si un dels fills és noia, quina és la probabilitat que l’altretambé sigui noia?
Probabilitat condicional
Una faḿılia té 2 fills. La probabilitat de tenir un noi és 12 que és lamateixa probabilitat de tenir una noia.
1. Donat que el primer fill és un noi, quina és la probabilitat deel segon fill també sigui noi?Ser noi o noia són esdeveniments independents → 1/2
2. Si un dels fills és noia, quina és la probabilitat que l’altretambé sigui noia?Sigui E1 esdeveniment de tenir al menys una noia, i E2esdeveniment de tenir dues noies. Aleshores,
Pr [E2|E1] =Pr [E2 ∩ E1]
Pr [E1]=
1/4
3/4=
1
3
Distribució de probabilitat
Donat un espai de probabilitat, la distribució de probabilitat és elvalor de Pr [] sobre cada esdeveniment bàsic a Ω.
Distribució uniforme cada esdeveniment bàsic a Ω té la mateixaprobabilitat 1|Ω| , independent dels altres esdeveniments bàsics.
Exemple Llancem 2 daus, Ω = {(1, 1), . . . , (6, 6)}
Pr [(1, 1)] = · · · = Pr [(1, 1)] = 136
Exemple: Taula amb d́ıgits aleatoris
Dorada una taula A[n] i enters S = {0, 1, . . . , 9}, considerem lasegüent assignació de S a A[n]: Amb probabilitat 1/10, A[0] pottenir qualsevol enter de S .Per a tot 0 ≤ i < n − 1 i 0 ≤ j ≤ 9, si A[i ] = j aleshores
Pr [A[i + 1] = k] =
{1
100 si j 6= k ,11
100 altrament.
Quin és el conjunt Ω d’esdeveniments bàsics? Que és |Ω|?
Quina és la distribució de probabilitat sobre Ω? És uniforme?
Sigui E1 l’esdeveniment A[3] = 4 i E2 l’esdeveniment A[4] = 3.
Quina és Pr [A[5] = 4|E1]?
Quina és la probabilitat de que l’enter 5 no aparegui?
Variable aleatòria
Llancem una moneda 1000 cops, si surt cara paguem 1e, si surtcreu guanyem 1e, quan haurem guanyat or perdut?
Donat un espai de probabilitat una variable aleatòria és una funcióX : Ω→ R.
Pr [X = a] =∑
{w∈Ω|X (w)=a}
Pr [w ] .
Exemple Llancem 2 daus i sigui (x , y) el resultat de l’experiment((x , y) ∈ Ω).Sigui X = max{x , y}, ej. Pr [X = 3] = 536
Valor esperat (expectation)
Donat un espai de probabilitat (Ω,Pr []) i una variable aleatòria X ,definim el valor esperat de X
E [X ] =∑
x∈X (Ω)
xPr [X = x ] .
Notem E [X ] ∈ R
Exemple (cont) Per a calcular el valor esperat del màxim que surtquan llancem 2 daus:E [X ] =
∑6i=1 xPr [X = x ] =
136 1 +
336 2 +
536 3 +
736 4 +
936 5 +
1136 6 =
16136 = 4.46
Propietat important: Linealitat de l’esperança
Si tenim variables aleatòries X ,Y :
I E [X + Y ] = E [X ] + E [Y ]
I Per qualsevol constant c , E [cX ] = cE [X ]
X i Y són independents sii E [XY ] = E [X ]E [Y ]
Exemple Volem calcular el valor esperat de la suma del resultat(x , y), de llançar dos daus.
Sigui X el valor de x i Y el valor de y . Sigui Z = X + Y .
E [X ] =∑6
i=116 i =
16
6·72 =
72 = E [Y ]
E [Z ] = E [X ] + E [Y ] = 7
Distribució de Bernouilli i variables indicadoresProces de Bernoulli (s.XVII) seqüènciad’experiments, cadascun amb dues possiblessortides, èxit (1) o fracas (0).Per ex. llançar una moneda o generar un vectoraleatòria de bits.Amb probabilitat p l’experiment dona cert i ambprobabilitat q = 1− p dona fals.Si Ω ve definit per un proces de Bernoulli, una eina molt útil:variable aleatòries indicadoresDefinim una variable aleatòria indicadora:
X =
{1 si l’experiment té èxit
0 altrament.
Notem que E [X ] = 1Pr [X = 1] + 0Pr [X = 0]︸ ︷︷ ︸=0
Exemple
Un mico tecleja 220 caràcters en un ordinador queté 48 tecles de caràcters (a cada cop de dit delmico, la probabilitat de prémer una teclaparticular és 1/48).
Quin és el nombre esperat de cops que la seqüència mico apareixen aquest test?
Per a i = 1, . . . , 220 − 3 sigui Xi la variable indicadora que té valor1 si els 4 caràcters, començant pel i-èsim, formen la seqüènciamico. Pr [X1 = 1] = 48−4 ⇒ Pr [Xi = 1] = 48−4.
Sigui X el nombre de cops que ”mico” apareix al text, aleshoresX = X1 + X2 + · · ·+ X220−3.
⇒ E [X ] =∑220−3
i=1 E [Xi ] =∑220−3
i=11
484∼ 0.19753
Exemple
Un mico tecleja 220 caràcters en un ordinador queté 48 tecles de caràcters (a cada cop de dit delmico, la probabilitat de prémer una teclaparticular és 1/48).
Quin és el nombre esperat de cops que la seqüència mico apareixen aquest test?
Per a i = 1, . . . , 220 − 3 sigui Xi la variable indicadora que té valor1 si els 4 caràcters, començant pel i-èsim, formen la seqüènciamico. Pr [X1 = 1] = 48−4 ⇒ Pr [Xi = 1] = 48−4.
Sigui X el nombre de cops que ”mico” apareix al text, aleshoresX = X1 + X2 + · · ·+ X220−3.
⇒ E [X ] =∑220−3
i=1 E [Xi ] =∑220−3
i=11
484∼ 0.19753
Casos particulars de la distribució de Bernoulli
Distribució binomial B(n, p). Una variable aleatòria X ∈ B(n, p),si repetim n cops un experiment tipus Bernoulli i volem comptar elnombre exacte d’èxits, quan p és la probabilitat d’èxit.
Pr [X = k] =(nk
)pk(1− p)n−k .
Si X ∈ B(n, p) per a calcular E [X ], definim les variablesindicadores X1, . . . ,Xn, on Xi = 1 si i-èsima llançada és cara (H),altrament Xi = 0.X =
∑ni=1 Xi ⇒ E [X ] = E [
∑ni=1 Xi ] =
∑ni=1 E [Xi ]︸ ︷︷ ︸
=p
= np.
Si X ∈ B(n, p), aleshores E [X ] = np.
Distribució Geomètrica G (p)
Una variable aleatòria X ∈ G (p), on p és la probabilitat d’ èxit (1),si X compta el nombre de vegades que hem de repetir l’experimentfins tenir èxit
Pr [X = k] = (1− p)k−1p.
Si X ∈ G (p) aleshores E [X ] = 1p .
Exemple Si tenim una moneda equilibrada (Pr [H] = Pr [T ] = 12 ),el nombre esperat de cops que hem de llançar fins a que surti caraés 2.
Complexitat mitjana
Donat un algorisme AP per un problema P:I Selecciona una distribució Π de les entrades a P (amb la
mateixa n)
I Ω = espai de probabilitat definit per Π
I Definim una variable aleatòria X : Ω→ R que represente elnombre que volem mesurar (temps, estudiants, . . .).
I Computem µ = E [X ]
I Per finalitzar necessitaŕıem concentració:Pr [X > µ+ α]→ 0.
Anàlisi probabiĺıstic de l’algorisme de contractació
El nombre de diferents ordenacions del n estudiants són totes lespermutacions: n!n! ∼
√2πn
(ne
).
Escollir una entrada amb distribució uniforme vol dir que laprobabilitat de escollir qualsevol d’elles és la mateixa = 1n! .
Hire-Student (n)best:=0for i = 1 to n do
interview iif i is better than best then
best:=i and pre-select iend if
end for
Cost esperat O(S lg n)
LemmaDonada una entrada de la llista de candidats escollida u.a.r., elnombre esperat de alumnes pre-contractats per l’algorisme decontractació és O(ln n).
Demostració del Lema
Sigui X una variable = nombre d’alumnes pre-contractatsPer cada 1 ≤ i ≤ n definim:
Xi =
{1 if i és pre-seleccionat;0 if i no és pre-seleccionat.
Aleshores, X =∑n
i=1 Xi
Notem que E [Xi ] = Pr [estudiant i is pre-seleccionat]Com els estudiants arriben aleatòriament cada un dels i primersestudiants té la matrixa probabilitat de ser el millor. Per tantE [Xi ] = Pr [estudiant i is pre-seleccionat] = 1/i
Com que X =∑n
i=1 Xi ,E [X ] = E [
∑ni=1 1Pr [Xi = 1]] =
∑ni=1 E [Xi ] =
∑ni=1
1i = ln n.
Algorismes aleatoris
Algorisme on algunes decisions es prenen depenent de la sortida rd’un generador aleatori random (a, b), a, b ∈ N.
Quan analitzem la complexitat d’un algorisme aleatori, el temps decomputació sobre una entrada donada x amb grandària n, esdevéuna variable aleatòria T (x , r).
Volem calcular: maxx ,|x |=n E [T (x , r)]
INPUT →0100100111010
Per què utilitzar algorismes aleatoris?
L’adversari posa 1 e a una capsa, i nosaltres hem d’endevinarquina es la capsa, si ho fem guanyem l’euro, altrament paguem 1e.Repetim el joc moltes vegades (n gran)
Estratègia determinista: Escollim sempre la mateixa capsa. Pervalors grans d’n, els nostres guanys seran < 0.
Estratègia aleatòria: Llancem la moneda i amb probabilitat 1/2escollim la capsa. En aquest cas els nostres guanys seran 0.
La utilització d’algorismes aleatoris ha esdevingut clau en moltesarees de la informàtica, la matemàtica, la f́ısica, la biologia o lasociologia.
I Xarxes socials
I Sistemes de recomanació: Amazon, i-Tunes, . . .
I Anuncis a la web
I Control de ”spam”
I Criptografia
I Mineria de dades
I Protocols de comunicació en xarxes
I Models epidemiològics i d’infecció
I Seqüenciació del DNA i el RNA
Exemple: contractar un estudiant
Recordeu: després d’entrevistar el i-èsim estudiant, hem de decidirsi el precontractem o no.Si el precontractem i no és el seleccionat, li indemnitzem amb S e.Volem minimitzar els costos totals de precontractar.
n
4 37n n−4
1 2 3 4
El problema de seleccionar un estudiant: Algorisme aleatori
Rand-Hire-Student (n)Randomly permute the list [n]best:=0for i = 1 to n do
interview iif i is better than best then
best:=i and pre-select iend if
end for
Cost esperat: E [Cost] = O(S ln n)
Com dissenyem un algorisme per a produir u.a.r. unapermutació?
Considerem una entrada amb n elements diferentsA = {a1, . . . , an}.
Una permutació Π(A) = (Π(a1),Π(a2), . . . ,Π(an)
Exemple: Donat A = {a, b, c, d , e}, tenim Π = (2, 4, 3, 5, 1)Π(A) = A′ = {e, a, c , b, d} and Π(A′) = {d , e, c , a, b}.
Per a qualsevol conjunt amb n elements tenim n! permutacionsdiferents
L’espai de probabilitat Ω = {Π1, . . . ,Πn!},⇒ |Ω| = n!
Però n! ∼ nn (Per què?)Per a seleccionar una permutació u.a.r. d’A, escollim un Π ∈ Ωamb probabilitat = 1n! .
Algorisme per a produir una permutació uar
Randomize-Perm (A)(A, n)for i = 1 to n do
choose j := Random (i , n)do swap A[i ]↔ A[j ]
end forAquest algorisme NO ÉS Determinista!, és un algorisme aleatorion l’entrada pot ser donada per un adversari.
Un algorisme aleatori pren decisions d’acord amb el resultat d’ungenerador aleatori r = random (a, b), a, b ∈ N.Donada una entrada x amb grandària n, el temps de computacióés una r.v. T (x , r).
Complexitat
LemmaRandomize-Perm (A) donà una permutació uniforme de A, enΘ(n) passos. I pot produir totes les n! permutacions.
Demostració• Complexitat: Per cada element d’A amb cost Θ(n) seleccionemun altre element i el permutem (cost Θ(1)), i això ho fem en Θ(n).
• Correctessa: El nombre total de combinacions amb j valors és n!.Hi ha n! permutacions de n elements, i una correspondència 1-1entre la generació de l’algorisme i el nombre de permutacions.
La probabilitat de que a la 1ra iteració tinguem un valor particularde j és 1/n, a la segona iteració la probabilitat de tenir un altrevalor és 1/(n − 1), etc..
Per tant, la probabilitat de produir una n-tupla particular d’ entersentre 1 i n és 1n ×
1n−1 ×
1n−2 · · · × 1 =
1n! . 2