












































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: graf, Profesor: Jordi Mas, Carrera: Enginyeria Tècnica en Informàtica de Sistemes, Universidad: UOC
Tipo: Apuntes
1 / 52
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!













































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.
atica Teorica estudiaactics de calcul dels ordinadors.odul, formalitzarem el concepte de problema i les tec-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
x ∈ I – → (^) DECISI ´O
ր
ց
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.
ınima o maxima) d’acord amb una funci ´o de va-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.
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 , b ∈ V , 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•.
1. a) Prob : G × ( A → R) × V × V → A ∗. 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).
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 ”
Exemple 13
Donada la f ´ormula f = ( a ∨ b )∧( a ∨ c ), 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:
( a ∨ b ∨ c ) ∧ ( a ∨ c ) ∧ b ∧ ( a ∨ c ) ∧ ( a ∨ d ) ∧ ( c ).
Veiem-ho: les clausules _b_ i _c_ ens obliguen que _b_ = 1 i _c_ = 0; les clausules ( a ∨ c ) i ( a ∨ c ) 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.´
ogica o el disseny de circuits digitals, pero ´es una impressi ´oExemple 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.
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.
x ∈ C ′
y ∈ C \ C ′
Exemple 15
Podem veure que PARTICIO
= 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
= S´I, ja que tenim dos subcon- junts amb suma total 52, [3,4,28,17] i [22,18,12].
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 ∧ ( x ∨ y ) ∧ z ∧ ( x ∨ y ∨ z )
b) ( y ∨ z ) ∧ ( x ∨ z ) ∧ ( x ∨ y )
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].
3. Les f ´ormules en FNC s ´on: a ∧ b , a ∨ b i ( a ∨ b )∧ b ∧ a. Pel que fa a les altres, a ∨ b 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 ( a ∨ b ∨ c ), ja que t´e 3 literals a totes les clausules (en aquest cas, la seva ´unica clausula). ( a ∨ b ∨ c ) ∧ ( a ∨ b ) 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.
oria (bits) necessaries perVegeu tamb´e
Al m `odul “Conceptes previs: funcions i algorismes” podeu repasar la notaci ´o O.
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
o no ´es resoluble en temps polinomic.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.
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.