Para realizar esse procedimento, inicialmente todos os vértices são considerados não vistos, ou seja, não possuem "pais" e sua distância para a sub-árvore é dada com um valor simbólico máximo (geralmente "infinito"). O valor da distância do vértice base, no entanto, é irrelevante. Então, a partir de um vértice de referência u* (que a princípio é o vértice base), encontram-se todos os vértices u adjacentes a ele e caso a distância de u para a sub-árvore seja maior que o peso da aresta entre u* e u, então esse peso se torna a nova distância de u* para a sub-árvore e o pai de u* é atualizado para u. Além disso, caso ocorra essa atualização, cada u é adicionado a uma fila de prioridade mínima, organizada pelos valores das distâncias a sub-árvore. O topo dessa fila, então, será o novo u*.
Como a cada iteração tem-se um novo u* e inicia-se com um vértice já "visitado", o algoritmo termina após n-1 iterações, pois assim todos os n vértices do grafo terão sido visitados