У меня есть n * n сетка, где каждый узел имеет значение (0,0), (0,1) ... (n-1, n-1).Мне нужно добавить ребро, чтобы средняя длина пути (APL) сети уменьшилась.Для этого мне нужно выбрать каждый узел, нарисовать ребро для каждого другого узла и проверить APL.
Итак, я сделал для этого вложенный цикл for:
for x,y in itertools.product(range(n), range(n)):
for i,j in itertools.product(range(x,n), range(n)):
Здесьвнешний цикл for выбирает первый узел, а внутренний цикл for выбирает второй узел.range(x,n)
несколько уменьшает количество итераций, аналогично есть ли способ изменить range(n)
во внутреннем цикле for на что-то другое, чтобы можно было уменьшить количество итераций?
Я пытался использовать range((y+1)%n,n)
но это не будет работать, потому что, предположим, что первый узел (0, n-1), затем после выбора второго узла (0, n) он не выберет (1,0).Так есть ли способ оптимизировать это?