Читайте об алгоритме Дейкстры.Это то, как вы решаете эти проблемы кратчайшего пути и в любом случае выполняете меньше, чем O (n ^ 2).
EDIT Здесь есть некоторые тонкости.Похоже, вам предоставлен кратчайший путь от любого i до любого j на графике, и похоже, что вам нужно обновить всю матрицу.Итерации по этой матрице - это n ^ 2, потому что матрица - это каждый узел каждого другого, или n * n или n ^ 2.Простое повторное выполнение алгоритма Дейкстры для каждой записи в дельта-матрице не изменит этот класс производительности, поскольку n ^ 2 больше, чем производительность Дейкстры O (| E | + | V | log | V |).Я правильно читаю или я неправильно помню big-O?
РЕДАКТИРОВАТЬ, РЕДАКТИРОВАТЬ Похоже, я неправильно помню big-O.Итерации по матрице были бы n ^ 2, и Дейкстры на каждом из них были бы дополнительными издержками.Я не вижу, как это сделать в общем случае, не выясняя, какие именно пути W 'включены в ... это, кажется, подразумевает, что каждая пара должна быть проверена.Поэтому вам нужно либо обновлять каждую пару в постоянное время, либо избегать проверки значимых частей массива.