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

miércoles, 14 de marzo de 2018

martes, 13 de marzo de 2018

Desarrollo de la Ingeniería en Colombia


Linea de Tiempo desarrrollo contesto político y social

Aqui dejare una síntesis de los apuntes tomados en Desarrollo de la ingeniería en Colombia. Linea de tiempo usando TimeLine.Js Se nos olvido como somos . No sabemos qué queremos ser. Tenemos los mejores jugadores pero no sabemos que queremos hacer El futuro es consecuencia de lo que fuimos. “Los ricos se creen ingleses, la clase media se cree gringa y los pobres se creen mexicanos. En el país no hay colombianos”. Jaime Garzón En el los pueblos y fuera de la ciudad esta lo que realmente somos ,(Hay que conocernos ) Como se identifica Definirnos como mestizos es una alternativa válida para definir lo que realmente somos pero no es la única.Dado que más que lazos genéticos que compartimos con los europeos, nativos y africanos hemos heredado modos de costumbre y de vida, esto debido en gran parte a la globalización. La adopción de definirse como mestizo conllevaría el desarrollo de una identidad propia que incentivaría el desarrollo en distintos campos basado en los recursos y necesidades propias del país. Este desarrollo no implicaría necesariamente el aislamiento frente a las demás culturas y sus nuevas tecnologías, sino por el contrario afirmaríamos que somos ciudadanos del mundo .Como tal estamos dispuestos a intercambiar conocimientos y a su vez resolver nuestras necesidades de la mejor manera, consolidando así lo que realmente somos.

lunes, 5 de marzo de 2018

lunes, 29 de enero de 2018

Haz de tu SmartPhone tu asistente personal


Android es una de las plataformas mas extendidas en dispositivos móviles hoy en día

El titulo solo es para que aquellos que usan IOs ó Windows Phone no se hagan ilusiones en este post (This no is for you).

Aunque ya son indispensable sen nuestra vida no podemos tenerlosen nuestras manos  en todo momento es por esto que no nos vendría mal un asistente mediante voz y que realice varias acciones tras diferentes tipos de disparadores (Triggers).
Para iniciar nos debemos aliar y aceptar el hecho de que el tío Google administre nuestros datos,y es que no podemos hoy día negarnos a hacerlo es simple “No seas malvado” (Don't be evil) ; y es que si tienes un android debes tener al menos una cuenta de correo con ellos y cientos de servicios Web.Bueno otro día hablaremos de estos servicios ahora bien empecemos, si se preguntan si las Apps que voy a mostrar son de pago pues diría que deberían pagarlas pues sus servicios valen la pena aunque la mayoría en versiones básicas son Free. 

Bueno iniciaremos con el Calendario de Google, debemos tener presente que en es donde reposan nuestros eventos día a día, no es necesario que coloquemos cada cosa día a día manualmente si no los eventos que necesitamos comunmente como si  estamos en la escuela o en la universidad es posible programar nuestro horario para todo el año o semestre según lo deseemos.Algunos aficionados por los servicios de Google ya lo usaran pero lo recomiendo pues nos facilitara gran cantidad de tareas. 

Les recomiendo que llenemos lo mejor posible estos eventos con sus horas exactas y ademas su ubicación de ser posible conseguida a través de Google Maps.



Ahora lo que de verdad es interesante crearemos un botón en la pantalla para que al presionarlo nos lea estos evento pero Primero es Instalarnos Automate, esta aplicación nos permitirá a través de disparadores crear todo tipo de acciones.

Con el fin de facilitarles la tarea publicare algunos de estos flujos que pueden ser descargados de manera gratuitos e instalados