TGViewer
Библиотека шарписта | C#, F#, .NET, ASP.NET Библиотека шарписта | C#, F#, .NET, ASP.NET @csharpproglib · 21.6K subscribers
Post #5370 5.96K
🔥 Как ускорить алгоритм Флойда-Уоршелла в C# с помощью разбиения на блоки

Алгоритм Флойда-Уоршелла решает задачу всех пар кратчайших путей с помощью динамического программирования. Он работает за O(n³), где n — количество вершин в графе. Это делает его эффективным для небольших графов, но с ростом их размера алгоритм становится не таким быстрым.

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

Как это работает?
⚙️ Создаем матрицу смежности, где храним расстояния между вершинами графа.
⚙️ Делим матрицу на меньшие блоки и обновляем кратчайшие пути внутри блоков и между ними.
⚙️ Получаем итоговую матрицу кратчайших путей, где каждый элемент показывает кратчайший путь между парой вершин.

📎 Оригинал статьи
  • 👍 9
  • ❤ 2
More from @csharpproglib
  1. Oct 13, 2026🚀 C# Dev Kit: сначала открытый файл, потом весь solution Открыли большой solution и ждёте…
  2. Oct 12, 2026👀 Как вы смотрите видео? Разбираете урок, слушаете интервью фоном или начинаете на телефо…
  3. Oct 10, 2026Post #7285
  4. Oct 10, 2026Перенос MiniJinja с Rust на Go силами Opus и Codex Около десяти часов работы агента и прим…
  5. Sep 30, 2026📝 Логирование со строковой интерполяцией Логирование c интерполяцией строк один из самых…
  6. Sep 28, 2026👨‍💻 Не показывайте технические ошибки пользователям Когда приложение падает с необработа…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →