Você está na página 1de 26

EN05174 - ANALISE DE ALGORITIMOS

O papel dos Algoritmos na Computação

Prof. Dr. Lidio Mauro Lima de Campos


limadecampos@gmail.com

Universidade Federal do Pará – UFPA


ICEN
PPGCC
1
Agenda
• Introdução
• Modelagem Matemática para Solução de Problemas Computacionais
• Algoritmos e Tecnologia
• Impacto do aumento de velocidade das máquinas em Algoritmos

2
Introdução
2.

• Os algoritmos fazem parte do dia-a-dia das pessoas.


• Exemplos de algoritmos:

• Gramáticas
• alfabeto consiste de a e b, o símbolo inicial é S, e temos as seguintes regras de produção:
• 1. S→aSb, S →ba
• 2. S →ba

• Caminho mínimo em grafos

• Segundo Dijkstra (1930-2002), um algoritmo corresponde a uma descrição de


um padrão de comportamento, expresso em termos de um conjunto finito de
ações.
• Executando a operação a + b percebemos um padrão de comportamento, mesmo que a
operação seja realizada para valores diferentes de a e b, ou de diferentes tipo.
3
Introdução
• O que são algoritmos? Por que o estudo dos algoritmos vale a pena? Qual é a
função dos algoritmos?
• Informalmente, um algoritmo é qualquer procedimento computacional bem
definido :

• toma algum valor ou conjunto de valores como entrada


• produz algum valor ou conjunto de valores como saída. (Cormen et al., 2012)

• Um algoritmo é uma ferramenta para resolver um problema computacional bem


especificado.
• O enunciado do problema especifica em termos gerais o relacionamento entre a
entrada e a saída desejada.

4
Algoritmos
• Vejamos formalmente o problema de Ordenação:

• Entrada : uma sequencia de números < ,....,


• Saída : Uma permutação (reordenação) < ,...., > da sequencia de
entrada , tal que: ....

Entrada : <31,41,59,26,41,58>
Saída: <26,31,41,41,58,59>

• Em geral uma instância do problema consiste na entrada (que satisfaz as


restrições impostas no enunciado do problema.

5
Algoritmos
• Há um grande número de algoritmos de ordenação à nossa disposição.
• O melhor para algoritmo para determinada aplicação depende, entre outros fatores;
• Número de itens a ordenar
• Grau de ordenação já apresentado por esses itens
• Das possíveis restrições impostas aos valores dos itens
• Da arquitetura do computador
• Tipo de dispositivo de armazenamento que será utilizado: MP, Discos ou até fitas.

• Um algoritmo pode ser especificado em linguagem comum como um


programa de computador ou mesmo como um projeto de hardware.
• O único requisito é que a especificação deve fornecer uma descrição precisa do
procedimento computacional a ser seguido.

6
Que tipos de problemas são resolvidos por algoritmos?
• Projeto do Genoma humano
• Identificar todos os 100.000 genes do DNA humano
• Determinar sequência dos três bilhões de pares de bases químicas que constituem o
DNA humano
• Internet
• Com auxilio de algoritmos engenhosos, sites da Internet conseguem gerenciar e
manipular grande volume de dados.
• Determinar rotas para a transmissão de dados.
• Mecanismos de busca para encontrar informações
• Indústria
• Alocação de recursos escassos da maneira mais benéfica possível.
• Localização de poços petrolíferos para maximizar o lucro esperado.

7
Estruturas de Dados
• Uma ED é um modo de armazenar e organizar dados com o objetivo de facilitar
acesso e modificações. Nenhuma ED única funciona bem para todas as
finalidades e, por isso , é importante conhecer os pontos fortes e limitações de
várias delas.

8
Modelagem Matemática Para solução de Problemas
Computacionais
• Metodologia: conjunto de conceitos que traz coesão a princípios e técnicas mostrando
quando, como e porque usá-los em situações diferentes.
• A metodologia que usa matemática na resolução de problemas é conhecida como
modelagem matemática.
• O processo de modelagem:

9
Modelagem Matemática
Exemplo 1:

Modelo Abstrato

10
Modelagem Matemática – Exemplo 1

Modelo Transformado

11
Modelagem Matemática – Exemplo 1

12
Modelagem Matemática – Exemplo 1

13
Modelagem Matemática – Exemplo 1

14
Modelagem Matemática

O que foi feito?


1. Obtenção do modelo matemático para o problema.
2. Formulação de um algoritmo em termos do modelo.
• Ou seja, essa é a técnica de resolução de problemas em Ciência
da Computação.
• Nem todos os problemas considerados terão como solução um
algoritmo, mas muitos terão.

15
Algoritmos como Tecnologia
• P1)O avanço da tecnologia permite a construção de máquinas cada vez mais
rápidas.
• Isto possibilita que um algoritmo para determinado problema possa ser executado mais
rapidamente.
• P2)Paralelamente a isto, há o projeto/desenvolvimento de algoritmos
“intrinsicamente mais eficientes” para determinado problema.
• Isto leva em conta apenas as características inerentes ao problema, desconsiderando
detalhes de software/hardware.
• Iremos “comparar” estes dois aspectos através de um exemplo.

