文心一言 VS 讯飞星火 VS chatgpt (50)-- 算法导论6.2 2题
二、参考过程 MAX-HEAPIFY,写出能够维护相应最小堆的 MIN-HEAPIFY(A,i)的伪代码,并比较 MIN-HEAPIFY 与 MAX-HEAPIFY 的运行时间。
文心一言:
MIN-HEAPIFY(A, i)的伪代码如下:
1.将节点i及其子树中的最小元素交换到根节点i;
2.对于左子树,递归调用MIN-HEAPIFY(A, 2i);
3.对于右子树,递归调用MIN-HEAPIFY(A, 2i+1);
MAX-HEAPIFY(A, i)的伪代码如下:
1.将节点i及其子树中的最大元素交换到根节点i;
2.对于左子树,递归调用MAX-HEAPIFY(A, 2i);
3.对于右子树,递归调用MAX-HEAPIFY(A, 2i+1);
可以看出,MIN-HEAPIFY和MAX-HEAPIFY的操作非常相似,唯一的区别在于交换的元素不同。因此,它们的运行时间也应该是相似的。
在MIN-HEAPIFY和MAX-HEAPIFY中,每次递归调用都会将问题规模减半,因此它们的运行时间都是O(log n),其中n是数组A的长度。
但是,由于最小堆和最大堆的应用场景不同,它们的操作时间和操作细节也会有所不同。最小堆通常用于优先队列等需要快速找到最小元素的场景,而最大堆则通常用于某些算法中需要快速找到最大元素的场景。

讯飞星火:
MIN-HEAPIFY(A, i) 的伪代码如下:
1. 如果 A[i] < A[left(i)] 和 A[i] < A[right(i)],执行以下操作:
a. 将 A[i] 与 A[left(i)] 交换。
b. 将 i 更新为 left(i)。
2. 否则,如果 A[i] > A[left(i)] 且 A[i] > A[right(i)],执行以下操作:
a. 将 A[i] 与 A[right(i)] 交换。
b. 将 i 更新为 right(i)。
3. 如果 i = 0 或者 i = length(A),返回。
4. 否则,将 i 更新为 left(i)。
5. 在循环结束后,执行以下操作:
a. 将 A[length(A)/2] 与 A[0] 交换。
b. 从右到左遍历数组 A,对于每个元素 A[j],执行以下操作:
1. 如果 A[j] < A[left(j)],将 A[j] 与 A[left(j)] 交换。
2. 否则,将 j 更新为 left(j)。
为了比较 MIN-HEAPIFY 与 MAX-HEAPIFY 的运行时间,我们可以观察它们的时间复杂度。MAX-HEAPIFY 的时间复杂度为 O(log n),而 MIN-HEAPIFY 的时间复杂度也为 O(log n)。因此,在大多数情况下,它们的运行时间应该是相似的。但是,由于 MIN-HEAPIFY 需要处理较小的堆大小,所以在某些特殊情况下,MIN-HEAPIFY 可能比 MAX-HEAPIFY 更高效。

华为盘古:

360智脑:
伪代码如下所示:
MIN-HEAPIFY(A,i):
if A[i] < A[root]:
swap(A[i], A[root]);
min_index = i;
for j in range(i+1, len(A)):
if A[j] < A[root]:
swap(A[j], A[root]);
min_index = min_index(j);
heapify(A, root, min_index);
其中,heapify(A, root, min_index)是进行最大堆调整的函数。
MAX-HEAPIFY的时间复杂度为 O(log n),而MIN-HEAPIFY的时间复杂度也为O(log n),因此两者的时间复杂度相同。

