Реализация Алгоритма Флойда(графы) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Не могу найти данный алгоритм написанный на чистом си.Поделитесь кто нибудь)

Решение задачи: «Реализация Алгоритма Флойда(графы)»

textual
Листинг программы
for (k = 0; k< n; k++)
  for (i = 0; i < n; i++)
    for (j = 0 ; j< n; j++)
      W[i][j] = (W[i][j] || (W[i][k] && W[k][j]));

Объяснение кода листинга программы

В данном коде реализуется алгоритм Флойда для поиска кратчайшего пути между всеми парами вершин в графе. Алгоритм Флойда основан на принципе построения графа, где вершины представлены матрицей смежности, а ребра — значениями этой матрицы.

  1. Создается матрица W размером n x n, где n — количество вершин в графе.
  2. Инициализируются все значения матрицы W единицами, кроме диагональных элементов, которые равны нулю.
  3. В каждой вершине графа (кроме начальной) устанавливаются значения d[i] равными бесконечности, а значение d[0] равным нулю.
  4. В цикле по всем вершинам графа (кроме начальной) устанавливаются значения d[i] равными сумме d[i-1] и w[i-1][i], где w[i-1][i] — значение ребра между вершинами i-1 и i.
  5. Если d[i] меньше текущего значения d[i-1], то обновляется значение d[i-1].
  6. Если d[i] меньше значения d[0], то обновляется значение d[0].
  7. Если d[i] равно d[i-1], то обновляется значение d[i-1].
  8. Если d[i] равно d[0], то обновляется значение d[0].
  9. Выводится значение d[n-1], которое представляет собой длину кратчайшего пути от начальной вершины до конечной. В данном коде реализован п.4.
  10. Матрица W инициализируется единицами.
  11. Цикл по всем вершинам графа (кроме начальной) выполняет следующие действия:
  12. В каждой вершине графа (кроме начальной) устанавливаются значения d[i] равными бесконечности.
  13. Для каждой вершины i выполняется цикл по всем вершинам j:
  14. Если i != j, то значение d[i] устанавливается равным сумме d[i-1] и w[i-1][i].
  15. Если d[i] меньше текущего значения d[i-1], то обновляется значение d[i-1].
  16. Если d[i] меньше значения d[0], то обновляется значение d[0].
  17. Если d[i] равно d[i-1], то обновляется значение d[i-1].
  18. Если d[i] равно d[0], то обновляется значение d[0].
  19. Выводится значение d[n-1].
  20. Код завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5
Похожие ответы