文心一言 VS 讯飞星火 VS chatgpt (64)-- 算法导论6.5 3题

文心一言 VS 讯飞星火 VS chatgpt (64)-- 算法导论6.5 3题

三、要求用最小堆实现最小优先队列,请写出 HEAP-MINIMUM、HEAP-EXTRACT-MIN、HEAP DECREASE-KEY 和 MIN-HEAP-INSERT 的伪代码。

文心一言:

以下是使用最小堆实现最小优先队列的 HEAP-MINIMUM、HEAP-EXTRACT-MIN、HEAP-DECREASE-KEY 和 MIN-HEAP-INSERT 的伪代码:

// 初始化最小堆  
min_heap = []  // 插入元素到最小堆  
def min_heap_insert(element):  min_heap.append(element)  // 将新元素上移直到其满足堆的性质  heapify_up(len(min_heap) - 1)  // 提取最小元素并保持最小堆性质  
def min_heap_extract_min():  if len(min_heap) == 0:  return None  if len(min_heap) == 1:  return min_heap.pop()  min_value = min_heap[0]  min_heap[0] = min_heap.pop()  heapify_down(0)  return min_value  // 修改元素值并保持最小堆性质  
def min_heap_decrease_key(element, new_value):  min_heap[min_heap.index(element)] = new_value  heapify_up(min_heap.index(element))  // 上移元素直到其满足堆的性质  
def heapify_up(index):  parent_index = (index - 1) // 2  if parent_index >= 0 and min_heap[index] < min_heap[parent_index]:  min_heap[index], min_heap[parent_index] = min_heap[parent_index], min_heap[index]  heapify_up(parent_index)  // 下移元素直到其满足堆的性质  
def heapify_down(index):  left_child_index = 2 * index + 1  right_child_index = 2 * index + 2  min_child_index = index  if left_child_index < len(min_heap) and min_heap[left_child_index] < min_heap[min_child_index]:  min_child_index = left_child_index  if right_child_index < len(min_heap) and min_heap[right_child_index] < min_heap[min_child_index]:  min_child_index = right_child_index  if min_child_index != index:  min_heap[index], min_heap[min_child_index] = min_heap[min_child_index], min_heap[index]  heapify_down(min_child_index)

这些函数实现了最小优先队列的基本操作。其中,min_heap_insert 插入元素到最小堆中,min_heap_extract_min 提取最小元素并保持最小堆性质,min_heap_decrease_key 修改元素值并保持最小堆性质,heapify_up 和 heapify_down 分别是上移和下移元素直到其满足堆的性质的辅助函数。

在这里插入图片描述

在这里插入图片描述

讯飞星火:

  1. HEAP-MINIMUM 伪代码:
function HEAP_MINIMUM(heap, size):if size == 0:return NoneminValue = heap[0]for i in range(1, size):if heap[i] < minValue:minValue = heap[i]return minValue
  1. HEAP-EXTRACT-MIN 伪代码:
function HEAP_EXTRACT_MIN(heap, size):if size == 0:return NoneminValue = heap[0]maxIndex = 0for i in range(1, size):if heap[i] < minValue:minValue = heap[i]maxIndex = iif maxIndex != 0:heap[0], heap[maxIndex] = heap[maxIndex], heap[0]HEAP_DECREASE_KEY(heap, maxIndex, minValue)return minValue
  1. HEAP DECREASE-KEY 伪代码:
