1. 项目概述
今天要分享的是我在算法学习过程中整理的图论专题笔记,主要包含三个核心内容:LeetCode第97题"小明逛公园"的解题思路、第127题"骑士的攻击"的解法,以及最短路算法和图论知识的系统总结。这些题目和知识点都是算法竞赛和面试中的常客,掌握它们对提升编程能力至关重要。
作为一名算法工程师,我发现在实际工作中,图论算法的应用场景非常广泛。从社交网络的关系分析,到物流配送的路径规划,再到游戏中的AI寻路,图论都发挥着关键作用。这次整理的笔记不仅记录了标准解法,还包含了我自己在刷题过程中总结的优化技巧和易错点。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心算法解析
2.1 最短路算法精要
最短路算法是图论中的基础算法,主要有以下三种经典实现:
- Dijkstra算法:
- 适用条件:无负权边的图
- 时间复杂度:O((V+E)logV)(使用优先队列)
- 核心思想:贪心策略,每次选择当前距离起点最近的节点进行松弛操作
- 实现要点:
python复制import heapq def dijkstra(graph, start): distances = {node: float('inf') for node in graph} distances[start] = 0 heap = [(0, start)] while heap: current_dist, current_node = heapq.heappop(heap) if current_dist > distances[current_node]: continue for neighbor, weight in graph[current_node].items(): distance = current_dist + weight if distance < distances[neighbor]:
