做网站的公司好坑啊金融网站开发文档下载

diannao/2025/10/13 11:52:36/文章来源:
做网站的公司好坑啊,金融网站开发文档下载,网络课程网站模板,网站域名怎么缴费A*算法和Dijkstra算法是两种常用的路径搜索算法#xff0c;用于在图形结构中寻找最短路径。它们都属于单源最短路径算法#xff0c;可以用于解决各种寻路问题。 A算法是一种启发式搜索算法#xff0c;同时考虑了实际移动代价和估计距离代价#xff0c;通过估计代价来指导搜… A*算法和Dijkstra算法是两种常用的路径搜索算法用于在图形结构中寻找最短路径。它们都属于单源最短路径算法可以用于解决各种寻路问题。 A算法是一种启发式搜索算法同时考虑了实际移动代价和估计距离代价通过估计代价来指导搜索方向并选择最优的路径。A算法通过估价函数值 f(n) g(n) h(n) 来评估节点的优先级其中 g(n) 是实际移动代价h(n) 是从当前节点到目标节点的估计代价。A算法使用优先队列通常是最小堆来管理待处理的节点每次选择具有最小 f(n) 值的节点进行扩展。A算法在最优条件下即 h(n) 函数是准确的保证能够找到最短路径。 Dijkstra算法是一种经典的图搜索算法通过不断选择最短路径的节点进行扩展逐步确定从起点到达其他节点的最短路径。Dijkstra算法使用一个距离数组来记录起始节点到每个节点的最短距离通过选择当前距离最小的节点进行扩展更新与该节点相邻节点的距离值。Dijkstra算法在没有负权边的情况下保证能够找到最短路径。 总结A*算法通过使用估计函数来指导搜索方向具有较高的效率和准确性特别适用于路径搜索问题。Dijkstra算法是一种经典的最短路径算法适用于图中存在负权边但不能有负权环的场景。根据实际情况选择合适的算法可以高效地寻找最短路径。 A*路径搜索算法的完整代码 using System; using System.Collections.Generic;public class AStarPathfinding {// 定义节点类public class Node{public int x;public int y;public bool isWalkable;public ListNode neighbors;public Node parent;public int gCost;public int hCost;public Node(int x, int y, bool isWalkable){this.x x;this.y y;this.isWalkable isWalkable;neighbors new ListNode();}public int fCost { get { return gCost hCost; } }}// 寻找路径public static ListNode FindPath(Node startNode, Node endNode){ListNode openSet new ListNode();HashSetNode closedSet new HashSetNode();openSet.Add(startNode);while (openSet.Count 0){Node currentNode openSet[0];for (int i 1; i openSet.Count; i){if (openSet[i].fCost currentNode.fCost || openSet[i].fCost currentNode.fCost openSet[i].hCost currentNode.hCost){currentNode openSet[i];}}openSet.Remove(currentNode);closedSet.Add(currentNode);if (currentNode endNode){return GeneratePath(startNode, endNode);}foreach (Node neighbor in currentNode.neighbors){if (!neighbor.isWalkable || closedSet.Contains(neighbor)){continue;}int newCostToNeighbor currentNode.gCost GetDistance(currentNode, neighbor);if (newCostToNeighbor neighbor.gCost || !openSet.Contains(neighbor)){neighbor.gCost newCostToNeighbor;neighbor.hCost GetDistance(neighbor, endNode);neighbor.parent currentNode;if (!openSet.Contains(neighbor)){openSet.Add(neighbor);}}}}return null;}// 计算两个节点之间的距离public static int GetDistance(Node nodeA, Node nodeB){int distanceX Math.Abs(nodeA.x - nodeB.x);int distanceY Math.Abs(nodeA.y - nodeB.y);return distanceX distanceY;}// 生成路径public static ListNode GeneratePath(Node startNode, Node endNode){ListNode path new ListNode();Node currentNode endNode;while (currentNode ! startNode){path.Add(currentNode);currentNode currentNode.parent;}path.Reverse();return path;}// 使用示例static void Main(string[] args){// 创建地图Node[,] map new Node[10, 10];for (int i 0; i 10; i){for (int j 0; j 10; j){bool isWalkable true; // 是否可以行走根据实际情况设置map[i, j] new Node(i, j, isWalkable);}}// 设置邻居节点for (int i 0; i 10; i){for (int j 0; j 10; j){Node node map[i, j];if (i 0){node.neighbors.Add(map[i - 1, j]);}if (i 9){node.neighbors.Add(map[i 1, j]);}if (j 0){node.neighbors.Add(map[i, j - 1]);}if (j 9){node.neighbors.Add(map[i, j 1]);}}}// 测试寻路Node startNode map[0, 0];Node endNode map[9, 9];ListNode path FindPath(startNode, endNode);if (path ! null){Console.WriteLine(Path Found:);foreach (Node node in path){Console.WriteLine(( node.x , node.y ));}}else{Console.WriteLine(No Path Found.);}} } using System; using System.Collections.Generic; public class AStarPathfinding {     // 定义节点类     public class Node     {         public int x;         public int y;         public bool isWalkable;         public ListNode neighbors;         public Node parent;         public int gCost;         public int hCost; public Node(int x, int y, bool isWalkable)         {             this.x x;             this.y y;             this.isWalkable isWalkable;             neighbors new ListNode();         } public int fCost { get { return gCost hCost; } }     } // 寻找路径     public static ListNode FindPath(Node startNode, Node endNode)     {         ListNode openSet new ListNode();         HashSetNode closedSet new HashSetNode();         openSet.Add(startNode); while (openSet.Count 0)         {             Node currentNode openSet[0];             for (int i 1; i openSet.Count; i)             {                 if (openSet[i].fCost currentNode.fCost || openSet[i].fCost currentNode.fCost openSet[i].hCost currentNode.hCost)                 {                     currentNode openSet[i];                 }             } openSet.Remove(currentNode);             closedSet.Add(currentNode); if (currentNode endNode)             {                 return GeneratePath(startNode, endNode);             } foreach (Node neighbor in currentNode.neighbors)             {                 if (!neighbor.isWalkable || closedSet.Contains(neighbor))                 {                     continue;                 } int newCostToNeighbor currentNode.gCost GetDistance(currentNode, neighbor);                 if (newCostToNeighbor neighbor.gCost || !openSet.Contains(neighbor))                 {                     neighbor.gCost newCostToNeighbor;                     neighbor.hCost GetDistance(neighbor, endNode);                     neighbor.parent currentNode; if (!openSet.Contains(neighbor))                     {                         openSet.Add(neighbor);                     }                 }             }         } return null;     } // 计算两个节点之间的距离     public static int GetDistance(Node nodeA, Node nodeB)     {         int distanceX Math.Abs(nodeA.x - nodeB.x);         int distanceY Math.Abs(nodeA.y - nodeB.y); return distanceX distanceY;     } // 生成路径     public static ListNode GeneratePath(Node startNode, Node endNode)     {         ListNode path new ListNode();         Node currentNode endNode; while (currentNode ! startNode)         {             path.Add(currentNode);             currentNode currentNode.parent;         } path.Reverse();         return path;     } // 使用示例     static void Main(string[] args)     {         // 创建地图         Node[,] map new Node[10, 10];         for (int i 0; i 10; i)         {             for (int j 0; j 10; j)             {                 bool isWalkable true;  // 是否可以行走根据实际情况设置                 map[i, j] new Node(i, j, isWalkable);             }         } // 设置邻居节点         for (int i 0; i 10; i)         {             for (int j 0; j 10; j)             {                 Node node map[i, j];                 if (i 0)                 {                     node.neighbors.Add(map[i - 1, j]);                 }                 if (i 9)                 {                     node.neighbors.Add(map[i 1, j]);                 }                 if (j 0)                 {                     node.neighbors.Add(map[i, j - 1]);                 }                 if (j 9)                 {                     node.neighbors.Add(map[i, j 1]);                 }             }         } // 测试寻路         Node startNode map[0, 0];         Node endNode map[9, 9];         ListNode path FindPath(startNode, endNode); if (path ! null)         {             Console.WriteLine(Path Found:);             foreach (Node node in path)             {                 Console.WriteLine(( node.x , node.y ));             }         }         else         {             Console.WriteLine(No Path Found.);         }     } } 在示例代码中我们定义了一个 AStarPathfinding 类实现A*路径搜索的相关逻辑。代码中包含了一个 Node 类用于表示节点对象以及 FindPath 函数用于寻找路径GetDistance 函数用于计算两个节点之间的距离GeneratePath 函数用于生成路径。 在 Main 函数中我们首先创建了一个 10x10 的地图设置各个节点的可行走状态并为每个节点设置邻居节点。然后我们以 (0, 0) 作为起始节点(9, 9) 作为目标节点调用 FindPath 函数寻找路径。如果找到了路径则输出路径上的节点坐标否则输出 No Path Found.。 请注意这只是一个简单的示例实际的路径搜索算法根据具体的场景和需求可能需要更复杂的实现。 Dijkstra算法的完整代码 using System; using System.Collections.Generic;public class DijkstraAlgorithm {// 定义节点类public class Node{public int id;public int distance;public bool visited;public ListEdge edges;public Node(int id){this.id id;this.distance int.MaxValue;this.visited false;this.edges new ListEdge();}}// 定义边类public class Edge{public Node source;public Node destination;public int weight;public Edge(Node source, Node destination, int weight){this.source source;this.destination destination;this.weight weight;}}// Dijkstra算法public static void Dijkstra(Node startNode){startNode.distance 0;PriorityQueueNode queue new PriorityQueueNode();queue.Enqueue(startNode);while (queue.Count 0){Node currentNode queue.Dequeue();currentNode.visited true;foreach (Edge edge in currentNode.edges){Node neighborNode edge.destination;int distance currentNode.distance edge.weight;if (distance neighborNode.distance){neighborNode.distance distance;if (!neighborNode.visited){queue.Enqueue(neighborNode);}}}}}// 示例用法public static void Main(){// 创建节点Node nodeA new Node(0);Node nodeB new Node(1);Node nodeC new Node(2);Node nodeD new Node(3);// 创建边Edge edgeAB new Edge(nodeA, nodeB, 2);Edge edgeAC new Edge(nodeA, nodeC, 4);Edge edgeBC new Edge(nodeB, nodeC, 1);Edge edgeCD new Edge(nodeC, nodeD, 3);// 添加边到节点的边列表nodeA.edges.Add(edgeAB);nodeA.edges.Add(edgeAC);nodeB.edges.Add(edgeBC);nodeC.edges.Add(edgeCD);// 运行Dijkstra算法Dijkstra(nodeA);// 输出最短距离Console.WriteLine(Shortest distance from nodeA to nodeD: nodeD.distance);} } 这个代码示例创建了一组示例节点和边然后运行Dijkstra算法来找到从起点到终点的最短路径。在这个示例中节点使用id来唯一标识边包含源节点目标节点和权重。Dijkstra算法使用优先队列来管理待处理的节点通过不断选择最短距离的节点进行扩展更新相邻节点的距离值。最后输出从起点到终点的最短距离。 请注意这只是一个简单的示例实际使用时可能需要根据具体情况进行修改和扩展。

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

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