function HEAP_DECREASE_KEY(heap, index, newValue):while index > 0 and heap[(index - 1) // 2] > newValue:heap[(index - 1) // 2] = heap[index]index = (index - 1) // 2HEAP_STORE(heap, index, newValue)
  1. MIN-HEAP-INSERT 伪代码:
function MIN_HEAP_INSERT(heap, size, value):if size == heap.length:heap = resizeArray(heap, size * 2)i = sizeHEAP_STORE(heap, i, value)j = iwhile j > 0 and HEAP_EXTRACT_MIN(heap, j) > value:HEAP_STORE(heap, j, heap[(j - 1) // 2])j = (j - 1) // 2

在这里插入图片描述

在这里插入图片描述

360智脑:

HEAP-MINIMUM(root):

if root is empty or root.key == minimumKey: return None minNode = heap[0] heap.pop() return minNode 

HEAP-EXTRACT-MIN(root):

if root is None: return None minNode = root heap.insert(root) return minNode 

HEAP DECREASE-KEY(root):

if root is None: return None minNode = root while minNode.right: minNode = minNode.right heap.decreaseKey(minNode.right) heap.decreaseKey(minNode) return minNode 

MIN-HEAP-INSERT(root):

if root is None: return None minNode = root while not minNode.left and not minNode.right: minNode = minNode.left heap.insert(minNode) heap.decreaseKey(minNode) return minNode

在这里插入图片描述

在这里插入图片描述

chatglm:

以下是使用最小堆实现最小优先队列的伪代码:

HEAP-MINIMUM(heap, n):  // 在最小堆中找到最小的元素  // heap 是堆,n 是元素个数  i ← n/2  if i < 0 then return null  j ← 2*i  if j < n and heap[j] < heap[i] then i ← j  if j < n and heap[j+1] < heap[i] then i ← j+1  return heap[i]
HEAP-EXTRACT-MIN(heap, n):  // 从最小堆中取出最小的元素  // heap 是堆,n 是元素个数  result ← HEAP-MINIMUM(heap, n)  if result == null then return null  for i ← n-1 downto 1:  heap[i] ← heap[i+1]  heap[n] ← null  return result
HEAP-DECREASE-KEY(heap, n, i):  // 减小堆中第 i 个元素的优先级  // heap 是堆,n 是元素个数,i 是元素索引  if i < 0 or i >= n then return  j ← 2*i  if j < n and heap[j] >= heap[i] then return  heap[i] ← heap[j]  HEAP-DECREASE-KEY(heap, n, j)
MIN-HEAP-INSERT(heap, n, key):  // 将元素 key 插入最小堆中,返回新的元素个数  // heap 是堆,n 是元素个数,key 是元素值  if n == 0 then  heap ← [key]  n ← 1  return 1  i ← n/2  if key < heap[i] then i ← 1  heap[i] ← key  HEAP-DECREASE-KEY(heap, n, i)  return n  

这些伪代码函数可以通过编程语言的堆实现来实现最小优先队列。在这些函数中,HEAP-MINIMUM 函数用于在堆中查找最小元素,HEAP-EXTRACT-MIN 函数用于从堆中提取最小元素,HEAP-DECREASE-KEY 函数用于减小堆中某个元素的优先级,MIN-HEAP-INSERT 函数用于将元素插入到最小堆中并返回新的元素个数。使用这些函数,可以实现最小优先队列的插入、删除和查找操作。

在这里插入图片描述

在这里插入图片描述

通义千问:

下面是最小堆常用操作的伪代码:

HEAP-MINIMUM: 对堆顶元素进行比较,如果比堆底元素小,则将堆底元素替换为堆顶元素;否则,保持堆顶元素不变。

HEAP-EXTRACT-MIN: 取出堆顶元素,并将堆顶元素的父节点(如果存在)移动至其子节点中最小的一个。如果堆顶元素没有子节点,则将堆底元素移动至堆顶,并将堆底元素的父节点(如果存在)移动至其子节点中最小的一个。

HEAP-DECREASE-KEY: 对堆顶元素的键值进行比较,如果比堆底元素的键值小,则将堆底元素替换为堆顶元素;否则,保持堆顶元素不变。

MIN-HEAP-INSERT: 将元素插入堆中,并检查插入后的堆是否满足最小堆的性质。如果不满足,则对堆进行调整,直到满足最小堆的性质为止。

在这里插入图片描述

天工:

下面是使用最小堆实现最小优先队列的伪代码:

HEAP-MINIMUM:

1.如果堆为空,则返回 -1;

2.否则,取出堆顶元素 x,如果 x 大于等于 key,则返回 x;

3.否则,执行下面的步骤,直到找到一个元素 x 满足条件 x 大于等于 key:

a. 取出堆顶元素 y,将 y 替换为 x;

b. 执行 HEAP-EXTRACT-MIN。

HEAP-EXTRACT-MIN:

1.如果堆为空,则返回 -1;

2.否则,取出堆顶元素 x,将 x 替换为堆顶元素 y,并将 y 删除;

3.执行下面的步骤,直到堆为空:

a. 执行 HEAP-DECREASE-KEY。

HEAP-DECREASE-KEY:

1.如果堆为空,则返回 -1;

2.否则,取出堆顶元素 x,将 x 替换为堆顶元素 x 的下一个元素 y;

3.执行下面的步骤,直到堆为空:

a. 执行 HEAP-EXTRACT-MIN。

MIN-HEAP-INSERT:

1.如果堆为空,则将元素 x 插入堆中;

2.否则,取出堆顶元素 x,将元素 x 插入堆中,并将元素 x 替换为堆顶元素 y;

3.执行下面的步骤,直到堆中只有一个元素:

a. 执行 HEAP-EXTRACT-MIN。

在这里插入图片描述

chatgpt:

以下是使用最小堆实现最小优先队列的伪代码:

HEAP-MINIMUM(A):
返回 A[0] // A[0] 是最小堆中的最小元素

HEAP-EXTRACT-MIN(A):
如果 A.length < 1:
返回 错误(堆为空)
min = A[0] // 最小元素为根节点
A[0] = A[A.length - 1] // 将最后一个元素放到根节点
A.length = A.length - 1 // 去除最后一个元素
MIN-HEAPIFY(A, 0) // 保持最小堆的性质
返回 min

HEAP-DECREASE-KEY(A, i, key):
如果 key > A[i]:
返回 错误(新的键值大于当前键值)
A[i] = key // 更新键值
while i > 0 并且 A[PARENT(i)] > A[i]: // 如果父节点的键值大于当前节点的键值
交换 A[i] 和 A[PARENT(i)] // 交换节点和其父节点
i = PARENT(i) // 上移节点,继续检查

MIN-HEAP-INSERT(A, key):
A.length = A.length + 1 // 扩展堆的容量
A[A.length - 1] = +∞ // 将新节点设置为正无穷大
HEAP-DECREASE-KEY(A, A.length - 1, key) // 更新节点键值,保持最小堆的性质

其中,PARENT(i) 返回节点索引 i 的父节点索引,MIN-HEAPIFY(A, i) 用于保持最小堆的性质,将节点 i 向下调整以满足最小堆的条件。

在这里插入图片描述

总结

在这里插入图片描述

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

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

相关文章

chatgpt赋能Python-mac系统的python

在Mac系统上运行Python&#xff1a;一个简介 介绍 Python是一种流行的、易于学习的编程语言&#xff0c;被广泛用于各种用途&#xff0c;从数据分析到机器学习。如果您是Mac用户&#xff0c;那么您已经安装了Python&#xff0c;因为它是系统的一部分。本文将介绍如何在Mac系统…

微软 Copilot “杀疯了”,太刺激了...

1 刺激 这段时间真是太刺激了。 就在最近&#xff0c;微软宣布了 Copilots for Windows 11 以及其他一系列产品。作为AI助手&#xff0c;Windows Copilot将直接集成到Windows 11中&#xff0c;在所有应用和程序中都可使用&#xff0c;就像我们在Edge、Office程序和GitHub中看到…

GPT-4来了,计算机视觉科研,何去何从?

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【计算机视觉】微信技术交流群 作者&#xff1a;Mike Shou |&#xff08;已授权转载&#xff09;编辑&#xff1a;CVer https://zhuanlan.zhihu.com/p/616966879 最近上课被…

【chatGpt】关于websocket连接中对未授权的捕捉问题

目录 问题 有效提问 有效的细节提问 问题 一路上&#xff0c;通过简单的error进行判断弹出授权&#xff0c;会有很多乱弹的现象&#xff1a; &#xff08;1&#xff09;链路正常切换会断 &#xff08;2&#xff09;服务器没有启动会连接不上 &#xff08;3&#xff09;没…

Vscode 用MarkDown画流程图

效果图 start>start: 开始 input>inputoutput: 输入 operation>operation: 操作 condition>condition: 操作出错&#xff1f; output>inputoutput: 输出 error>operation: 请重新输入 end>end: 结束start->input input->operation operation->co…

chatgpt赋能python:Python画图设置背景颜色

Python画图设置背景颜色 在Python中使用Matplotlib和Seaborn等库来生成数据可视化图表非常方便。但是&#xff0c;这些图表默认使用白色背景。有时&#xff0c;我们需要在制作图表时更改背景颜色以匹配我们的主题或品牌标识。本文将介绍如何在Matplotlib和Seaborn中设置不同的…

chatgpt赋能Python-python3如何画图

Python3如何画图&#xff1f; Python是一种高级编程语言&#xff0c;它有着多种用途&#xff0c;包括数据分析和可视化。Python3是Python的最新版本&#xff0c;它具有更好的性能和易用性。在这篇文章中&#xff0c;我们将介绍如何使用Python3来画图&#xff0c;并探讨其优势和…

chatgpt赋能python:Python画图坐标轴大小

Python画图坐标轴大小 Python是一种广泛使用的编程语言&#xff0c;它在科学计算和可视化方面得到了广泛的应用。在可视化中&#xff0c;坐标轴的大小和比例对于展现数据的真实性和清晰性至关重要。在本文中&#xff0c;我们将介绍如何使用Python画图坐标轴大小&#xff0c;并…

“烧钱”的大模型:初探成本拆解与推理优化方法

编者按&#xff1a;大模型的成本问题一直以来是大家重点关注的问题&#xff0c;本文重点讨论了训练大型语言模型&#xff08;LLMs&#xff09;需要的成本&#xff0c;并简要介绍什么是LLM以及一些用于优化大模型推理表现的技术。 虽然很难准确预测LLMs未来会怎么发展&#xff0…

Spring Cloud 优惠最后 1 天!

大家好&#xff0c;我是栈长。 关注了一段时间公众号的小伙伴都知道&#xff0c;栈长的 Spring Cloud 微服务课程每月都会给小伙伴搞一波活动。 61活动来了&#xff0c;很多小伙伴都在等 61 的活动&#xff0c;这次活动&#xff0c;福利全新升级&#xff0c;千万不要错过&#…

微信公众号文章是否违规怎么检测?

在写文章的时候&#xff0c;会遇到以下3种情况&#xff1a; 1、你所编辑的图文消息可能含有敏感内容&#xff0c;你可以继续保存或发布该图文消息&#xff08;发布等待时长约3-4小时&#xff09;&#xff0c;若保存或发布后&#xff0c;经核实含有敏感内容的&#xff0c;将可能…

如何发现并分析APP个人信息收集是否违规?

移动互联网的发展以及智能终端的兴起&#xff0c;手机已然成为了我们生活中不可或缺的“日用品”&#xff0c;各种手机APP开启霸屏模式&#xff0c;例如常见的支付APP、聊天APP、金融APP、交通APP等&#xff0c;这些APP虽然给我们生活带来了便利&#xff0c;但是其收集的用户信…

新闻稿的制作流程:从确定新闻稿目的到将其分发给媒体

对于任何希望向媒体和公众传达具有新闻价值的信息的组织来说&#xff0c;新闻稿都是必不可少的工具。精心制作的新闻稿可以帮助您宣传您的业务、产品或服务&#xff0c;并可以产生有价值的媒体报道。在本文中&#xff0c;我们将指导您完成新闻稿的制作过程&#xff0c;从确定新…

如何写新闻稿?写好新闻稿的技巧与步骤

新闻稿是传递新闻事件和信息的重要手段&#xff0c;是传媒工作中不可或缺的一部分。写好一篇新闻稿可以让受众了解更多信息&#xff0c;进一步提高他们的关注度。以下是一些写好新闻稿的技巧和步骤&#xff0c;帮助你有效地传达新闻。 1、确定新闻的核心信息 在开始写新闻稿之前…

怎么向新闻媒体投稿?新闻稿投稿渠道哪个比较好

在互联网众多媒体网站中&#xff0c;各大小中新闻媒体网站都拥有一定的权威性和知名度&#xff0c;作为网 媒&#xff0c;这些新闻网站相比纸类报刊更容易被大众网民接触&#xff0c;甚至有不少人还想联系网站将新闻或 者软文投放上去。当然了&#xff0c;如果是个人联系媒体…

国际学校入学考试MAP语法测试题真题讲解

本月&#xff0c;贝赛思各校区举行了四月的入学考试&#xff0c;部分校区采取了线上评估模式&#xff0c;而4月考试流程形式题型均与3月大同小异。 非常多的家庭会选择在中学阶段转入贝赛思&#xff0c;并且对国际学校了解的家长肯定对MAP测试不陌生&#xff0c;MAP测试既作为…

高考题改成IB试题,会是什么样子?

从2019年浙江高考语文卷的一篇现代文阅读说起的&#xff0c;振语看过了这道题和推文作者的解读后&#xff0c;一时兴起&#xff0c;就想着能不能把它改成一道IB考题&#xff0c;顺带着也把这篇选文细读评点了一番。 &#xff08;一&#xff09;高考试题再现&#xff1a; 这道高…

AI开始卷高考了,英语已被卷到134分??

文 | 天于刀刀 AI 真的太卷了&#xff01;不但模型之间互相卷&#xff0c;现在直接开始和人类学生一起卷高考了&#xff01; 近期&#xff0c;来自 CMU 两位学者提出的重构预训练模型&#xff08;reStructured Pre-training, RST&#xff09;在只有 GPT-3 十六分之一参数量的情…

第一试卷网(网站)

首先&#xff0c;站内涵盖了有语文&#xff0c;数学&#xff0c;英语&#xff0c;物理&#xff0c;化学&#xff0c;政治&#xff0c;历史&#xff0c;地理&#xff0c;生物等等的试卷&#xff0c;从小学到高三的都有非常的全面。 点开需要的试卷&#xff0c;显示资源还是比较新…

【CSDN|每日一练】小股炒股

目录 运行结果题目描述输入描述:输出描述:示例代码结语运行结果 题目描述 已知n天后的股票行情,现在已有的本金是m, 规定只能入手一次股票和抛售一次股票。 最大收益是? 输入描述: 第一行输入整数n,m。(1<=n<=1000,1<=m<=10000) 第二行输入n个整数表示某…