Analise e Complexidade de Algoritmos - Aula 1

14

Click here to load reader

description

complexidade de algoritimo

Transcript of Analise e Complexidade de Algoritmos - Aula 1

  • Clique para editar o estilo do subttulo mestre

    Anlise e Complexidade de Algoritmos

    Aula 01 Introduo a Anlise e Complexidade de Algortmos

    Humberto Roque Kuhn

  • A funo dos Algoritmosna computao

    O que so algoritmos ? Porque o estudo dos algoritmos

    vale a pena ? Qual a funo dos algoritmos em

    relao a outras tecnologias usadas em computadores ?

  • Estrutura de Dados e Algoritmos

  • Um algoritmo uma ferramenta computacional para resolver um problema computacional.

    O enunciado do problema especifica o relacionamento entre a entrada e a sada desejada.

    O algoritmo servir para alcanar este relacionamento da entrada com a sada.

    Estrutura de Dados e Algoritmos

  • Ex: Poderia ser necessrio ordenar uma sequncia de nmeros em ordem crescente.

    Como definir formalmente o problema da ordenao ?

    Estrutura de Dados e Algoritmos

  • Problema da Ordenao

  • Instncia: sequncia de entrada. Ordenao: operao fundamental

    em computao, utilizada em etapas intermedirias.

    Dependem: nmero de itens a serem ordenado; extenso em que os itens j esto ordenado; ou restries sobre os valores de itens e dos dispositivos de armazenamento: memria, disco, ...

    Problema da Ordenao

  • Algoritmo Correto: para cada instncia de entrada, ele pra com a sada correta. Algoritmo correto resolve o

    problema computacional dado. Algoritmo Incorreto: pode no

    parar em algumas instncias de entrada, ou ento pode parar com resposta no desejada.

    Problemas & Algoritmos

  • Problemas & Algoritmos

  • Estrutura de Dados: um meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificaes.

    Nenhuma estrutura de dados nica funciona bem para todos os propsitos. importante conhecer os pontos fortes e as limitaes de vrias delas.

    Projetando Algoritmos

  • Tcnica: Poderemos utilizar o material de aula como um livro de receitas para algoritmos. Mas algum dia voc poder encontrar um problema para o qual no seja possvel descobrir prontamente um algoritmo publicado.

    Aprenderemos tcnicas de projeto e anlise de algoritmos, de forma que poderemos desenvolver algoritmos, fornecendo a resposta correta e entender sua eficincia.

    Projetando Algoritmos

  • Problemas difceis: Estaremos estudando algoritmos eficientes.

    A medida habitual de eficincia a velocidade(tempo que um algoritmo demora para produzir um resultado).

    Existem problemas para os quais no se conhece nenhuma soluo eficiente. (NP-completos)

    NP-completo: Ainda no foi encontrado nenhum algoritmo eficiente para um problema NP-completo, mas tambm ningum provou que no possvel existir um algoritmo eficiente.

    Projetando Algoritmos

  • til conhecer os problemas NP-completos, pois sempre aparecem em aplicaes reais. Assim no perder tempo tentando buscar uma soluo eficiente. Por outro lado se mostrar que o problema NP-completo, poder se dedicar a desenvolver um algoritmo que oferea uma boa soluo, embora no seja a melhor possvel.

    Projetando Algoritmos

  • 1.Fornea um exemplo real no qual aparea os problemas computacionais a seguir: ordenao, localizao da envoltria convexa.

    2.Alm da velocidade, que outras medidas de eficincia poderiam ser usadas em uma configurao real ?

    3.Selecione uma estrutura de dados que voc j tenha visto antes e discuta seus pontos fortes e suas limitaes.

    Exerccios

    Slide 1Mtodos de BuscaSlide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14