David Barreto
Nestor Ruben Rodriguez Caro
Bernardo Aguayo Ortega
Un algoritmo es un conjunto de instrucciones o pasos que resuelven un problema dado paso a paso y sin generar ambigüedades.
Las instrucciones de la computadora siempre deben dar los mismos resultados cuando tienen los mismos datos de entrada. Por ejemplo, no importa cuantas veces lo preguntes, la operación 5+5 siempre es igual a 10.
Además, podemos programar diferentes instrucciones que terminan con el mismo resultado. Nuestro trabajo también es descubrir cuál es la mejor manera de solucionar estos problemas.
Vamos a crear un diagrama de flujo para realizar un algoritmo que debe resolver el problema de cómo encontrar la ruta más corta para ir de un lugar a otro.
David Barreto
Nestor Ruben Rodriguez Caro
Bernardo Aguayo Ortega
Karen Paola Diaz Duarte
Sergio Brandon De Lucio Chavero
Elmer Padilla Espinoza
Antonio Demarco Bonino
Alex Fabian Moreno Acero
Ricardo Celis
ProfesorRicardo Celis
ProfesorAdriana Ardila
Juan Pablo Perez
Juan Miguel Caberta Ramirez
Hector Alejandro Ramirez Huertas
Ricardo Celis
ProfesorCarlos Nassif Trejo Garcia
Juan Carlos Valencia López
Juan Castro
ProfesorIrving Juárez
Daniel Alberto Esquinazi
Cristobal Nyram
Alejandro Tangarife Rivas
Juan Mercado
Manuel Rodrigo Pinzón Moreno
Sergio Brandon De Lucio Chavero
Cristian Fernando Anaya Perez
Jimmy Ugalde Mora
Jimmy Ugalde Mora
Jose Antonio Rojas Ollarves
Adriana Ardila
Carlos José González Juan
Andres Nickolai Montealegre Rojas
Aaron Joel Limachi Quispe
Smith Llalle
Juan Sebastián Bermúdez Pérez
Xavier Carrera
Julián López Cano
Celeste Lorenzo Guerrero
Yosef Enmanuel Blandin Rios
Juan Pablo Celiz
Luis Lira
Diferentes definiciones de Algoritmo
¿Cómo se Diseña un Algoritmo? En programación, un algoritmo establece, de manera genérica e informal, la secuencia de pasos o acciones que resuelve un determinado problema y, para representarlo, se utiliza, fundamentalmente, dos tipos de notación: pseudocódigo y diagramas de flujo.
Partes de un Algoritmo Todo algoritmo debe obedecer a la estructura básica de un sistema, es decir: entrada, proceso y salida. Características de los Algoritmos: Las características fundamentales que debe cumplir todo algoritmo son:
Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
Un algoritmo debe ser finito. el algoritmo se debe terminar en algún momento; o sea, debe tener un número finito de pasos.
Un algoritmo debe ser legible: El texto que lo describe debe ser claro, tal que permita entenderlo y leerlo fácilmente.
Buen aporte gracias.
Gracias David, todo muy claro. Complemento ideal para la clase
gracias :)
Original tu manera de exponer tus apuntes, gracias por ello Karen.
En otras palabras, cada vez que le damos los mismos datos de entrada van a salir los mismos datos de salida. Bueno sería que revisen estos datos ya que no está el algoritmo de la ruta más corta, en el documento para leer y al parecer falta la clase anterior. Dejo un link con el algoritmo: https://www.ingenieriaindustrialonline.com/investigacion-de-operaciones/algoritmo-de-la-ruta-mas-corta/
No veo el archivo con la lectura
Hola Moreno, ya reviso!
Hola! está más adelante en el curso, pero igual te comparto el código por acá:
// A C++ program for Dijkstra's single source shortest path algorithm. // The program is for adjacency matrix representation of the graph #include <stdio.h> #include <limits.h> // Number of vertices in the graph #define V 9 // A utility function to find the vertex with minimum distance value, from // the set of vertices not yet included in shortest path tree int minDistance(int dist[], bool sptSet[]) { // Initialize min value int min = INT_MAX, min_index; for (int v = 0; v < V; v++) if (sptSet[v] == false && dist[v] <= min) min = dist[v], min_index = v; return min_index; } // A utility function to print the constructed distance array int printSolution(int dist[], int n) { printf("Vertex Distance from Source\n"); for (int i = 0; i < V; i++) printf("%d tt %d\n", i, dist[i]); } // Function that implements Dijkstra's single source shortest path algorithm // for a graph represented using adjacency matrix representation void dijkstra(int graph[V][V], int src) { int dist[V]; // The output array. dist[i] will hold the shortest // distance from src to i bool sptSet[V]; // sptSet[i] will be true if vertex i is included in shortest // path tree or shortest distance from src to i is finalized // Initialize all distances as INFINITE and stpSet[] as false for (int i = 0; i < V; i++) dist[i] = INT_MAX, sptSet[i] = false; // Distance of source vertex from itself is always 0 dist[src] = 0; // Find shortest path for all vertices for (int count = 0; count < V-1; count++) { // Pick the minimum distance vertex from the set of vertices not // yet processed. u is always equal to src in the first iteration. int u = minDistance(dist, sptSet); // Mark the picked vertex as processed sptSet[u] = true; // Update dist value of the adjacent vertices of the picked vertex. for (int v = 0; v < V; v++) // Update dist[v] only if is not in sptSet, there is an edge from // u to v, and total weight of path from src to v through u is // smaller than current value of dist[v] if (!sptSet[v] && graph[u][v] && dist[u] != INT_MAX && dist[u]+graph[u][v] < dist[v]) dist[v] = dist[u] + graph[u][v]; } // print the constructed distance array printSolution(dist, V); } // driver program to test above function int main() { /* Let us create the example graph discussed above */ int graph[V][V] = {{0, 4, 0, 0, 0, 0, 0, 8, 0}, {4, 0, 8, 0, 0, 0, 0, 11, 0}, {0, 8, 0, 7, 0, 4, 0, 0, 2}, {0, 0, 7, 0, 9, 14, 0, 0, 0}, {0, 0, 0, 9, 0, 10, 0, 0, 0}, {0, 0, 4, 14, 10, 0, 2, 0, 0}, {0, 0, 0, 0, 0, 2, 0, 1, 6}, {8, 11, 0, 0, 0, 0, 1, 0, 7}, {0, 0, 2, 0, 0, 0, 6, 7, 0} }; dijkstra(graph, 0); return 0; }
El optimismo de él, me motiva aún más.
Exacto son buenos los profesores que se les ve apasionados por lo que enseñan.
Muy interesante y hasta ahorita muy buena la explicación, solo que no se ve nada de tus anotaciones y gráficas con las que trabajas.
Es cierto, hay que esforzar un poco la vista.
Gracias, lo tendré en cuenta para la siguiente versión
Algoritmo - Conjunto de instrucciones que resuelven un problema dado paso a paso y sin generar ambigüedades
Pasos para una matriz de adyacencias: - Encontrar lugares - Encontrar caminos - Registrar distancias ( pesos ) - Medir distancias - Comparar las distancias - Mostrar el mas rapido
Donde está la lectura que menciona en el video?
Aquí la encuentras: https://platzi.com/comentario/523967/. :wink:
Creo que es la lectura de variables y tipo de datos
Hola gente, esccribi esto sobre algoritmos como un extra a la informacion que ya tenemos en este curso. Pueden leerlo de blog. Cualquier feedback es bienvenido.
woo muy bien tu blog amigo ;)
Amigo, muy interesante tu blog. Es curiosa la implementación de lenguajes en tu blog, felicidades, compañero!
++- Definición de algoritmo:++ Es un conjunto de instrucciones que resuelven un problema dado paso a paso sin generar ambigüedades. ++*¿Que significa esto? ++ -Que los pasos que se le asigne a la computadora siempre llegara al mismo resultado, siempre y cuando sean los mismos datos de entrada
OK lectura...
En el vídeo indica que se deja un ejemplo en código, no esta en este video, al parecer tampoco en el otro ¿Donde lo puedo encontrar? PD: gran trabajo, gracias
// A C++ program for Dijkstra's single source shortest path algorithm. // The program is for adjacency matrix representation of the graph
#include <stdio.h> #include <limits.h>
// Number of vertices in the graph #define V 9
// A utility function to find the vertex with minimum distance value, from // the set of vertices not yet included in shortest path tree int minDistance(int dist[], bool sptSet[]) { // Initialize min value int min = INT_MAX, min_index;
for (int v = 0; v < V; v++) if (sptSet[v] == false && dist[v] <= min) min = dist[v], min_index = v;
return min_index; }
// A utility function to print the constructed distance array int printSolution(int dist[], int n) { printf("Vertex Distance from Source\n"); for (int i = 0; i < V; i++) printf("%d tt %d\n", i, dist[i]); }
// Function that implements Dijkstra's single source shortest path algorithm // for a graph represented using adjacency matrix representation void dijkstra(int graph[V][V], int src) { int dist[V]; // The output array. dist[i] will hold the shortest // distance from src to i
bool sptSet[V]; // sptSet[i] will be true if vertex i is included in shortest // path tree or shortest distance from src to i is finalized // Initialize all distances as INFINITE and stpSet[] as false for (int i = 0; i < V; i++) dist[i] = INT_MAX, sptSet[i] = false; // Distance of source vertex from itself is always 0 dist[src] = 0; // Find shortest path for all vertices for (int count = 0; count < V-1; count++) { // Pick the minimum distance vertex from the set of vertices not // yet processed. u is always equal to src in the first iteration. int u = minDistance(dist, sptSet); // Mark the picked vertex as processed sptSet[u] = true; // Update dist value of the adjacent vertices of the picked vertex. for (int v = 0; v < V; v++) // Update dist[v] only if is not in sptSet, there is an edge from // u to v, and total weight of path from src to v through u is // smaller than current value of dist[v] if (!sptSet[v] && graph[u][v] && dist[u] != INT_MAX && dist[u]+graph[u][v] < dist[v]) dist[v] = dist[u] + graph[u][v]; } // print the constructed distance array printSolution(dist, V);
}
// driver program to test above function int main() { /* Let us create the example graph discussed above */ int graph[V][V] = {{0, 4, 0, 0, 0, 0, 0, 8, 0}, {4, 0, 8, 0, 0, 0, 0, 11, 0}, {0, 8, 0, 7, 0, 4, 0, 0, 2}, {0, 0, 7, 0, 9, 14, 0, 0, 0}, {0, 0, 0, 9, 0, 10, 0, 0, 0}, {0, 0, 4, 14, 10, 0, 2, 0, 0}, {0, 0, 0, 0, 0, 2, 0, 1, 6}, {8, 11, 0, 0, 0, 0, 1, 0, 7}, {0, 0, 2, 0, 0, 0, 6, 7, 0} };
dijkstra(graph, 0); return0;
}
sale mas adelante en curso pero Ricardo Celis lo compartió
He publicado un tutorial, donde explico todo lo referente a los algoritmos échenle un ojo:
https://platzi.com/tutoriales/1469-algoritmos/7790-que-son-los-algoritmos/
Alguien tiene la lectura?
Esta en el primer vídeo, en marcadores.
Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador de su patrón. ... En términos de programación, un algoritmo es una secuencia de pasos lógicos que permiten solucionar un problema.
1 Encontrar lugares 2 Encontrar caminos 3 Registrar distancias 4 Medir distancias desde punto origen a destino 5 Comparar distancias 6 Elegir el mas corto
Falta una clase
si. falta una clase
Esta clase esta adelantada. Viene después de estructura de datos.
dónde quedó el algoritmo de jixra, que no lo veo?
Quiero agregar algo, un algoritmo no siempre tiene que dar un mismo resultado ya que hay dos tipos:
¿Si eres bueno resolviendo ejercicios matematicos, necesariamente tienes buena logica?
¡Hola! Si y no, no existe ninguna regla o condición que implique esto. Por lo general, las personas que conocí (compañeros de cursada, profesores, alumnos, etc.) que son buenas en matemáticas y aplicadas suelen ser buenos al momento de resolver problemas lógicos. También conocí muchas personas que saben resolver algún tipo de problema matemático pero de manera automatizada, entonces al momento de chocarse con problemas lógicos se les complica. No considero que una condicione a la otra pero generalmente van de la mano.
Que sea una regla, no, es cierto que a las personas que son buenas en matemáticas tienen un pensamiento lógico más desarrollado, pero eso no siempre significa que la lógica de programación sea lo mismo. En la lógica de programación necesitas también pensar cómo se comportará el sistema de una u otra forma según los datos que ingreses.