SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
TECNOLOGICO DE ESTUDIOS SUPERIORES TIENGUISTENCO

DIVISION DE INGENIERIA EN SISTEMAS COMPUTACIONALES




                    ASIGNATURA:

             Investigación de Operaciones




                      ALUMNO:

               Eduardo González Ortiz




                    MATRICULA:

                      201123042




                       GRUPO:

                        3302




                     PROFESOR:

                Rodrigo Tapia Zapote




                 “RUTAS CRITICAS”
Introducción

Has pensado todo lo que implica realizar una tarea o proceso de manera adecuada, si tu
respuesta es no imagina una situación tan cotidiana como el asistir a la escuela o trabajo,
esta es una actividad tan simple que en ocasiones no se le presta mucha atención a lo
que realizas pero tan solo detente y piensa en la secuencia de las actividades que llevas a
cabo antes de partir de tu hogar, si te das cuenta todo lleva un orden y por más simple
que parezca la actividad consume tiempo y en ocasiones este puede ser crucial para
llegar a tu destino en tiempo y forma..

Pero en problemas de mayor magnitud/complejidad cada tarea tienen un papel importante
algunas con mayor importancia que otros, esto nos da a entender que no pueden ser
retrasadas, en caso de ser así afectarían las posteriores actividades impidiendo cumplir
los objetivos incluso llegar a ocasionar perdidas.

Pongamos el ejemplo de empresas que proveen materias a otras instituciones, si esta
sufriera de un contratiempo en su línea de producción no solo se afectaría a si misma si
no a los que les provee de sus servicios reflejando una perdida fatal en tiempo y cotos
tanto para ella como para los consumidores.

Con este pequeño ejemplo ya tendrás en cuenta lo importante que es organizar tiempos
y decidir a qué actividades darles mayor importancia      por lo cual se requiere de una
organización casi perfecta.

En el presente escrito se redacta un proyecto        que consta de la implementación de
procesos que nos permiten visualizar el orden en que se llevan a cabo tales tareas
llegando así a una solución que nos mostrara la importancia e influencia que tiene una
actividad.
Justificación

La realización de una tarea implica primordialmente definir lo que se desea obtener, por lo
cual en el presente trabajo se busca exponer al lector la importancia que tiene la
determinación de tiempos, pretendiendo ser una guía para los alumnos y docentes que
toman o imparten la materia de Investigación de Operaciones para planificar y desarrollar
el siguiente tema.

La Asignatura de Investigación de Operaciones, tiene como objetivo desarrollar el
Algoritmo del Floyd por medio de análisis, investigación y complementar la parte teórica
vista en clase para resolver algún problema de este tema. Además de construir modelos
de decisión basadas en descripciones matemáticas, con el objetivo de proporcionar al
alumno la madurez y los conocimientos necesarios para enfrentar una gran variedad de
problemas que se les presentan.

El método ya mencionado anteriormente será aplicado en compañía del tema visto en
clase que es llamado ruta crítica al igual que de la materia de programación, llevando a
cabo la elaboración de un programa el cual nos mostrara como hoy en día el avance
tecnológico y de conocimientos llegan a facilitar tareas, con fines de poner en práctica los
pasos pertenecientes al tema (Ruta critica), la elaboración del programa no solo constara
de su creación si no que mostraremos todo lo que implico su elaboración redactando las
acciones a seguir y el cómo cada una llega a tener una influencia muy resaltada o poco
notable pero no menos importante.

ALCANCES Y LIMITACIONES

Como ya tenemos entendido la realización de un proyecto implica de una buena
organización aunque en ocasiones nos llegaremos a topar con obstáculos que nos
impidan la creación de un proyecto perfecto en su totalidad.

En esta ocasión no fue la excepción pero como equipo hemos tratado de realizar un
proyecto respetable y entendible hacia el público.
Alcances

Con la creación de este trabajo no pretendemos realizar un proyecto detallado en su
totalidad si no solo mostrar a los alumnos de Investigación de Operaciones un ejemplo
que desde nuestro punto de vista es más comprensible a los mostrados en otras fuentes.

Limitaciones

Para cumplir con la presentación de este trabajo nos llegamos a encontrar con varios
obstáculos que impidieron que creáramos un proyecto que describa en su totalidad el
comportamiento del método Floyd y ruta critica, pero que posiblemente resolverá algunas
dudas obtenidas en clase.

Como limitantes nos encontramos con el hecho de que al ser un trabajo en equipo no
siempre los integrantes contaremos con una disposición total de tiempo, afectando así en
su totalidad el desarrollo del trabajo, aunque se nos informó sobre el proyecto con
antelación y se comenzó casi de inmediato con su elaboración nos topamos con un gran
obstáculo el cual es la comprensión total o parcial de la programación, aunque
actualmente nos encontramos cursando el 3er semestres de la carrera en ISC (Ingeniería
en Sistemas Computacionales) y que por lógica debemos manipular este aspecto al
derecho y al revés pues no ha sido fácil ya que carecemos de ciertos fundamentos
relacionados al tema por lo cual se nos ha dificultado un poco la elaboración de un
programas funcional en su totalidad, ya que al hacer uso de matrices fue necesaria la
Investigación de este tema y el cómo implementar el algoritmo de Floyd en un ambiente
de programación, se buscó en diferentes fuentes Bibliográfica pero no obtuvimos
respuestas muy constructivas por lo cual tuvimos que investigar más afondo con asesores
de la institución y otras fuentes para poder realizando, esto represento un gran consumo
de tiempo.

A pesar de las limitantes mencionadas anteriormente hemos puesto un gran empeño en la
realización de esta encomienda, por lo cual nos enfocaremos más en hacer mejor
entendible el tema.
PLANTEAMIENTO DEL PROBLEMA

Como problema o reto tenemos la elaboración de un programa que sea capaz de hacer
uso del método de Floyd pero durante su creación se tiene que hacer uso de la
herramienta ruta crítica.

Ósea que se tendrá que resumir paso a paso como se ha logrado llegar a la creación de
tal proyecto y que actividades han influido con mayor intensidad.

