Universidade Estadual Paulista “Júlio de Mesquita Filho” – UNESP *Graduado em Sistemas de Informação pela FHO|Uniararas. *Colaborador no Laboratório de Evolução Molecular (LEM) na UNESP de Rio Claro na área de Bioinformática. *Java, Delphi, Bancos de Dados Relacionais, Drupal e Linux. *Interesses de Pesquisa: Aprendizado de Máquina, Computação Inspirada pela Natureza e Bioinformática.
core of computer science. It´s at the center of our field”. Donald Knuth (Professor Emérito de Stanford, Prêmio Turing de 1994, um dos “fundadores” da análise de algoritmos)
é uma função ou associação de entradas com saídas. • Algoritmo: – é um método ou um processo usado para resolver um problema. • Programa: – é uma instanciação de um algoritmo em uma linguagem de programação computacional.
e memória infinita. Neste caso, qualquer algoritmo é igualmente bom e essa palestra é inútil!!! Porém ... O Mundo Real: computadores têm velocidade de processamento e memória limitadas.
e memória infinita. Neste caso, qualquer algoritmo é igualmente bom e essa palestra é inútil!!! Porém ... O Mundo Real: computadores têm velocidade de processamento e memória limitadas.
do algoritmo, mas também: • Arquitetura e Conjunto de Instruções da máquina que o executa; Qualidade do Compilador; Habilidade do Programador, etc. A ideia é analisar o algoritmo utilizando um modelo matemático de computação.
Aleatório (Random Acess Machine – RAM) – Único processador, com instruções executadas uma após a outro, sem concorrência. – Primitivas/Operações Básicas: Soma, subtração, multiplicação, divisão, movimentação de dados, desvios, etc. – A execução de qualquer primitiva leva uma unidade de tempo.
um algoritmo pode ser mensurada pelo número de primitivas (operações básicas) que ele executa para uma entrada de determinado tamanho. (baseado no modelo de computação RAM)
para qualquer entrada • Melhor Caso: – Resultado do menor tempo possível • Caso Médio: – Tempo médio para qualquer entrada possível. Pode ser necessário conhecer a distribuição estatística dos dados de entrada
em relação ao tamanho da entrada? – O tempo de execução é expresso em função do tamanho da entrada: T(n): medida de tempo necessário para executar um algoritmo para um problema de tamanho n.
é realizada para cada linha do algoritmo contabilizando o número de operações primitivas Essa análise nos fornece uma função matemática expressando o total de operações com base no tamanho do problema (n) e o custo (constante) de cada operação.