|
所在平台: Udemy |
课程主页: https://www.udemy.com/course/advanced-algorithms-in-java/
课程评论:没有评论
Coursera 课程《Java 中的高级算法(图算法)》内容汇总 本课程深入探讨了图论中的高级算法,主要使用 Java 实现。课程时长约 11 小时,旨在帮助学员掌握图算法的精髓及其广泛应用。 **核心内容:** 1. **图论基础:** * 图的定义 (G(V,E)) * 邻接矩阵表示法 * 邻接表表示法 2. **图遍历:** * **广度优先搜索 (BFS):** * BFS 的概念 * BFS 在搜索引擎网络爬虫中的应用 * **深度优先搜索 (DFS):** * DFS 的概念 * 递归实现 DFS * DFS 的应用:拓扑排序、周期检测、迷宫寻路 3. **拓扑排序:** * 拓扑排序的定义 * 有向无环图 (DAG) * DAG 的最短路径和最长路径 * 关键路径法与项目管理 4. **周期检测:** * 图中的周期 * 前向边与后向边 * 周期检测算法(如 Tarjan 算法) 5. **最短路径算法:** * **Dijkstra 算法:** * 最短路径概念 * Dijkstra 算法实现 * **Bellman-Ford 算法:** * Bellman-Ford 算法实现 * 处理负权环 * 金融套利机会(外汇交易) 6. **生成树:** * **Kruskal 和 Prim 算法:** * 生成树概念 * 并查集数据结构 * Kruskal 算法实现 * Prim 算法实现 7. **强连通分量 (SCCs):** * 强连通分量的概念 * Kosaraju 算法实现 * Tarjan 算法实现 8. **最大流问题:** * 最大流问题的定义 * 将复杂问题转化为最大流问题 * Ford-Fulkerson 算法实现 * 二分图匹配问题 9. **旅行商问题与哈密顿回路:** * 旅行商问题 (TSP) * 处理 NP-hard 问题 * 元启发式方法 10. **欧拉路径:** * 欧拉路径与欧拉回路 * Hierholzer 算法与中国邮递员问题 11. **算法分析:** * 衡量算法运行时间 * 大 O、大 Ω、大 θ 记法 * 复杂度类(P 类、NP 类算法) * 多种运行时间复杂度(O(1), O(logN), O(N) 等) **学习建议:** * 课程提供所有算法的 Java 源代码,建议学员亲手实践,多次编写以加深理解。 * 本课程适合对高级算法感兴趣的学习者,其应用领域广泛,包括软件工程、科学研究等。 **总结:** 本课程是学习 Java 中高级图算法的宝贵资源,覆盖了从基础图论到复杂应用场景的全面知识体系。强烈建议对算法有深入追求的学习者选择此课程。
This course is about advanced algorithms (graph algorithms) focusing on graph traversal, shortest path problems, spanning trees and maximum flow problems and a lots of its applications from Google Web Crawler to taking advantage of stock market arbitrage situations. Section 1 - Graphs Theory Basics:what is a G(V,E) graphadjacency matrix representationadjacency list representationSection 2 - Graph Traversal (Breadth-First Search)what is breadth-first search?how to use BFS for WebCrawling in search engines?Section 3 - Graph Traversal (Depth-First Search)what is depth-first search?how to use recursion to implement DFSapplications of DFS such as topological ordering and cycle detectionfind way out of a maze with DFSSection 4 - Topological Orderingwhat is topological ordering (topological sort)directed acyclic graphs (DAGs)DAG shortest path and longest pathcritical path methods and project managementSection 5 - Cycle Detectionwhat are cycles in a graph?forward edges and backward edgescycle detection algorithms (Tarjan's algorithm with DFS)Section 6 - Dijkstra's Shortest Path Algorithmwhat is a shortest path in a G(V,E) graphDijkstra's shortest path algorithmSection 7 - Bellman-Ford Shortest Path AlgorithmBellman-Ford algorithmhow to handle negative cyclesfinding arbitrage opportunities on the FOREXSection 8: - Spanning Trees (Kruskal and Prim's Algorithms)what are spanning trees?union find data structuresKruskal's algorithmPrim's algorithmSection 9 - Strongly Connected Components (SCCs)what are strongly connected componentsKosaraju's algorithmTarjan's algorithmSection 10 - Maximum Flow Problemthe famous maximum flow problemhow to reduce most of the hard problems to maximum flow problemFord-Fulkerson algorithmbipartite matching problemSection 9 - Travelling Salesman Problem and Hamiltonian Cycles:travelling salesman problem (TSP)how to deal with NP-hard problemswhat are meta-heuristicsSection 10 - Eulerian Pathseulerian paths and eulerian cyclesHierholzer algorithm and the Chinese Postman ProblemSection 11 - Algorithms Analysishow to measure the running time of algorithmsrunning time analysis with big O (ordo), big Ω (omega) and big θ (theta) notationscomplexity classespolynomial (P) and non-deterministic polynomial (NP) algorithmsO(1), O(logN), O(N) and several other running time complexitiesThe course is going to take approximately 11 hours to completely but I highly suggest you typing these algorithms out several times in order to get a good grasp of it. You can download the source code of the whole course at the last lecture. You should definitely take this course if you are interested in advanced topics concerning algorithms. There are a bunch of fields where these methods can be used: from software engineering to scientific research.Thanks for joining the course, let's get started!