Алгоритм Форда — Фалкерсона решает задачу нахождения максимального потока в транспортной сети.
 Идея алгоритма заключается в следующем. Изначально величине потока присваивается значение 0: 
  
    
      
        f
        (
        u
        ,
        v
        )
        =
        0
      
    
    {\displaystyle f(u,v)=0}
  
 для всех 
  
    
      
        u
        ,
        v
        ∈
        V
      
    
    {\displaystyle u,v\in V}
  
. Затем величина потока итеративно увеличивается посредством поиска увеличивающего пути (путь от источника 
  
    
      
        s
      
    
    {\displaystyle s}
  
 к стоку 
  
    
      
        t
      
    
    {\displaystyle t}
  
, вдоль которого можно послать больший поток). Процесс повторяется, пока можно найти увеличивающий путь.
 Важно, что алгоритм не конкретизирует, какой именно путь мы ищем на шаге 2 или как мы это делаем. По этой причине алгоритм гарантированно сходится только для целых пропускных способностей, но даже для них при больших значениях пропускных способностей он может работать очень долго. Если пропускные способности вещественны, алгоритм может работать бесконечно долго, не сходясь к оптимальному решению (см. пример ниже).
 Если искать не любой путь, а кратчайший, получится алгоритм Эдмондса — Карпа или алгоритм Диница. Эти алгоритмы сходятся для любых вещественных весов за время 
  
    
      
        O
        (
        
          |
        
        V
        
          |
        
        
          |
        
        E
        
          
            |
          
          
            2
          
        
        )
      
    
    {\displaystyle O(|V||E|^{2})}
  
 и 
  
    
      
        O
        (
        
          |
        
        V
        
          
            |
          
          
            2
          
        
        
          |
        
        E
        
          |
        
        )
      
    
    {\displaystyle O(|V|^{2}|E|)}
  
 соответственно.
 Дан граф 
  
    
      
        G
        (
        V
        ,
        E
        )
      
    
    {\displaystyle G(V,E)}
  
 с пропускной способностью 
  
    
      
        c
        (
        u
        ,
        v
        )
      
    
    {\displaystyle c(u,v)}
  
 и потоком 
  
    
      
        f
        (
        u
        ,
        v
        )
        =
        0
      
    
    {\displaystyle f(u,v)=0}
  
 для рёбер из 
  
    
      
        u
      
    
    {\displaystyle u}
  
 в 
  
    
      
        v
      
    
    {\displaystyle v}
  
. Необходимо найти максимальный поток из источника 
  
    
      
        s
      
    
    {\displaystyle s}
  
 в сток 
  
    
      
        t
      
    
    {\displaystyle t}
  
. На каждом шаге алгоритма действуют те же условия, что и для всех потоков:
 Остаточная сеть 
  
    
      
        
          G
          
            f
          
        
        (
        V
        ,
        
          E
          
            f
          
        
        )
      
    
    {\displaystyle G_{f}(V,E_{f})}
  
 — сеть с пропускной способностью 
  
    
      
        
          c
          
            f
          
        
        (
        u
        ,
        v
        )
        =
        c
        (
        u
        ,
        v
        )
        −
        f
        (
        u
        ,
        v
        )
        +
        f
        (
        v
        ,
        u
        )
      
    
    {\displaystyle c_{f}(u,v)=c(u,v)-f(u,v)+f(v,u)}
  
 и без потока.
 Вход Граф 
  
    
      
        G
      
    
    {\displaystyle G}
  
 с пропускной способностью 
  
    
      
        c
      
    
    {\displaystyle c}
  
, источник 
  
    
      
        s
      
    
    {\displaystyle s}
  
 и сток 
  
    
      
        t
      
    
    {\displaystyle t}
  

Выход Максимальный поток 
  
    
      
        f
      
    
    {\displaystyle f}
  
 из 
  
    
      
        s
      
    
    {\displaystyle s}
  
 в 
  
    
      
        t
      
    
    {\displaystyle t}
  

 Путь может быть найден, например, поиском в ширину (алгоритм Эдмондса — Карпа) или поиском в глубину в 
  
    
      
        
          G
          
            f
          
        
        (
        V
        ,
        
          E
          
            f
          
        
        )
      
    
    {\displaystyle G_{f}(V,E_{f})}
  
.
 На каждом шаге алгоритм добавляет поток увеличивающего пути к уже имеющемуся потоку. Если пропускные способности всех рёбер — целые числа, легко доказать по индукции, что и потоки через все рёбра всегда будут целыми. Следовательно, на каждом шаге алгоритм увеличивает поток по крайней мере на единицу, следовательно, он сойдётся не более чем за 
  
    
      
        O
        (
        
          |
        
        f
        
          |
        
        )
      
    
    {\displaystyle O(|f|)}
  
 шагов, где  f — максимальный поток в графе. Можно выполнить каждый шаг за время 
  
    
      
        O
        (
        
          |
        
        E
        
          |
        
        )
      
    
    {\displaystyle O(|E|)}
  
, где 
  
    
      
        
          |
        
        E
        
          |
        
      
    
    {\displaystyle |E|}
  
 — число рёбер в графе, тогда общее время работы алгоритма ограничено 
  
    
      
        O
        (
        
          |
        
        E
        
          |
        
        max
        
          |
        
        f
        
          |
        
        )
      
    
    {\displaystyle O(|E|\max |f|)}
  
