martes, 27 de septiembre de 2011

Delbert Ray Fulkerson

DELBERT RAY FULKERSON


Delbert Ray Fulkerson nació el 14 de agosto de 1924 y falleció el 10 de enero de 1976. Fue un matemático estadounidense que desarrolló como co-autor, y junto con Lester Randolph Ford Jr., el Algoritmo de Ford-Fulkerson, uno de los algoritmos más utilizados para computar el flujo máximo en una red de flujo.

Fulkerson recibió su Ph. D. en la Universidad de Wisconsin-Madison en 1951. En 1956, su importante artículo científico fue publicado.
 Desde 1979, la Sociedad de Programación Matemática (MPS) y la American Mathematical Society (AMS) otorgan cada tres años el Premio Fulkerson, para aquellos matemáticos que hayan creado artículos importantes en el área de la matemática discreta.

Referencias

http://es.wikipedia.org/wiki/Delbert_Ray_Fulkerson

Lester Randolph Ford Jr.

LESTER RANDOLPH FORD JR.


Lester Randolph Ford, Jr. nació el  23 de septiembre 1927 en Houston es un americano especializado en el flujo de red de problemas. Él es el hijo del matemático Lester R. Ford,  Sr .

 Es uno de los pioneros en el campo de la programación de flujos en grafos. 
L. R. Ford Sr es elogiado por su ejemplar trabajo en matemáticas al inventar una interpretación geométrica absolutamente maravillosa de la serie de Farey. Tal fue su contribución a las matemáticas, que en 1964 se estableció el Lester R. Ford Award para reconocer la contribución a las matemáticas de excelentes autores matemáticos publicados en The American Mathematical Monthly o Mathematics Magazine. Ford Sr. y Ford Jr. son co-autores de Automorphic Functions cuál fue publicado cerca por McGraw-Hill en 1963.

Mientras trabajó en RAND CORPORATION, Ford Jr publicó numerosos artículos que no solo establecieron la base de los flujos de red sino también la futura investigación en este campo. En 1962 Priceton University Press publicó su libro Flow in Networks con D. R. Fulkerson como co-autor. Este libro contiene todo su trabajo sobre redes.
Junto con Richard E. Bellman desarrollaron el algoritmo de 'corrección de etiquetas' que calcula el camino más corto en un digrafo ponderado (donde incluso y a diferencia de Dijkstra, los pesos de los arcos pueden ser negativos).
La mayoría del trabajo de Ford lo hizo en la colaboración con Fulkerson, al parecer los dos hacían una buena asociación. Sin embargo, en 1956 presentó varios artículos firmados por él sólo. Ha sido el autor de diversos algoritmos que se han refinado con los años y que todavía se utilizan para solucionar la mayoría de problemas de grafos.



sábado, 24 de septiembre de 2011

Robert W. Floyd

ROBERT W. FLOYD


Robert W. Floyd, Profesor Emérito de Ciencias de la Computación y un
de los grandes pioneros de todos los tiempos en ese campo, nació en Nueva York el 8 de junio de 1936, murió el 25 de septiembre de 2001 después de un largo enfermedad. Tenía 65 años de edad.

 Un niño prodigio, había leído todos los libros que pudiera tener en sus manos. Su maestra de primer grado lo utilizan para enseñar fracciones a los niños mayores, en el sur de la escuela pequeña donde comenzó su educación. 
Él recibió una beca para entrar en la Universidad de Chicago a los 15 años, en un
programa experimental para niños superdotados, y recibió una licenciatura en
1953 a los 17 años

Al igual que casi cualquier otro niño que ha estado en estos programas de aceleración, pronto perdió su gusto por la escuela y continuó sus estudios a tiempo parcial solamente. Mientras tanto, consiguió un trabajo en la Fundación Armour Research de Illinois Institute of Technology, en primer lugar como operador de equipo autodidacta y luego como programador y analista. Él obtuvo una licenciatura en Física por la Universidad de Chicago en 1958, y publicó un documento de sesión sobre la interferencia de radio de ese mismo año. Pero pronto quedó claro que la informática era su amor principal. De hecho, él comenzó a publicar artículos en las revistas de informática en 1959, y su primer papel importante, `` Un lenguaje descriptivo para la manipulación de símbolos'', introdujo un concepto importante que se conoce producciones como `` Floyd''.
En 1962 se convirtió en un científico principal de proyecto en Computer Associates en Massachusetts, una empresa de software especializada en principios de la creación de programas llamados compiladores
Se unió a la facultad de Carnegie Institute of Technology como Asociado
Profesor en 1965. Ciencias de la Computación es un tema nuevo en aquellos días, y desempeñado un papel importante en el desarrollo del plan de estudios. 

