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

自己做的网站怎么样把里面的内容下载下来一二三年级手工折纸

自己做的网站怎么样把里面的内容下载下来,一二三年级手工折纸,什么网站做宣传好,开个网站卖机器怎么做#x1f525; 个人主页#xff1a;空白诗 文章目录 一、算法原理二、算法实现方法一#xff1a;Kahn算法方法二#xff1a;深度优先搜索#xff08;DFS#xff09;注释说明#xff1a; 三、应用场景四、总结 拓扑排序#xff08;Topological Sorting#xff09;是一种… 个人主页空白诗 文章目录 一、算法原理二、算法实现方法一Kahn算法方法二深度优先搜索DFS注释说明 三、应用场景四、总结 拓扑排序Topological Sorting是一种线性排序方法适用于有向无环图DAG, Directed Acyclic Graph它能够为图中的节点安排一个线性序列使得对于图中的每一条有向边(u, v)顶点u在序列中出现在顶点v之前。拓扑排序在许多实际应用中都有重要作用如任务调度、课程安排、编译依赖等。本文将详细介绍拓扑排序的原理、实现及其应用。 一、算法原理 拓扑排序的基本思想是 选择一个入度为0的节点将其输出到排序结果并从图中删除该节点及其关联的所有边。重复步骤1直到所有节点都被输出或者图中仍存在入度不为0的节点此时图中存在环无法进行拓扑排序。 常用的两种实现拓扑排序的方法是Kahn算法和深度优先搜索DFS。 二、算法实现 方法一Kahn算法 Kahn算法利用队列实现拓扑排序通过不断删除入度为0的节点来构建拓扑序列。 /*** Kahn算法实现拓扑排序* param {Object} graph - 图的邻接表表示* return {string[]} - 拓扑排序结果*/ function kahnTopologicalSort(graph) {const inDegree {}; // 记录每个节点的入度const queue []; // 存储入度为0的节点const result []; // 存储拓扑排序结果// 初始化入度表for (const node in graph) {inDegree[node] 0;}// 计算每个节点的入度for (const node in graph) {for (const neighbor of graph[node]) {inDegree[neighbor];}}// 将入度为0的节点加入队列for (const node in inDegree) {if (inDegree[node] 0) {queue.push(node);}}// 处理队列中的节点while (queue.length 0) {const node queue.shift(); // 取出队首节点result.push(node); // 将节点加入拓扑排序结果// 减少相邻节点的入度for (const neighbor of graph[node]) {inDegree[neighbor]--;// 如果相邻节点的入度为0加入队列if (inDegree[neighbor] 0) {queue.push(neighbor);}}}// 检查是否存在环if (result.length ! Object.keys(graph).length) {throw new Error(图中存在环无法进行拓扑排序);}return result; }// 示例 const graph {A: [C],B: [C, D],C: [E],D: [F],E: [H, F],F: [G],G: [],H: [] };console.log(kahnTopologicalSort(graph)); // 输出: [ A, B, D, C, E, F, H, G ]方法二深度优先搜索DFS DFS方法通过递归遍历图将访问过的节点存入栈中最终从栈顶依次取出节点构建拓扑序列。 /*** 深度优先搜索实现拓扑排序* param {Object} graph - 图的邻接表表示* return {string[]} - 拓扑排序结果*/ function dfsTopologicalSort(graph) {const visited new Set(); // 记录已访问的节点const stack []; // 存储拓扑排序结果/*** 递归函数DFS遍历节点* param {string} node - 当前节点*/function dfs(node) {if (visited.has(node)) return;visited.add(node); // 标记节点为已访问for (const neighbor of graph[node]) {dfs(neighbor); // 递归访问相邻节点}stack.push(node); // 当前节点处理完毕加入栈中}// 遍历所有节点进行DFSfor (const node in graph) {dfs(node);}return stack.reverse(); // 返回栈的逆序即拓扑排序结果 }// 示例 console.log(dfsTopologicalSort(graph)); // 输出: [ B, D, A, C, E, H, F, G ]注释说明 Kahn算法 inDegree记录每个节点的入度。queue存储入度为0的节点。result存储拓扑排序结果。初始化入度表并计算每个节点的入度。将入度为0的节点加入队列处理队列中的节点更新相邻节点的入度。最终检查是否存在环返回拓扑排序结果。 DFS方法 visited记录已访问的节点。stack存储拓扑排序结果。递归遍历节点将访问过的节点存入栈中最终返回栈的逆序。 三、应用场景 任务调度根据任务之间的依赖关系确定任务的执行顺序。课程安排根据课程的先修关系确定课程的学习顺序。编译依赖根据文件的依赖关系确定编译的顺序。数据处理根据数据的依赖关系确定处理的顺序。 四、总结 拓扑排序是一种用于有向无环图DAG的线性排序方法通过Kahn算法和DFS方法可以实现拓扑排序广泛应用于任务调度、课程安排、编译依赖和数据处理等场景。理解和掌握拓扑排序算法对于解决实际问题具有重要意义。
http://www.dnsts.com.cn/news/277657.html

相关文章:

  • 国内知名网站重庆市建设执业注册中心网站
  • 男男床做第一次视频网站北海手机网站制作
  • 网站推广的技巧和方法漯河网站建设zrgu
  • 网站建设桔子科技专业的设计网站建设
  • 建设一个网站需要哪些费用吗网站备案准备资料
  • 金融网站建设方案ppt成都物流网站建设
  • 网站制作公司网免费精准客户软件
  • 做网站优化推广贵港免费的网站建设
  • 海盐网站建设wordpress不停刷y
  • 网站开发需要的编程软件有哪些房地产app
  • 广东智慧团建网站登录新手这样开办公司
  • 短视频网站如何做推广手机端公司网站怎么做
  • 网站关键词代码怎么做增加wordpress打开速度
  • 做房产必知的发布房源网站php网站后台登陆不上
  • 专业网站建设首选公司页面好看的教育类网站模板下载
  • 合肥 网站建设公司哪家好商业网站排名
  • 做网站怎么选云主机编程能干什么
  • 做网站要什么功能农村电商网站建设方案
  • 微站是什么网站建设步骤 高清教 程
  • 网站推广技巧有哪些?网站开发+自动生成缩略图
  • 校园二手物品交易网站怎么做wordpress升级设置
  • 福州企业网站建设推广黑龙江省和城乡建设厅网站
  • 做网站客源建筑公司网站功能表
  • 大学电子系的建设网站的方案永久免费制作网页
  • 深圳网站建设网站制作网站设计兰州seo优化公司
  • 广东装饰公司网站建设扬州网站建设文章
  • 网站运营及推广方案网站开发收费标准文档
  • wordpress二级域名做站群无锡做网站设计的公司
  • dede网站文档不能更新网站搜索引擎优化的步骤
  • 网站建设与管理自考本朝阳凌源网站建设