Мне нужно знать минимальный элемент данных для определенных элементов в повторяющемся массиве.
У меня есть три массива dist, Q и вершина:
dist = [ 0. inf inf inf inf]
vertex = [2 4 5 7 8]
Q = [2 4 5 7 8]
Массив dist — это значения вершин. Каждая итерация Q уменьшается, а dist имеет разные значения. Например:
Первая итерация:
dist = [ 0. inf inf inf inf]
vertex = [2 4 5 7 8]
Q = [2 4 5 7 8]
Вторая итерация:
dist = [ 0. 4. 2. 2. 1.]
vertex = [2 4 5 7 8]
Q = [4 5 7 8]
Третья итерация
dist = [ 0. 4. 2. 2. 1.]
vertex = [2 4 5 7 8]
Q = [4 5 7]
Идея состоит в том, чтобы найти минимум dist, но только доступных значений Q в vertex. В первой итерации минимум равен 0, потому что все они находятся в Q. Во второй итерации минимум 1, то есть 8 в vertex, потому что в Q нет 4 со значением 0 в dist сильный>.
Это часть алгоритма Дейкстры, в которой он находит минимум значений Q. В псевдокоде это будет:
u ← vertex in Q with min dist[u] // Node with the least distance
Я просто использую библиотеку Numpy.
Мое решение до сих пор:
min = np.inf
u = 0
for q in Q:
if dist[self.vertex == q] <= min:
min = dist[self.vertex == q]
u = q