Está en la página 1de 7

Métodos para solución de problemas con algoritmos

EXISTEN PROBLEMAS TIPO O CLASES DE PROBLEMAS GENÉRICOS:


- DAR EL CAMBIO, EL PROBLEMA DE LA MOCHILA, (OPTIMIZACIÓN)

Función de pesos lineal Si la función del peso de la mochila, f(P) es lineal, el problema de la
mochila con capacidad variable vendrá dado por el siguiente modelo de programación lineal con
variables {0,1}

Veamos que la solución del problema de la mochila con capacidad variable para el caso de que la
función f(P) es lineal tiene solución trivial. Podemos simplificar nuestro modelo sacando factor
común la variable x

Con esta expresión se puede comprobar que las soluciones optimas es incorporar a la mochila
aquellos productos, donde bi − λpi ≥ 0. Evidentemente la solución del problema depende del
parámetro λ. Veamos mediante un ejemplo como interviene λ en la solución. Suponiendo los
datos de b={1,2,4} y p= {2,3,5}, la función a maximizar será la siguiente
- EL PROBLEMA DEL VIAJANTE, EL PROBLEMA DE LAS N-REINAS

Analizar y diseñar sistemas de información. Utilizar eficazmente los lenguajes de


programación, responder eficazmente a nuevas situaciones informáticas, analizar
soluciones del entorno y problemas propios de ser tratados mediante sistemas
computacionales, aplicar los conocimientos en la práctica, desarrollar la habilidad análisis
y síntesis de información.
Ecuaciones de recurrencia, algoritmo voraz, divide y vencerás, programación dinámica, vuelta
atrás, ramifica y poda.

Una ecuación de recurrencia define una función sobre los números naturales, digamos T(n), en
términos de su propio valor con uno o más enteros menores que n. En otras palabras, T(n) se
define inductivamente, hay casos base que se definen aparte, y la ecuación de recurrencia sólo es
válida para n mayor que los casos base. Muchas funciones matemáticas enteroeresantes se
pueden definir con ecuaciones de recurrencia, como los conocidos números de Fibonacci.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34…

0, 1, 1, 2, 3, 5, 8, 13, 21, 34…


• EXISTEN TÉCNICAS O ALGORITMOS EFICIENTES PARA ABORDARLOS:
– DIVIDE Y VENCERÁS
Tanto el ordenamiento por mezcla como el ordenamiento rápido emplean un paradigma
algorítmico común que se basa en la recursividad. Este paradigma, divide y vencerás,
separa un problema en subproblemas que se parecen al problema original, de manera
recursiva resuelve los subproblemas y, por último, combina las soluciones de los
subproblemas para resolver el problema original.
Como divide y vencerás resuelve subproblemas de manera recursiva, cada su problema
debe ser más pequeño que el problema original, y debe haber un caso base para los
subproblemas. Debes pensar que los algoritmos de divide y vencerás tienen tres partes:
Divide el problema en un número de subproblemas que son instancias más pequeñas del
mismo problema.
Vence los subproblemas al resolverlos de manera recursiva. Si son los suficientemente
pequeños, resuelve los subproblemas como casos base.
Combina las soluciones de los subproblemas en la solución para el problema original.
Puedes recordar fácilmente los pasos para un algoritmo de divide y vencerás como divide,
conquista, combina. Aquí está cómo ver un paso, al suponer que cada paso de dividir crea
dos subproblemas (aunque algunos algoritmos de divide y vencerás crean más de dos).
Como divide y vencerás crea por lo menos dos subproblemas, un algoritmo de divide y
vencerás hace muchas llamadas recursivas.
– backtracking

– algoritmos voraces (greedy)

– programación dinámica

– BACKTRACKING
los algoritmos de «vuelta atrás» Backtracking. Se trata de una estrategia normalmente
recursiva para resolver problemas como los de los laberintos, la colocación de piezas y
similares, en los que mediante una búsqueda en profundidad se puede dar con la solución.
El nombre vuelta atrás (backtracking) viene del hecho de que en la búsqueda de la solución
se va volviendo a un punto anterior para probar alternativas. 
Imaginemos un laberinto al llegar a una encrucijada (1, 2, 3) se prueba con una dirección, si
con eso se llega a la solución, problema resuelto, si no, se vuelve atrás a la encrucijada
anterior y se prueba con otra, repitiendo el proceso cuantas veces sea necesario. (Si se
agotan todas las opciones y no se ha llegado, es que no existe solución: no hay salida)
Normalmente las combinaciones de este tipo de problemas son muchas, pero se aplican
ciertas restricciones, lo que suele hacer el total de opciones a probar algo computable en un
tiempo razonable. También se puede buscar revisar todas planteando obtener «una solución
mejor»; de este modo se puede llegar a la solución óptima.
Algunos ejemplos típicos en los que se puede aplicar este método son los laberintos,
el Sudoku entre otros.

