2. 1.1 Definição do Problema: Dado a necessidade de obtermos o
segmento de um vetor com a maior soma possível, se faz
necessária a utilização de algoritmos.
Podemos tomar como exemplo eventos da vida real:
● Bioinformática (produzir melhor alinhamento entre sequências
de DNA, RNA ou proteínas, e determinar sua similaridade
através de somas)
● Monitoramento de Áreas (calcular se é preciso mais sensores
de monitoramento)
1. Motivação
3. Representar a soma dos elementos do segmento de soma
máxima, com base no conjunto numérico determinado.
1.2 Descrição Informal:
4. Questão: Dado uma sequência de n números inteiros, encontre a
maior soma de uma subsequência presente no conjunto.
Entrada: Um conjunto numérico.
Saída: Soma dos elementos do segmento de soma máxima
encontrado.
1.3 Descrição Formal:
18. Obs: Se a sequência de número não possuir números negativos, o segmento de soma máxima
abrangerá todos elementos.
= 175 (segmento 0 até 7)
Obs2
: Caso todos elementos da sequência sejam negativos, a soma será o valor de seu elemento menos
negativo.
= -5 (segmento 1)
1.4 Exemplo:
19. 2. Algoritmo
SOLIDEZ (A, p, r)
F[p] ← A[p]
para q ← p + 1 até r faça
se F[q − 1] > 0
então F[q] ← F[q−1] + A[q]
senão F[q] ← A[q]
x ← F[p]
para q ← p + 1 até r faça
se F[q] > x então x ← F[q]
devolva x
20. 3.1 Prova de Corretude:
SOLIDEZ (A, p, r)
F[p] ← A[p]
para q ← p + 1 até r faça
se F[q − 1] > 0
então F[q] ← F[q−1] + A[q]
senão F[q] ← A[q]
x ← F[p]
para q ← p + 1 até r faça
se F[q] > x então x ← F[q]
devolva x
3. Análise do Algoritmo
A cada iteração do loop, F[q − 1] é a firmeza de
A[p...q−1]. Logo, pode-se afirmar que F[j] é a
firmeza de A[p..j].
Sendo j = p, p+1,...,q−2, q−1 pode-se afirmar
que o fato de F[j] ser firmeza de A[p..j] vale para
j = p, p+1,..., r.
Em seu bloco final, o algoritmo percorre todo o
vetor com as firmezas das subsequências
registradas até então e retorna o maior valor
entre elas.
21. 3.2 Complexidade:
● A partir do loop do algoritmo podemos perceber que
o tempo consumido é proporcional ao número de
elementos n := r − p + 1 do vetor. Logo, o consumo
de tempo do algoritmo está em:
Θ(n)
3. Análise do Algoritmo
22. 4. Conclusão
● Melhor técnica para resolver o problema.
● Não é possível obter um algoritmo melhor.
Vantagens:
● Algoritmo mais eficiente para a solução do problema
● Menor gasto de processamento
Desvantagens:
● Mais difícil de implementar
● Maior gasto com memória