2018

viernes, 14 de diciembre de 2018

Hojas de Vida Inmediatas


Llenar hojas de vida nunca a sido tan simple



Este proyecto tiene como objetivo rellenar automáticamente hojas de vida de los usuarios de plataformas de Google mediante la obtención de datos de la cuenta e incluso de la consulta de datos abiertos mediante Google apps Script y otros servicios.

Inicialmente el proyecto esta en fase Ultra Beta donde se esta buscando la mejor manera de realizar dicha implementación por lo tanto se estara usando un modelo de hoja de vida  muy conocido en colombia llamado hoja de vida SIGEP que usualmente piden las entidades del estado.

El objetivo se abordara mediante una fase beta que recolectara datos mediante formularios y llenara las hojas de vida.

En una fase posterior se tomaran datos de la cuenta y se rellenara la hoja de vida.

Finalmente se implementara la consulta a bases de datos externas  para la obtención de los datos restantes


viernes, 27 de julio de 2018

El Rank de Google


Google Público en sus inicios lo que estaba haciendo en el siguiente documento para algunos no fue de mucha importancia esta publicación. Pero hoy día esta dicta las directrices que se deben seguir para pertenecer al mundo de la WWW searcheable.

Este post solo busca recordar ese documento. El 14 de marzo de 2019 estábamos posicionados al escribir Mialcosoft en Google de 4 lugar algo que tiene mucho valor monetario para una empresa.

domingo, 8 de julio de 2018

Para que tener programas instalados en tu PC


Todo esta en la Web hoy dia asi que con solo tener un navegador web y sentirte como si estuvieras en casa justo en tu pc muchos de estos programas serviran solo para los programadores pero la gran mayoría son grandemente usados la idea de este post es que te puedas desacer de la cantidad de programas que tienes instalados localmente y vivir en la internet aunque esto lleva unos riesgos que cada uno debe asumir ire actualizando la lista segun vaya probando nuevos servicios y reemplazando aquellos que considere que me iria mejor usar


Si somos usuarios de Linux o windows podemos simplemente crear accesos directos en nuestro escritorio o en nuestro lanzador para iniciar y usar aplicaciones de que estén directamente en la web sin necesidad de instalar nada.

miércoles, 6 de junio de 2018

Taller 1 Algoritmos


Untitled

Taller 1

Miller Alexander Correa G

Punto 1

    • Show that for any real constants a and b, where b>0
      (n+a)b=Θ(nb)(n + a)^b = \Theta (n^b)
      Solution :
      Siendo c=2bc = 2^b y n02an_0 \geq 2a Entonces para todo nn0n \geq n_0 .Se tiene que (n+a)b(2n)b=cnb(n +a)^b \leq (2n)^b = cn^b y por lo tanto (n+a)b=O(nb)(n+a)^b = \mathcal{O}(n^b)
      Ahora sea n0a1(1/2)1/bn_{0} \geq \frac{-a}{ 1- (1/2)^{1/b} } y c=1/2c= 1/2
      Entonces nn0a1(1/2)1/bn \geq n_0 \geq \frac{-a}{1-(1/2)^{1/b}}
      Si nn21/ban - \frac{n}{2^{1/b}} \geq -a
      Si n+a(12)a/bnn + a \geq ( \frac{1}{2} )^{a/b} n
      Si (n+a)bcnb(n + a)^b \geq cn^b
      Por lo tanto (n+a)b=Ω(nb)(n + a)^b = \Omega(n^b)
      By Theorem 3.1 (n+a)b=O(nb)(n + a)^b = \mathcal{O}(n^b)
    • Prove that o(g(n))o(g(n))ω(g(n))ω(g(n)) is the empty set. Podemos definir formalmente o(g(n))o(g(n)) y ω(g(n))ω(g(n)) de la siguiente manera:
      Solution
      Por definición o(g(n)) = {f(n) : ∀c, n tal que 0≤f(n) ≤ cg(n), ∀n } 0 > n0 2.
      Por definición ω(g(n)) = {f(n) : ∀c, n tal que 0≤cg(n) ≤ f(n), ∀n }
      Podemos entonces definir o(g(n))o(g(n))ω(g(n))\omega (g(n)) como:
      o(g(n))o(g(n)) y ω(g(n))\omega (g(n)) = f(n):c,n0cg(n)f(n)cg(n)n>n0{f(n): ∀_c,n_0 \geq cg(n) \geq f(n) \geq cg(n) ∀_n > n_0}
      Esta desigualdad no se cumple para ninguna función f(n)f (n) por lo tanto la intersección de o(g(n))yω(g(n))o(g(n)) y ω(g(n)) debe ser el conjunto vacío.
    • Rank the following functions by order of growth; that is,and an arrangement g1, g2, …. , g30 of the functions satisfying g1 = Ω(g2), g2 = Ω(g3), … , g29 = Ω(g30) .Partition your list into equivalence classes such that functions f(n) and g(n) are in the same class if and only if f(n) = Θ(g(n)) .
      enter image description here

