From 07f17e0e057e7207500bc4b6731afc0aa94723a6 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 14 四月 2026 09:44:08 +0800
Subject: [PATCH] #算法耗时优化
---
src/main/java/com/zy/common/utils/NavigateSolution.java | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/zy/common/utils/NavigateSolution.java b/src/main/java/com/zy/common/utils/NavigateSolution.java
index 8aaabe1..5dd839c 100644
--- a/src/main/java/com/zy/common/utils/NavigateSolution.java
+++ b/src/main/java/com/zy/common/utils/NavigateSolution.java
@@ -28,8 +28,8 @@
// Open琛ㄧ敤浼樺厛闃熷垪
public PriorityQueue<NavigateNode> Open = new PriorityQueue<NavigateNode>();
- //Close琛ㄧ敤鏅�氱殑鏁扮粍
- public ArrayList<NavigateNode> Close = new ArrayList<NavigateNode>();
+ //Close琛ㄧ敤鍧愭爣key闆嗗悎锛孫(1)鏌ユ壘
+ public Set<String> Close = new HashSet<>();
//鐢ㄦ潵瀛樻斁宸茬粡鍑虹幇杩囩殑缁撶偣銆�
Map<String, Integer> bestGMap = new HashMap<>();
@@ -392,13 +392,13 @@
}
//灏嗚繖涓粨鐐瑰姞鍏ュ埌Close琛ㄤ腑
- Close.add(current_node);
+ Close.add(keyOf(current_node));
//瀵瑰綋鍓嶇粨鐐硅繘琛屾墿灞曪紝寰楀埌涓�涓洓鍛ㄧ粨鐐圭殑鏁扮粍
ArrayList<NavigateNode> neighbour_node = extend_current_node(map, current_node);
//瀵硅繖涓粨鐐归亶鍘嗭紝鐪嬫槸鍚︽湁鐩爣缁撶偣鍑虹幇
for (NavigateNode node : neighbour_node) {
// 宸插湪鍏抽棴鍒楄〃涓殑鑺傜偣涓嶅啀澶勭悊锛岄伩鍏嶇埗閾惧弽澶嶆敼鍐欏舰鎴愮幆
- if (Close.contains(node)) {
+ if (Close.contains(keyOf(node))) {
continue;
}
// G + H + E (瀵瑰惎鍙戝嚱鏁板鍔犲幓鎷愮偣鏂规calcNodeExtraCost)
@@ -410,7 +410,7 @@
node.setH(calcNodeCost(node, end));
node.setF(node.getG() + node.getH());
- String key = node.getX() + "_" + node.getY();
+ String key = keyOf(node);
Integer recordedG = bestGMap.get(key);
// 浠呭綋鎵惧埌鏇村皬鐨勪唬浠锋椂鎵嶆洿鏂颁笌鍏pen锛岄伩鍏嶇瓑浠蜂唬浠峰弽澶嶅叆闃熷鑷寸埗閾炬姈鍔�
if (recordedG == null || node.getG() < recordedG) {
--
Gitblit v1.9.1