Python贪心算法(Kruskal算法)生成对抗网络和强化学习数据集(计算机视觉)

最小生成树

生成树被定义为包含图的所有顶点的连通无向图的树状子图。 或者,用外行的话来说,它是形成一棵树(无环)的图的边的子集,其中图的每个节点都是树的一部分。

最小生成树具有生成树的所有属性,并附加了在所有可能的生成树中具有最小可能权重的约束。与生成树一样,图也可以有许多可能的 MST。

生成树属性:

  • 图和生成树中的顶点数 (V) 相同
  • 生成树中有固定数量的边,该数量等于顶点总数减一(E = V-1)
  • 生成树不应断开连接
  • 生成树应该是无环的,这意味着树中不会有任何循环
  • 生成树的总成本(或权重)定义为生成树所有边的边权重之和
  • 图可以有多种可能的生成树

最小生成树具有生成树的所有属性,并附加了在所有可能的生成树中具有最小可能权重的约束。与生成树一样,图也可以有许多可能的最小生成树。

Prim(普里姆)算法

这也是一种贪心算法。该算法有以下工作流程:

  • 首先选择任意顶点,然后将其添加到最小生成树
  • 然后,它重复检查将最小生成树的一个顶点连接到尚未在最小生成树中的另一个顶点的最小边权重
  • 这个过程一直持续到所有的顶点都包含在最小生成树中

为了有效地为每次迭代选择最小权重边,该算法使用priority_queue来存储当前按最小边权重排序的顶点。 它还同时使用数组或其他适合考虑其存储的数据类型的数据结构来跟踪最小生成树。

该算法可用于各种场景,例如基于颜色、纹理或其他特征的图像分割。对于路线选择,例如寻找两点之间供送货卡车遵循的最短路径。

Kruskal(克鲁斯卡尔)算法

这是从连通的无向图中查找最小生成树的流行算法之一。这是一种贪心算法。算法工作流程如下:

  • 首先,它按权重对图的所有边进行排序
  • 然后开始迭代寻找生成树
  • 在每次迭代中,算法都会将下一个权重最低的边逐一添加,使得到目前为止所选取的边不会形成循环

该算法可以使用 DSU(不相交集)数据结构,跟踪图的连接组件来有效实现。适用场景,例如网络设计、集群和数据分析。

贪心算法

贪心算法被定义为一种通过做出决策来解决优化问题的方法,无论最终结果如何,都会产生最明显和最直接的益处。 它适用于最小化或最大化导出所需解决方案的情况。

对于使用贪婪方法解决的问题,它必须遵循几个主要特征:

  • 有一个有序的资源列表(利润、成本、价值等)
  • 获取所有资源的最大值(最大利润、最大价值等)。
  • 例如,在分数背包问题中,首先根据可用容量取最大值/重量。

贪心算法是一种用于优化问题的方法,其目标是在每个阶段做出局部最优选择,以期找到全局最优值。 之所以称为“贪婪”,是因为它试图通过在每一步中做出最佳选择来找到最佳解决方案,而不考虑未来的步骤或当前决策的后果。

常见用例如:调度和资源分配、最小生成树、硬币找零问题、霍夫曼编码。

所有贪心算法都遵循一个基本结构:

  • 声明空结果 = 0
  • 我们进行贪心选择来选择,如果选择可行则将其添加到最终结果中
  • 返回结果

Prim 最小生成树算法

Python示例:

import sysclass Graph():def __init__(self, vertices):self.V = verticesself.graph = [[0 for column in range(vertices)]for row in range(vertices)]def printMST(self, parent):print("Edge \tWeight")for i in range(1, self.V):print(parent[i], "-", i, "\t", self.graph[i][parent[i]])def minKey(self, key, mstSet):min = sys.maxsizefor v in range(self.V):if key[v] < min and mstSet[v] == False:min = key[v]min_index = vreturn min_indexdef primMST(self):key = [sys.maxsize] * self.Vparent = [None] * self.V key[0] = 0mstSet = [False] * self.Vparent[0] = -1 for cout in range(self.V):u = self.minKey(key, mstSet)mstSet[u] = Truefor v in range(self.V):if self.graph[u][v] > 0 and mstSet[v] == False \and key[v] > self.graph[u][v]:key[v] = self.graph[u][v]parent[v] = uself.printMST(parent)

