Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Complexitat compu, Apuntes de Informática

Asignatura: graf, Profesor: Jordi Mas, Carrera: Enginyeria Tècnica en Informàtica de Sistemes, Universidad: UOC

Tipo: Apuntes

2013/2014

Subido el 28/05/2014

arantxita-1
arantxita-1 🇪🇸

3.9

(26)

10 documentos

1 / 52

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Complexitat
computacional
Joaquim Borges
Robert Claris´
o
Ramon Masi`
a
Jaume Pujol
Josep Rif`
a
Joan Vancells
Merc`
e Villanueva
PID 00184180
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34

Vista previa parcial del texto

¡Descarga Complexitat compu y más Apuntes en PDF de Informática solo en Docsity!

Complexitat

computacional

Joaquim Borges

Robert Claris ´o

Ramon Masi`a

Jaume Pujol

Josep Rif`a

Joan Vancells

Merc`e Villanueva

PID 00184180

Els textos i imatges publicats en aquesta obra estan subjectes –llevat que s’indiqui el contrari– a una llicencia de Reconeixement-NoComercial-SenseObraDerivada (BY-NC-ND) v.3.0 Espanya de Creative Commons. Podeu copiar-los, distribuir-los i transmetre’ls p´ublicament sempre que en citeu l’autor i la font (FUOC. Fundaci´o per a la Universitat Oberta de Catalunya), no en feu un ´us comercial i no en feu obra derivada. La llicencia completa es pot consultar a http://creativecommons.org/licenses/by-nc-nd/3.0/es/ legalcode.ca.

Introducci ´o

Aquest m `odul ´es una introducci ´o a la Teoria de la Complexitat

Computacional. Aquesta branca de la Informatica Teorica estudia

quins s ´on els l´ımits practics de calcul dels ordinadors.

Davant d’un problema , l’objectiu ´es mesurar la seva dificultat inhe-

rent : la quantitat de recursos computacionals (temps d’execuci ´o i

espai de mem `oria) que necessita un ordinador per a calcular-ne la

soluci ´o. Aquesta complexitat temporal i espacial s’estudia en termes

de la mida de les dades d’entrada.

A grans trets, es vol distingir aquells problemes on el proc´es de re-

soluci ´o ´es escalable fins i tot per grans volums de dades (problemes

tractables ) d’aquells on el consum de recursos es dispara r`apidament

fins arribar a ser prohibitiu (problemes intractables ). Per exemple, en

problemes intractables ´es freq¨uent parlar de temps d’execuci ´o supe-

riors a la vida de l’univers! Es tracta, doncs, de problemes que mai

no es podran resoldre a la pr`actica per molt que avanci la capacitat

de c`alcul dels ordinadors.

En aquest m odul, formalitzarem el concepte de problema i les tec-

niques per a mesurar la seva complexitat computacional. Presenta-

rem diversos exemples de problemes “famosos” de diferents `ambits

de la Inform`atica, caracteritzant la seva complexitat.

A m´es, per a facilitar la classificaci ´o dels problemes, definirem di-

ferents classes de problemes d’una complexitat equivalent i estu-

diarem les relacions entre les classes. Finalment, introduirem una

t`ecnica anomenada reducci´o que permet comparar la complexitat

de dos problemes diferents. D’aquesta manera, davant d’un proble-

ma nou serem capac¸os d’establir a quina classe pertany i decidir si

es “igual de complex” o “m´´ es complex” que altres problemes cone-

guts.

1. Concepte de problema

El punt de partida de la Teoria de la Complexitat ´es el concepte de

problema que es pot resoldre amb un ordinador.

Definici ´o 1

Un problema computacional ´es un enunciat on, partint

