Я постараюсь указать на вашу ошибку.
Я думал, что этот алгоритм пересекает график как BFS
Это не правда. Этот алгоритм многократно повторяет все ребра графа и «расслабляет» их до тех пор, пока он не достигнет стабильного состояния (когда больше не может быть выполнено расслабление)
Приведенный вами пример немного сбивает с толку и напоминает выполнение BFS. это потому, что в каждой итерации они выделяют только те ребра, которые повлияли на значение узлов (ребра, которые были ослаблены).
Итак, чтобы ответить на ваш вопрос, выберите любой порядок по краям и начните так называемое «расслабление» их. Для каждого ребра установите его значение d указывающего узла равным кратчайшему расстоянию от Z, и задайте его pi как узел-предшественник. повторяйте это, пока все значения не станут стабильными.
Надеюсь, что ответит на ваш вопрос.