From 436d69db1b5c1cf120298315009e0e2c31adb8a9 Mon Sep 17 00:00:00 2001 From: Clement LACAU Date: Sun, 19 May 2024 23:05:42 +0200 Subject: [PATCH] =?UTF-8?q?Adress=20case:=20En=20cas=20d'=C3=A9galit=C3=A9?= =?UTF-8?q?,=20on=20consid=C3=A8rera=20en=20premier=20le=20sommet=20ayant?= =?UTF-8?q?=20le=20plus=20petit=20co=C3=BBt=20estim=C3=A9=20=C3=A0=20la=20?= =?UTF-8?q?destination.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../algorithm/shortestpath/LabelStar.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/LabelStar.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/LabelStar.java index 434883b..232d1d1 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/LabelStar.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/shortestpath/LabelStar.java @@ -12,8 +12,31 @@ public class LabelStar extends Label { distanceToDestination = (float) Point.distance(node.getPoint(), destination.getPoint()); } + @Override public float getTotalCost() { - return this.getCost() + distanceToDestination; + return this.getCost() + distanceToDestination; + } + + @Override + /* + * This override of the function CompareTo addresses the case: + * "En cas d'égalité, on considèrera en premier le sommet ayant le plus petit coût estimé à la destination." + */ + public int compareTo(Label other) { + final float difference = this.getTotalCost() - other.getTotalCost(); + int retour = (int) Math.signum(difference); + if (Math.abs(difference) < 0.01) { + // En cas d'égalité: + // Récupérer le sommet avec le plus petit coût estimé à la destination + // <=> Récupérer le sommet avec le plus grand coût depuis l'origine + if ((this.getCost() - other.getCost() > 0.0)) { + retour = 1; + } + else{ + retour = -1; + } + } + return retour; } }