d’una informaci ´o d’entrada ( inst`ancia ), es demana una res-

posta finita ( soluci ´o ) amb unes caracter´ıstiques determinades.

Formalment, un problema Prob es una funci ´´ o Prob : I → S

d’un conjunt d’inst`ancies I a un conjunt de solucions S.

Prob( x ) denotar`a la soluci ´o al problema Prob amb entrada x.

x ∈ I – → (^) Prob – → Prob( x ) ∈ S

Exemple 1

AQ: “Donat un nombre real no negatiu x , calcular la seva arrel quadrada.”

Aquest problema correspon a una funci ´o AQ : R+^ → R+, concretament la funci ´o AQ( x ) =

x. Per exemple, tindr´ıem que AQ(4) = 2 i AQ(5) = 2,2360679.

Seq¨u`encia

Una seq¨u`encia ´es una col·lecci ´o d’elements on l’ordre dels elements ´es rellevant i hi pot haver repeticions: 〈 〉, 〈3, – 1〉, 〈4,4,15, – 2,5,6〉,...

Notaci ´o

Donat un conjunt C , anomenarem C ∗^ el conjunt de totes les seq¨uencies finites d’elements de _C_ , incloent-hi la seq¨uencia buida 〈 〉.

Exemple 2

CERCA ORD: “Donada una seq¨uencia finita d’enters _E_ ordenada en ordre creixent i un enter _k_ , decidir si el nombre _k_ apareix a la seq¨uencia.”

En aquest cas, cada entrada del problema ´es un parell de valors (una seq¨u`en- cia i un enter), mentre que la sortida ´es senzillament S´I o NO. Formalment, podr´ıem definir la funci ´o CERCA ORD : Z∗^ × Z → {S´I,NO}. Tindr´ıem per exemple que CERCA ORD

`

= S´I mentre que amb altra entra- da tenim que CERCA ORD

`

= NO.

Al llarg d’aquest m `odul, veurem molts exemples de problemes com-

putacionals. Alguns d’ells s ´on molt rellevants per les seves aplica-

cions pr`actiques i, per tant, ´es interessant recordar-los i aprendre a

recon`eixer-los. Classificarem el grau de dificultat d’aquests proble-

mes a partir de l’an`alisi dels algorismes que en calculen la soluci ´o.

1.1. Problemes decisionals, de c `alcul i d’optimitzaci ´o

Comenc¸arem la classificaci ´o dels problemes computacionals distin-

gint diferents categories segons la soluci ´o esperada.

Definici ´o 2

Un problema Prob : I → S es un´ problema decisional o de

decisi ´o si el conjunt de solucions S es´ {S´I,NO}. Dit d’una altra

manera, el problema consisteix a establir si l’entrada satisf`a

una certa propietat.

x ∈ I – → (^) DECISI ´O

ր

ց

S´I

NO

Exemple 3

PARELL: “Donat un nombre natural n , determinar si ´es parell.”

Aquest problema ´es una funci ´o PARELL : N → {S´I,NO}. Aix´ı per exemple, PARELL(16) = S´I i PARELL(7) = NO.

Exemple 4

CONNEX: “Donat un graf G = ( V , A ), determinar si ´es connex.”

Si anomenem G el conjunt de tots els grafs, podem definir aquest problema com la funci ´o CONNEX : G → {S´I,NO}. Per exemple, per als grafs complets Kn tindr´ıem que CONNEX( Kn ) = S´I per a qualsevol valor de n.

Definici ´o 3

Donat un problema decisional Prob : I → {S´I, NO}, denotem

per Prob•^ el conjunt de les entrades que tenen soluci ´o S´I.

Prob•^ = { x ∈ I | Prob( x ) = S´I}

Utilitzant aquesta notaci ´o de conjunts, la notaci ´o x ∈ Prob•^ es´

equivalent a Prob( x ) = S´I i x 6 ∈ Prob•^ es equivalent a´ Prob( x ) =

NO.

Definici ´o 5

Un problema Prob : I → S es un´ problema d’optimitzaci ´o si

es un problema de c`´ alcul (S 6 = {S´I, NO}) i la soluci ´o ha de ser

optima (m´ınima o maxima) d’acord amb una funci ´o de va-

loraci ´o definida en l’enunciat del problema. Dit d’una altra

manera, en un problema d’optimitzaci ´o ´es demana la millor

soluci ´o segons un cert criteri.

x ∈ I – → (^) OPTIMITZACI ´O – → Optim(` S)

Nomenclatura

En angl`es, aquest problema s’anomena closest pair problem.

Exemple 9

CPP: “Donat un conjunt de punts en un espai bidimensional, on cada punt est`a definit per les coordenades ( x , y ), calcular el parell de punts que s ´on m´es propers entre si.”

