L'algorithme utilisant la nouvelle définition de la
classe caseNB est présenté ici. En JAVA, il tourne dans un Thread séparé pour
ne pas bloquer le navigateur.
public
void run()
{
int x,y;
y=0;
int Src = 0;
if ((ap.m_start<0) || (ap.m_start>64))
ap.m_start = 0;
x = ap.m_start;
ap.Index = 1;
while (ap.Index < 64) {
y = ap.caseNB[x].FirstStep(Src,ap.Index);
if (ap.caseNB[y].IsFree()) {
Src = x;
x = y;
ap.Index +=
1;
} else {
while (true)
{
while ((y = ap.caseNB[x].NextStep()) != -1) {
if (ap.caseNB[y].IsFree()) {
Src = x;
x = y;
ap.Index += 1;
break;
}
}
if (y == -1) {
ap.Index -= 1;
x = ap.caseNB[x].GetSource();
} else {
break;
}
}
}
}
ap.caseNB[x].FirstStep(Src,ap.Index); // the last
if (!ap.CheckBoxTR.getState())
ap.display_chemin();
}
L'algorithme de recherche est plus compliqué que dans la version
C++ ou BASIC. Par contre, les méthodes de la classe caseNB,
dans la version Java sont beaucoup plus simples.
|