chatglm:
MIN-HEAPIFY(A, i) 的伪代码如下:
// 初始化最小堆
init_min_heap(A, i)
// 循环遍历每个节点
for (int j = 2*i + 1; j < n; j = 2*j + 1) {
// 如果左子节点小于右子节点,则交换左子节点和当前节点
if (j < n - 1 && A[j] > A[j+1]) {
swap(A[j], A[j+1])
j = j + 1
}
// 如果当前节点小于或等于左右子节点,则无需交换
else {
break
}
}
// 调整最小堆
adjust_min_heap(A, i)
其中,init_min_heap 函数用于初始化最小堆,adjust_min_heap 函数用于调整最小堆。
与 MAX-HEAPIFY 相比,MIN-HEAPIFY 的运行时间更复杂。在最坏情况下,MIN-HEAPIFY 需要遍历整个堆,即需要执行 n-1 次交换操作。每次交换操作需要执行一次赋值操作和一次比较操作,因此总共需要执行 2(n-1) 次操作。
此外,调整最小堆的过程也需要执行 n-1 次操作。因此,MIN-HEAPIFY 的总运行时间为 O(n)。
在最好情况下,MIN-HEAPIFY 只需要执行一次交换操作,即当节点 i 的值已经是最小值时。此时,MIN-HEAPIFY 的运行时间为 O(log n)。
总的来说,MIN-HEAPIFY 的平均运行时间取决于堆的状态,无法简单地用 O(n) 或 O(log n) 来描述。

chatgpt:
下面是维护最小堆的 MIN-HEAPIFY(A, i) 的伪代码:
MIN-HEAPIFY(A, i)
smallest = i
left = 2 * i // 左子节点索引
right = 2 * i + 1 // 右子节点索引
if left ≤ heap_size[A] and A[left] < A[i]
smallest = left
else
smallest = i
if right ≤ heap_size[A] and A[right] < A[smallest]
smallest = right
if smallest ≠ i
swap A[i] and A[smallest]
MIN-HEAPIFY(A, smallest)
与 MAX-HEAPIFY 相比,MIN-HEAPIFY 的区别在于比较的对象是子节点中的最小值,而不是最大值。
关于 MIN-HEAPIFY 和 MAX-HEAPIFY 的运行时间比较,它们的运行时间都是相同的,都是 O(log n),其中 n 是堆的大小。这是因为在维护堆的过程中,每一次都会将一个节点的值向下调整到合适的位置,其中每个节点的向下调整过程的时间复杂度为 O(log n)。因此,无论是最小堆还是最大堆,维护堆的时间复杂度是相同的。

