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

那里做网站好注册网站云空间

那里做网站好,注册网站云空间,wordpress调用函数,小兔自助建站戴克斯特拉算法#xff08;英语#xff1a;Dijkstras algorithm#xff09;#xff0c;又称迪杰斯特拉算法、Dijkstra算法#xff0c;是由荷兰计算机科学家艾兹赫尔戴克斯特拉在1956年发现的算法。 算法过程#xff1a; 1.首先设置开始节点的成本值为0#xff0c;并将…戴克斯特拉算法英语Dijkstras algorithm又称迪杰斯特拉算法、Dijkstra算法是由荷兰计算机科学家艾兹赫尔·戴克斯特拉在1956年发现的算法。 算法过程 1.首先设置开始节点的成本值为0并将开始节点放入检测列表中。 2.将检测列表中的所有点按到目标点所需的成本值排序选择成本最小的节点作为当前节点并将其移出检测列表。 3.将当前点周围的点中不包含在检测列表中的点加入到检测列表将周围点加入到已检测列表中。 4.更新检测列表中的节点到当前节点的成本值。 5.重复234直到找到目标点。 代码实现 public class Dijkstra : FindPathAlgorithm {public Dijkstra(int[,] mapData, int xCount, int zCount) : base(mapData, xCount, zCount){}public override ListVector2Int FindPath(Vector2Int startPos, Vector2Int goalPos){DataNode dataNode this.DijkstraFind(startPos, goalPos);if (dataNode null){Debug.LogError(寻路有误请检查参数是否正确);return null;}return Utils.GetPath(dataNode);}DataNode DijkstraFind(Vector2Int startPos, Vector2Int goalPos){//存储要检测的点ListDataNode frontier new ListDataNode();//存储已经检测的点ListVector2Int reached new ListVector2Int();DataNode startNode new DataNode(startPos, null);startNode.gCost 0;frontier.Add(startNode);reached.Add(startPos);while (frontier.Count 0){DataNode currentNode GetLowestgCostNode(frontier);frontier.Remove(currentNode);if (currentNode.pos goalPos){Debug.Log(完成);return new DataNode(goalPos, currentNode.parent);}ListDataNode neighbors GetNeighbors(currentNode.pos, reached);foreach (DataNode neighbourNode in neighbors){if (!frontier.Contains(neighbourNode)){neighbourNode.parent currentNode;frontier.Add(neighbourNode);}reached.Add(neighbourNode.pos);}this.UpdateCost(frontier, currentNode);}return null;}//更新成本值void UpdateCost(ListDataNode nodes, DataNode currentNode){for (int i 0; i nodes.Count; i){int newCost currentNode.gCost CalculateDistanceCost(nodes[i].pos, currentNode.pos);if (nodes[i].gCost newCost){nodes[i].gCost newCost;}}}ListDataNode GetNeighbors(Vector2Int current, ListVector2Int reached){ListDataNode neighbors new ListDataNode();for (int i 0; i Utils.pointDir.Count; i){Vector2Int neighbor current Utils.pointDir[i];if (this.IsCanAdd(neighbor, reached)){neighbors.Add(new DataNode(neighbor, null));}}return neighbors;}bool IsCanAdd(Vector2Int current, ListVector2Int reached){if (reached.Contains(current))return false;if (current.x 0 current.y 0 current.x MapData.m_MapData.GetLength(1) current.y MapData.m_MapData.GetLength(0)){//如果是障碍物则不能被Addif (MapData.m_MapData[current.y, current.x] 1){return false;}return true;}return false;}private int CalculateDistanceCost(Vector2Int a, Vector2Int b){return Mathf.Abs(a.x - b.x) Mathf.Abs(a.y - b.y);}private DataNode GetLowestgCostNode(ListDataNode pathNodeList){DataNode lowestFCostNode pathNodeList[0];for (int i 1; i pathNodeList.Count; i){if (pathNodeList[i].gCost lowestFCostNode.gCost){lowestFCostNode pathNodeList[i];}}return lowestFCostNode;} } 结果 参考链接 Pathfinding in Unity - Part3: Dijkstra Algorithm Theory (youtube.com) Pathfinding in Unity - Part4: Dijkstra Algorithm Implementation (youtube.com) How Dijkstras Algorithm Works (youtube.com) 戴克斯特拉算法 - 维基百科自由的百科全书 (wikipedia.org)
http://www.w-s-a.com/news/660378/

相关文章:

  • 南京江宁网站建设大学高校网站建设栏目
  • 模板网站建设明细报价表做网站第一
  • 公司网站建设系统软件开发 上海
  • 怎么让公司建设网站固安县建设局网站
  • 360免费建站官网入口手机网站建设设计
  • 商城网站建站系统dw如何做网页
  • 网站建设的公司收费我有网站 怎么做淘宝推广的
  • 网站建设策划书事物选题手机兼职app
  • html5 微网站模版wordpress博客速度很慢
  • 怎么做五个页面网站网络推广如何收费
  • 上虞宇普电器网站建设江西建筑人才网
  • 在吗做网站商城一个网站需要服务器吗
  • 先做网站再备案吗中山微网站建设报价
  • 树莓派可以做网站的服务器吗网站建设与设计ppt
  • 网站访问速度分析网站怎么做让PC和手机自动识别
  • 网站建设要考西宁网站建设多少钱
  • 网站开发公司东莞网站推广计划书具体包含哪些基本内容?
  • 素材天下网站惠州网站建设行业
  • 网站做a视频在线观看网站天津建站
  • 自己做的网站怎么链接火车头采集一个网站可以做几级链接
  • 济南网站制作哪家专业做网站怎样投放广告
  • 辽宁网站推广短视频运营培训学费多少
  • 拼多多网站怎么做翻译 插件 wordpress
  • 做网站运营的职业生涯规划wordpress分类显示图片
  • 网站建设与制作总结沈阳百度广告
  • 网站管理系统 手机会员制网站搭建wordpress
  • 做物品租赁网站清新wordpress主题
  • 优秀专题网站家居企业网站建设市场
  • 中山市有什么网站推广wordpress轻应用主机
  • 洗头竖鞋带名片改良授权做网站不贵整个世界