El problema es pot veure com una funci ´o CPP : 2R×R^ → (R × R) × (R × R). Un exemple de soluci ´o seria aquest: CPP

`

` =

El problema CPP es un problema d’optimitzaci ´´ o. La funci ´o de valoraci ´o que s’esta optimitzant ´es la distancia entre el parell de punts del resultat. En aquest cas, l’objectiu ´es minimitzar aquesta funci ´o.

Nomenclatura

En angl`es, aquest problema s’anomena longest common substring

Exemple 10

LCS: “Donades dues cadenes de car`acters a i b , trobar la subcadena comuna m´es llarga entre a i b .”

Si Σ ´es l’alfabet de s´ımbols sobre el qual hem definit les cadenes de car`acters, podem descriure LCS com la funci ´o LCS : Σ∗^ × Σ∗^ → Σ∗. Un exemple de soluci ´o seria LCS(“andromeda”, “dromedary”) = “dromeda”.

LCS es un problema d’optimitzaci ´´ o on la funci ´o de valoraci ´o a optimitzar ´es la longitud de la cadena comuna. L’objectiu ´es maximitzar aquesta funci ´o.

Nomenclatura

En angl`es, aquest problema s’anomena minimum spanning tree.

Exemple 11

MSP: “Donat un graf connex i ponderat, ´es a dir, un graf G = ( V , A ) i la funci ´o de ponderaci ´o w , calcular-ne un arbre generador minimal.”

Aquest problema t´e com entrada un graf G = ( V , A ) i una funci ´o de pon- deraci ´o, i com a sortida un graf. ´Es a dir, podem descriure’l com la funci ´o MSP : G × ( A → R) → G. La funci ´o de valoraci ´o en aquest cas ´es el pes de l’arbre generador, que es desitja minimitzar.

Exercicis

1. Definiu els seg¨uents problemes en forma de funci ´o i classifiqueu-los com a problemes de decisi ´o, c`alcul o optimitzaci ´o:

a) Donat un graf connex i ponderat ( G , w ) amb G = ( V , A ), i dos v`ertexs a , bV , determinar el cam´ı m´es curt entre a i b.

b) Donada una seq¨u`encia finita d’enters E i un valor k , comptar el nombre d’aparicions de k dins de E.

c) Donat un graf G , comprovar si ´es un graf complet.

d) Donat un graf G , trobar el subgraf complet d’ordre m`axim.

e) Donada una cadena de car`acters c , indicar si cont´e tots els d´ıgits del 0 al 9.

2. Justifiqueu si s ´on certes o falses les afirmacions seg¨uents (vegeu l’exem- ple 5):

a) Si un graf G es un arbre, llavors´ G 6 ∈ CONNEX•.

b) Si x 6 ∈ PARELL•, llavors 2 · x ∈ PARELL•.

Solucions

1. a) Prob : G × ( A → R) × V × VA ∗. Problema d’optimitzaci ´o. La funci ´o de valoraci ´o ´es el pes del cam´ı i es desitja minimitzar-lo.

b) Prob : Z∗^ × Z → Z. Problema de c`alcul.

c) Prob : G → {S´I,NO}. Problema de decisi ´o.