A continuación solo se describirá lo realizado ya posteriormente se le dará un enfoque con
uso del tema de rutas críticas.

En el área de programación el error más grave que se puede cometer en querer realizar
un proyecto sin antes haber analizado el problema que se nos pide solucionar, es aquí
donde comienza a tomar parte el tema de ruta crítica, el cual nos dice que para lograr la
solución de un problema se debe de empezar por definir nuestro objetivo posteriormente
enlistar las acciones a realizar mientras se hace esto es recomendable darles un orden y
tiempos que tardara cada actividad en ser realizada.

A sí que comencemos por definir qué queremos que lleve a cabo nuestra aplicación,
según el método Floyd es un algoritmo de análisis sobre grafos para encontrar el camino
mínimo en grafos dirigidos ponderados. El algoritmo encuentra el camino entre todos los
pares de vértices en una única ejecución. El algoritmo de Floyd-Warshall es un ejemplo
de programación dinámica.

Esto nos quiere decir que en un grafo contaremos con nodos los cuales interactuaran con
otros nodos, los cuales estarán comunicados por una serie de arcos con distancias, como
se muestra a continuación:




                            NOTA: Este tipo de grafos es posible
                            representarlos de manera matricial para
                            una mejor comprensión.
En esta parte es donde entra el razonamiento como resolver o trasladar un problema de
este tipo a un entorno de programación.

Bueno primero investiguemos un poco sobre el comportamiento de una matriz, tras
investigar tenemos que existen conjuntos de datos que por su naturaleza son mejor
representados mediante tablas o matrices multidimensionales que por vectores.

Por ejemplo, se puede representar las calificaciones de 4 asignaturas cursadas por 6
estudiantes mediante una tabla como la que abajo se ilustra:


                         Columna 1 Columna 2 Columna 3 Columna 4
                Fila 1
                Fila 2
                Fila 3
                Fila 4
                Fila 5
                Fila 6


donde cada fila correspondería a un estudiante y cada columna a una asignatura. Cada
dato individual (la calificación de un estudiante en una asignatura dada) es un elemento
de esta tabla y ocupa una celda identificable por el número de la fila y el número de la
columna.
Columna 1 Columna 2 Columna 3 Columna 4
                  Fila 1 M(1,1)       M(1,2)        M(1,3)        M(1,4)
                  Fila 2 M(2,1)       M(2,2)        M(2,3)        M(2,4)
                  Fila 3 M(3,1)       M(3,2)        M(3,3)        M(3,4)
                  Fila 4 M(4,1)       M(4,2)        M(4,3)        M(4,4)
                  Fila 5 M(5,1)       M(5,2)        M(5,3)        M(5,4)
                  Fila 6 M(6,1)       M(6,2)        M(6,3)        M(6,4)




De esta manera, cada elemento de la tabla queda completamente identificado mediante
dos subíndices: el primero para identificar la fila y el segundo para identificar la columna.
M( i , j )
Cada elemento de la matriz representaría la calificación de un estudiante dado en una
asignatura dada. Por ejemplo:
M(4,2) = C
Significa que el estudiante número 4 obtuvo C en la asignatura 2. La posición del
elemento dentro de la matriz corresponde a la celda sombreada en la tabla de la figura de
arriba.
La matriz de arriba representa un arreglo bidimensional con (6x4) 24 elementos, donde
      i = 1, 2, 3,4,5,6            j = 1, 2, 3, 4
En una matriz multidimensional cada dimensión tiene su propio rango.


Con frecuencia se manejan arreglos de más de dos dimensiones, correspondiendo un
subíndice a cada dimensión.


El programador debe tener presente que la memoria de las computadoras es lineal, por lo
que la mayoría de los compiladores almacenan en memoria los elementos de una matriz
linealizandola por filas; es decir, todos los elementos de la primera fila primero, los de la
segunda después y así sucesivamente.
Ahora que tenemos noción de cómo funcionan las matrices mostraremos como se
comportó esta parte en nuestra aplicación.
El algoritmo de Floyd compara todos los posibles caminos a través del grafo entre cada
par de vértices. El algoritmo es capaz de hacer esto con sólo     comparaciones (esto es
notable considerando que puede haber hasta             aristas en el grafo, y que cada
combinación de aristas se prueba). Lo hace mejorando paulatinamente una estimación del
camino más corto entre dos vértices, hasta que se sabe que la estimación es óptima.

Sea un grafo G con conjunto de vértices V, numerados de 1 a N. Sea además una
función caminocorto(i,j,k) que devuelve el camino mínimo de i a j usando únicamente
los vértices de 1 a k como puntos intermedios en el camino. Ahora, dada esta función,
nuestro objetivo es encontrar el camino mínimo desde cada i a cada j usando únicamente
los vértices de 0 hasta k-1.

Hay dos candidatos para este camino: un camino mínimo, que utiliza únicamente los
vértices del conjunto (0…k); o bien existe un camino que va desde i hasta k-1, y de

k-1 hasta j, que es mejor. Sabemos que el camino óptimo de i a j que únicamente utiliza
los vértices de 0 hasta k está definido por camino Mínimo(i,j,k), y está claro que si
hubiera un camino mejor de i a k-1 a j, la longitud de este camino sería la concatenación
del camino mínimo de i a k-1 (utilizando vértices de(0….k)) y el camino mínimo de k-1 a j
(que también utiliza los vértices en (0…k)).

Por lo tanto, podemos definir camino Mínimo (i, j, k) de forma recursiva:

caminoMinimo(i,j,k)=min(caminoMinimo(i,j,k)),caminoMinimo(i,k,)+caminoMinimo(k,j
));

Camino Mínimo (i,j,0)=Arista(i,j),

Esta fórmula es la base del algoritmo Floyd Funciona ejecutando primero camino Mínimo
(i,j,0) para todos los pares (i,j), usándolos para después hallar camino Mínimo(i,j,2) para
todos los pares (i,j)... Este proceso continúa hasta que k=n, y habremos encontrado el
camino más corto para todos los pares de vértices (i,j) usando algún vértice intermedio.
Ahora pasaremos a la explicación de cómo se creó la aplicación haciendo uso de Métodos de
Rutas críticas empezando por:

