当前位置: 首页 > article >正文

LeetCode Prim 算法题解

LeetCode Prim 算法题解题目描述Prim 算法是一种用于构建最小生成树的贪心算法。与 Kruskal 算法不同Prim 算法从一个顶点开始逐步扩展最小生成树每次选择连接当前生成树和剩余顶点的最小权值边。示例对于以下加权图A --(2)-- B --(4)-- C | | | (1) (3) (1) | | | D --(5)-- E --(2)-- F从顶点 A 开始Prim 算法构建的最小生成树的边包括A-D (1), A-B (2), B-E (3), E-F (2), F-C (1)总权值为 123219。解题思路方法Prim 算法思路Prim 算法的核心思想是从一个顶点开始逐步扩展最小生成树每次选择连接当前生成树和剩余顶点的最小权值边。具体步骤选择一个起始顶点将其加入生成树。初始化一个优先队列用于存储连接当前生成树和剩余顶点的边。从优先队列中取出权值最小的边如果边的目标顶点不在生成树中则将其加入生成树并将与该顶点相关的边加入优先队列。重复步骤 3直到生成树包含所有顶点。复杂度分析时间复杂度O(E log V)其中 V 是顶点数E 是边数。每次优先队列操作的时间复杂度为 O(log V)最多处理 E 条边。空间复杂度O(E V)需要存储图的邻接表和优先队列的信息。代码实现方法Prim 算法import heapq # Prim 算法 def prim(graph, start): # 获取所有顶点 vertices set(graph.keys()) # 已加入生成树的顶点 mst_vertices set([start]) # 生成树的边 mst_edges [] # 总权值 total_weight 0 # 优先队列用于存储边权值起始顶点目标顶点 priority_queue [] # 初始化优先队列将起始顶点的所有边加入 for neighbor, weight in graph[start].items(): heapq.heappush(priority_queue, (weight, start, neighbor)) while priority_queue and len(mst_vertices) len(vertices): # 取出权值最小的边 weight, u, v heapq.heappop(priority_queue) # 如果目标顶点不在生成树中 if v not in mst_vertices: # 将目标顶点加入生成树 mst_vertices.add(v) # 将边加入生成树 mst_edges.append((u, v, weight)) # 更新总权值 total_weight weight # 将目标顶点的所有边加入优先队列 for neighbor, weight in graph[v].items(): if neighbor not in mst_vertices: heapq.heappush(priority_queue, (weight, v, neighbor)) return mst_edges, total_weight # 测试 def test_prim(): # 构建图结构邻接表 graph { A: {B: 2, D: 1}, B: {A: 2, C: 4, E: 3}, C: {B: 4, F: 1}, D: {A: 1, E: 5}, E: {B: 3, D: 5, F: 2}, F: {C: 1, E: 2} } # 测试从 A 出发的最小生成树 print(Minimum Spanning Tree edges:) mst_edges, total_weight prim(graph, A) for u, v, weight in mst_edges: print(f{u} - {v}: {weight}) print(fTotal weight: {total_weight}) # 输出 # Minimum Spanning Tree edges: # A - D: 1 # A - B: 2 # B - E: 3 # E - F: 2 # F - C: 1 # Total weight: 9 if __name__ __main__: test_prim()测试用例测试用例最小生成树输入A --(2)-- B --(4)-- C | | | (1) (3) (1) | | | D --(5)-- E --(2)-- F输出Minimum Spanning Tree edges: A - D: 1 A - B: 2 B - E: 3 E - F: 2 F - C: 1 Total weight: 9总结Prim 算法是一种重要的图论算法它可以用于构建最小生成树。通过贪心策略和优先队列Prim 算法可以高效地找到权值之和最小的生成树。Prim 算法的核心思想是从一个顶点开始逐步扩展最小生成树每次选择连接当前生成树和剩余顶点的最小权值边。掌握 Prim 算法的原理和实现对于理解和解决图论相关问题非常重要。

相关文章:

LeetCode Prim 算法题解

LeetCode Prim 算法题解 题目描述 Prim 算法是一种用于构建最小生成树的贪心算法。与 Kruskal 算法不同,Prim 算法从一个顶点开始,逐步扩展最小生成树,每次选择连接当前生成树和剩余顶点的最小权值边。 示例: 对于以下加权图&…...

【收藏备用】2026年金三银四春招|AI岗位暴涨12倍,程序员/小白靠大模型逆袭指南

“金三银四”春招大战已全面打响,2026年职场招聘市场被AI技术彻底激活!AI相关岗位同比暴涨12倍,平均月薪突破6万,顶级岗位月薪直逼13.7万,这场席卷全行业的AI人才争夺战,早已进入白热化阶段。对于程序员、A…...

LeetCode Kruskal 算法题解