相关文章

人设生成器网站深圳交易平台网站开发

异常值分析是检验数据是否有录入错误以及含有不合常理的数据。忽视异常值的存在是十分危险的,不加剔除地把异常值包括进数据的计算分析过程中,对结果会产生不良影响;重视异常值的出现,分析其产生的原因,常常成为发现问…

网站浮动qq网站加入购物车的代码

一个好的程序员必须要为自己写出来的代码执行效率负责。并非仅仅实现了功能代码就完事了。很多工作一两年的程序员都还仅是处于实现功能代码为荣的阶段,不会过多去思考如何提高代码的执行效率。有的人认为是自己的能力就这样,没有多余的能力去思考这些额…

百度可以建网站吗南宁市网站建设价格

一、麒麟系统关闭安全限制: 麒麟关闭kysec 安全模块: - vim /etc/default/grub - securitykysec” 修改为“ security ” - update-grub - reboot - 查询状态 getstatus 如果不关闭安全限制可能会无法安装下载东西。 二、设置ssh密钥VsCode远程虚拟机…

网站开发所以浏览器兼容模式菏泽建设信息网官网

Vdbench是Oracle编写的一款应用广泛的存储性能测试工具,既支持块设备的性能测试,也支持文件系统性能测试。Vdbench使用java编写,兼容linux和windows的操作系统,使用方便。1、Vdbench使用及结果参看使用vdbench时需要先安装java的j…