d) Prob : G → G. Problema d’optimitzaci ´o. La funci ´o de valoraci ´o ´es l’ordre (nombre de v`ertexs) del subgraf complet i es desitja maximitzar-lo.

e) Prob : Σ∗^ → {S´I,NO}. Problema de decisi ´o.

2. a) Falsa. Per definici ´o, tots els arbres s ´on grafs connexos i llavors CONNEX( G )

= S´I. Per ser correcta, l’afirmaci ´o hauria de dir G ∈ CONNEX•.

b) Certa. Encara que un nombre sigui senar (PARELL( x ) = NO), el doble de

qualsevol nombre sempre ser`a parell (PARELL(2 x ) = S´I).

1.2. Alguns problemes decisionals importants

En la resta del m `odul, ens centrarem ´unicament en els problemes

decisionals. El motiu d’aquesta tria aparentment tan restrictiva ´es

que qualsevol problema de c`alcul o d’optimitzaci ´o es pot reformu-

lar en versi ´o decisional:

Tipus Enunciat original (^) Versi ´o decisional C`alcul “Donada una entrada x , calcular el valor de sortida f ( x )”

“Donada una entrada x i un valor k , decidir si f ( x ) = k ” Optimitzaci ´o “Donada una entrada x , calcular el valor de sortida f ( x ) que maximit- za el criteri c

“Donada una entrada x i un llin- dar l , decidir si hi ha alguna sortida f ( x ) tal que c ( f ( x )) ≥ l

Podem veure que la versi ´o decisional ´es “m´es senzilla” que el pro-

blema original de c`alcul o optimitzaci ´o: l’algorisme que resol el

problema original pot solucionar tamb´e la versi ´o decisional. Aix´ı

doncs, si demostrem que la versi ´o decisional ´es “dif´ıcil”, tindrem

Problema de decisi ´o. Proposici ´o 7

SAT ( satisfactibilitat ): Donada una f ´ormula booleana f : V →

{0,1} en FNC, decidir si hi ha alguna assignaci ´o de valors de

veritat a les variables V que satisf`a f (´es a dir, fa que f avalu¨ı a

Si cada cl`ausula de f t´e exactament 3 literals, estem davant

d’un cas particular de SAT anomenat el problema de la

3-satisfactibilitat ( 3SAT).

Exemple 13

Donada la f ´ormula f = ( ab )∧( ac ), tenim que SAT( f ) = S´I. De fet, de les 2^3 assignacions de valors de veritat a les variables { a , b , c }, hi ha 5 assignacions que satisfan la f ´ormula: a b c 0 0 0 0 0 1 0 1 0 0 1 1 1 1 0

En canvi, cap de les 2^4 = 16 assignacions de valors de veritat satisf`a la f ´ormula seg¨uent:

( abc ) ∧ ( ac ) ∧ b ∧ ( ac ) ∧ ( ad ) ∧ ( c ).

Veiem-ho: les clausules _b_ i _c_ ens obliguen que _b_ = 1 i _c_ = 0; les clausules ( ac ) i ( ac ) ens obliguen que a = 1; per o aleshores, la primera clausula no es pot satisfer. Com que f ´es una conjunci´o de clausules, si la primera clausula no es pot satisfer llavors f es insatisfactible.´

Es podria pensar que el problema SAT nom´es t´e sentit en el context

de la l ogica o el disseny de circuits digitals, pero ´es una impressi ´o

ben equivocada. Qualsevol problema sobre un domini afitat es pot

codificar mitjanc¸ant variables i f ´ormules booleanes. En altres pa-

raules, molts problemes reals es poden expressar com a inst`ancies

de SAT.

Exemple 14

Tres professors (Pilar, Ricard i Maria) han de vigilar tres ex`amens (1, 2 i 3). Cada examen ha de tenir almenys un vigilant, tot i que tamb´e n’hi pot haver m´es d’un. A en Ricard no li va b´e l’horari del primer examen, i el segon i el tercer estan solapats i s’han d’assignar a persones diferents. Finalment, cada professor ha de vigilar almenys un examen.

Volem decidir si hi ha alguna assignaci ´o de vigilancies d’examen factible. Aquest problema ´es equivalent a decidir si la f ´ormula seg¨uent ´es satisfacti- ble ( _pi_ = 1 indica que la Pilar vigila l’examen _i_ -esim i similarment per a en Ricard i la Maria).

( r 1 ) ∧ ( p 2 ∨ p 3 ) ∧ ( r 2 ∨ r 3 ) ∧ ( m 2 ∨ m 3 ) ∧ ( p 1 ∨ p 2 ∨ p 3 ) ∧ ( r 1 ∨ r 2 ∨ r 3 ) ∧ ( m 1 ∨ m 2 ∨ m 3 )

Aquesta f ´ormula ´es satisfactible si, per exemple, p 1 = 1, m 2 = 1, r 3 = 1 i la resta de variables estan a 0.

1.2.2. Partici ´o de conjunts

Multiconjunt

Un multiconjunt ´es una col·lecci ´o no ordenada d’elements on pot haver-hi repeticions. Es representen entre claud`ators, per exemple, [7,3,7,24]. Un subconjunt d’un multiconjunt tamb´e pot ser un multiconjunt.

Problema de decisi ´o. Proposici ´o 8

PARTICIO: Donat un multiconjunt d’enters C , decidir si exis-

teix un subconjunt C ′^ ⊆ C tal que la suma de tots els elements

de C ′^ sigui igual a la suma dels elements fora de C ′.

PARTICIO( C ) ≡ ∃ C ′^ ⊆ C |

xC

x =

yC \ C

y

Exemple 15

Podem veure que PARTICIO

`

[2,3,3,34]

= NO. Per a justificar-ho, hem de comprovar que cap partici ´o del conjunt t´e la mateixa suma. En un multi- conjunt amb n elements, hi ha com a maxim 2 _n_ –1^ particions (assumint que la meitat de particions s ´on simetriques, ´es a dir, que d’una partici ´o a l’altra nom´es s’intercanvien C ′^ i C \ C ′):

C ′^ Suma de C ′^ C \ C ′^ Suma de C \ C ′ ∅ 0 [2,3,3,34] 42 [2] 2 [3,3,34] 40 [3] 3 [2,3,34] 39 [34] 34 [2,3,3] 8 [2,3] 5 [3,34] 37 [3,3] 6 [2,34] 36

En canvi PARTICIO

`

[3,4,12,17,18,22,28]

= S´I, ja que tenim dos subcon- junts amb suma total 52, [3,4,28,17] i [22,18,12].

El nom PARTICIO prov´e del fet que busquem partir el multiconjunt

en dues parts amb la mateixa suma total. A la pr`actica, PARTICIO

apareix quan es vol repartir equitativament entre dues entitats un

conjunt de tasques o recursos independents entre si. Usualment,

en tractar de problemes de planificaci ´o o log´ıstica es pot plantejar

la versi ´o d’optimitzaci ´o del problema (trobar el repartiment m´es

equitatiu).

4. Hi ha alguna f ´ormula booleana en FNC amb exactament dues clausules que sigui insatisfactible? I si a m´es aquesta f ´ormula hagu´es de ser una entrada de 3SAT, canviaria la resposta? **5.** Indiqueu quines d’aquestes f ´ormules booleanes s ´on entrades correctes de 3SAT: ( _a_ ∨ _b_ ∨ _c_ ), ( _a_ ∨ _b_ ∨ _c_ ) ∧ ( _a_ ∨ _b_ ), ( _a_ ∨ _c_ ) ∨ ( _b_ ∧ _c_ ) ∨ ( _b_ ∧ _c_ ) **6.** Indiqueu si les seg¨uents f ´ormules en FNC s ´on satisfactibles i, si ho s ´on, doneu una assignaci ´o de valors de veritat que les satisfa:

a) x ∧ ( xy ) ∧ z ∧ ( xyz )

b) ( yz ) ∧ ( xz ) ∧ ( xy )

7. Donat un multiconjunt d’enters C , demostreu que si PARTICIO( C ) = S´I aleshores la suma de tots els elements de C ´es un nombre parell. 8. Donades les seg¨uents entrades de PARTICIO, indiqueu quina ´es la seva

soluci ´o. En cas que la soluci ´o sigui S´I, indiqueu quina seria la partici ´o.

a) C 1 = [1,2,3,4,5,6,7,8,9,10,11].

b) C 2 = [18,175, – 64,14,13].

Solucions

3. Les f ´ormules en FNC s ´on: ab , ab i ( ab )∧ ba. Pel que fa a les altres, ab t´e una o-l ogica dins una negaci ´o i _a_ ∨ ( _b_ ∧ _c_ ) ´es una disjunci ´o de conjuncions. **4.** S´ı: ( _a_ ∧ _a_ ). En canvi, si la f ´ormula ´es una entrada de 3SAT, totes les f ´ormules amb 2 clausules seran sempre satisfactibles. 5. Nom´es ( abc ), ja que t´e 3 literals a totes les clausules (en aquest cas, la seva ´unica clausula). ( abc ) ∧ ( ab ) t´e una clausula amb 2 literals mentre que ( _a_ ∨ _c_ ) ∨ ( _b_ ∧ _c_ ) ∨ ( _b_ ∧ _c_ ) ni tan sols esta en FNC. 6. a) No ´es satisfactible.

b) Es satisfactible, per exemple, per a:´ x = 0, y = 1 i z = 1.

7. Si PARTICIO( C ) = S´I, vol dir que C es pot dividir en dues parts amb la mateixa suma total. Si anomenem s la suma dels elements de cadascuna d’a- questes parts, la suma de tots els elements de C sera 2 _s_ , que ´es un nombre parell. **8. a)** PARTICIO( _C_ 1 ) = S´I. Una possible partici ´o seria aquesta: _C_ ′^ = [3,9,10,11] i _C_ 1 \ _C_ ′^ = [1,2,4,5,6,7,8]. Una estrategia per a calcular la partici ´o en aquesta inst`ancia tan petita ´es calcular primer la suma total (66) i aleshores buscar un conjunt d’elements que sumin en total la meitat (33).

b) PARTICIO( C 2 ) = NO. Fixem-nos que 175 – 64 ´es m´es gran que la suma de la resta d’enters positius.

