Beruflich Dokumente
Kultur Dokumente
. reas de estudo da complexidade: - Complexidade Temporal: quantifica a poro de tempo tomada por um algoritmo para rodar em funo do tamanho da entrada.Ela estimada a partir da contagem do numero de operaes elementares realizadas pelo algoritmo. - Complexidade Espacial: representa o espao de memria usado para executar um algoritmo. (baseando-se em uma mesma entrada em ambos os casos) . Casos de complexidade: -Melhor caso (mega) -Caso mdio (Theta) -Pior caso (micron)
1)Melhor Caso Representa a melhor hiptese de execuo de um algoritmo,ou seja,ele ser executado no menor tempo possvel. 2)Caso Mdio Dos trs casos, o mais difcil de se determinar, porque necessita da mdia dos tempos de execuo de todas as entradas de tamanho N ou baseia-se na probabilidade de uma determinada condio ocorrer. 3)Pior Caso a pior possibilidade de execuo de um algoritmo,ou seja,ele vai ser executado no maior tempo possvel.
. Classes de Algoritmos Dentro da complexidade temporal foram definidas classes para facilitar o estudo,essas classes baseiam-se na forma de execuo do algoritmo,o que implicar em alteraes no tempo de execuo.Essas classes so: - Complexidade Constante - Complexidade Linear - Complexidade Logartmica - NlogN - Complexidade Quadrtica - Complexidade Cbica - Complexidade Exponencial
1)Complexidade Constante So os algoritmos de complexidade O(1) Independe do tamanho N de entradas o nico em que as instrues dos algoritmos so executadas num tamanho fixo de vezes
2)Complexidade Linear So os algoritmos de complexidade O(N). O nmero de passos aumenta linearmente em relao ao tamanho da entrada feita.
3)Complexidade logartmica So os algoritmos de complexidade O(logN) Ocorre tipicamente em algoritmos que dividem o problema em problemas menores
Exemplo:Busca Binria
def binsearch(seq, search): right = len(seq) left = 0 previous_center = -1 if search < seq[0]: return -1 while 1: center = (left + right) / 2 candidate = seq[center] if search == candidate: return center if center == previous_center: return - 2 - center elif search < candidate: right = center else: left = center previous_center = center
4)NlogN Como o prprio nome diz, so algoritmos que tm complexidade O(NlogN) Ocorre tipicamente em algoritmos que dividem o problema em problemas menores, porm juntando posteriormente a soluo dos problemas menores
5)Complexidade Quadrtica So os algoritmos de complexidade O(N) Itens so processados aos pares, geralmente com um loop dentro do outro
Exemplo:Bubble sort
def bubbleSort(L,n): flag = True while flag: flag = False for i in range(n-1): if L[i] > L[i+1]: L[i],L[i+1] = L[i+1],L[i] flag = True
6)Complexidade Cbica So os algoritmos de complexidade O(N) Itens so processados trs a trs, geralmente com um loop dentro do outros dois
Exemplo:Multiplicao de matrizes para i = 1,...,n faa para j = 1,...,n faa C[i,j] = 0 para k = 1,...,n faa C[i,j] = C[i,j] + A[i,k] * B[k,j] fim para fim para fim para
7)Complexidade Exponencial
So os algoritmos de complexidade O(2N)
Utilizao de Fora Bruta para resolv-los (abordagem simples para resolver um determinado problema, geralmente baseada diretamente no enunciado do problema e nas definies dos conceitos envolvidos) Geralmente no so teis sob o ponto de vista prtico
-Pilhas
Uma pilha uma estrutura de dados onde em todas as inseres, retiradas e acessos ocorrem apenas em um dos extremos (no caso, em seu topo). Uma pilha suporta as seguintes operaes: Empilhar(push) : insere um elemento no topo da lista Desempilhar(pop) : remove o elemento do topo Topo(top) : acessa o elemento do topo da lista Vazia(isEmpty) : indica se a pilha esta vazia Tamanho(size) : retorna a quantidade de elementos da pilha
.Estrutura de dados
Uma estrutura de dados um modo particular de armazenamento e organizao de dados em um computador de modo que possam ser usados eficientemente.
-rvore binria
Uma arvore binria uma estrutura de dados que pode ser representada como uma hierarquia onde cada elemento chamado de n . O n inicial ou o primeiro elemento chamado de raiz. Em uma arvore binria um elemento pode ter um mximo de dois filhos no nvel inferior denominados como sub-rvore esquerda e sub-rvore direita.Um n sem filhos chamado de folha . A profundidade de um n a distncia deste n at a raiz e a distancia entre a folha mais distante e a raiz a altura da arvore.Um conjunto de ns com a mesma profundidade denominado, nvel da rvore.
-Tabela Hash
uma estrutura de dados especial, que associa chaves de pesquisa a valores. Seu objetivo , a partir de uma chave simples, fazer uma busca rpida e obter o valor desejado.Tabelas de disperso so tipicamente utilizadas para implementar vetores associativos, conjuntos e caches. So tipicamente usadas para indexao de grandes volumes de informao (como bases de dados). A implementao tpica busca uma funo de disperso que seja de complexidade, no importando o nmero de registros na tabela (desconsiderando colises). O ganho com relao a outras estruturas associativas (como um vetor simples) passa a ser maior conforme a quantidade de dados aumenta.
Bibliografia
http://pt.wikipedia.org/wiki/Tabela_de_dispers%C3%A3o http://www.4learn.pro.br/leandro/ed_tarde_2011_1/complexidade_algoritmos.pdf http://pt.wikipedia.org/wiki/Complexidade_computacional http://pt.scribd.com/doc/70962949/9/Complexidade-Logaritmica