盐城做网站哪家最好app网站排名

目录 前言 一、编程规范的作用 二、规范的三种形式 三、规范的内容 1. 基本原则 原则1-1 原则1-2 原则1-3 原则1-4 原则1-5 原则1-6 原则1-7 2. 布局 规则2-1-1 规则2-1-2 规则2-1-3 规则2-1-4 规则2-1-5 规则2-1-6 规则2-2-1 规则2-2-2 规则2-2-3 建议2…

个人网站注册费用家在深圳歌词

企业绩效评价体系是指由一系列与绩效评价相关的评价制度、评价指标体系、评价方法、评价标准以及评价机构等形成的有机整体。企业的评价系统大致可以分为以下四个层次: 第一、岗位评价系统,主要针对不同岗位之间的评估。例如,企业中一般业务…

南京网站建设的公司永州网站建设公司推荐

seismicunix基础-声波波动方程推导 接触波动方程的研究人员都绕不开这个公式,这是在一维状态下波动方程 但是对于这个方程是怎样来的很少有人能说清楚,其中涉及到牛顿第二运动定律,物体的加速度与受到的力有关。 假设一维弦是大量紧密连接的质…

东莞网站设计建设网站做seo

在当前信息化时代,运营商的业务流程复杂度和多样性持续增长,多个系统、部门以及相关事务需要进行高效准确的调度。如何在这样的背景下,保证业务流程的顺畅,业务信息的实时传递以及业务决策的准确性,是业务运营面临的重…

