complejidad, estructuras, diseño y técnicas · análisis de algoritmos complejidad, estructuras,...

Post on 12-Jan-2020

12 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Análisis de Algoritmos

Complejidad, estructuras, diseño ytécnicas

Dra. Elisa Schaeffer

elisa.schaeffer@gmail.com

PISIS / FIME / UANL

Analisis de algoritmos– p. 1

Temario

Definiciones matemáticas y computacionales

Analisis de algoritmos– p. 2

Temario

Definiciones matemáticas y computacionales

Problemas y algoritmos

Analisis de algoritmos– p. 2

Temario

Definiciones matemáticas y computacionales

Problemas y algoritmos

Modelos de computación

Analisis de algoritmos– p. 2

Temario

Definiciones matemáticas y computacionales

Problemas y algoritmos

Modelos de computación

Complejidad computacional de problemas

Analisis de algoritmos– p. 2

Temario

Definiciones matemáticas y computacionales

Problemas y algoritmos

Modelos de computación

Complejidad computacional de problemas

Clases de complejidad

Analisis de algoritmos– p. 2

Temario

Definiciones matemáticas y computacionales

Problemas y algoritmos

Modelos de computación

Complejidad computacional de problemas

Clases de complejidad

Estructuras de datos

Analisis de algoritmos– p. 2

Temario

Análisis de algoritmos

Analisis de algoritmos– p. 3

Temario

Análisis de algoritmos

Técnicas de diseño de algoritmos

Analisis de algoritmos– p. 3

Temario

Análisis de algoritmos

Técnicas de diseño de algoritmos

Optimización combinatorial

Analisis de algoritmos– p. 3

Temario

Análisis de algoritmos

Técnicas de diseño de algoritmos

Optimización combinatorial

Algoritmos de aproximación

Analisis de algoritmos– p. 3

Temario

Análisis de algoritmos

Técnicas de diseño de algoritmos

Optimización combinatorial

Algoritmos de aproximación

Algoritmos aleatorizados

Analisis de algoritmos– p. 3

Temario

Análisis de algoritmos

Técnicas de diseño de algoritmos

Optimización combinatorial

Algoritmos de aproximación

Algoritmos aleatorizados

Transiciones de fase

Analisis de algoritmos– p. 3

Organización

No habrá examen. Eso no implica que no hay que estudiar.

Calificación:

Tareas semanales 30 %+ Proyecto individual 70 %

Calificación final 100 %

Analisis de algoritmos– p. 4

Material de estudio

Los materiales del curso en PDF (en desarrollo) en

http://yalma.fime.uanl.mx/~elisa

y por ahora por problemas de con el servidor también en

http://www.tcs.tkk.fi/~satu/aa.pdf

La biblioteca tiene algunos libros útiles; ver bibliografía.

Analisis de algoritmos– p. 5

Tareas semanales

No son obligatorias, pero hay que tomar en cuenta que sintarea ninguna, la calificación final máxima es 70.

Iniciamos las tareas juntos en clase y también revisamosjuntos los resultados.

No van a ser nada imposible ni laboroso.

No creo que es posible aprender esto solamente porescuchar en clase o leer un libro de una manerasuperficial.

Analisis de algoritmos– p. 6

Proyecto individual

Cada alumno elige su propio problema y elige o desarrollaalgoritmos para el problema.

Durante el semestre, cada uno escribe un reporte enformato de un artículo cientifico sobre la complejidadcomputacional del problema y la complejidad asintótica delos algoritmos.

Las presentaciones finales (sí, hay que dar una plática) serecomienda programar en el seminario de PISIS, perotambién será posible dar la presentación a parte.

Analisis de algoritmos– p. 7

Conjuntos y permutaciones

A = {a, b, c} , |A|

Analisis de algoritmos– p. 8

Conjuntos y permutaciones

A = {a, b, c} , |A|

a ∈ A, a /∈ A

Analisis de algoritmos– p. 8

Conjuntos y permutaciones