Solution:

Index Equation
1 22n+12^{2^{n+1}}
2 22n2^{2^{n}}
3 (n+1)!(n+1)!
4 n!n!
5 n2nn2^n
6 ene^{n}
7 2n2^n
8 (32)n(\frac{3}{2})^n
9 (lg(n))!(lg(n))!
10 nlg(lg(n))n^{lg(lg(n))} lg(n)lg(n)lg(n)^{lg(n)}
11 n3n^3
12 n2n^2 4lg(n)4^{lg(n)}
13 (lg(n))(lg(n)) lg(n!)lg(n!)
14 2lgn2^{lg{n}} nn
15 (2)lg(n)\sqrt(2)^{lg(n)}
16 KaTeX parse error: Expected '}', got '\srqt' at position 4: 2^{\̲s̲r̲q̲t̲(2lg(n))}
17 lg2(n)lg^{2}(n)
18 ln(n)ln(n)
19 (lg(n))\sqrt(lg(n))
20 ln(ln(n))ln(ln(n))
21 2lg(n)2^{lg(n)}
22 lg(n)lg(n) lg(lg(n))lg(lg(n))
23 lg(lg(n))lg(lg(n))
24 11 n1/lg(n)n^{1/lg(n)}
  • ​Give an example of a single nonnegative function f(n) such that for all functions gi (n) in part (a), f(n) is neither O(gi (n)) nor Ω(gi (n)) .
    Solution
    Si definimos la función
    f(n){g1(n)!nmod2=01nnmod2=1 f(n)\left\{\begin{matrix} g_1(n)! & n & mod 2=0 \\ \frac{1}{n}& n & mod 2 = 1 \end{matrix}\right.
    Teniendo en cuenta que f(n)f(n) es asintóticamente positiva. Para nn par tenemos:
    limnf(2n)gi(2n)limnf(2n)gi(2n) \lim_{n \to \infty} \frac{f(2n)}{g_i({2n)}}\geq \lim_{n \to \infty} \frac{f(2n)}{g_i({2n)}}
    limn(g1(2n)1)! \lim_{n \to \infty} (g_1(2n)-1)!
    = = \infty
    Para nn impar tenemos
    KaTeX parse error: Expected 'EOF', got '}' at position 95: …rac{f(2n+1)}{1}}̲
    limn12n+1 \lim_{n \to \infty} \frac{1}{2n +1}
    =0 = 0

​Draw the recursion tree for T(n)=4T([n/2])+cnT(n) = 4T([n/2]) + cn, where c is a constant, and provide a tight asymptotic bound on its solution. Verify your bound by the substitution method.

Solution
enter image description here

Se incrementa el número de subproblemas por cada recursión en 4. Se disminuye el tamaño del subproblema en 2 más 2 adicionales. De esa manera, en cada nivel del árbol hay 4i nodos cada uno de coste c(n/2+2) a una profundidad i, que sigue la secuencia i = 0,1,2,…,lgn.
Costo total tree
t(n)=i=0lgn4ic(n2i+2) t(n)=\displaystyle \sum_{i=0}^{lgn} 4^i c\left( \frac{n}{2^i} + 2 \right)
=i=0lg(n)4icn4i+i=0lg(n)4ic2 =\displaystyle \sum_{i=0}^{lg(n)} 4^i c \frac{n}{4^i}+ \sum_{i=0}^{lg(n)} 4^i c2
=cni=0lg(n)4i2i+2ci=0lg(n)4i =cn\sum_{i=0}^{lg(n)} \frac{4^i}{2^i} + 2c\sum_{i=0}^{lg(n)}4^i
=cni=0lg(n)2i+2ci=0lg(n)4i =cn\sum_{i=0}^{lg(n)} 2^i + 2c\sum_{i=0}^{lg(n)}4^i
=cn2lgn+1121+2c4lg(n)+1141 =cn\frac{2^{lgn+1-1}}{2-1} +2c\frac{4^{lg(n)+1}-1}{4-1}
=cn(2lg(n)+11)+2c2c3(4lgn+11) =cn(2^{lg(n)+1}-1)+2c\frac{2c}{3}(4^{lgn+1}-1)
=cn(2n1)+2c3(4n21) =cn(2n-1)+\frac{2c}{3}(4n^2-1)
=2cn22n+8cn232c3 =2cn^2-2n+\frac{8cn^2}{3}-\frac{2c}{3}
=O(n2) = \mathcal{O}(n^2)
Se puede validar también a través del método de sustitución.
T(n)=4T(n/2+2)+nT(n)=4T(n/2+2)+n
4d(n/2+2)2b(n/2+2)+n\leq 4d(n/2+2)^2-b(n/2+2)+n
=4d(n2/4+2n+4bn/22b)+n=4d(n^2/4+2n+4-bn/2-2b)+n
=dn2+8dn+16d2dbn8db+n=dn^2+8dn+16d-2dbn-8db+n
dn2dbn+8dn+16ndbn8db+ndn^2-dbn+8dn+16n-dbn-8db+n
d(n2bn)(db8d1)n(b2)8dd(n^2-bn)-(db-8d-1)n-(b-2)8d
d(n2bn)\leq d(n^2-bn)
Es igual para db18d0db-1-8d\geq0

  • Usar el método maestro para dar cotas ajustadas para las siguientes recurrencias:
    • T(n)=8T(n2)+nT(n) = 8T(\frac{n}{2})+n
    • T(n)=8T(n2)+n3T(n)=8T(\frac{n}{2})+n^3
    • T(n)=8T(n2)+n5T(n)=8T(\frac{n}{2})+n^5
      En estos problemas se puede ver que a=8,b=2yf(n)=n,n2,n3a=8,b=2 y f(n)=n,n^2,n^3 respectivamente. Se compara f(n)f(n) con nn . Las recurrencias es cada una de un caso diferente del logab=nlog82log ab = n log 82 teorema maestro

Por lo tanto:

  • T(n)=8T(n2)+nT(n) = 8T(\frac{n}{2}) + n
    • nlog28=n3=θ(n3)n^{log_28}=n^3 = \theta(n^3),la función f(n)f(n) tiene una cota θ(nlogb(a)e)\theta(n^{log_b(a)-e}) con e=2e=2
      Por lo tanto T(n)=O(n3)T(n)= O(n^3)
  • T(n)=8T(n2)+n3T(n) = 8T(\frac{n}{2}) + n^3
    • nlog28=n3=θ(n3)n^{log_28}=n^3=\theta(n^3),la función f(n)f(n) tiene una cota θ(nlogba)\theta(n^{log_ba})
      Por lo tanto T(n)=O(n3log(n))T(n)= O(n^3log(n))
  • T(n)=8T(n2)+n5T(n) = 8T(\frac{n}{2}) + n^5
    • nlog28=n3=θ(n3)n^{log_28}=n^3=\theta(n^3),la función f(n)f(n) tiene una cota θ(nlogb(a)+e)\theta(n^{log_b(a)+e}) con e=2e=2
      por lo tanto T(n)=θ(n5)T(n) = \theta(n^5)

Punto 2

def misterio(n):
 if n <= 1:
  return 1 
 else:
  r = misterio(n / 2)
  i = 1
  while n > i*i:
   i = i + 1 
  r = r + misterio(n / 2) 
  return r

Plantee una ecuación de recurrencia para T (n), el tiempo que toma la función misterio(n).
T(n)=2T(n/2)+Θ(n1/2)T(n)=2T(n/2)+Θ(n^{1/2} )
Dibuje el árbol de recursión y calcule:
i. La altura del mismo log2(n)log_2(n)
ii. El número de nodos por cada nivel 2log2(n)2^{log_2(n)}
iii. La suma de los nodos de cada nivel 2ik(n2i12)2^ik(\frac{n}{2^i}^{\frac{1}{2}})
iv. . La suma total Θ(n)Θ(n)

enter image description here

  • Determine el comportamiento asintótico de T(n)T (n) justificándolo de manera detallada
  • Por el método maestro podemos estudiar el comportamiento asintótico de la función de recurrencia T(n)T(n):
    Donde es de la forma O(n)O(n) con ϵO(n)=0.5\epsilon O(n) = 0.5
    por lo tanto T(n)=θ(n)T(n)= \theta (n)

Punto 3

22.3-1 ​(pág 610) Realizar un cuadro 3x3 con filas y columnas WHITE, GRAY, BLACK. En cada celda (𝑖,𝑗), indique si en algún momento durante la búsqueda en la profundidad de un grafo dirigido, puede haber una arista o un vértice de color i a un vértice de color j. Por cada arista posible indique que tipo puede ser. Haga otro cuadro pero utilizando un grado no dirigido

**Solution **
Grafo dirigido

White Gray Black
white Alkinds Back,Cross Tree, Forward y Croos
Gray Back,Cross Tree, Forward y Croos Tree, Forward y Croos
Black Back,Cross Back,Cross Alkinds

Grafo NO Dirigido

White Gray Black
white Alkinds - -
Gray Alkinds Tree, Forward y Back -
Black Alkinds Alkinds Alkinds

Punto 4

22.3-2​ (Pág 611) Muestre como DFS funciona en el grafo de la figura 22.6. Asuma que el ciclo for de la línea 5-7 del DFS considera los vértices en orden alfabético, y asuma que cada lista de adyacencia está ordenada alfabéticamente. Muestre el descubrimiento y los tiempos de cada vértice y muestre la clasificación de cada arista.
- Forward edges: (q,w).
- Back edges: (z,x), (w,s), (y,q).
- Tree edges: (q,s),(s,v),(v,w),(q,t),(t,x),(x,z),(t,y),(r,u).
- Cross edges: (u,y),(r,y)

Punto 5

22.4-2​ Dé un algoritmo de tiempo lineal que tome como input un grado dirigido acíclico 𝐺 = (𝑉, 𝐸) y dos vértices s y t, y retorna el número de caminos simples de s a t en G. Añada un campo a la representación de vértices para mantener un número entero. Inicialmente, establece la cuenta del vértice t en 1 y la de otros vértices en 0. Comienza ejecutando DFS con s como vértice de inicio. Cuando se descubre t, debe marcarse inmediatamente como terminado (NEGRO), sin ningún otro tratamiento a partir de él. Posteriormente, cada vez que DFS finaliza un vértice v, establece el conteo de v como la suma de los conteos de todos los vértices adyacentes a v. Cuando DFS finalice el vértice s, deténgase y devuelva el conteo calculado para s.

def SIMPLE-PATHS(u,v):
 if u == v:
     return 1
elif  u.paths == None:
 return u.paths
else
 for w in adj[u]:
  paths.append(SIMPLE-PATHS(w,v))
 return u.paths