El algoritmo de Dijkstra encuentra la ruta más corta de una sola fuente a todos los destinos accesibles en un gráfico. No permite bordes negativos: consulte Algoritmo de Bellman-Ford. Se ejecuta en tiempo asintótico O (| E | lg (| V |)). Utiliza el siguiente bucle invariante para calcular la ruta más corta:
[matemáticas] d [v] = d [u] + w (u, v) \ qquad \ qquad \ forall (u, v) \ en E [/ math]
Algoritmos | Coursera
- ¿Qué son los algoritmos de clasificación y búsqueda?
- ¿Cómo podemos demostrar que cada matriz 1D tiene un pico o que cualquier matriz 1D siempre tiene un pico?
- ¿La programación competitiva se trata más de pensar o de implementar (modificar) algoritmos conocidos?
- ¿Cuáles son los mejores métodos para el análisis competitivo?
- Quiero aprender la estructura de datos y Java, ¿cuál debería aprender primero?
A * El algoritmo de búsqueda, por otro lado, utiliza una función heurística para guiar la búsqueda. Es decir:
[matemáticas] f (n) = g (n) + h (n) [/ matemáticas]
donde g (n) es la distancia desde el origen hasta el nodo ny h (n) es una heurística para estimar la distancia desde el nodo n hasta el destino
Piense en g (n) yh (n) como dos fuerzas en direcciones opuestas. Si la búsqueda es demasiado profunda en un camino donde la función heurística no tiene mucho que prometer, entonces g (n) la retira para relajar caminos más prometedores.
La función heurística podría ser la distancia euclidiana, la distancia de Manhattan, la distancia de Chebyshev, la distancia del taxi … etc. Una buena función heurística es monótona (admisible), es decir, la distancia estimada es siempre menor o igual a la distancia real:
[matemáticas] h (x) \ leq d (x, y) + h (y) [/ matemáticas]
La complejidad del tiempo depende de la función heurística y se encuentra exponencial [matemática] O (b ^ {d}) [/ matemática] donde b es el factor de ramificación yd es la distancia desde la fuente hasta el destino.
A * y los algoritmos de búsqueda heurística ayudan en los casos en que el problema en cuestión es NP-Completo. Es decir, no sabemos si la conjetura [matemática] P = NP [/ matemática] o [matemática] P \ neq NP [/ matemática] . También ayuda en general a los motores de inteligencia artificial como ajedrez, sudoku, etc. Ya que es bastante imposible ejecutar DFS, BFS o Dijkstra en todo el gráfico del juego. Por ejemplo, el árbol del juego de ajedrez tiene un límite inferior de [matemáticas] 10 ^ {120} [/ matemáticas].
Algoritmos | Coursera
Este libro es muy simple y cubre el tema:
Inteligencia artificial: estructuras y estrategias para la resolución de problemas complejos (6ª edición): George F. Luger: 9780321545893: Amazon.com: Libros