2. Mesures de complexitat

2.1. Temps i espai

La complexitat computacional d’un algorisme ´es una mesura abs-

tracta de la quantitat de recursos necessaris per a calcular-ne una

soluci ´o. Considerarem dos recursos de c`alcul diferents: el temps d’e-

xecuci ´o i l’espai de mem `oria.

Definici ´o 10

El temps d’execuci ´o d’un algorisme ´es una mesura del nom-

bre de passos de c`alcul o operacions elementals necessaris per

obtenir el resultat.

L’ espai de mem `oria consumit per un algorisme ´es una mesu-

ra del nombre de posicions de mem oria (bits) necessaries per

a emmagatzemar el resultat final i els c`alculs intermedis.

Vegeu tamb´e

Al m `odul “Conceptes previs: funcions i algorismes” podeu repasar la notaci ´o O.

En funci ´o del recurs que calgui mesurar, parlarem de complexitat

temporal o complexitat espacial. En ambd ´os casos, no es pret´en

quantificar un valor concret (segons, instruccions, bits o megaby-

tes) sin ´o la taxa de creixement respecte a la mida de l’entrada. Uti-

litzarem la notaci ´o O per descriure aquesta taxa de creixement en

el cas pitjor, ´es a dir, l’entrada que consumeix m´es recursos.