A = {a, b, c} , |A|

a ∈ A, a /∈ A

Z,R, ∅

Analisis de algoritmos– p. 8

Conjuntos y permutaciones

A = {a, b, c} , |A|

a ∈ A, a /∈ A

Z,R, ∅

A ∪ B,A ∩ B

Analisis de algoritmos– p. 8

Conjuntos y permutaciones

A = {a, b, c} , |A|

a ∈ A, a /∈ A

Z,R, ∅

A ∪ B,A ∩ B

|A ∪B| ≥ max {|A| , |B|}

Analisis de algoritmos– p. 8

Conjuntos y permutaciones

A = {a, b, c} , |A|

a ∈ A, a /∈ A

Z,R, ∅

A ∪ B,A ∩ B

|A ∪B| ≥ max {|A| , |B|}

|A ∩B| ≤ mın {|A| , |B|}

Analisis de algoritmos– p. 8

Conjuntos y permutaciones

A = {a, b, c} , |A|

a ∈ A, a /∈ A

Z,R, ∅

A ∪ B,A ∩ B

|A ∪B| ≥ max {|A| , |B|}

|A ∩B| ≤ mın {|A| , |B|}

A = {a | a /∈ A}

Analisis de algoritmos– p. 8

Conjuntos y permutaciones

A = {a, b, c} , |A|

a ∈ A, a /∈ A

Z,R, ∅

A ∪ B,A ∩ B

|A ∪B| ≥ max {|A| , |B|}

|A ∩B| ≤ mın {|A| , |B|}

A = {a | a /∈ A}

A \ B = {a | a ∈ A, a /∈ B}

Analisis de algoritmos– p. 8

Subconjuntos

B ⊆ A,C * A

Analisis de algoritmos– p. 9

Subconjuntos

B ⊆ A,C * A

B ⊂ A ⇒ |B| < |A|

Analisis de algoritmos– p. 9

Subconjuntos

B ⊆ A,C * A

B ⊂ A ⇒ |B| < |A|∣

∣2A∣

∣ = 2|A|

Analisis de algoritmos– p. 9

Subconjuntos

B ⊆ A,C * A

B ⊂ A ⇒ |B| < |A|∣

∣2A∣

∣ = 2|A|

(

n

k

)

=n!

k!(n− k)!

Analisis de algoritmos– p. 9

Subconjuntos

B ⊆ A,C * A

B ⊂ A ⇒ |B| < |A|∣

∣2A∣

∣ = 2|A|

(

n

k

)

=n!

k!(n− k)!

(a, b), (a, b], [a, b), [a, b]

Analisis de algoritmos– p. 9

Subconjuntos

B ⊆ A,C * A

B ⊂ A ⇒ |B| < |A|∣

∣2A∣

∣ = 2|A|

(

n

k

)

=n!

k!(n− k)!

(a, b), (a, b], [a, b), [a, b]

A tiene |A|! permutaciones

Analisis de algoritmos– p. 9

Subconjuntos

B ⊆ A,C * A

B ⊂ A ⇒ |B| < |A|∣

∣2A∣

∣ = 2|A|

(

n

k

)

=n!

k!(n− k)!

(a, b), (a, b], [a, b), [a, b]

A tiene |A|! permutaciones

k-subconjuntos ordenados de A: k! ·(

n

k

)

=n!

(n− k)!

Analisis de algoritmos– p. 9

Relaciones

A× B = {(a, b) | a ∈ A, b ∈ B}

Analisis de algoritmos– p. 10

Relaciones

A× B = {(a, b) | a ∈ A, b ∈ B}

R ⊆ A× B

Analisis de algoritmos– p. 10

Relaciones

A× B = {(a, b) | a ∈ A, b ∈ B}

R ⊆ A× B

(a, b) ∈ R o alternativamente aRb

Analisis de algoritmos– p. 10

Relaciones

A× B = {(a, b) | a ∈ A, b ∈ B}

R ⊆ A× B