16
Algoritmos como tecnologia (Eficiência)

250000000

200000000

150000000

100000000

50000000

0
1 2 3 4 5 6 7 8 9 101112131415161718192021

2n2 50nlogn

A : 1G=109 intruções/seg B=10M=106 intruções/seg qual o tempo para ordenar


um vetor de n=106 elem?
17
Algoritmos como Tecnologia

18
Algoritmos como Tecnologia
• O uso de um algoritmo em lugar de outro pode levar a ganhos
extraordinários de desempenho.
• O que pode ser tão importante quanto ao projeto de HW?.

19
Impacto do aumento de velocidade das máquinas em Algoritmos
Algoritmo com tempo linear – o tempo de execução é
proporcional ao tamanho da entrada, ou seja proporcional a t=n .
• logo t=n .
• Em um computador dez vezes mais rápido t’=n1
• t’=n1,n1=?
• n1=v.t=10t
• n1=10n, O mesmo algoritmo, resolverá um problema de
tamanho dez vezes maior.

20
Impacto do aumento de velocidade das máquinas em Algoritmos
• Algoritmo com tempo quadrático – leva tempo proporcional a t=n2 para uma
entrada de tamanho n.
• Suponha um problema , cujo tamanho máximo do problema que pode ser
resolvido num tempo t na máquina lenta é n.
• t=n2 .
• Agora suponha uma máquina 10 vezes mais rápida, ou equivalentemente,
um tempo:
• t’=n12
• n12 =10t da máquina mais lenta.
• O tamanho máximo do problema resolvido será n1, tal que:
• 10n2 =n12
• logo: n1= n = 3.16n

21
Exercícios
• 1)Estimar o tamanho máximo de um problema resolvível em uma maquina 10(dez) vezes mais rápida,
considerando as complexidades apresentadas na coluna 1 da Tabela 1, tomando por base o tamanho máximo
de problema resolvível na maquina mais lenta (segunda coluna da Tabela 1).

Tabela 1 – Complexidade do Algoritmo x Tamanho máximo do problema resolvível

22
Exercícios
• 1)Estimar o tamanho máximo de um problema resolvível em uma maquina 10(dez) vezes
mais rápida, considerando as complexidades apresentadas na coluna 1 da Tabela 1,
tomando por base o tamanho máximo de problema resolvível na maquina mais lenta
(segunda coluna da Tabela 1).
Tabela 1 – Complexidade do Algoritmo x Tamanho máximo do problema resolvível

23
Exercícios
• 2) Um método de ordenação “Big-Ohh” tem complexidade O(n log n) emprega 1
milissegundo (10-3s) para ordenar 1000 itens de dados. Assumindo que o tempo
para ordenar n itens é diretamente proporcional a n log n, isto é, T(n)=c.n log n ,
obtenha uma fórmula para T(n) , dado o tempo T(N) para ordenar N itens, e
estime quanto tempo levará para ordenar 1.000.000 itens.
• Resp=2s

24
Exercícios
• 3)Para cada função f(n) e cada tempo t na tabela 2 a seguir, determine o maior tamanho n
de um problema que pode ser resolvido no tempo t, considerando que o algoritmo para
resolver o problema demore f(n) microssegundos (10-6 s).
Tabela 2 – Complexidade do Algoritmo x tempo de execução

25
Referências
• Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein.
Algoritmos – Teoria e Prática, Tradução da Segunda Edição. Campus, 2016.
• Ziviani, N. Projeto de Algoritmos Com Implementações em Pascal e C, Pioneira
Thomson Learning, 4ed. 2009.
• TOSCANI, Laira Vieira; VELOSO, Paulo. Complexidade de algoritmos. . Bookman.
2012.
• de Souza C. C., da Silva ,C.N., Lee O. Notas de Aula, A. Algoritmos 2009.
• Neto, Nelson Cruz Sampaio. Notas de Aula, P.A. Algoritmos, 2021.

26

Você também pode gostar