Exemple 20

Un _quadrat magic_ es una matriu´ _n_ × _n_ de nombres naturals que cont´e els nombres de l’1 al _n_^2 sense repeticions i de forma que la suma de cada fila, columna i diagonal principal ´es igual al mateix valor. Un exemple de quadrat magic 3 × 3 ´es la matriu

Estudiem la complexitat espacial i temporal d’un algorisme que, donada una matriu n × n , comprovi si ´es un quadrat m`agic.

El nostre algorisme ha de calcular el sumatori de n files, n columnes i 2 dia- gonals principals. Cada sumatori requereix n – 1 sumes. Per tant, el nostre algorisme ha de fer (2 n + 2)( n – 1) sumes. Despr´es cal comparar els resultats

Un problema pot tenir un o m´es algorismes que en calculin la so-

luci ´o. La complexitat espacial i temporal d’un problema es defineix

a partir d’aquests algorismes, concretament la de l’algorisme m´es

eficient que en calcula la soluci ´o.

Definici ´o 12

Una funci ´o f es´ calculable en temps polin `omic si existeix un

algorisme que calcula f ( x ) en temps polin `omic per a qualsevol

entrada x.

Un problema Prob es´ resoluble en temps polin `omic si Prob( x )

es calculable en temps polin `´ omic.

Similarment, podem donar les definicions per a la complexi-

tat espacial (substituint temps per espai ) i per a la complexitat

exponencial (substituint polin`omic per exponencial ).

Definici ´o 13

Un problema Prob es´ tractable si ´es resoluble en temps po-

