Ir al contenido principal

10# Algoritmo de Dijkstra

En este episodio hablaré un poco sobre uno de los algoritmosque existen para determinar cuáles serían las mejores rutas en un grafo con métodos distintos.
Dijkstra
Este es un algoritmo eficiente (de complejidad O (n**2)), donde n es el número de vértices) que sirve para encontrar el camino de coste mínimo desde un nodo origen a todos los demás nodos del grafo. Fue diseñado por el holandés Edsger Wybe Dijkstra en 1959.
Este algoritmo es un típico ejemplo de algoritmo ávido, que resuelven los problemas en sucesivos pasos, seleccionando en cada paso la solución más óptima con el objeto de resolver el problema
“Dado un grafo a cuyos arcos se han asociado una seria de pesos, se define el camino de coste mínimo de un vértice “u” a otro “v”, como el camino donde la suma de los pesos de los arcos que lo forman es la más baja entre las de todos los caminos posibles de u a v”.
Aquí les presento el algoritmo:
1-       Seleccionar el vértice de partida, un origen.
2-      Marcar el punto de partida como el punto de inicio
3-      Determinar los caminos especiales desde el nodo de partida.
4-      Camino especial es aquel que solo puede trazarse a través de los vértices ya marcados.
5-      Para cada vértice no marcado, se debe determinar si es mejor usar el camino especial antes calculado o si es mejor usar el nuevo camino especial que resulte al marcar este nuevo vértice.
6-      Para seleccionar un nuevo vértice no marcado como referencia, deberá tomarse aquel cuyo camino especial para llegar a él es el mínimo, por ejemplo, si anteriormente marqué el vértice 2, el cual tiene dos vértices adyacentes 3 y 4 cuyo peso en la arista corresponde a 10 y 5 respectivamente, se tomará como nuevo vértice de partida el 4, ya que el peso de la arista es menor.

7-      Cada camino mínimo corresponde a la suma de los pesos de las aristas que forman el camino para ir del nodo principal el resto de nodos, pasando únicamente por caminos especiales, es decir vértices marcados. 

Comentarios

Entradas más populares de este blog

11# Algoritmo de Prim

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 . Descripción 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. Este incrementa continuamente el tama ño de un ár bol, comenzando por un vertice inicial al que se le van agregando sucesivamente vértices cuya distancia a los anteriores es mínima. Esto significa que en cada paso, las aristas a considerar son aquellas que inciden en vértices que ya pertenecen al árbol El árbol recubridor mínimo está completamente construido cuando no q...

04# Algoritmos de Búsqueda

Un algoritmo es como un conjunto de instrucciones que se deben seguir para realizar una tarea concreta. Este se rige por una serie de pasos o ciclos con sus condiciones definidas para el proceso del trabajo que se quiere hacer. Hoy nos basaremos mayormente en los algoritmos de búsqueda, estos se encargan de encontrar un elemento en una estructura de datos. Existen diversos algoritmos para este propósito. Unos de los vistos en las clases anteriores son el secuencial, binario y el de interpolación. Secuencial: Uno de los algoritmos más sencillos y fáciles de implementar, ya que su única función es la de comparar cada elemento de la estructura de datos con el elemento que se quiere encontrar: L: Largo de la estructura T: temporal contador ELE: Elemento a buscar A: Estructura donde se desea buscar Mientras L > T:                 Si ELE es igual a A posición [T]:     ...

05# GNU/Linux Kernel

Esto es el corazón de las distribuciones Linux que conocemos hoy en día, gracias a Linus Torvalds principal creador de este núcleo (kernel). Pero primeramente vamos a hablar de que significa ser el corazón del sistema operativo. Es un software que se encarga de comunicar el resto del SO (Sistema Operativo) con el hardware, además que se encarga de definir todos los bloques de información que manejara y soportara el sistema completo. “ Linux  es un núcleo de libre distribución y mayormente libre semejante al núcleo de Unix. 4 ​ Linux es uno de los principales ejemplos de software libre y de código abierto. 5 ​ Linux está licenciado bajo la GPL v2 y a mayor parte del software incluido en el paquete que se distribuye en su  sitio web  es software libre. Está desarrollado por colaboradores de todo el mundo. El desarrollo del día a día tiene lugar en la  Linux Kernel Mailing List Archive . El núcleo Linux fue concebido por el...