– ALGORITMOS VORACES (GREEDY)

Construyen una solución de un problema de optimización paso a paso a través de una


secuencia de elecciones que son factibles localmente óptimas Irrevocables Para algunos
problemas, entregan una solución óptima para cada instancia, para la mayoría, no lo logran,
pero pueden ser útiles para encontrar aproximaciones rápidas.
Para poder resolver un problema usando el enfoque greedy, tendremos que considerar,
tendremos que considerar 6 elementos: elementos: 1. Conjunto de candidatos (elementos
seleccionables). 2. Solución parcial (candidatos seleccionados). 3. Función de selección
(determina el mejor candidato del conjunto de candidatos seleccionables). 4. Función de
factibilidad (determina si es posible completar la solución parcial para alcanzar una
solución del problema). 5. Criterio que define lo que es una solución (indica si la solución
parcial obtenida resuelve el problema). 6. Función objetivo (valor de la solución
alcanzada).
CARACTERIZACION Y ESQUEMA Este tema se dedica a presentar un esquema de resolución de
problemas denominado método Voraz, Greedy Method. Los algoritmos que se obtienen aplicando
este esquema se denominan, por extensión, algoritmos voraces. El esquema forma parte de una
familia de algoritmos mucho más amplia denominada ALGORITMOS DE BUSQUEDA LOCAL de la
que también forman parte, por ejemplo, el método del gradiente, los algoritmos Hill-Climbing, los
algoritmos genéticos o los Simúlate Annealing. Antes de ver propiamente el esquema de
resolución, comenzaremos por caracterizar de forma general las condiciones que deben cumplir
los problemas que son candidatos a ser resueltos usando un algoritmo voraz: − El problema a
resolver ha de ser de optimización y debe existir una función, la función objetivo, que es la que hay
que minimizar o maximizar. La siguiente función, que es lineal y multivariable, es una función
objetivo típica.

El propósito de un algoritmo voraz es encontrar una solución, es decir, una asociación de valores a
todas las variables tal que el valor de la función objetivo sea óptimo.
– PROGRAMACIÓN DINÁMICA
La programación dinámica es una técnica matemática que se utiliza para la solución de problemas
matemáticos seleccionados, en los cuales se toma una serie de decisiones en forma secuencial.
Proporciona un procedimiento sistemático para encontrar la combinación de decisiones que
maximice la efectividad total, al descomponer el problema en etapas, las que pueden ser
completadas por una o más formas (estados), y enlazando cada etapa a través de cálculos
recursivos.

La etapa es la parte del problema que posee un conjunto de alternativas mutuamente


excluyentes, de las cuales se seleccionará la mejor alternativa. Y el estado es el que refleja la
condición o estado de las restricciones que enlazan las etapas. Representa la “liga” entre etapas de
tal manera que cuando cada etapa se optimiza por separado la decisión resultante es
automáticamente factible para el problema completo.

La programación dinámica no cuenta con una formulación matemática estándar, sino que se trata
de un enfoque de tipo general para la solución de problemas, y las ecuaciones específicas que se
usan se deben desarrollar para que representen cada situación individual. Comúnmente resuelve
el problema por etapas, en donde cada etapa interviene exactamente una variable de
optimización (u optimizadora). La teoría unificadora fundamental de la programación dinámica es
el Principio de Optimalizad, que nos indica básicamente como se puede resolver un problema
adecuadamente descompuesto en etapas utilizando cálculos recursivos. “Una política óptima
tiene la propiedad de que, independientemente de las decisiones tomadas para llegar a un estado
particular, en una etapa particular, las decisiones restantes deben constituir una política óptima
para abandonar ese estado”.
SISTEMA DE CAMINOS Y LOS COSTOS DEL PROBLEMA DE LA DILIGENCIA

https://www.ingenieria.unam.mx/sistemas/PDF/Avisos/Seminarios/SeminarioV/Sesion6_Id
aliaFlores_20abr15.pdf
https://elvex.ugr.es/decsai/algorithms/slides/4%20Greedy.pdf
https://es.khanacademy.org/computing/computer-science/algorithms/merge-sort/a/divide-
and-conquer-algorithms

También podría gustarte