中国建材工程建设协会网站带动画的网站模板

现在看明白了自己的距离,该从何处下手? 时间是怎么争取出来的?转载于:https://www.cnblogs.com/rosion/archive/2009/04/11/1433450.html

可信网站认证 服务中心陕西防疫最新政策

一、实验目的 通过该实验掌握较复杂的SQL 查询数据库方法&#xff0c;包括嵌套查询&#xff0c;相关与不相关子查询&#xff0c;连接的多种方法等。 二、实验原理 数据库查询是数据库的核心操作。SQL语言提供了SELECT语句进行数据库的查询。 SELECT[ALL|DISTINCT]<目标列表达…

搭建网站建设盘锦网站制作

一、有限状态机&#xff08;Finite State Machine&#xff0c;FSM&#xff09;是表示有限个状态及在这些状态之间的转移和动作等行为的数学模型&#xff0c;在计算机领域有着广泛的应用。FSM一个常见的应用就是用来负责Parser复杂的数据结构&#xff0c;比如解释URI协议&#x…

那个做兼职网站好规划电子商务网站流程

不要因为小小的失败而放弃大大的梦想&#xff0c;每一次坚持都是通向成功的一步。- 马克吐温 1. 定位 1.1 为何使用定位 我们先来看一个效果&#xff0c;同时思考一下用标准流或浮动能否实现类似的效果&#xff1f; 场景1: 某个元素可以自由的在一个盒子内移动位置&#xff0c…

特色的重庆网站推广有什么简单的网站项目

Web service 接口测试 一. web Service概念 Web service使用与平台和编程语言无关的方式进行通讯的一项技术, web service 是一个接口, 他描述了一组可以在网络上通过标准的XML消息传递访问的操作,它基于xml语言协议来描述要执行的操作或者要与另外一个web 服务交换数据, 一组…

网站三大标签修改注意事项网站怎么做seo、

前言&#xff1a;效果是鼠标移入空白区域&#xff0c;边框高亮的效果。效果是在douyin的渡一教育袁老师的课程学习到的&#xff0c;观看以后是一个实用的小特效。想看的可以平台查询&#xff0c;自己也学到了知识。 <!DOCTYPE html> <html lang"en"> <…

网站源码破解版高端网站建设费用

演示案例&#xff1a; 数据猜解-库表列数据&字典权限操作-文件&命令&交互式提交方法-POST&HEAD&JSON绕过模块-Tamper脚本-使用&开发分析拓展-代理&调试&指纹&风险&等级 #参考&#xff1a; https://www.cnblogs.com/bmjoker/p/9326258.…

南昌网站开发技术单位制作网站备案

本系列解析usbseiral ko的源码&#xff0c;记录主要函数&#xff0c;调用流程&#xff0c;USB一端和串口一端的注册流程&#xff0c;本节简介主要函数以及替换规则。 首先&#xff0c;usbserial是USB转串口驱动的一个基础模板&#xff0c;其中有许多默认函数&#xff0c;他们的…

网站发外链百度搜索排行

1 暴力破解简介 暴力破解&#xff1a; 蛮力攻击&#xff0c;又称为穷举攻击&#xff0c;或暴力破解&#xff0c;将密码进行逐个尝试验证&#xff0c;直到尝试出真正的密码为止。 暴力破解是指采用反复试错的方法并希望最终猜对&#xff0c;以尝试破解密码或用户名或找到隐藏的…

网站的seo 如何优化传奇网站怎么做

原文链接&#xff1a;https://medium.com/airbnb-engineering/avoiding-double-payments-in-a-distributed-payments-system-2981f6b070bbAirbnb一直在将其基础架构迁移到面向服务的体系结构(SOA)。 SOA具有许多优势&#xff0c;例如使开发人员能够专业化并具有更快迭代的能力。…

郑州汉狮做网站网络公司网站seo多少钱

Java微服务篇2——SpringCloud 1、微服务架构 1.1、单体应用架构 的⽤户量、数据量规模都⽐较⼩&#xff0c;项目所有的功能模块都放在一个工程中编码、 编译、打包并且部署在一个Tomcat容器中的架构模式就是单体应用架构&#xff0c;这样的架构既简单实 ⽤、便于维护&#…

投资网站策划wordpress 邮件插件

Linux renice命令介绍 renice命令在Linux中用于修改已经运行的进程的优先级。这个命令允许你改变一个已经运行的进程的调度优先级。如果我们给一个进程设置了更高的优先级&#xff0c;那么内核将为该进程分配更多的CPU时间。 Linux renice命令适用的Linux版本 renice命令在所…