.
 Если величина пропускной способности хотя бы одного из рёбер — иррациональное число, то алгоритм может работать бесконечно, даже не обязательно сходясь к правильному решению. Пример дан ниже.
 Рассмотрим приведённую справа сеть, с источником 
  
    
      
        s
      
    
    {\displaystyle s}
  
, стоком 
  
    
      
        t
      
    
    {\displaystyle t}
  
, пропускными способностями рёбер 
  
    
      
        
          e
          
            1
          
        
        =
        1
      
    
    {\displaystyle e_{1}=1}
  
, 
  
    
      
        
          e
          
            2
          
        
        =
        r
        =
        (
        
          
            5
          
        
        −
        1
        )
        
          /
        
        2
      
    
    {\displaystyle e_{2}=r=({\sqrt {5}}-1)/2}
  
, 
  
    
      
        
          e
          
            3
          
        
        =
        1
      
    
    {\displaystyle e_{3}=1}
  
 и пропускной способностью всех остальных рёбер, равной целому числу 
  
    
      
        M
        ≥
        2
      
    
    {\displaystyle M\geq 2}
  
. Константа 
  
    
      
        r
      
    
    {\displaystyle r}
  
 выбрана так, что 
  
    
      
        
          r
          
            2
          
        
        =
        1
        −
        r
      
    
    {\displaystyle r^{2}=1-r}
  
. Мы используем пути из остаточного графа, приведённые в таблице, причём 
  
    
      
        
          p
          
            1
          
        
        =
        {
        s
        ,
        
          v
          
            4
          
        
        ,
        
          v
          
            3
          
        
        ,
        
          v
          
            2
          
        
        ,
        
          v
          
            1
          
        
        ,
        t
        }
      
    
    {\displaystyle p_{1}=\{s,v_{4},v_{3},v_{2},v_{1},t\}}
  
, 
  
    
      
        
          p
          
            2
          
        
        =
        {
        s
        ,
        
          v
          
            2
          
        
        ,
        
          v
          
            3
          
        
        ,
        
          v
          
            4
          
        
        ,
        t
        }
      
    
    {\displaystyle p_{2}=\{s,v_{2},v_{3},v_{4},t\}}
  
 и 
  
    
      
        
          p
          
            3
          
        
        =
        {
        s
        ,
        
          v
          
            1
          
        
        ,
        
          v
          
            2
          
        
        ,
        
          v
          
            3
          
        
        ,
        t
        }
      
    
    {\displaystyle p_{3}=\{s,v_{1},v_{2},v_{3},t\}}
  
.
 Заметим, что после шага 1, как и после шага 5, остаточные способности рёбер 
  
    
      
        
          e
          
            1
          
        
      
    
    {\displaystyle e_{1}}
  
, 
  
    
      
        
          e
          
            2
          
        
      
    
    {\displaystyle e_{2}}
  
 и 
  
    
      
        
          e
          
            3
          
        
      
    
    {\displaystyle e_{3}}
  
 имеют форму 
  
    
      
        
          r
          
            n
          
        
      
    
    {\displaystyle r^{n}}
  
, 
  
    
      
        
          r
          
            n
            +
            1
          
        
      
    
    {\displaystyle r^{n+1}}
  
 и 
  
    
      
        0
      
    
    {\displaystyle 0}
  
, соответственно, для какого-то натурального 
  
    
      
        n
      
    
    {\displaystyle n}
  
. Это значит, что мы можем использовать увеличивающие пути 
  
    
      
        
          p
          
            1
          
        
      
    
    {\displaystyle p_{1}}
  
, 
  
    
      
        
          p
          
            2
          
        
      
    
    {\displaystyle p_{2}}
  
, 
  
    
      
        
          p
          
            1
          
        
      
    
    {\displaystyle p_{1}}
  
 и 
  
    
      
        
          p
          
            3
          
        
      
    
    {\displaystyle p_{3}}
  
 бесконечно много раз, и остаточные пропускные способности этих рёбер всегда будут в той же форме. Полный поток после шага 5 равен 
  
    
      
        1
        +
        2
        (
        
          r
          
            1
          
        
        +
        
          r
          
            2
          
        
        )
      
    
    {\displaystyle 1+2(r^{1}+r^{2})}
  
. За бесконечное время полный поток сойдётся к 
  
    
      
        
          1
          +
          2
          
            ∑
            
              i
              =
              1
            
            
              ∞
            
          
          
            r
            
              i
            
          
          =
          3
          +
          2
          r
        
      
    
    {\displaystyle \textstyle 1+2\sum _{i=1}^{\infty }r^{i}=3+2r}
  
, тогда как максимальный поток равен 
  
    
      
        2
        M
        +
        1
      
    
    {\displaystyle 2M+1}
  
. Таким образом, алгоритм не только работает бесконечно долго, но даже и не сходится к оптимальному решению.
 Следующий пример показывает первые шаги алгоритма Форда — Фалкерсона в транспортной сети с четырьмя узлами, источником A и стоком D. Этот пример показывает худший случай. При использовании поиска в ширину алгоритму потребуется всего лишь 2 шага.