Victoria López
@victoriademates
www.tecnologiaUCM.es
Universidad Complutense de Madrid
4a
2
4a
3
4a
4
5
6
7
8
9
10
Almacenaje
DataWarehouse
Transformación
ETL
Consulta
Reporting, etc.
12
13
14
http://www.tylervigen.com/
15
http://www.tylervigen.com/
16
http://www.tylervigen.com/
17
18
19
20
21
No sólo para informar sino también para condicionar el comportamiento del cliente
22
23
24
25
26
27
28
Tony Hoare, Doctor
Honoris Causa por la
Universidad
Complutense de
Madrid, 2013
La idea:
dividir escogiendo un ‘pivote’,
poner los pequeños a un lado y los grandes al
otro lado del pivote
Creado por Tony Hoare en 1961 cuando era
solo un estudiante
Caso Base: Si la longitud de la lista es 0 ó 1, entonces
ya está ordenada.
Caso General:
1. Seleccionar un pivote (el último elemento) y
colocarlo en su sitio definitivo de forma que los
menores queden antes y los mayores después
aunque desordenados.
2. Llamar recursivamente con input la
sublista anterior y la posterior aplicando el
mismo procedimiento
3. No hace falta mezclar porque las dos sub-listas
ya estarán ordenadas y serán contiguas.
Procedimiento ‘divide’ de Quick-Sort:
6 – 13 – 5 – 1 – 0 – 9 – 15 – 8 – 2 – 7
6 – 13 – 5 – 1 – 0 – 9 – 15 – 8 – 2 – 7
6 – 13 – 5 – 1 – 0 – 9 – 15 – 8 – 2 - 7
6 – 13 – 5 – 1 – 0 – 9 – 15 – 2 – 7 – 8
6 – 13 – 5 – 1 – 0 – 9 – 2 – 7 – 8 – 15
6 – 13 – 5 – 1 – 0 – 2 – 7 – 9 – 8 – 15
6 – 13 – 5 – 1 – 0 – 2 – 7 – 9 – 8 – 15
6 – 13 – 5 – 1 – 0 – 2 – 7 – 9 – 8 – 15
6 – 13 – 5 – 1 – 0 – 2 – 7 – 9 – 8 – 15
6 – 5 – 1 – 0 – 2 – 7 – 13 – 9 – 8 – 15
6 – 5 – 1 – 0 – 2 – 7 – 13 – 9 – 8 – 15
6 – 5 – 1 – 0 – 2 – 7 – 13 – 9 – 8 – 15
Completidad de ‘divide’ o(n)
Complejidad de Quick-Sort
o(nlogn)
Reflexión:
Cómo paralelizar un algoritmo óptimo de ordenación
Diferencias entre Merge-Sort y Quick-Sort
Función factorial
Alternativa iterativa:
Int Factorial (int n)
int f=1;
{
For (i=1; i<=n; i++) {f=f*i}
Return f
}
--Varias instrucciones
--Variables auxiliares
--Más código, menos fiable
Alternativa recursiva 1:
Int Factorial (int n)
{
If n=0 return 1
Else return n*Factorial(n-1)
}
-- Una única instrucción
--No existen variables
locales
--Menos código, más fiable
Alternativa recursiva 2:
Int Factorial (int n, m)
{
If n=0 return m
Else return Factorial(n-1, n*m)
}
-- Programación Funcional
Final
--No deja calculos pendientes
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Ejemplo iterativo
47
48
Resolviendo por recurrencias se obtiene 4n+2,
 complejidad lineal
49
La sucesión de Fibonacci es la sucesión de números que, empezando por la unidad, cada
uno de sus términos es la suma de los dos anteriores (1,1,2,3,5,8,13,…).
La distribución de las hojas alrededor del tallo,
La reproducción de los conejos.
La disposición de las semillas en numerosas flores y frutos
¿Se trata de una simple casualidad, o existe alguna especie de “plan oculto” que vincula las
matemáticas con la naturaleza?
El cociente de dos números consecutivos de la serie se aproxima a la denominada “razón
dorada”, “sección áurea” o “divina proporción”. Este número, descubierto por los
renacentistas
(1+ raíz de 5)/2 = 1.61803…
50
51
52
53
Los brazos en espiral de las galaxias también se acomodan según los números
de Fibonacci.
Es sorprendente la relación que existe entre la matemática y la naturaleza.
54
55
56
Complejidad O(n)
57
Complejidad O(logn)
58
59
Victoria López
@victoriademates
www.tecnologiaUCM.es
Universidad Complutense de Madrid

