Skip to content

Commit

Permalink
article: bellman ford text
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanIStereotekk committed Dec 18, 2024
1 parent dd5b4c5 commit 02c2603
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
4 changes: 2 additions & 2 deletions app/projects/project-data.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ export interface Project {
title: "Gestures Detection, Ableton Live & MIDI, Computer Vision",
year: 2023,
description:
"Время от времени я пробую разные технологии. Мини проект. Я переобразовал hand landmarks data в MIDI сигнал. Далее сигнал к аблетону... и это звучит! Конечно проект требует развития, но все же на мой взгляд очень интересный проект. Ну или прототип проекта. Буду продолжать его по мере возможности!",
"Время от времени я пробую разные технологии. Мини пэт проект. Я переобразовал hand landmarks data в MIDI сигнал. Далее сигнал к аблетону... и это звучит! Конечно проект требует развития, но все же на мой взгляд очень интересный проект. Ну или прототип проекта. Буду продолжать его по мере возможности!",
url: "https://youtu.be/wMKDv2Fauus",
},
{
title: "Computer Brain Interface в MIDI с headset от Kernel",
year: 2022,
description:
"Идея получения сигналов с интерфейса \"мозг-компьютер\" мне очень нравится, и в этом направлении много интересных проектов. Думаю Kernel самый серьезный представитель на молодом рынке интерфейсов. В обозримом будущем хочу получить SDK + набор который поможет видеть данные о нейронной активности мозга, и как один из возможных вариантов переобразовывать эти данные в MIDI, хотя технология не граничивается только этим.",
"Идея получения сигналов с интерфейса \"мозг-компьютер\" мне очень нравится, и в этом направлении много интересных проектов. Думаю Kernel самый серьезный представитель на молодом рынке таких интерфейсов. В обозримом будущем хочу получить SDK + набор который поможет видеть данные о нейронной активности мозга, и как один из возможных вариантов переобразовывать эти данные в MIDI, хотя технология не граничивается только этим.",
url: "https://www.kernel.com/products",
},
{
Expand Down
17 changes: 14 additions & 3 deletions content/bellman-ford.mdx
Original file line number Diff line number Diff line change
@@ -1,11 +1,22 @@
---
title: "Алгоритм Эдсгера Белмана Форда. "
title: "Алгоритм Беллмана - Форда. "
publishedAt: "2024-11-18"
summary: "Алгоритмы на графах"
tags: "алгоритмы, дейкстра, python"
---


#### Алгоритм Беллмана — Форда - для ребер с отрицательным весом.

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

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

Алгоритм работает следующим образом. Сначала все расстояния от стартовой вершины до остальных инициализируются как бесконечность, за исключением стартовой вершины, расстояние до которой равно нулю. Затем алгоритм выполняет релаксацию всех ребер графа на протяжении |V|-1 итерации, где |V| — количество вершин в графе. Релаксация ребра u-v с весом w заключается в проверке и обновлении значения расстояния до вершины v через вершину u, если это расстояние меньше текущего известного расстояния.

После выполнения этих итераций есть дополнительный шаг для проверки наличия отрицательных циклов. Если любое расстояние может быть уменьшено после |V|-1 итерации, значит, граф содержит цикл отрицательной длины. В этом случае алгоритм сообщает об обнаружении такого цикла, поскольку наличие циклов с отрицательной суммарной длиной означает, что нет четко определённого наименьшего пути, так как можно уменьшать общую длину пути до бесконечности, проходя по этому циклу.

Несмотря на свою простоту, алгоритм Беллмана-Форда имеет временную сложность O(V*E), где V — количество вершин, а E — количество рёбер. Это делает его менее эффективным по сравнению с алгоритмом Дейкстры в графах без отрицательных рёбер, так как последний работает быстрее в среднем на графах с неотрицательными весами. Тем не менее, способность обрабатывать отрицательные веса делает его необходимым инструментом в задачах, связанных с сетью, управлением потоками и экономическими моделями, где такие веса могут появиться в виде убытков или скидок.

Применение алгоритма Беллмана-Форда в реальных задачах демонстрирует его универсальность. Он используется в протоколах маршрутизации сетей, таких как RIP (Routing Information Protocol), где необходимо учитывать изменения в сети и обновлять таблицы маршрутизации. Другой пример его применения — в экономике, где отрицательные циклы могут представлять собой возможность арбитража, и алгоритм позволяет детектировать и использовать такие возможности.

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

0 comments on commit 02c2603

Please sign in to comment.