LeetCode Kruskal 算法题解 题目描述 Kruskal 算法是一种用于构建最小生成树的贪心算法。最小生成树是连通图中所有边的权值之和最小的生成树。 示例: 对于以下加权图:A --(2)-- B --(4)-- C| | |(1) (3) (1)| | …...

基于dPanel与OpenClaw的AI智能体:从开发到生产部署全流程指南

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目——OpenClaw,它是一个基于Node.js的AI智能体(Agent)框架。简单来说,你可以把它理解为一个“大脑”,它能够连接各种AI模型(比如OpenAI的GPT&#xf…...

SMOTE算法解析与Python实战:解决不平衡分类问题

## 1. 不平衡分类问题的现实挑战在真实世界的数据分析中,我们经常会遇到类别分布极不均衡的数据集。比如信用卡欺诈检测中正常交易占99.9%,医疗诊断中健康样本远多于患病样本。这类情况下,如果直接用传统分类算法,模型会倾向于预测…...

OpenAEON:构建大模型操作系统,统一AI资源调度与编排

1. 项目概述:从“大模型”到“大模型操作系统”的跃迁最近在AI圈子里,OpenAEON这个名字开始被频繁提及。乍一看,它像是一个新的开源大模型项目,但当你真正深入进去,会发现它的野心远不止于此。OpenAEON的核心定位&…...

CLUE框架:基于隐藏状态分析的LLM生成内容验证方法

1. 项目概述CLUE(Clustering and Experience-based Verification)是一种创新的无参数验证框架,专门用于评估大型语言模型(LLM)生成内容的正确性。与传统的基于文本或置信度的方法不同,CLUE直接分析模型内部…...

FanControl终极配置指南:3步实现Windows风扇精准温控

FanControl终极配置指南:3步实现Windows风扇精准温控 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/…...

OpenClaw Dashboard:构建AI Agent工作流的实时监控与控制中心

1. 项目概述:为AI Agent工作流打造的“飞行驾驶舱”如果你正在使用OpenClaw来构建和运行AI Agent工作流,那么你很可能和我一样,经历过一段“盲人摸象”的时期。Agent在后台默默执行任务,你只能通过零散的日志文件、命令行输出或者…...

如何快速配置Parsec虚拟显示驱动:实现多显示器扩展的完整指南

如何快速配置Parsec虚拟显示驱动:实现多显示器扩展的完整指南 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 你是否曾经因为显示器数量不足而限制了工作效率&#xf…...

告别“跟风学“!AI系统班7大模块,带你从0到1成为全栈开发者

本文指出,AI时代的红利不属于盲目跟风学习者。文章分析了学习者常遇到的四大问题:缺乏规划、理论与实践脱节、学用结合困难、缺少反馈指导。为解决这些问题,作者推荐了一套系统化的AI学习路线,包含7大模块:必备基础、核…...

RWKV-7 (1.5B World)轻量级优势落地:为IoT设备与嵌入式AI提供可能

RWKV-7 (1.5B World)轻量级优势落地:为IoT设备与嵌入式AI提供可能 1. 项目概述 RWKV-7 (1.5B World)是一款专为资源受限环境设计的轻量级大语言模型。相比传统大模型动辄数十GB的显存需求,1.5B参数的紧凑设计使其能够在入门级GPU甚至部分高性能嵌入式设…...

魔兽争霸III终极优化指南:一键解锁高帧率与完美宽屏体验

魔兽争霸III终极优化指南:一键解锁高帧率与完美宽屏体验 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为《魔兽争…...

拼接最大数:你以为是贪心?其实是在“做选择的人生模拟”

🔥 拼接最大数:你以为是贪心?其实是在“做选择的人生模拟” 一、引子:很多人写对了代码,却没搞懂本质 这道题(Create Maximum Number),不少人第一次写的时候都会觉得: “这不就是贪心吗?每次选最大的数字就完了。” 然后一提交—— 要么WA(错误答案),要么超时…...

Android系统开发工程师(SW)偏SDK方向职位解析与面试指南

一、职位概述 1.1 工作职责总览 Android系统开发工程师偏SDK方向,是Android开发领域的关键角色,承担着丰富且重要的职责。 首要任务便是负责Android终端或平板系统的开发及维护工作。这意味着需要对Android系统的架构有深入的理解,能够确保系统的稳定运行,及时修复出现的…...

安卓驱动 嵌入式系统软件工程师——蓝牙方向

一、职位信息概述 1.1 岗位职责总览 安卓驱动 & 嵌入式系统软件工程师(蓝牙方向),承担着诸多关键职责,是连接硬件与上层应用的重要桥梁。 在开发方面,需负责嵌入式Linux、Android平台的底层BSP开发、移植与调试工作。要完成Linux内核驱动的编写,确保蓝牙相关硬件设…...

Bidili Generator优化技巧:如何平衡生成速度与图片质量

Bidili Generator优化技巧:如何平衡生成速度与图片质量 你是否遇到过这样的困扰:使用Bidili Generator生成图片时,要么等待时间太长,要么图片质量不尽如人意?作为一款基于SDXL 1.0架构的图片生成工具,Bidi…...

保姆级教程:用mxbai-embed-large-v1快速搭建文本检索系统,零基础也能上手

保姆级教程:用mxbai-embed-large-v1快速搭建文本检索系统,零基础也能上手 1. 项目简介与核心价值 mxbai-embed-large-v1是一款强大的文本嵌入模型,能够将文本转换为高维向量表示。它在MTEB基准测试中表现优异,超越了包括OpenAI在…...

Notepad++ 开发者福音:集成Hypnos-i1-8B插件实现代码注释与逻辑解释

Notepad 开发者福音:集成Hypnos-i1-8B插件实现代码注释与逻辑解释 1. 引言:代码理解的痛点与解决方案 作为一名开发者,你是否经常面对这样的困境:接手一个遗留项目,面对满屏没有注释的复杂代码;或者自己几…...

QMCDecode终极指南:3步轻松解密QQ音乐加密格式

QMCDecode终极指南:3步轻松解密QQ音乐加密格式 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换结果…...

Windows Cleaner终极指南:免费快速解决C盘爆红的系统清理神器

Windows Cleaner终极指南:免费快速解决C盘爆红的系统清理神器 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设…...

baidupankey如何实现95%的提取码自动获取率?深度解析技术架构与实战应用

baidupankey如何实现95%的提取码自动获取率?深度解析技术架构与实战应用 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 在数字资源共享日益频繁的今天,百度网盘作为国内主流的云存储平台,其…...

Nemotron-CC-Math数据集:提升LLM数学推理能力的关键

1. 项目背景与核心价值NVIDIA最新发布的Nemotron-CC-Math数据集正在改变大语言模型(LLM)数学能力训练的格局。这个专门针对数学领域优化的预训练语料库,解决了当前通用语料库在数学推理任务上的三大痛点:数据质量参差不齐、专业符…...

【Qt】常用控件(十八)QVBoxLayout,QHBoxLayout的属性和使用,布局管理器之间的嵌套

小编个人主页详情<—请点击 小编个人gitee代码仓库<—请点击 Qt系列专栏<—请点击 倘若命中无此运&#xff0c;孤身亦可登昆仑&#xff0c;送给屏幕面前的读者朋友们和小编自己! 目录 前言一、QVBoxLayoutQVBoxLayout的属性使用QVBoxLayout管理多个控件代码实现图形化…...

Qwen3-4B-Thinking-2507-Gemini-2.5-Flash-Distill多语言支持实测

Qwen3-4B-Thinking-2507-Gemini-2.5-Flash-Distill多语言支持实测 1. 模型简介与背景 Qwen3-4B-Thinking-2507-Gemini-2.5-Flash-Distill是一个基于vLLM框架部署的文本生成模型&#xff0c;通过Chainlit前端提供交互式体验。该模型在约5440万个由Gemini 2.5 Flash生成的token…...

ARMv8内存管理与TCR_EL2寄存器详解

1. ARMv8内存管理基础与TCR_EL2寄存器概览在ARMv8架构中&#xff0c;内存管理单元(MMU)通过多级页表转换机制实现虚拟地址到物理地址的映射。作为EL2(Hypervisor)级别的关键控制寄存器&#xff0c;TCR_EL2(Translation Control Register for EL2)掌管着地址转换的核心参数配置。…...

百度网盘解析工具:免费突破限速的终极指南

百度网盘解析工具&#xff1a;免费突破限速的终极指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾为百度网盘的下载速度而烦恼&#xff1f;非会员下载大文件时&am…...

这种口译项目不论按小时计费还是按分钟计费,口译员都被按地板摩擦,满打满算干一天收入还赶不上摆地摊卖凉粉。接这种项目的就不要自称译员了,这对不起你本科➕研究生几大年的时间,甚至大几十万出国留学,太尴尬了

这种口译项目不论按小时计费还是按分钟计费&#xff0c;口译员都被按地板摩擦&#xff0c;满打满算干一天收入还赶不上摆地摊卖凉粉。接这种项目的就不要自称译员了&#xff0c;这对不起你本科➕研究生几大年的时间&#xff0c;甚至大几十万出国留学&#xff0c;太尴尬了。你得…...

3分钟解锁百度网盘资源:baidupankey如何让提取码查询变得如此简单?

3分钟解锁百度网盘资源&#xff1a;baidupankey如何让提取码查询变得如此简单&#xff1f; 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾在深夜急需下载学习资料&#xff0c;却被一个简单的提取码卡住半小时&#x…...

如何彻底告别Dell G15散热烦恼?免费开源散热控制中心完全指南

如何彻底告别Dell G15散热烦恼&#xff1f;免费开源散热控制中心完全指南 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 还在为Dell G15笔记本散热问题而烦恼…...