Delimitación de tareas.

                     Actividades                                    Tiempo(minutos)
          A          Investigación del tema                         180
          B          Análisis del tema                              60
          C          Delimitación del problema (objetivo)           90
          D          Análisis del problema (objetivos)              160
          E          Creación de algoritmo                          220
          F          Realización de prueba de escritorio            50
          G          Codificación del algoritmo en un ambiente de
                                                                    180
                     programación
          H          Corrección de errores                          120
          I          Realización de escrito (parte teórica).        240
          J          Revisión y Análisis del Escrito (Tenga
                                                                    90
                     coherencia)
          K          Presentación del Proyecto (Finalización)       160
A                         B                       C                       D
   0           180           180         240          0        90            90          250
  580          760           760         820        -120       -30           -30         130
         580                       580                     120                     120


          E                         F                      G                       H
  250          470           470         520         520       700           700         820
  130          350           350         400         400       580           580         700
         120                       120                     120                     120


          I                         J                      K
  820         1010          1010         1100       1100       1260
  820         1010          1010         1100       1100       1260
         0                         0                       0




COMO CONCLUSION TENEMOS QUE NUESTRO PROYECTO CONSUMIO UN TOTAL DE 21
hrs.

ADJUNTOS

Algoritmo:

Dado un grafo se puede aplicar el algoritmo de Floyd para resolver el problema de encontrar el
camino más corto de todos los vértices entre sí, a continuacion se muestra el comportamiento de
cada uno de los for mensionados anteriormente.

Inicio
Armar la matriz de distancias minimas Floyd, teniendo en cuenta que F(i,j)=0. Además dónde no
exista camino se debe indicar con infinito.
Para k desde 0 hasta n-1
Para i desde 0 hasta n-1
Para j desde 0 hasta n-1
Floyd[i,j]=min(F[i,j], F[i,k] + F[k,j])
Fin para j
Fin para i
Fin para k


En la k-esima vuelta F[i, j] contendrá el valor del camino más corto que una al vértice i con el j tal
que dicho camino no pase por un vértice con número mayor que k.
La matriz resultante es la de los mínimos caminos entre cada nodo. Si se quiere saber cual es
dicho camino, se debe armar un árbol a medida tomando como numero de nodo a k cada vez que
se detecta que hubo una optimización.

Pseudocodigo

Inicio

Creación de matriz (Floyd)

Declaración de variables de tipo entero y su inicialización i, j, n;

Imprime “Nota; El infinito se presenta por un -1

Solicita Dato “Dimensión de la Matriz “

Almacena Dato n;




Inicio de la Matriz Bidimensional;

Para i desde 0; i menor a n; hasta j;

Para j desde 0; j menor a n; hasta j;

Solicita Dato “Distancia del Nodo i al nodo j;

Almacena Dato matriz;

Para k desde 0 hasta n-1; // Comienzo del avance posición k

Para i desde 0 hasta n-1; // Avance En filas en La Matriz;

Para j desde 0 hasta n-1; // Avance el Columnas en La matriz;

         Si Floyd i, k es diferente o igual que -1 y si Floyd k, j es diferente o igual que -1;
Imprime Floyd i, j;

Imprime “Nuevas Distancias”;

        Para i desde 0; i menor a n hasta i;

        Para j desde 0 j menor a n hasta j;

Imprime “Valor de la Posicion (i,j) Floyd posición i j“;

Declaración de Clase Comparaciones parámetros A, B;

// A almacena el dato altual de la celda i, j

// B almacena la suma de los valores de la sumas adyacentes al valor que se esta Evaluando;

        Imprime       “” A   , “”B;

        Si    A es menor que -1 && B es igual que -1

                    Retorna -1

        si A es igual que -1

                    Retorna B

        Si no B es igual que -1

;

                    Retorna A;

        Si no A es mayor que B;

                    Retorna B;

Si no Retorna A;

FIN

Código fuente

A continuación se muestra el Código del Programa que tuvo como fin Implementar el
Algoritmo de Floyd.

import java.io.*;
public class FloydAlgoritmo {

static int [][] Floyd;