C++示例、Java示例、C#示例、JavaScript示例

Kruskal 最小生成树算法

Python示例、C++示例、Java示例、C#示例、JavaScript示例

项目:Kruskal算法生成对抗网络和强化学习数据集

参阅一:亚图跨际
参阅二:亚图跨际

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/591696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2022 软件测试选择题【太原理工大学】

目前题型如下&#xff0c;选择题 20 个 * 2 分&#xff0c;填空题 10 个 * 1 分&#xff0c;判断题 10 个 * 1 分&#xff0c;简答题 5 分 * 4 个&#xff0c;大题 20 分。以上都是老师说的&#xff0c;先看选择题。 一、选择题 1. 以下关于软件测试的叙述不正确的是&#xff0…

x-cmd pkg | lazygit - git 命令的终端 UI

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 lazygit 由 Jesse Duffield 于 2018 年使用 Go 语言构建的 git 终端交互式命令行工具&#xff0c;旨在终端界面中便捷管理 git 存储库。 首次用户 使用 x lazygit 即可自动下载并使用 在终端运行 eval "$(curl …

一站式指南:了解和绘制项目基线

项目基线是记录下来的一个起点&#xff0c;用来建立项目的绩效指标&#xff0c;并将其与之前的基准进行比较。对于所有团队而言&#xff0c;基线是进行有效绩效测量的必需工具。 项目成功的每一步都要依赖于一个坚固的基线。研究表明&#xff0c;在48个大型项目中&#xff0c;…

2022年全国职业院校技能大赛网络安全竞赛试题1-10-B模块总结

前言 结尾有对22年国赛题型总结 试题1模块B 网络安全事件响应、数字取证调查和应用安全 B-1任务一&#xff1a;主机发现与信息收集 *任务说明&#xff1a;仅能获取Server1的IP地址 1.通过渗透机Kali2.0对靶机场景进行TCP同步扫描 (使用Nmap工具)&#xff0c;并将该操作使用…

向爬虫而生---Redis 基石篇2 <拓展Hash>

前言: 延续上一篇向爬虫而生---Redis 基石篇 &#xff1c;拓展str&#xff1e;-CSDN博客 这个章节拓展一下hash的玩法,主要是要挖一挖 ,啥时候用它最合适;让他并不是一无是处.. 正文: 哈希&#xff08;Hash&#xff09;数据结构是Redis中的一种常用的数据类型。它是一个键值…

图神经网络与分子表征:番外——等变术语

本文重点参考了这篇博客&#xff1a;https://nb.bohrium.dp.tech/detail/1342 看论文时经常会遇到 SE3, SO3, O3 等字样&#xff0c;云里雾里&#xff0c;难以理解。本文对这些术语进行集中解释。 文章目录 数学术语GNN 设计要求平移不变性排列、置换不变性镜面等变性旋转等变…

【热点】程序员会不会被人工智能取代?

前两周&#xff0c;ZA技术社区举办了一场主题为“未来&#xff0c;程序员职业会消失吗&#xff1f;”的Geek圆桌派&#xff0c;我作为业务研发的代表参加了此次直播。由于直播时间有限&#xff0c;未能充分表达我的观点&#xff0c;故写此篇博客进行详述。另一方面&#xff0c;…

bootstrap5开发房地产代理公司Hamilton前端页面

一、需求分析 房地产代理网站是指专门为房地产行业提供服务的在线平台。这些网站的主要功能是连接房地产中介机构、房产开发商和潜在的买家或租户&#xff0c;以促成买卖或租赁房产的交易。以下是一些常见的房地产代理网站的功能&#xff1a; 房源发布&#xff1a;房地产代理网…

双语!性能优越|融合黏菌和差分变异的量子哈里斯鹰算法SDMQHHO

