A complexidade é derivada da seguinte maneira. Os custos da fase de inicializaçãoO(V). owhile loop é executado |V|vezes. ofor loop aninhado dentro do while loop é executado degree(u)vezes. Finalmente, o lema do aperto de mão implica que existemΘ(E)implícitas DECREASE-KEY's. Portanto, a complexidade é:Θ(V)∗TEXTRACT−MIN+Θ(E)∗TDECREASE−KEY.
A complexidade real depende da estrutura de dados realmente usada no algoritmo. Usando uma matriz,TEXTRACT−MIN=O(V),TDECREASE−KEY=O(1)complexidade é O(V2) no pior dos casos.
Usando uma pilha binária, TEXTRACT−MIN=O(logV),TDECREASE−KEY=O(logV)complexidade é O(ElogV)no pior dos casos. Aqui está o porquê: como o gráfico está conectado, então|E|≥|V|−1e E é no máximo V2(na pior das hipóteses, para um gráfico denso). Provavelmente, você perdeu esse ponto.
Usando uma pilha de Fibonacci, TEXTRACT−MIN=O(logV) amortizado, TDECREASE−KEY=O(1) amortizado, a complexidade é O(E+VlogV) no pior dos casos.