(a, b) ∈ R o alternativamente aRb

Matriz: aij ={

1, si (ai, bj) ∈ R,

0, si (ai, bj) /∈ R

Analisis de algoritmos– p. 10

Relaciones

A× B = {(a, b) | a ∈ A, b ∈ B}

R ⊆ A× B

(a, b) ∈ R o alternativamente aRb

Matriz: aij ={

1, si (ai, bj) ∈ R,

0, si (ai, bj) /∈ R

Transitiva: ∀a, b, c ∈ A tales que aRb y bRc, aRc

Analisis de algoritmos– p. 10

Relaciones

A× B = {(a, b) | a ∈ A, b ∈ B}

R ⊆ A× B

(a, b) ∈ R o alternativamente aRb

Matriz: aij ={

1, si (ai, bj) ∈ R,

0, si (ai, bj) /∈ R

Transitiva: ∀a, b, c ∈ A tales que aRb y bRc, aRc

Reflexiva: ∀a ∈ A, aRa

Analisis de algoritmos– p. 10

Relaciones

A× B = {(a, b) | a ∈ A, b ∈ B}

R ⊆ A× B

(a, b) ∈ R o alternativamente aRb

Matriz: aij ={

1, si (ai, bj) ∈ R,

0, si (ai, bj) /∈ R

Transitiva: ∀a, b, c ∈ A tales que aRb y bRc, aRc

Reflexiva: ∀a ∈ A, aRa

Simétrica: (ai, aj) ∈ R ⇔ (aj , ai) ∈ R

Analisis de algoritmos– p. 10

Relaciones

A× B = {(a, b) | a ∈ A, b ∈ B}

R ⊆ A× B

(a, b) ∈ R o alternativamente aRb

Matriz: aij ={

1, si (ai, bj) ∈ R,

0, si (ai, bj) /∈ R

Transitiva: ∀a, b, c ∈ A tales que aRb y bRc, aRc

Reflexiva: ∀a ∈ A, aRa

Simétrica: (ai, aj) ∈ R ⇔ (aj , ai) ∈ R

Cláusuras

Analisis de algoritmos– p. 10

Mapeos

g : A → B, g(a) = b para significar que (a, b) ∈ Rg

Analisis de algoritmos– p. 11

Mapeos

g : A → B, g(a) = b para significar que (a, b) ∈ Rg

A es el dominio y B es el rango

Analisis de algoritmos– p. 11

Mapeos

g : A → B, g(a) = b para significar que (a, b) ∈ Rg

A es el dominio y B es el rango

Los bi ∈ B para las cuales aplica (a, bi) ∈ Rg son laimagen a en B

Analisis de algoritmos– p. 11

Mapeos

g : A → B, g(a) = b para significar que (a, b) ∈ Rg

A es el dominio y B es el rango

Los bi ∈ B para las cuales aplica (a, bi) ∈ Rg son laimagen a en B

Los elementos de A que corresponden a un b ∈ B asíque (a, b) ∈ Rg son la imagen inversa de b, g−1(b)

Analisis de algoritmos– p. 11

Mapeos

g : A → B, g(a) = b para significar que (a, b) ∈ Rg

A es el dominio y B es el rango

Los bi ∈ B para las cuales aplica (a, bi) ∈ Rg son laimagen a en B

Los elementos de A que corresponden a un b ∈ B asíque (a, b) ∈ Rg son la imagen inversa de b, g−1(b)

Epiyectivo: ∀b ∈ B∃a ∈ A tal que g(a) = b

Analisis de algoritmos– p. 11

Mapeos

g : A → B, g(a) = b para significar que (a, b) ∈ Rg

A es el dominio y B es el rango

Los bi ∈ B para las cuales aplica (a, bi) ∈ Rg son laimagen a en B

Los elementos de A que corresponden a un b ∈ B asíque (a, b) ∈ Rg son la imagen inversa de b, g−1(b)

Epiyectivo: ∀b ∈ B∃a ∈ A tal que g(a) = b

Inyectivo: ∀a1, a2 ∈ A tales que a1 = a2 ⇒ g(a1) = g(a2)

Analisis de algoritmos– p. 11

Mapeos

g : A → B, g(a) = b para significar que (a, b) ∈ Rg

A es el dominio y B es el rango

Los bi ∈ B para las cuales aplica (a, bi) ∈ Rg son laimagen a en B

Los elementos de A que corresponden a un b ∈ B asíque (a, b) ∈ Rg son la imagen inversa de b, g−1(b)

Epiyectivo: ∀b ∈ B∃a ∈ A tal que g(a) = b

Inyectivo: ∀a1, a2 ∈ A tales que a1 = a2 ⇒ g(a1) = g(a2)

Biyectivo: inyectivo y epiyectivo

Analisis de algoritmos– p. 11

Funciones

Una función f : A → B es un mapeo que asigna acada elemento de A un único elemento de B

Analisis de algoritmos– p. 12

Funciones

Una función f : A → B es un mapeo que asigna acada elemento de A un único elemento de B

|x| =

{

x, si x ≥ 0

−x, si x < 0.

Analisis de algoritmos– p. 12

Funciones

Una función f : A → B es un mapeo que asigna acada elemento de A un único elemento de B

|x| =

{

x, si x ≥ 0

−x, si x < 0.

exp(x) = ex =∞∑

i=0

xi

i!= 1 + x+

x2

2!+

x3

3!+ . . .

Analisis de algoritmos– p. 12

Funciones

Una función f : A → B es un mapeo que asigna acada elemento de A un único elemento de B

|x| =

{

x, si x ≥ 0

−x, si x < 0.

exp(x) = ex =∞∑

i=0

xi

i!= 1 + x+

x2

2!+

x3

3!+ . . .

e ≈ 2, 718281828 es el constante de Napier

Analisis de algoritmos– p. 12

Funciones

Una función f : A → B es un mapeo que asigna acada elemento de A un único elemento de B

|x| =

{

x, si x ≥ 0

−x, si x < 0.

exp(x) = ex =∞∑

i=0

xi

i!= 1 + x+

x2

2!+

x3

3!+ . . .

e ≈ 2, 718281828 es el constante de Napier

ex = lımn→∞

(

1 +x

n

)n

Analisis de algoritmos– p. 12

Funciones

Una función f : A → B es un mapeo que asigna acada elemento de A un único elemento de B

|x| =

{

x, si x ≥ 0

−x, si x < 0.

exp(x) = ex =∞∑

i=0

xi

i!= 1 + x+

x2

2!+

x3

3!+ . . .

e ≈ 2, 718281828 es el constante de Napier

ex = lımn→∞

(

1 +x

n

)n

D(ex) = ex

Analisis de algoritmos– p. 12

Funciones

Una función f : A → B es un mapeo que asigna acada elemento de A un único elemento de B

|x| =

{

x, si x ≥ 0

−x, si x < 0.

exp(x) = ex =∞∑

i=0

xi

i!= 1 + x+

x2

2!+

x3

3!+ . . .

e ≈ 2, 718281828 es el constante de Napier

ex = lımn→∞

(

1 +x

n

)n

D(ex) = ex

Analisis de algoritmos– p. 12

Función exponencial

0

200

400

600

800

1000

0 2 4 6 8 10

Escala lineal

1

10

100

1000

10000

0 2 4 6 8 10

Escala logarítmica

Analisis de algoritmos– p. 13

Exponentes

b0 = 1

Analisis de algoritmos– p. 14

Exponentes

b0 = 1

b1 = b

Analisis de algoritmos– p. 14

Exponentes

b0 = 1

b1 = b

ba+c = babc

Analisis de algoritmos– p. 14

Exponentes

b0 = 1

b1 = b

ba+c = babc

bac = (ba)c

Analisis de algoritmos– p. 14

Exponentes

b0 = 1

b1 = b

ba+c = babc

bac = (ba)c

b−a =(

1b

)a= 1

ba

Analisis de algoritmos– p. 14

Logaritmos

blogb x = x donde x > 0

Analisis de algoritmos– p. 15

Logaritmos

blogb x = x donde x > 0

Si logb x = y, by = x

Analisis de algoritmos– p. 15

Logaritmos

blogb x = x donde x > 0

Si logb x = y, by = x

Se define que logb 1 = 0

Analisis de algoritmos– p. 15

Logaritmos

blogb x = x donde x > 0

Si logb x = y, by = x

Se define que logb 1 = 0

Cambios de base: logb′(x) =logb(x)

logb(b′)

.

Analisis de algoritmos– p. 15

Logaritmos

blogb x = x donde x > 0

Si logb x = y, by = x

Se define que logb 1 = 0

Cambios de base: logb′(x) =logb(x)

logb(b′)

.

Es inyectiva: logb x = logb y =⇒ x = y

Analisis de algoritmos– p. 15

Logaritmos

blogb x = x donde x > 0

Si logb x = y, by = x

Se define que logb 1 = 0

Cambios de base: logb′(x) =logb(x)

logb(b′)

.

Es inyectiva: logb x = logb y =⇒ x = y

Es creciente: x > y =⇒ logb x > logb y

Analisis de algoritmos– p. 15

Logaritmos

1

2

3

4

5

6

7

8

9

10

0 200 400 600 800 1000

b = 2b = e

b = 10

Analisis de algoritmos– p. 16

Logaritmos

Multiplicación: logb(x · y) = logb x+ logb y

Analisis de algoritmos– p. 17

Logaritmos

Multiplicación: logb(x · y) = logb x+ logb y

División: logb(

xy

)

= logb x− logb y

Analisis de algoritmos– p. 17

Logaritmos

Multiplicación: logb(x · y) = logb x+ logb y

División: logb(

xy

)

= logb x− logb y

Potencia: logb xc = c logb x

Analisis de algoritmos– p. 17

Logaritmos

Multiplicación: logb(x · y) = logb x+ logb y

División: logb(

xy

)

= logb x− logb y

Potencia: logb xc = c logb x

En el exponente: xlogb y = ylogb x

Analisis de algoritmos– p. 17

Logaritmos

Multiplicación: logb(x · y) = logb x+ logb y

División: logb(

xy

)

= logb x− logb y

Potencia: logb xc = c logb x

En el exponente: xlogb y = ylogb x

Factorial: logb(n!) =n

i=1

logb i

Analisis de algoritmos– p. 17

Sucesiones

Suma: S = x1 + x2 + x3 + . . .+ xn =n

i=1

xi

Analisis de algoritmos– p. 18

Sucesiones

Suma: S = x1 + x2 + x3 + . . .+ xn =n

i=1

xi

Parcial: Sk =k

i=1

xi

Analisis de algoritmos– p. 18

Sucesiones

Suma: S = x1 + x2 + x3 + . . .+ xn =n

i=1

xi

Parcial: Sk =k

i=1

xi

Producto: P = x1 · x2 · x3 · . . . · xn =n∏

i=1

xi

Analisis de algoritmos– p. 18

Serie aritmética

xi+1 − xi = d, donde d es constante

Sn =

n−1∑

i=0

(x1 + i · d) =n(x1 + xn)

2

Analisis de algoritmos– p. 19

Serie geométrica

xi+1 = xi · d

S =∞∑

i=0

dixi =x1

1− d

Sn =n

i=0

dixi =x1(1− dn+1)

1− d

Analisis de algoritmos– p. 20

Tarea en clase

Justificar las siguientes aproximaciones:

(

1− 1

x

)k≈ e−

k

x 1− x ≤ e−xxx

x!< ex

para |x| ≤ 1 : ex(1− x2) ≤ 1 + x ≤ ex

para k ≪ x : 1− kx≈ e−

k

x .

Analisis de algoritmos– p. 21

top related