private void UpdateVertex(Cell s, Cell sprime) { decimal totalCost = s.G + AlgorithmFormulas.C(s, sprime); if (totalCost < sprime.G) { sprime.G = totalCost; sprime.F = sprime.G; sprime.Parent = s; if (isInFringe[sprime.X, sprime.Y]) { fringe.Remove(sprime); } fringe.Push(sprime, sprime.G); isInFringe[sprime.X, sprime.Y] = true; } }
public void ExpandState(Cell s, int i) { Cell[] sprimes = AlgorithmFormulas.Successors(s, cellGrid); for (int k = 0; k < sprimes.Length; k++) { if (sprimes[k] == null) { continue; } Cell sprime = sprimes[k]; decimal cost = cellData[i][s.X, s.Y].G + AlgorithmFormulas.C(s, sprime); if (!itTracker[i][sprime.X, sprime.Y]) { cellData[i][sprime.X, sprime.Y].G = decimal.MaxValue; cellData[i][sprime.X, sprime.Y].Parent = null; itTracker[i][sprime.X, sprime.Y] = true; } if (cellData[i][sprime.X, sprime.Y].G > cost) { cellData[i][sprime.X, sprime.Y].G = cost; cellData[i][sprime.X, sprime.Y].Parent = vectorOf(s); if (!closedList[i][sprime.X, sprime.Y]) { if (isInFringe[i][sprime.X, sprime.Y]) { fringe[i].Remove(sprime); } fringe[i].Push(sprime, Key(vectorOf(sprime), i)); isInFringe[i][sprime.X, sprime.Y] = true; } } } }