I. Semana 10 - HazelMartinez/Portafolio- GitHub Wiki


24/09/2019


Diseño

-> Un plan o dibujo producido para mostrar las funciones de un objeto antes de usar.

-> Algunas técnicas comunes -> Backtracking. -> Divide y venceras. -> Algortimos geneticos. -> Algortimos probabilisticos. -> Algoritmos voraces.

->Dividir en subproblemas.

->Resolver subproblemas.

->Combinamos para dar una solución al problema original.

Cuando un subproblema es muy pequeño y no se puede dividir más se vuelve recursivo.

Debe existir la posibilidad de aplicar recursividad.

Ej. Busqueda binaria. Merge sort -> Se divide hasta tener los casos base.

Otra Técnica Forma metodica de probar varias soluciones *Utilizado en prolog. *Se pueden ver las posibles soluciones como un árbol. *Tengo un problema y el espacio de problema está compuesto de nodos y acciones. *Si un nodo no es parte de la solucion me devuelvo.

Ej. Algortimo de las 8 reinas.

Se realizan dinamicas de actuacion para representar Merge sort y divide y venceras


26/09/2019


Tecnica de programaciòn dinamica

Es una mètodo para resolver optimizcion de problemas de division de subrpoblemas, despues de resolver subproblemas doy la solucion a problemas màs grandes.

Richard E. Bellman, invento la programaciòn dinamica.

Caracteristicas

Debe existir una substrucutra optima:

La solucion es dada debudo a la soluciòn de subproblemas.

Diferencia a divide y venceras:

En programciòn dinamica. Debo resolver el mismo problema varias veces. Todos los problemas son distintos en divide y venceras. Tengo un enfoque de arriba hacia abajo El resolver un caso base me ayuda a solucionar otros, Programaciòn dinamica. Solucionar un subproblema me ayuda a solucionar otros.

Ejemplo Fibonacci.

Cada solucion de un subrpoblema permite la soluciòn de otros.

Overlapping: Si quiero calcular el fibnacci de 10 tengo que calcular el fibonacci de 7. Buscamos casos donde los subproblemas se repitan.

Memorizacion

La parte de la memorizacion es la diferencia entre divide y venceras, almaceno en una tabla algo que ya calcule.

Ejemplo 1.Encontrar la cadena que se encuentra mas larga en una palabra. 2.Algoritmo de mochila ->tarea moral Se puede resolver tambien con algoritmos geneticos.

Algoritmos voraces

Un algoritmo voraz toma la mejor decision con la informacion que tiene en cada momento.La idea es que se tome la solución optima. Podría no encontrar la informacion optima, pero se sacrifica decision por rendimiento. Respuesta en un menor tiempo. Son rapidos pero no precisos, me dan una respuesta cerca d ela mejor.

Algoritmo Dijkstra

Encontrar la ruta mas corta de un nodo a cualquiera de los otros. Se recorre el algoritmo segun el número de nodos que tengo. Debe tener: Un conjunto de candidatos Una funcion de seleccion, elegir el mejor candidato para llegar a la posible solucion global Evaluar si los candidatos que estoy seleccionando se van a aquedar o no. Debería tener una funcion objetiva, para llegar a la solución parcial. Para ver que tan buena es para llegar a la solución global para determinar que tan buena fue a la optima.

Algortimo del cajero automatico

Algortimos probabilisticos

Es preferible tomar una decision con un factor de Random, cuando encontrar la solucion optima requiere mucho tiempo y muchos recursos. Siempre que tenga el mismo input es probable que optenga resultados diferentes. El tiempo e ejecucion y resultados van a depender de cuanto tiempo lo este ejecuntado. Comparado con los algoritmos deterministicos, los probabilisticos puede fallar o nunca termine de ejecutarse. Encuentra diferentes posibles soluciones para el mismo input. ¿Por que puede ser que si es deterministico puede dar un fallo? Por un fallo en el hardware. Existen 3 categorias de algortimos probabilisticos 1.Algoritmos numericos. 99% de acertacion 2.Algoritmos de las vegas Toma las decisiones basadas en el random. 3. Algoritmo de monte carlo Calcula la correcta solucion con un alto grado de probabilidad. El tiempo mas largo de ejecucion da una mayor probabilidad de acertacion

Diferencia de un web aplicacion y un web page.

Web page un documento que se puede acceder a traves de un world wide web. Tenemos la pagina en el servidor, el va a el servidor de la pagina y envia la informacion de la pagina. Interpreta el codigo que pasa al servidor para interpretarlo en pantalla.

Pagina dinamica, secciones dentro de ella que cambian de alguna base de datos.

Web aplicacion: Software que voy a correr desde el buscador.

E sta compuesta de capas

Presentación

Negocios

Datos

Componentes necesario:

Browser

DB Server

Application server.

Web server embebido.

Elegir diferentes tecnologias para cada componente.

La idea es disminuir el trabajo, se utiliza AJAX para mejorar la experiencia de usuario.

AJAX permite tener secciones paginas en el background.

AngularJS es del lado del cliente.