lin `omic.

Un problema Prob es´ intractable si ´es resoluble en temps ex-

ponencial per o no ´es resoluble en temps polinomic.

2.1.1. La mida de l’entrada

Abans de comenc¸ar a estudiar complexitats temporals o espacials

hem de fer una reflexi ´o sobre la mida de l’entrada d’un algorisme.

En els m `oduls anteriors, hem expressat la complexitat dels algoris-

mes en funci ´o de la mida de l’entrada. L’entrada podia ser un graf,

un conjunt, una llista, un nombre enter...

Exemple 22

En l’analisi de la complexitat de la majoria dels algorismes sobre grafs (Dijkstra, Floyd,... ), l’entrada ´es un graf _G_ = ( _V_ , _A_ ), i n’analitzem la com- plexitat en termes de l’ **ordre** (el nombre _n_ de vertexs) del graf i la seva mida (el nombre m d’arestes).

En els algorismes d’ordenaci ´o, l’entrada esta formada per una llista o se- q¨uencia de nombres enters i la complexitat es calcula en funci ´o de la lon- gitud (nombre n d’elements) de la llista.

En l’algorisme de multiplicar i elevar, l’entrada est`a formada per un nom- bre x i un exponent enter i positiu N. La complexitat es calcula en funci ´o del valor de N.

En el cas que l’entrada de l’algorisme sigui un nombre enter ´es im-

portant fixar la base amb la qual representem el nombre. Un nom-

bre com 101 pot estar en base 2,3,... ,10,... i la seva representaci ´o

interna en un ordinador ´es diferent segons sigui la base. Nosaltres

suposarem que tots els nombres enters estan representats en base

2, que ´es la manera com es representen en un ordinador.

Aix´ı, si N ( N > 0) representa un nombre enter positiu qualsevol,

llavors el nombre de bits que necessitem per a representar N es´

n = ⌊log 2 N ⌋ + 1.

Definici ´o 14

Quan l’entrada d’un algorisme depengui d’un nombre enter

N ( N > 0) definirem la mida de l’entrada com el nombre de

bits de la representaci ´o bin`aria d’ N.

Criptografia

En molts protocols criptografics, la confidencialitat es garanteix amb la mida d’una clau. Per exemple, amb claus de 1024 bits es poden requerir de l’ordre de 21024 ≈ 10308 operacions matematiques per a desxifrar un missatge sense tenir la clau.

Exemple 23

El nombre enter 101 en base 10, es representa com 1100101 en base 2. El nombre de bits de la seva representaci ´o binaria ´es ⌊log 2 101 ⌋ + 1 = 7. Per tant, la mida de l’entrada sera n = 7.

Exemple 24

*** Vegeu el m `odul “Conceptes previs”.**

Suposem que ens demanen calcular la complexitat de l’algorisme que suma els N ( N ≥ 1) primers nombres naturals. Aquest problema ja va ser tractat abans* i hav´ıem dedu¨ıt que si sumavem els _N_ nombres consecutivament aleshores l’algorisme tenia una complexitat _O_ ( _N_ ). Si _N_ es petit aleshores´ aquest calcul es pot considerar correcte.

Que passa si _N_ es molt gran, per exemple, si´ _N_ es un nombre de 1024 bits?´ Aleshores ´es m´es adequat expressar la complexitat de l’algorisme en funci ´o de la longitud de la representaci ´o binaria de N i no pas directament amb el valor de N. Aix´ı, com que la longitud binaria ´es _n_ = ⌊log 2 _N_ ⌋ + 1, aquest algorisme passaria a tenir una complexitat _O_ (2 _n_ ), ates que hi ha 2 n^ nombres enters diferents de mida menor o igual que n.

Fixeu-vos que aquest resultat posa en evidencia que aquest algorisme ´es molt ineficient. Podem afirmar que el problema de sumar els _N_ primers nombres naturals ´es un problema intractable? Aixo tampoc ´es cert ja que en el m odul “Conceptes previs: funcions i algorismes” hav´ıem vist un altre algorisme per a calcular aquesta suma. L’algorisme, proposat per Euler, ´es molt eficient ja que t´e una complexitat polinomica. Per tant, la exist`encia de l’algorisme d’Euler ens confirma que aquest problema ´es tractable.