O algoritmo implementado é uma adaptação do algoritmo de Sebo feita por de Mário Leston Rey [5].
Ele usa o conceito de potencial, uma função que associa valores inteiros aos vértices de um grafo e que satifaz certas propriedades.
Vamos introduzir alguns conceitos antes de definir este potencial. Estes conceitos foram retirados da referência [5].
Seja um grafo não orientado, uma função que associa comprimentos às arestas de e uma função , que associa valores inteiros aos vértices de .
Vamos denotar por o subconjunto , isto é, o conjunto das arestas de comprimentos negativos de .
Para toda parte de , uma alça de relativa a é uma aresta com as seguintes propriedades:
Denotaremos por o conjunto das alças de .
Dado no conjunto dos valores de , o nível do grafo é o conjunto . Uma fatia gorda de nível é o conjunto de vértices de um componente conexo de . Uma fatia magra de nível é o conjunto de vértices de um componente conexo de .
Dado um subconjunto de vértices de , um corte é definido como , isto é, o conjunto das arestas com exatamente uma extremidade em .
Definidos os conceitos de alças, fatias magras e gordas e cortes, podemos definir um potencial. Para um vértice arbitrário , é um -potencial relativo a se
Se não tem circuitos negativos, o valor associado a cada vértice pelo potencial definido acima é o comprimento mínimo de um caminho de a em .
Em sua dissertação, Rey mostra que um grafo ou admite um potencial, ou possui circuitos negativos. Logo, o certificado da inexistência de circuitos negativos será um potencial.
O algoritmo usado para procurar circuitos negativos é guiado pela definição de potencial. Informalmente, ele repetidamente verifica se uma determinada função é um potencial e procura corrigir cada violação das propriedades (p0) a (p3), alterando , até encontrar um circuito negativo ou um que seja de fato um potencial.