Sus contribuciones incluyen el diseño del algoritmo de Floyd-Warshall (independientemente de Stephen Warshall), que se encuentra de manera eficiente todos los caminos más cortos en un gráfico , el ciclo de investigación de Floyd algoritmo para detectar ciclos en una secuencia, y su trabajo en el análisis. En un documento aislado que introdujo el concepto importante de difusión de errores para las imágenes de la representación, también llamado Floyd-Steinberg tramado (a pesar de que distinguidos tramado de difusión). Un logro importante fue pionero en el campo de verificación de programas con afirmaciones lógicas con el artículo de 1967 asignar significados a los programas. Esta fue una importante contribución a lo que más tarde se convirtió en la lógica de Hoare.


histsoc.stanford.edu/pdfmem/Floyd_Robert.pdf

Edsger Dijkstra

EDSGER DIJKSTRA

Edsger Wybe Dijkstra, nació en RotterdamPaíses Bajos el  11 de mayo de 1930  y murió en  NuenenPaíses Bajos el  6 de agosto de 2002.

Dijkstra estudió física teórica en la Universidad de Leiden. Trabajó como investigador para Burroughs Corporation a principios de los años 1970. En la Universidad de Texas en AustinEstados Unidos, ocupó el Schlumberger Centennial Chair in Computer Sciences. Se retiró en 2000.


A fines de los años 1950 fue uno de los principales diseñadores del lenguaje de programación ALGOL.
Se destacó tambien en teoría de grafos donde descubrió el algoritmo que lleva su nombre para hallar el camino más corto entre dos vértices de un grafo dirigido con pesos no negativos en sus aristas.
En el campo de la programación estructurada, demostró el Teorema de Dijkstra según el cual todo programa escrito en un lenguaje de programación imperativo puede obtenerse mediante la combinación secuencial de estructuras de decisión y repetición. Definió también la notación de comandos custodiados (guarded commands) para razonar sobre programas no-determinísticos.
En 1972 recibió el Premio Turing.
Su estilo incisivo provocó numerosos debates en el ambiente profesional; se pueden mencionar su condena del salto incondicional (La sentencia Go To considerada como perjudicial) o su empeño en enseñar Ciencias de la Computación como un capítulo de las matemáticas aplicadas.
 
Referencias
http://es.wikipedia.org/wiki/Edsger_Dijkstra

Algoritmo de PRIM

Algoritmo de PRIM

El algoritmo de Prim es un algoritmo perteneciente a la teoría de los grafos para encontrar un árbol recubridor mínimo en un grafo conexo, no dirigido y cuyas aristas están etiquetadas.
En otras palabras, el algoritmo encuentra un subconjunto de aristas que forman un árbol con todos los vértices, donde el peso total de todas las aristas en el árbol es el mínimo posible. Si el grafo no es conexo, entonces el algoritmo encontrará el árbol recubridor mínimo para uno de los componentes conexos que forman dicho grafo no conexo.

El algoritmo fue diseñado en 1930 por el matemático Vojtech Jarnik y luego de manera independiente por el científico computacional Robert C. Prim en 1957 y redescubierto por Dijkstra en 1959. Por esta razón, el algoritmo es también conocido como algoritmo DJP o algoritmo de Jarnik.

Pasos para realizar el algoritmo

1.- Se marca un nodo cualquiera, será el nodo de partido.
2.- Seleccionamos la arista de menor valor incidente en el nodo marcado anteriormente, y marcamos el otro nodo en el que incide.
3.- Repetir el paso 2 siempre que la arista elegida enlace un nodo marcado y otro que no lo esté.
4.- El proceso termina cuando tenemos todos los nodos del grafo marcados.

Este algoritmo se usa normalmente para ahorrar recursos. Su aplicación más común es la implementación de cables de redes, de servidores, de postes de luz, etc.

Ejemplo:

Iniciamos en el nodo 0 y lo marcamos, observamos que hay dos posibles elecciones, 0-1 ó 0-3, de ellos elegimos el 0-1 pues es el que tiene el menos costo de los dos posibles caminos. Ahora tenemos dos nodos marcados, vemos las aristas  incidentes en ellos y de allí elegimos la que tenga menor costo. Y continuamos así hasta que todos los nodos se marquen.


Referencias


jueves, 8 de septiembre de 2011

Participación 7

Unidad 1 Modelos de Transporte y Asignación 
Participación 7
Problema de Maximización

Dos plantas abastecen a tres clientes con suministros médicos. Las GANANCIAS unitarias, junto con los suministros y demandas se dan en la siguiente tabla:

1
2
3
Oferta
1
$55
$65
$80
35
2
$10
$15
$25
50
Demanda
10
10
10

  •    ¿Cómo cambian los criterios de los métodos que generan solución inicial?