Big data systems and analytics

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
    21 No sólo parainformar sino también para condicionar el comportamiento del cliente
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
    28 Tony Hoare, Doctor HonorisCausa por la Universidad Complutense de Madrid, 2013 La idea: dividir escogiendo un ‘pivote’, poner los pequeños a un lado y los grandes al otro lado del pivote Creado por Tony Hoare en 1961 cuando era solo un estudiante
  • 29.
    Caso Base: Sila longitud de la lista es 0 ó 1, entonces ya está ordenada. Caso General: 1. Seleccionar un pivote (el último elemento) y colocarlo en su sitio definitivo de forma que los menores queden antes y los mayores después aunque desordenados. 2. Llamar recursivamente con input la sublista anterior y la posterior aplicando el mismo procedimiento 3. No hace falta mezclar porque las dos sub-listas ya estarán ordenadas y serán contiguas.
  • 30.
    Procedimiento ‘divide’ deQuick-Sort: 6 – 13 – 5 – 1 – 0 – 9 – 15 – 8 – 2 – 7 6 – 13 – 5 – 1 – 0 – 9 – 15 – 8 – 2 – 7 6 – 13 – 5 – 1 – 0 – 9 – 15 – 8 – 2 - 7 6 – 13 – 5 – 1 – 0 – 9 – 15 – 2 – 7 – 8 6 – 13 – 5 – 1 – 0 – 9 – 2 – 7 – 8 – 15 6 – 13 – 5 – 1 – 0 – 2 – 7 – 9 – 8 – 15 6 – 13 – 5 – 1 – 0 – 2 – 7 – 9 – 8 – 15 6 – 13 – 5 – 1 – 0 – 2 – 7 – 9 – 8 – 15 6 – 13 – 5 – 1 – 0 – 2 – 7 – 9 – 8 – 15 6 – 5 – 1 – 0 – 2 – 7 – 13 – 9 – 8 – 15 6 – 5 – 1 – 0 – 2 – 7 – 13 – 9 – 8 – 15 6 – 5 – 1 – 0 – 2 – 7 – 13 – 9 – 8 – 15 Completidad de ‘divide’ o(n) Complejidad de Quick-Sort o(nlogn)
  • 31.
    Reflexión: Cómo paralelizar unalgoritmo óptimo de ordenación Diferencias entre Merge-Sort y Quick-Sort
  • 32.
    Función factorial Alternativa iterativa: IntFactorial (int n) int f=1; { For (i=1; i<=n; i++) {f=f*i} Return f } --Varias instrucciones --Variables auxiliares --Más código, menos fiable Alternativa recursiva 1: Int Factorial (int n) { If n=0 return 1 Else return n*Factorial(n-1) } -- Una única instrucción --No existen variables locales --Menos código, más fiable Alternativa recursiva 2: Int Factorial (int n, m) { If n=0 return m Else return Factorial(n-1, n*m) } -- Programación Funcional Final --No deja calculos pendientes
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
    Resolviendo por recurrenciasse obtiene 4n+2,  complejidad lineal 49
  • 50.
    La sucesión deFibonacci es la sucesión de números que, empezando por la unidad, cada uno de sus términos es la suma de los dos anteriores (1,1,2,3,5,8,13,…). La distribución de las hojas alrededor del tallo, La reproducción de los conejos. La disposición de las semillas en numerosas flores y frutos ¿Se trata de una simple casualidad, o existe alguna especie de “plan oculto” que vincula las matemáticas con la naturaleza? El cociente de dos números consecutivos de la serie se aproxima a la denominada “razón dorada”, “sección áurea” o “divina proporción”. Este número, descubierto por los renacentistas (1+ raíz de 5)/2 = 1.61803… 50
  • 51.
  • 52.
  • 53.
  • 54.
    Los brazos enespiral de las galaxias también se acomodan según los números de Fibonacci. Es sorprendente la relación que existe entre la matemática y la naturaleza. 54
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.