  static BufferedReader leer=new BufferedReader(new InputStreamReader(System.in));

public static void main(String[]a) {

     /**

      * Delclaracion E inicializacion de Las Varibles

      * k Realiza comparaciones Entre celdas

      * i Recorre Filas de la Matriz

      * j Recorre Columnas de La Matriz

      */

     int i=0,j=0,k=0;

     int n=0;

     try{

     System.err.println("NOTA: El infinito se representa por un -1");

   /**

      * Ingresa La Dimension de la Matriz

      */

     System.out.println("DIMENSION DE MATRIZ");

     n=Integer.parseInt(leer.readLine());

         /*

         * Recorrido de La Matriz

         */

     Floyd=new int [n][n];

     for( i=0; i<n; i++)
for( j=0; j<n; j++)

         {

             /*

             * Muestra La discia del vertice i al vetice j

             */

             System.out.println("Distancia del nodo( "+i+ ")al nodo ("+j+")");

             Floyd[i][j]=Integer.parseInt(leer.readLine());

         }//for avance

}//try

catch (Exception e ){}

for( k=0; k<=n-1 ; k++){

   for( i=0; i<=n-1; i++){

   for( j=0; j<=n-1; j++)

             if ((Floyd[i][k]!=-1)&&(Floyd[k][j]!=-1)){

       Floyd[i][j]=comparaciones(Floyd[i][j],Floyd[i][k]+Floyd[k][j]);

         System.out.println(""+Floyd[i][j]);

             }

   }

   }

   /**

    * Muestra las nuevas Distancias q' existen entre i & j

    */

   System.out.println("Nuevas distancias:");

         for ( i=0; i<n; i++){
for( j=0; j<n; j++)

             /**

              * Imprime los Valores de las Posiciones

              */

          System.out.println("VALOR DE LA POSICION("+i+")("+j+")es: "+Floyd[i][j]);

          System.out.println();

      }

}

/**

*

* @param A Valor de la celda en la q' se Encuentra el Avance

* @param B Guarda la Suma

public static int comparaciones(int A,int B){

      System.out.println(""+A+" "+B);

      if((A==-1)&&(B==-1))

           return -1;

      else if(A==-1)

           return B;

      else if (B==-1)

           return A;

      else if (A>B)

           return B;

      else return A;

}}

Más contenido relacionado

La actualidad más candente

TEORÍA DE INVENTARIOS, INVESTIGACIÓN DE OPERACIONES.
TEORÍA DE INVENTARIOS, INVESTIGACIÓN DE OPERACIONES.TEORÍA DE INVENTARIOS, INVESTIGACIÓN DE OPERACIONES.
TEORÍA DE INVENTARIOS, INVESTIGACIÓN DE OPERACIONES.Skierck Lara
 
Conceptos de costos contra tiempos
Conceptos de costos contra tiemposConceptos de costos contra tiempos
Conceptos de costos contra tiemposISABEL LEAL - UNEMI
 
PROGRAMACION LINEAL "METODO SIMPLEX"
PROGRAMACION LINEAL "METODO SIMPLEX"PROGRAMACION LINEAL "METODO SIMPLEX"
PROGRAMACION LINEAL "METODO SIMPLEX"ALEGRE_ALI
 
Problemas resueltos-cadenas-de-markov
Problemas resueltos-cadenas-de-markovProblemas resueltos-cadenas-de-markov
Problemas resueltos-cadenas-de-markovLaura Garzón
 
Métodos de programación no lineal
Métodos de programación no linealMétodos de programación no lineal
Métodos de programación no linealIbrahim Portillo
 
Definiciones de investigacion de operaciones
Definiciones de investigacion de operacionesDefiniciones de investigacion de operaciones
Definiciones de investigacion de operacionesXSilvana XMonasteriosx
 
Formulacion Del Problema Simulacion Y Modelacion
Formulacion Del Problema Simulacion Y ModelacionFormulacion Del Problema Simulacion Y Modelacion
Formulacion Del Problema Simulacion Y Modelacionjose haar
 
Diagrama etapas proyecto simulacion
Diagrama etapas proyecto simulacionDiagrama etapas proyecto simulacion
Diagrama etapas proyecto simulacionJesse Rmz
 
Programación Dinámica
Programación DinámicaProgramación Dinámica
Programación DinámicaXavi2701
 
Ecuaciones diferenciales homogeneas
Ecuaciones diferenciales homogeneasEcuaciones diferenciales homogeneas
Ecuaciones diferenciales homogeneasfernandamendozadt
 
Teoria de Colas
Teoria de ColasTeoria de Colas
Teoria de Colasapaspuel
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidadrezzaca
 
Tema 14 -_muestreo_de_trabajo
Tema 14 -_muestreo_de_trabajoTema 14 -_muestreo_de_trabajo
Tema 14 -_muestreo_de_trabajoMayra Patiiño
 
427168331 calculo-vectorial-unidad-2
427168331 calculo-vectorial-unidad-2427168331 calculo-vectorial-unidad-2
427168331 calculo-vectorial-unidad-2fghffffg
 

La actualidad más candente (20)

TEORÍA DE INVENTARIOS, INVESTIGACIÓN DE OPERACIONES.
TEORÍA DE INVENTARIOS, INVESTIGACIÓN DE OPERACIONES.TEORÍA DE INVENTARIOS, INVESTIGACIÓN DE OPERACIONES.
TEORÍA DE INVENTARIOS, INVESTIGACIÓN DE OPERACIONES.
 
Conceptos de costos contra tiempos
Conceptos de costos contra tiemposConceptos de costos contra tiempos
Conceptos de costos contra tiempos
 
91897836 clase-1-1-1-ecdif-teoria-preliminar
91897836 clase-1-1-1-ecdif-teoria-preliminar91897836 clase-1-1-1-ecdif-teoria-preliminar
91897836 clase-1-1-1-ecdif-teoria-preliminar
 
PROGRAMACION LINEAL "METODO SIMPLEX"
PROGRAMACION LINEAL "METODO SIMPLEX"PROGRAMACION LINEAL "METODO SIMPLEX"
PROGRAMACION LINEAL "METODO SIMPLEX"
 
Fundicion y colado al alto vacio
Fundicion y colado al alto vacioFundicion y colado al alto vacio
Fundicion y colado al alto vacio
 
Problemas resueltos-cadenas-de-markov
Problemas resueltos-cadenas-de-markovProblemas resueltos-cadenas-de-markov
Problemas resueltos-cadenas-de-markov
 
Métodos de programación no lineal
Métodos de programación no linealMétodos de programación no lineal
Métodos de programación no lineal
 
Definiciones de investigacion de operaciones
Definiciones de investigacion de operacionesDefiniciones de investigacion de operaciones
Definiciones de investigacion de operaciones
 
Formulacion Del Problema Simulacion Y Modelacion
Formulacion Del Problema Simulacion Y ModelacionFormulacion Del Problema Simulacion Y Modelacion
Formulacion Del Problema Simulacion Y Modelacion
 
Diagrama etapas proyecto simulacion
Diagrama etapas proyecto simulacionDiagrama etapas proyecto simulacion
Diagrama etapas proyecto simulacion
 
Estudio del Trabajo
Estudio del TrabajoEstudio del Trabajo
Estudio del Trabajo
 
Unidad IV
Unidad IVUnidad IV
Unidad IV
 
Programación Dinámica
Programación DinámicaProgramación Dinámica
Programación Dinámica
 
Ecuaciones diferenciales homogeneas
Ecuaciones diferenciales homogeneasEcuaciones diferenciales homogeneas
Ecuaciones diferenciales homogeneas
 
Diseño Estructurado de Algoritmos
Diseño Estructurado de AlgoritmosDiseño Estructurado de Algoritmos
Diseño Estructurado de Algoritmos
 
Teoria de Colas
Teoria de ColasTeoria de Colas
Teoria de Colas
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidad
 
Tema 14 -_muestreo_de_trabajo
Tema 14 -_muestreo_de_trabajoTema 14 -_muestreo_de_trabajo
Tema 14 -_muestreo_de_trabajo
 
427168331 calculo-vectorial-unidad-2
427168331 calculo-vectorial-unidad-2427168331 calculo-vectorial-unidad-2
427168331 calculo-vectorial-unidad-2
 

Similar a Ruta critica

Guia didáctica unidad 4 metodología para el análisis y planteamiento del prob...
Guia didáctica unidad 4 metodología para el análisis y planteamiento del prob...Guia didáctica unidad 4 metodología para el análisis y planteamiento del prob...
Guia didáctica unidad 4 metodología para el análisis y planteamiento del prob...Leany González
 
Problemas de Circuitos y Sistemas Digitales _ Carmen Baena, Manuel Jesús Bell...
Problemas de Circuitos y Sistemas Digitales _ Carmen Baena, Manuel Jesús Bell...Problemas de Circuitos y Sistemas Digitales _ Carmen Baena, Manuel Jesús Bell...
Problemas de Circuitos y Sistemas Digitales _ Carmen Baena, Manuel Jesús Bell...Marco Enrique Ramos Castillo
 
Libro electronica digital problemas de circuitos y sistemas digitales
Libro electronica digital problemas de circuitos y sistemas digitalesLibro electronica digital problemas de circuitos y sistemas digitales
Libro electronica digital problemas de circuitos y sistemas digitalesPedro Vasquez
 
Todas 101223091525-phpapp01
Todas 101223091525-phpapp01Todas 101223091525-phpapp01
Todas 101223091525-phpapp01Tomas Bradanovic
 
Folder de calculo macias roque
Folder de calculo macias roqueFolder de calculo macias roque
Folder de calculo macias roqueRoque Macias E.
 
Macros en Microsoft Excel como solución a los problemas de aprendizaje y reso...
Macros en Microsoft Excel como solución a los problemas de aprendizaje y reso...Macros en Microsoft Excel como solución a los problemas de aprendizaje y reso...
Macros en Microsoft Excel como solución a los problemas de aprendizaje y reso...Steeven12
 
Estructura de datos - presentacion y sesion 1
Estructura de datos - presentacion y sesion 1Estructura de datos - presentacion y sesion 1
Estructura de datos - presentacion y sesion 1Jesús Gómez Ávila
 
Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1Jesús Gómez Ávila
 
estructuradedatospresentacion-130513115330-phpapp02 (1).pdf
estructuradedatospresentacion-130513115330-phpapp02 (1).pdfestructuradedatospresentacion-130513115330-phpapp02 (1).pdf
estructuradedatospresentacion-130513115330-phpapp02 (1).pdfgerson424
 
LA PRÁCTICA DE LA ENSEÑANZA. LA PREPARACIÓN DEL MATERIAL DIDÁCTICO.
LA PRÁCTICA DE LA ENSEÑANZA. LA PREPARACIÓN DEL MATERIAL DIDÁCTICO.LA PRÁCTICA DE LA ENSEÑANZA. LA PREPARACIÓN DEL MATERIAL DIDÁCTICO.
LA PRÁCTICA DE LA ENSEÑANZA. LA PREPARACIÓN DEL MATERIAL DIDÁCTICO.ProfessorPrincipiante
 

Similar a Ruta critica (20)

Guia didáctica unidad 4 metodología para el análisis y planteamiento del prob...
Guia didáctica unidad 4 metodología para el análisis y planteamiento del prob...Guia didáctica unidad 4 metodología para el análisis y planteamiento del prob...
Guia didáctica unidad 4 metodología para el análisis y planteamiento del prob...
 
Silabo mat 1 abril septiembre 2014
Silabo mat 1 abril septiembre 2014Silabo mat 1 abril septiembre 2014
Silabo mat 1 abril septiembre 2014
 
Módulo 6-ubv
Módulo 6-ubvMódulo 6-ubv
Módulo 6-ubv
 
Problemas de Circuitos y Sistemas Digitales _ Carmen Baena, Manuel Jesús Bell...
Problemas de Circuitos y Sistemas Digitales _ Carmen Baena, Manuel Jesús Bell...Problemas de Circuitos y Sistemas Digitales _ Carmen Baena, Manuel Jesús Bell...
Problemas de Circuitos y Sistemas Digitales _ Carmen Baena, Manuel Jesús Bell...
 
Libro electronica digital problemas de circuitos y sistemas digitales
Libro electronica digital problemas de circuitos y sistemas digitalesLibro electronica digital problemas de circuitos y sistemas digitales
Libro electronica digital problemas de circuitos y sistemas digitales
 
2
22
2
 
Calculo folder gisella
Calculo folder gisellaCalculo folder gisella
Calculo folder gisella
 
Calculo folder gisy.editado
Calculo folder gisy.editadoCalculo folder gisy.editado
Calculo folder gisy.editado
 
Prontuario
ProntuarioProntuario
Prontuario
 
Prontuario
ProntuarioProntuario
Prontuario
 
Prontuario
ProntuarioProntuario
Prontuario
 
Prontuario
ProntuarioProntuario
Prontuario
 
Todas 101223091525-phpapp01
Todas 101223091525-phpapp01Todas 101223091525-phpapp01
Todas 101223091525-phpapp01
 
Folder de calculo macias roque
Folder de calculo macias roqueFolder de calculo macias roque
Folder de calculo macias roque
 
Elección de un tema
Elección de un temaElección de un tema
Elección de un tema
 
Macros en Microsoft Excel como solución a los problemas de aprendizaje y reso...
Macros en Microsoft Excel como solución a los problemas de aprendizaje y reso...Macros en Microsoft Excel como solución a los problemas de aprendizaje y reso...
Macros en Microsoft Excel como solución a los problemas de aprendizaje y reso...
 
Estructura de datos - presentacion y sesion 1
Estructura de datos - presentacion y sesion 1Estructura de datos - presentacion y sesion 1
Estructura de datos - presentacion y sesion 1
 
Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1
 
estructuradedatospresentacion-130513115330-phpapp02 (1).pdf
estructuradedatospresentacion-130513115330-phpapp02 (1).pdfestructuradedatospresentacion-130513115330-phpapp02 (1).pdf
estructuradedatospresentacion-130513115330-phpapp02 (1).pdf
 
LA PRÁCTICA DE LA ENSEÑANZA. LA PREPARACIÓN DEL MATERIAL DIDÁCTICO.
LA PRÁCTICA DE LA ENSEÑANZA. LA PREPARACIÓN DEL MATERIAL DIDÁCTICO.LA PRÁCTICA DE LA ENSEÑANZA. LA PREPARACIÓN DEL MATERIAL DIDÁCTICO.
LA PRÁCTICA DE LA ENSEÑANZA. LA PREPARACIÓN DEL MATERIAL DIDÁCTICO.
 

Ruta critica

  • 1. TECNOLOGICO DE ESTUDIOS SUPERIORES TIENGUISTENCO DIVISION DE INGENIERIA EN SISTEMAS COMPUTACIONALES ASIGNATURA: Investigación de Operaciones ALUMNO: Eduardo González Ortiz MATRICULA: 201123042 GRUPO: 3302 PROFESOR: Rodrigo Tapia Zapote “RUTAS CRITICAS”
  • 2. Introducción Has pensado todo lo que implica realizar una tarea o proceso de manera adecuada, si tu respuesta es no imagina una situación tan cotidiana como el asistir a la escuela o trabajo, esta es una actividad tan simple que en ocasiones no se le presta mucha atención a lo que realizas pero tan solo detente y piensa en la secuencia de las actividades que llevas a cabo antes de partir de tu hogar, si te das cuenta todo lleva un orden y por más simple que parezca la actividad consume tiempo y en ocasiones este puede ser crucial para llegar a tu destino en tiempo y forma.. Pero en problemas de mayor magnitud/complejidad cada tarea tienen un papel importante algunas con mayor importancia que otros, esto nos da a entender que no pueden ser retrasadas, en caso de ser así afectarían las posteriores actividades impidiendo cumplir los objetivos incluso llegar a ocasionar perdidas. Pongamos el ejemplo de empresas que proveen materias a otras instituciones, si esta sufriera de un contratiempo en su línea de producción no solo se afectaría a si misma si no a los que les provee de sus servicios reflejando una perdida fatal en tiempo y cotos tanto para ella como para los consumidores. Con este pequeño ejemplo ya tendrás en cuenta lo importante que es organizar tiempos y decidir a qué actividades darles mayor importancia por lo cual se requiere de una organización casi perfecta. En el presente escrito se redacta un proyecto que consta de la implementación de procesos que nos permiten visualizar el orden en que se llevan a cabo tales tareas llegando así a una solución que nos mostrara la importancia e influencia que tiene una actividad.
  • 3. Justificación La realización de una tarea implica primordialmente definir lo que se desea obtener, por lo cual en el presente trabajo se busca exponer al lector la importancia que tiene la determinación de tiempos, pretendiendo ser una guía para los alumnos y docentes que toman o imparten la materia de Investigación de Operaciones para planificar y desarrollar el siguiente tema. La Asignatura de Investigación de Operaciones, tiene como objetivo desarrollar el Algoritmo del Floyd por medio de análisis, investigación y complementar la parte teórica vista en clase para resolver algún problema de este tema. Además de construir modelos de decisión basadas en descripciones matemáticas, con el objetivo de proporcionar al alumno la madurez y los conocimientos necesarios para enfrentar una gran variedad de problemas que se les presentan. El método ya mencionado anteriormente será aplicado en compañía del tema visto en clase que es llamado ruta crítica al igual que de la materia de programación, llevando a cabo la elaboración de un programa el cual nos mostrara como hoy en día el avance tecnológico y de conocimientos llegan a facilitar tareas, con fines de poner en práctica los pasos pertenecientes al tema (Ruta critica), la elaboración del programa no solo constara de su creación si no que mostraremos todo lo que implico su elaboración redactando las acciones a seguir y el cómo cada una llega a tener una influencia muy resaltada o poco notable pero no menos importante. ALCANCES Y LIMITACIONES Como ya tenemos entendido la realización de un proyecto implica de una buena organización aunque en ocasiones nos llegaremos a topar con obstáculos que nos impidan la creación de un proyecto perfecto en su totalidad. En esta ocasión no fue la excepción pero como equipo hemos tratado de realizar un proyecto respetable y entendible hacia el público.
  • 4. Alcances Con la creación de este trabajo no pretendemos realizar un proyecto detallado en su totalidad si no solo mostrar a los alumnos de Investigación de Operaciones un ejemplo que desde nuestro punto de vista es más comprensible a los mostrados en otras fuentes. Limitaciones Para cumplir con la presentación de este trabajo nos llegamos a encontrar con varios obstáculos que impidieron que creáramos un proyecto que describa en su totalidad el comportamiento del método Floyd y ruta critica, pero que posiblemente resolverá algunas dudas obtenidas en clase. Como limitantes nos encontramos con el hecho de que al ser un trabajo en equipo no siempre los integrantes contaremos con una disposición total de tiempo, afectando así en su totalidad el desarrollo del trabajo, aunque se nos informó sobre el proyecto con antelación y se comenzó casi de inmediato con su elaboración nos topamos con un gran obstáculo el cual es la comprensión total o parcial de la programación, aunque actualmente nos encontramos cursando el 3er semestres de la carrera en ISC (Ingeniería en Sistemas Computacionales) y que por lógica debemos manipular este aspecto al derecho y al revés pues no ha sido fácil ya que carecemos de ciertos fundamentos relacionados al tema por lo cual se nos ha dificultado un poco la elaboración de un programas funcional en su totalidad, ya que al hacer uso de matrices fue necesaria la Investigación de este tema y el cómo implementar el algoritmo de Floyd en un ambiente de programación, se buscó en diferentes fuentes Bibliográfica pero no obtuvimos respuestas muy constructivas por lo cual tuvimos que investigar más afondo con asesores de la institución y otras fuentes para poder realizando, esto represento un gran consumo de tiempo. A pesar de las limitantes mencionadas anteriormente hemos puesto un gran empeño en la realización de esta encomienda, por lo cual nos enfocaremos más en hacer mejor entendible el tema.
  • 5. PLANTEAMIENTO DEL PROBLEMA Como problema o reto tenemos la elaboración de un programa que sea capaz de hacer uso del método de Floyd pero durante su creación se tiene que hacer uso de la herramienta ruta crítica. Ósea que se tendrá que resumir paso a paso como se ha logrado llegar a la creación de tal proyecto y que actividades han influido con mayor intensidad. A continuación solo se describirá lo realizado ya posteriormente se le dará un enfoque con uso del tema de rutas críticas. En el área de programación el error más grave que se puede cometer en querer realizar un proyecto sin antes haber analizado el problema que se nos pide solucionar, es aquí donde comienza a tomar parte el tema de ruta crítica, el cual nos dice que para lograr la solución de un problema se debe de empezar por definir nuestro objetivo posteriormente enlistar las acciones a realizar mientras se hace esto es recomendable darles un orden y tiempos que tardara cada actividad en ser realizada. A sí que comencemos por definir qué queremos que lleve a cabo nuestra aplicación, según el método Floyd es un algoritmo de análisis sobre grafos para encontrar el camino mínimo en grafos dirigidos ponderados. El algoritmo encuentra el camino entre todos los pares de vértices en una única ejecución. El algoritmo de Floyd-Warshall es un ejemplo de programación dinámica. Esto nos quiere decir que en un grafo contaremos con nodos los cuales interactuaran con otros nodos, los cuales estarán comunicados por una serie de arcos con distancias, como se muestra a continuación: NOTA: Este tipo de grafos es posible representarlos de manera matricial para una mejor comprensión.
  • 6. En esta parte es donde entra el razonamiento como resolver o trasladar un problema de este tipo a un entorno de programación. Bueno primero investiguemos un poco sobre el comportamiento de una matriz, tras investigar tenemos que existen conjuntos de datos que por su naturaleza son mejor representados mediante tablas o matrices multidimensionales que por vectores. Por ejemplo, se puede representar las calificaciones de 4 asignaturas cursadas por 6 estudiantes mediante una tabla como la que abajo se ilustra: Columna 1 Columna 2 Columna 3 Columna 4 Fila 1 Fila 2 Fila 3 Fila 4 Fila 5 Fila 6 donde cada fila correspondería a un estudiante y cada columna a una asignatura. Cada dato individual (la calificación de un estudiante en una asignatura dada) es un elemento de esta tabla y ocupa una celda identificable por el número de la fila y el número de la columna.
  • 7. Columna 1 Columna 2 Columna 3 Columna 4 Fila 1 M(1,1) M(1,2) M(1,3) M(1,4) Fila 2 M(2,1) M(2,2) M(2,3) M(2,4) Fila 3 M(3,1) M(3,2) M(3,3) M(3,4) Fila 4 M(4,1) M(4,2) M(4,3) M(4,4) Fila 5 M(5,1) M(5,2) M(5,3) M(5,4) Fila 6 M(6,1) M(6,2) M(6,3) M(6,4) De esta manera, cada elemento de la tabla queda completamente identificado mediante dos subíndices: el primero para identificar la fila y el segundo para identificar la columna. M( i , j ) Cada elemento de la matriz representaría la calificación de un estudiante dado en una asignatura dada. Por ejemplo: M(4,2) = C Significa que el estudiante número 4 obtuvo C en la asignatura 2. La posición del elemento dentro de la matriz corresponde a la celda sombreada en la tabla de la figura de arriba. La matriz de arriba representa un arreglo bidimensional con (6x4) 24 elementos, donde i = 1, 2, 3,4,5,6 j = 1, 2, 3, 4 En una matriz multidimensional cada dimensión tiene su propio rango. Con frecuencia se manejan arreglos de más de dos dimensiones, correspondiendo un subíndice a cada dimensión. El programador debe tener presente que la memoria de las computadoras es lineal, por lo que la mayoría de los compiladores almacenan en memoria los elementos de una matriz linealizandola por filas; es decir, todos los elementos de la primera fila primero, los de la segunda después y así sucesivamente. Ahora que tenemos noción de cómo funcionan las matrices mostraremos como se comportó esta parte en nuestra aplicación.
  • 8. El algoritmo de Floyd compara todos los posibles caminos a través del grafo entre cada par de vértices. El algoritmo es capaz de hacer esto con sólo comparaciones (esto es notable considerando que puede haber hasta aristas en el grafo, y que cada combinación de aristas se prueba). Lo hace mejorando paulatinamente una estimación del camino más corto entre dos vértices, hasta que se sabe que la estimación es óptima. Sea un grafo G con conjunto de vértices V, numerados de 1 a N. Sea además una función caminocorto(i,j,k) que devuelve el camino mínimo de i a j usando únicamente los vértices de 1 a k como puntos intermedios en el camino. Ahora, dada esta función, nuestro objetivo es encontrar el camino mínimo desde cada i a cada j usando únicamente los vértices de 0 hasta k-1. Hay dos candidatos para este camino: un camino mínimo, que utiliza únicamente los vértices del conjunto (0…k); o bien existe un camino que va desde i hasta k-1, y de k-1 hasta j, que es mejor. Sabemos que el camino óptimo de i a j que únicamente utiliza los vértices de 0 hasta k está definido por camino Mínimo(i,j,k), y está claro que si hubiera un camino mejor de i a k-1 a j, la longitud de este camino sería la concatenación del camino mínimo de i a k-1 (utilizando vértices de(0….k)) y el camino mínimo de k-1 a j (que también utiliza los vértices en (0…k)). Por lo tanto, podemos definir camino Mínimo (i, j, k) de forma recursiva: caminoMinimo(i,j,k)=min(caminoMinimo(i,j,k)),caminoMinimo(i,k,)+caminoMinimo(k,j )); Camino Mínimo (i,j,0)=Arista(i,j), Esta fórmula es la base del algoritmo Floyd Funciona ejecutando primero camino Mínimo (i,j,0) para todos los pares (i,j), usándolos para después hallar camino Mínimo(i,j,2) para todos los pares (i,j)... Este proceso continúa hasta que k=n, y habremos encontrado el camino más corto para todos los pares de vértices (i,j) usando algún vértice intermedio.
  • 9. Ahora pasaremos a la explicación de cómo se creó la aplicación haciendo uso de Métodos de Rutas críticas empezando por: Delimitación de tareas. Actividades Tiempo(minutos) A Investigación del tema 180 B Análisis del tema 60 C Delimitación del problema (objetivo) 90 D Análisis del problema (objetivos) 160 E Creación de algoritmo 220 F Realización de prueba de escritorio 50 G Codificación del algoritmo en un ambiente de 180 programación H Corrección de errores 120 I Realización de escrito (parte teórica). 240 J Revisión y Análisis del Escrito (Tenga 90 coherencia) K Presentación del Proyecto (Finalización) 160
  • 10. A B C D 0 180 180 240 0 90 90 250 580 760 760 820 -120 -30 -30 130 580 580 120 120 E F G H 250 470 470 520 520 700 700 820 130 350 350 400 400 580 580 700 120 120 120 120 I J K 820 1010 1010 1100 1100 1260 820 1010 1010 1100 1100 1260 0 0 0 COMO CONCLUSION TENEMOS QUE NUESTRO PROYECTO CONSUMIO UN TOTAL DE 21 hrs. ADJUNTOS Algoritmo: Dado un grafo se puede aplicar el algoritmo de Floyd para resolver el problema de encontrar el camino más corto de todos los vértices entre sí, a continuacion se muestra el comportamiento de cada uno de los for mensionados anteriormente. Inicio Armar la matriz de distancias minimas Floyd, teniendo en cuenta que F(i,j)=0. Además dónde no exista camino se debe indicar con infinito. Para k desde 0 hasta n-1 Para i desde 0 hasta n-1 Para j desde 0 hasta n-1
  • 11. Floyd[i,j]=min(F[i,j], F[i,k] + F[k,j]) Fin para j Fin para i Fin para k En la k-esima vuelta F[i, j] contendrá el valor del camino más corto que una al vértice i con el j tal que dicho camino no pase por un vértice con número mayor que k. La matriz resultante es la de los mínimos caminos entre cada nodo. Si se quiere saber cual es dicho camino, se debe armar un árbol a medida tomando como numero de nodo a k cada vez que se detecta que hubo una optimización. Pseudocodigo Inicio Creación de matriz (Floyd) Declaración de variables de tipo entero y su inicialización i, j, n; Imprime “Nota; El infinito se presenta por un -1 Solicita Dato “Dimensión de la Matriz “ Almacena Dato n; Inicio de la Matriz Bidimensional; Para i desde 0; i menor a n; hasta j; Para j desde 0; j menor a n; hasta j; Solicita Dato “Distancia del Nodo i al nodo j; Almacena Dato matriz; Para k desde 0 hasta n-1; // Comienzo del avance posición k Para i desde 0 hasta n-1; // Avance En filas en La Matriz; Para j desde 0 hasta n-1; // Avance el Columnas en La matriz; Si Floyd i, k es diferente o igual que -1 y si Floyd k, j es diferente o igual que -1;
  • 12. Imprime Floyd i, j; Imprime “Nuevas Distancias”; Para i desde 0; i menor a n hasta i; Para j desde 0 j menor a n hasta j; Imprime “Valor de la Posicion (i,j) Floyd posición i j“; Declaración de Clase Comparaciones parámetros A, B; // A almacena el dato altual de la celda i, j // B almacena la suma de los valores de la sumas adyacentes al valor que se esta Evaluando; Imprime “” A , “”B; Si A es menor que -1 && B es igual que -1 Retorna -1 si A es igual que -1 Retorna B Si no B es igual que -1 ; Retorna A; Si no A es mayor que B; Retorna B; Si no Retorna A; FIN Código fuente A continuación se muestra el Código del Programa que tuvo como fin Implementar el Algoritmo de Floyd. import java.io.*;
  • 13. public class FloydAlgoritmo { static int [][] Floyd; static BufferedReader leer=new BufferedReader(new InputStreamReader(System.in)); public static void main(String[]a) { /** * Delclaracion E inicializacion de Las Varibles * k Realiza comparaciones Entre celdas * i Recorre Filas de la Matriz * j Recorre Columnas de La Matriz */ int i=0,j=0,k=0; int n=0; try{ System.err.println("NOTA: El infinito se representa por un -1"); /** * Ingresa La Dimension de la Matriz */ System.out.println("DIMENSION DE MATRIZ"); n=Integer.parseInt(leer.readLine()); /* * Recorrido de La Matriz */ Floyd=new int [n][n]; for( i=0; i<n; i++)
  • 14. for( j=0; j<n; j++) { /* * Muestra La discia del vertice i al vetice j */ System.out.println("Distancia del nodo( "+i+ ")al nodo ("+j+")"); Floyd[i][j]=Integer.parseInt(leer.readLine()); }//for avance }//try catch (Exception e ){} for( k=0; k<=n-1 ; k++){ for( i=0; i<=n-1; i++){ for( j=0; j<=n-1; j++) if ((Floyd[i][k]!=-1)&&(Floyd[k][j]!=-1)){ Floyd[i][j]=comparaciones(Floyd[i][j],Floyd[i][k]+Floyd[k][j]); System.out.println(""+Floyd[i][j]); } } } /** * Muestra las nuevas Distancias q' existen entre i & j */ System.out.println("Nuevas distancias:"); for ( i=0; i<n; i++){
  • 15. for( j=0; j<n; j++) /** * Imprime los Valores de las Posiciones */ System.out.println("VALOR DE LA POSICION("+i+")("+j+")es: "+Floyd[i][j]); System.out.println(); } } /** * * @param A Valor de la celda en la q' se Encuentra el Avance * @param B Guarda la Suma public static int comparaciones(int A,int B){ System.out.println(""+A+" "+B); if((A==-1)&&(B==-1)) return -1; else if(A==-1) return B; else if (B==-1) return A; else if (A>B) return B; else return A; }}