A base do algoritmo é sempre ter certeza de que os problemas menores serão resolvidos antes dos maiores algABBO(n, p) { para s = 0 até n-1 para i = 1 até n-s A[i, i+s] = min_r=i,...,i+s { \sum_{k=i}^{i+s} pk + A[i, r-1] + A[r+1, i+s] devolva A[1, n] } Eficiência: \Theta(n^3) pois - tem de resolver \Theta(n^2) recorrências (preencher metade de uma matriz n por n) - e para resolver cada recorrência (preencher cada célula da matriz) precisa consultar em média \Theta(n) outras posições da matriz Construíndo a árvore: - corresponde a saber qual a raiz escolhida em cada subproblema - guardar tal raiz numa matriz auxiliar B cada vez que o algoritmo resolve uma recorrência torna a construção da árvore mais eficiente, embora não seja necessário