总结:
void minHeapify(int i) {
int l = left(i);
int r = right(i);
int smallest = i;
if (l <= heapSize && A[l] < A[smallest]) smallest = l;
if (r <= heapSize && A[r] < A[smallest]) smallest = r;
if (smallest != i) {
swap(A[i],A[smallest]);
minHeapify(smallest);
}
}
运行时间相同。
文心一言 VS 讯飞星火 VS chatgpt (50)-- 算法导论6.2 2题的更多相关文章
- 【对比】文心一言对飚ChatGPT实操对比体验
前言 缘由 百度[文心一言]体验申请通过 本狗中午干饭时,天降短信,告知可以体验文心一言,苦等一个月的实操终于到来.心中这好奇的对比心理油然而生,到底是老美的[ChatGPT]厉害,还是咱度娘的[文心 ...
- 【个人首测】百度文心一言 VS ChatGPT GPT-4
昨天我写了一篇文章GPT-4牛是牛,但这几天先别急,文中我测试了用GPT-4回答ChatGPT 3.5 和 Notion AI的问题,大家期待的图片输入也没有出现. 昨天下午百度发布了文心一言,对标C ...
- 文心一言,通营销之学,成一家之言,百度人工智能AI大数据模型文心一言Python3.10接入
"文心"取自<文心雕龙>一书的开篇,作者刘勰在书中引述了一个古代典故:春秋时期,鲁国有一位名叫孔文子的大夫,他在学问上非常有造诣,但是他的儿子却不学无术,孔文子非常痛心 ...
- 获取了文心一言的内测及与其ChatGPT、GPT-4 对比结果
百度在3月16日召开了关于文心一言(知识增强大语言模型)的发布会,但是会上并没现场展示demo.如果要测试的文心一言 也要获取邀请码,才能进行测试的. 我这边通过预约得到了邀请码,大概是在3月17日晚 ...
- 百度生成式AI产品文心一言邀你体验AI创作新奇迹:百度CEO李彦宏详细透露三大产业将会带来机遇(文末附文心一言个人用户体验测试邀请码获取方法,亲测有效)
目录 中国版ChatGPT上线发布 强大中文理解能力 智能文学创作.商业文案创作 图片.视频智能生成 中国生成式AI三大产业机会 新型云计算公司 行业模型精调公司 应用服务提供商 总结 获取文心一言邀 ...
- 阿里版ChatGPT:通义千问pk文心一言
随着 ChatGPT 热潮卷起来,百度发布了文心一言.Google 发布了 Bard,「阿里云」官方终于也宣布了,旗下的 AI 大模型"通义千问"正式开启测试! 申请地址:http ...
- 基于讯飞语音API应用开发之——离线词典构建
最近实习在做一个跟语音相关的项目,就在度娘上搜索了很多关于语音的API,顺藤摸瓜找到了科大讯飞,虽然度娘自家也有语音识别.语义理解这块,但感觉应该不是很好用,毕竟之前用过百度地图的API,有问题也找不 ...
- android用讯飞实现TTS语音合成 实现中文版
Android系统从1.6版本开始就支持TTS(Text-To-Speech),即语音合成.但是android系统默认的TTS引擎:Pic TTS不支持中文.所以我们得安装自己的TTS引擎和语音包. ...
- android讯飞语音开发常遇到的问题
场景:android项目中共使用了3个语音组件:在线语音听写.离线语音合成.离线语音识别 11208:遇到这个错误,授权应用失败,先检查装机量(3台测试权限),以及appid的申请时间(35天期限), ...
- 初探机器学习之使用讯飞TTS服务实现在线语音合成
最近在调研使用各个云平台提供的AI服务,有个语音合成的需求因此就使用了一下科大讯飞的TTS服务,也用.NET Core写了一个小示例,下面就是这个小示例及其相关背景知识的介绍. 一.什么是语音合成(T ...
随机推荐
- 小米手机抓取Log教程
当小米手机遇到任何系统下的较为严重的故障时(即此时系统还是基本正常运行的,只是某些功能实现出了问题),例如软件自动退出,SD卡自动卸载,电话无法拨出等等.可以请用户协助抓取log即系统运行日志,来发送 ...
- docker入门加实战—docker常见命令
docker入门加实战-docker常见命令 在介绍命令之前,先用一副图形象的展示一下docker的命令: 常见命令 docker的常见命令和文档地址如下表: 命令 说明 文档地址 docker pu ...
- 14. 从零开始编写一个wmproxy(代理,内网穿透等), HTTP文件服务器的实现过程及参数
用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP中的压缩gzip,deflate,brotli算法 项目 ++wmproxy++ gite: https://gitee.com/ ...
- JS个人总结(1)
1. html页面引入js文件优先使用引入外部js文件. 2. 如果在html页面里使用<script></script>,则把js内容放在html内容下面,也就是</b ...
- Nacos源码阅读心得
Nacos注册中心(1.4.1)源码解读心得 一丶Nacos介绍 Nacos是阿里巴巴推出的一款新开源项目,是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.它致力于帮助您发现.配置和 ...
- 关于IP我们需要知道的
IP 在这个数字世界中,互联网已成为我们生活的一部分.而在互联网的背后,网络知识如同一张巨大的蜘蛛网,将我们与世界各地的信息紧密联系在一起.其中,IP这个看似平凡的名词,却是支撑这个虚拟世界的重要基石 ...
- 鬼谷子的钱袋(lgP2320)
主要思路:二进制拆分. 先将 \(m\) 进行二进制拆分. 注意金币总数有限,也就是说拆分后可能会多出来一组.多出来的这组如果不是 \(2^n\) 就不需要考虑了,因为不会和前面的重复. 接下来考虑重 ...
- 【羚珑AI智绘营】分分钟带你拿捏SD中的色彩控制
导言 颜色控制一直是AIGC的难点,prompt会污染.img2img太随机- 今天带来利用controlnet,实现对画面颜色的有效控制.都说AIGC是抽卡,但对把它作为工具而非玩具的设计师,必须掌 ...
- 请教shell读写XML问题
请教shell读写XML问题 现有 123.xml文件,内容是:<?xml version="1.0" encoding="GBK"?><vi ...
- Langchain-Chatchat项目:4.2-P-Tuning v2使用的数据集
本文主要介绍P-tuning-v2论文中的5种任务,分别为Glue任务.NER任务.QA任务.SRL任务.SuperGlue任务,重点介绍了下每种任务使用的数据集. 一.Glue任务 GLUE ...