前面的文章里卡卡介绍了哈里斯鹰优化算法(Harris Hawks Optimization, HHO).HHO是 Heidari等[1]于2019年提出的一种新型元启发式算法&#xff0c;设计灵感来源于哈里斯鹰在捕食猎物过程中的合作行为以及突然袭击的狩猎风格&#xff0c;具有需调参数少、原理简单易实现、局部搜索…

C语言朴素算法

#include <stdio.h> #include <string.h>// 朴素算法&#xff0c;用于字符串匹配 void naiveMatch(char* text, char* pattern) {int textLength strlen(text); // 计算文本串长度int patternLength strlen(pattern); // 计算模式串长度for …

XAMPP for Windows 8.0.30, 8.1.25 8.2.12

8.0.30 / PHP 8.0.30Whats Included? md5sha1Download (64 bit)144 Mb8.1.25 / PHP 8.1.25Whats Included? md5sha1Download (64 bit)148 Mb8.2.12 / PHP 8.2.12Whats Included? md5sha1Download (64 bit)149 Mb

单挑力扣(LeetCode)SQL题:180. 连续出现的数字(难度:中等)

题目&#xff1a;180. 连续出现的数字 &#xff08;通过次数124,862 | 提交次数258,838&#xff0c;通过率48.24%&#xff09; 表&#xff1a;Logs ---------------------- | Column Name | Type | ---------------------- | id | int | | num | var…

linux 的直接direct io

目录 什么是 Direct IO java 支持 使用场景 数据库 反思 在之前的文章零拷贝基础上&#xff0c;有一个针对那些不需要在操作系统的 page cache 里保存的情况&#xff0c;即绕过 page cache&#xff0c;对于 linux 提供了 direct io 的功能。 https://blog.csdn.net/zlpzl…

面试高频算法专题:数组的双指针思想及应用(算法村第三关白银挑战)

所谓的双指针其实就是两个变量&#xff0c;不一定真的是指针。 快慢指针&#xff1a;一起向前走对撞指针、相向指针&#xff1a;从两头向中间走背向指针&#xff1a;从中间向两头走 移除值为val的元素 题目描述 27. 移除元素 - 力扣&#xff08;LeetCode&#xff09; 给你…

常见负载均衡方案分析

负载均衡是分布式系统设计中的一个核心概念&#xff0c;它能够帮助系统合理分配负载&#xff0c;提高资源利用率&#xff0c;提升系统的伸缩性和可用性。以下是一些常见的负载均衡策略及其应用场景、优缺点&#xff1a; 1. 轮询&#xff08;Round Robin&#xff09; 应用场景…

RobotFrameWork自动化测试框架如何搭建环境?

前言 Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性&#xff0c;支持关键字驱动&#xff0c;可以同时测试多种类型的客户端或者接口&#xff0c;可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发&#xff08;ATDD&#xff…

一篇文章掌握系统架构的演变和常见微服务框架

目录 前言 一、系统架构的演变 1、单体应用架构 优点&#xff1a; 缺点&#xff1a; 2、垂直应用架构 优点&#xff1a; 缺点&#xff1a; 3、分布式SOA架构 3.1 什么是SOA 3.2 SOA架构 优点&#xff1a; 缺点&#xff1a; 4、微服务架构 优点&#xff1a; 缺点…

2024年01月数据库流行度最新排名

点击查看最新数据库流行度最新排名&#xff08;每月更新&#xff09; 2024年01月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多&#xff0c;这个数据库就被认为越受欢迎。这是一个领先指标。原始数…

《Linux系列》Linux磁盘MBR分区扩容

文章目录 Linux磁盘MBR分区扩容1.前言2.控制台磁盘扩容3.分区扩容3.1 fdisk3.2 lsblk3.3 扩容分区 4.扩容文件系统4.1 df4.2 扩容文件系统 Linux磁盘MBR分区扩容 1&#xff09;参考阿里云扩容分区文档&#xff0c;整理MBR分区扩容 2&#xff09;本文档适用于MBR分区(fdisk -lu查…

springboot 双数据源配置

1:pom <!--SpringBoot启动依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</group…