Esquina Noroeste: El criterio no cambia, nos seguimos ubicando en la esquina superior izquierda (aunque puede ser cualquier esquina) y de allí podemos empezar con el método, seleccionando entre la oferta y la demanda de la casilla elegida, la menor de ellas para saturar ya sea la columna o el renglón.

Costos Mínimos: Se buscaría la ganancia más grande y de allí analizamos su oferta y su demanda para saturar o bien el renglón o bien la columna.

Vogel: Podriamos cambia la función objetivo de una maximización por un minimización, multiplicándolo por (-1), y aplicariamos los mismos criterios que en minimización.
  •   ¿Qué criterio se utilizaría para determinar la variable de entrada?El zj-cj más positivo, hasta que todos sean menor o igual a cero.

  •   ¿Cómo es criterio para variable de salida? Podriamos cambia la función objetivo de una maximización por un minimización, multiplicándolo por (-1), y aplicariamos los mismos criterios que en minimización.


SoSolución óptima.
x11=10
x12=10
x13=10

z=2000

viernes, 2 de septiembre de 2011

TABLA DE PROBLEMA DE ASIGNACIÓN

Características
Observación
Historia del modelo
El modelo de asignación es un caso especial del modelo de transporte, en el que los recursos se asignan a las actividades en términos de uno a uno.

El problema de asignación debe su nombre a la aplicación particular de asignar hombres a trabajos (o trabajos a máquinas), con la condición de que cada hombre puede ser asignado a un trabajo y que cada trabajo tendrá asignada una persona.

Köningn y Egervary demostraron un teorema esencial para el desarrollo del método húngaro, que se fundamenta en la idea de que se puede sumar o restar una constantes de cualquier fila o columna sin cambiar el conjunto de soluciones óptimas.
Basándose en el trabajo de Köning, Kuhn ideó en 1955 el Método Húngaro.




http://www.eio.uva.es/~ricardo/io/introio.pdf

Elementos
Los problemas de asignación presentan una estructura similar a los de transporte, pero con dos diferencias: asocian igual número  de orígenes con igual número de demandas y las ofertas en cada origen es de valor uno, como lo es la demanda en cada destino.

El modelo general de asignación tiene que ver con m agentes y n tareas. Supongamos que m agentes deben ser asignados a n tareas y cij indica el costo o alternativamente el valor de tener a la persona i en la tarea j.
-  Buscamos minimizar el costo
-  Cada uno de los agentes debe ser asignado a una tarea
-  Cada tarea deber ser asignada a 1 agente.

Definimos xij =1 si el agente I es asignado a la tarea j; xij =0 en los otros casos. Entonces el modelo se escribe:

La forma general del modelo es:







http://www.investigacion-operaciones.com/material%20didactico/Transporte%20y%20Transbordo.pdf


Ejemplo
Una factoría tiene cuatro operarios, los cuales deben ser asignados al manejo de cuatro máquinas; las horas requeridas para cada trabajador en cada máquina se dan en la tabla adjunta; el tiempo a laborar por cada operario en cada una de las máquinas se pretende que sea mínimo, para lo cual se busca la asignación óptima posible.



Solución Optima Unica: A-1, B-4, C-3 y D-2.Lo anterior quiere decir que Antonio va a laborar en la máquina 1 (10 horas), Bernardo en la máquina 4 (12 horas), Carlos va a trabajar en la máquina 3(12 horas) y Diego en la máquina 2 (16 horas).



Método de Solución
Método Húngaro:

Paso 1: Encontrar primero el elemento más pequeño en cada fila de la matriz de costos m*m; se debe construir una nueva matriz al restar de cada costo el costo mínimo de cada fila; encontrar para esta nueva matriz, el costo mínimo en cada columna. A continuación se debe construir una nueva matriz (denominada matriz de costos reducidos) al restar de cada costo el costo mínimo de su columna.

Paso 2:  Consiste en trazar el número
mínimo de líneas (horizontales o verticales o ambas únicamente de esas maneras) que se requieren para cubrir todos los ceros en la matriz de costos reducidos; si se necesitan m líneas para cubrir todos los ceros, se tiene una solución óptima entre los ceros cubiertos de la matriz. Sise requieren menos de m líneas para cubrir todos los ceros, se debe continuar con el paso 3. El número de líneas para cubrir los ceros es igual a la cantidad de asignaciones que hasta ese momento se pueden realizar.

Paso 3: Encontrar el menor elemento diferente de cero (llamado k) en la matriz de costos
reducidos, que no está cubierto por las líneas dibujadas en el paso 2; a continuación se debe restar k de cada elemento no cubierto de la matriz de costos reducidos y sumar k a cada elemento de la matriz de costos reducidos cubierto por dos líneas (intersecciones). Por último se debe regresar al paso 2.

Programas existentes
Win QSB, LINDO, Tora, QM2, PHP Simplex