Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouIsabelle Ribeiro Alterado mais de 10 anos atrás
1
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura para representação
2
Construção de programas eficientes estruturas de dados eficientes Introdução (cont.) Um algoritmo é uma receita para resolver problemas cujos os passos são concretos e não ambíguos. O algoritmo deve ser correto, de tamanho finito e parar para todos os inputs. Um problema é uma tarefa a ser executada, ou uma pergunta a ser respondida. Um programa é uma instancialização de um algoritmo em uma linguagem de programação de computadores.
3
Algoritmo: é um método para resolver um problema. Propriedades: a. deve ser correto b. possui passos concretos c. não possui ambigüidades d. possui número finito de passos e. deve terminar Introdução (cont.)
4
Algoritmo - conceito intuitivo para ajudar pessoas a expressar soluções de problemas Programas - expressar algoritmos numa linguagem formalmente definida Computação Numérica x Computação Comercial computation intensive x data intensive 3a Geração - Processamento Gráfico Objetos Geométricos, Figuras Interface com usuário CAD - Proc. Imagens - Rec. Padrões Geometria Computac.
5
Introdução (cont.) Especificação da Estrutura de dados X Implementação Especificação concentração em descrever o funcionamento não há preocupação na implementação Análise de algoritmos comportamento do algoritmo (perfil de desempenho) medidas em termos de esforço computacional + espaço Explorar vários tipos de objetos de dados Considerar as classes de operações para cada objeto Representar objeto com suas operações eficientemente
6
Introdução (cont.) Tipo de dado - data type associação do tipo ao nome da variável Tipos built-in com operações - FORTRAN, C possibilidade de criar tipos (C - struct) Domínio - data object - domínio do tipo do dado refere ao conjunto de elementos (Inteiros - {... -2, -1, 0, 1, 2,...} ) pode ser finito ou infinito Estrutura de Dados - Data Structure conjunto de objetos e como eles são relacionados operações aplicadas aos elementos do objeto ex: objeto INTEGER com operações +, -, *, ÷
7
Uma solução é dita ser eficiente se ela resolve o problema dentro das restrições de recursos impostas O custo de uma solução é a quantidade de recursos que a solução consome. Muito freqüentemente, o custo é estimado através de um único recurso, como o tempo Introdução (cont.)
8
Uma estrutura de dados exige uma certa quantidade de espaço para cada item a ser armazenado, uma certa quantidade de tempo para executar uma única operação básica, e um certo esforço de programação Cada solução para um problema usa as operações básicas em alguma proporção, e a seleção de uma estrutura de dados deve levar isso em conta Introdução (cont.)
9
Modelos de Computação e Medidas de Complexidade Problema como achar um algoritmo eficiente de solução? Se há um algoritmo, como compará-lo com outros? Como julgar se um algoritmo é bom? O que pode ser computado ou não por um algoritmo?
10
Modelos de Computação e Medidas de Complexidade (cont.) Especificação de Modelo de Computação Por que? Para executar o algoritmo Não Existe um Modelo que satisfaz todas as situações Palavra com tamanho aleatório Palavra com tamanho finito Para cada problema, deve ser selecionado o Modelo de Computação mais adequado
11
Modelos de Computação e Medidas de Complexidade (cont.) Modelos já sugeridos por Emil Post Alan Turing Alonzo Church Sistemas de Produção Máquinas de Turing Funções Recursivas Modelos Equivalentes RAM - Random Access Memory
12
Modelos de Computação e Medidas de Complexidade (cont.) RAM - Random Access Memory Capacidade de Memória Ilimitada Cada célula da Memória com tamanho ilimitado Unidade aritmética
13
Modelos de Computação e Medidas de Complexidade (cont.) Exemplo de um Algoritmo read r1 if r1 0 then write 0 else { r2 r1 r3 r1 - 1 while r3 > 0 do { r2 r2 * r1 r3 r3 - 1 } write r2 } 3 (n - 1) O ( n )
14
Modelos de Computação e Medidas de Complexidade (cont.) Complexidade dá uma idéia de upper bound Por que não um lower bound? O (g)f O(g)f cresce no máximo tão rápido quanto g(x) para x (g)f (g)f cresce no mínimo tão rápido quanto g(x) para x (g)f (g)tem o mesmo crescimento de g(x) para x o(g)f o(g)f cresce mais lentamente que g(x) para x
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.