AEDS2.2 Medida Do Tempo de Execucao

Embed Size (px)

DESCRIPTION

tempo de execução

Citation preview

  • Medida do Tempo de Execuo de um Programa

    Livro Projeto de Algoritmos Nvio ZivianiCaptulo 1 Seo 1.3http://www2.dcc.ufmg.br/livros/algoritmos/

  • Medida do Tempo de Execuo de um Programa

    O projeto de algoritmos fortemente influenciado pelo estudo de seus comportamentos.

    Depois que um problema analisado e decises de projeto so finalizadas, necessrio estudar as vrias opes de algoritmos a serem utilizados,

    Algoritmos e Estrutura de Dados II

    opes de algoritmos a serem utilizados, considerando os aspectos de tempo de execuo e espao ocupado.

    Muitos desses algoritmos so encontrados em reas como pesquisa operacional, otimizao, teoria dos grafos, estatstica, probabilidades, entre outras.

  • Tipos de Problemas na Anlise de Algoritmos

    Anlise de um algoritmo particular. Qual o custo de usar um dado algoritmo

    para resolver um problema especfico?

    Algoritmos e Estrutura de Dados II

    Caractersticas que devem ser investigadas: anlise do nmero de vezes que cada parte do

    algoritmo deve ser executada, estudo da quantidade de memria necessria

  • Tipos de Problemas na Anlise de Algoritmos

    Anlise de uma classe de algoritmos. Qual o algoritmo de menor custo possvel

    para resolver um problema particular? Toda uma famlia de algoritmos investigada.

    Algoritmos e Estrutura de Dados II

    Toda uma famlia de algoritmos investigada. Procura-se identificar um que seja o melhor

    possvel. Coloca-se limites para a complexidade

    computacional dos algoritmos pertencentes classe.

  • Custo de um Algoritmo

    Determinando o menor custo possvel para resolver problemas de uma dada classe, temos a medida da dificuldade inerente para resolver o problema.

    Quando o custo de um algoritmo igual ao menor custo possvel, o algoritmo timo para a medida de

    Algoritmos e Estrutura de Dados II

    custo possvel, o algoritmo timo para a medida de custo considerada.

    Podem existir vrios algoritmos para resolver o mesmo problema.

    Se a mesma medida de custo aplicada a diferentes algoritmos, ento possvel compar-los e escolher o mais adequado.

  • Medida do Custo pela Execuo do Programa

    Tais medidas so bastante inadequadas e os resultados jamais devem ser generalizados: os resultados so dependentes do compilador

    que pode favorecer algumas construes em detrimento de outras;

    Algoritmos e Estrutura de Dados II

    detrimento de outras; os resultados dependem do hardware; quando grandes quantidades de memria so

    utilizadas, as medidas de tempo podem depender deste aspecto.

  • Medida do Custo pela Execuo do Programa

    Apesar disso, h argumentos a favor de se obterem medidas reais de tempo. Ex.: quando h vrios algoritmos distintos para

    resolver um mesmo tipo de problema, todos com um custo de execuo dentro de uma mesma

    Algoritmos e Estrutura de Dados II

    um custo de execuo dentro de uma mesma ordem de grandeza.

    Assim, so considerados tanto os custos reais das operaes como os custos no aparentes, tais como alocao de memria, indexao, carga, dentre outros.

  • Medida do Custo por meio de um Modelo Matemtico

    Usa um modelo matemtico baseado em um computador idealizado.

    Deve ser especificado o conjunto de operaes e seus custos de execues.

    mais usual ignorar o custo de algumas das operaes e

    Algoritmos e Estrutura de Dados II

    considerar apenas as operaes mais significativas. Ex.: algoritmos de ordenao. Consideramos o nmero de

    comparaes entre os elementos do conjunto a ser ordenado e ignoramos as operaes aritmticas, de atribuio e manipulaes de ndices, caso existam.

  • Funo de Complexidade

    Para medir o custo de execuo de um algoritmo comum definir uma funo de custo ou funo de complexidade f.

    f(n) a medida do tempo necessrio para executar um algoritmo para um problema de tamanho n. Funo de complexidade de tempo: f(n) mede o tempo necessrio

    para executar um algoritmo em um problema de tamanho n.

    Algoritmos e Estrutura de Dados II

    Funo de complexidade de espao: f(n) mede a memria necessria para executar um algoritmo em um problema de tamanho n.

    Utilizaremos f para denotar uma funo de complexidade de tempo daqui para a frente.

    A complexidade de tempo na realidade no representa tempo diretamente, mas o nmero de vezes que determinada operao considerada relevante executada.

  • Exemplo: maior elemento

    Considere o algoritmo para encontrar o maior elemento de um vetor de inteiros A[n]; n 1.#define n 10int Max(int A[n]) {

    int i, Temp;

    Temp = A[0];

    Algoritmos e Estrutura de Dados II

    Seja f uma funo de complexidade tal que f(n) o nmero de comparaes entre os elementos de A, se A contiver n elementos.

    Qual a funo f(n)?

    Temp = A[0]; for (i = 1; i < n; i++)

    if (Temp < A[i]) Temp = A[i];

    return Temp; }

  • Exemplo: maior elemento

    Considere o algoritmo para encontrar o maior elemento de um vetor de inteiros A[n]; n 1.#define n 10int Max(int A[n]) {

    int i, Temp;

    Temp = A[0];

    Algoritmos e Estrutura de Dados II

    Seja f uma funo de complexidade tal que f(n) o nmero de comparaes entre os elementos de A, se A contiver n elementos.

    f(n) = n-1

    Temp = A[0]; for (i = 1; i < n; i++)

    if (Temp < A[i]) Temp = A[i];

    return Temp; }

  • Exemplo: maior elemento

    Teorema: Qualquer algoritmo para encontrar o maior elemento de um conjunto com n elementos, n 1, faz pelo menos n -1 comparaes.

    Algoritmos e Estrutura de Dados II

  • Exemplo: maior elemento

    Teorema: Qualquer algoritmo para encontrar o maior elemento de um conjunto com n elementos, n 1, faz pelo menos n -1 comparaes.

    Prova: Cada um dos n - 1 elementos tem de ser investigado por meio de comparaes, que menor

    Algoritmos e Estrutura de Dados II

    investigado por meio de comparaes, que menor do que algum outro elemento.

  • Exemplo: maior elemento

    Teorema: Qualquer algoritmo para encontrar o maior elemento de um conjunto com n elementos, n 1, faz pelo menos n -1 comparaes.

    Prova: Cada um dos n - 1 elementos tem de ser investigado por meio de comparaes, que menor

    Algoritmos e Estrutura de Dados II

    investigado por meio de comparaes, que menor do que algum outro elemento. Logo, n-1 comparaes so necessrias

  • Exemplo: maior elemento

    Teorema: Qualquer algoritmo para encontrar o maior elemento de um conjunto com n elementos, n 1, faz pelo menos n -1 comparaes.

    Prova: Cada um dos n - 1 elementos tem de ser investigado por meio de comparaes, que menor

    Algoritmos e Estrutura de Dados II

    investigado por meio de comparaes, que menor do que algum outro elemento. Logo, n-1 comparaes so necessrias

    O teorema acima nos diz que, se o nmero de comparaes for utilizado como medida de custo, ento a funo Max do programa anterior tima.

  • Tamanho da Entrada de Dados

    A medida do custo de execuo de um algoritmo depende principalmente do tamanho da entrada comum considerar o tempo de execuo de um programa

    como uma funo do tamanho da entrada. Para alguns algoritmos, o custo de execuo uma

    Algoritmos e Estrutura de Dados II

    funo da entrada particular dos dados, no apenas do tamanho da entrada. No caso da funo Max do programa do exemplo, o custo

    uniforme sobre todos os problemas de tamanho n. J para um algoritmo de ordenao isso no ocorre: se os

    dados de entrada j estiverem quase ordenados, ento o algoritmo pode ter que trabalhar menos.

  • Melhor Caso, Pior Caso e Caso Mdio

    Melhor caso: menor tempo de execuo sobre todas as entradas de tamanho n.

    Pior caso: maior tempo de execuo sobre todas as entradas de tamanho n.

    Algoritmos e Estrutura de Dados II

    Se f uma funo de complexidade baseada na anlise de pior caso, o custo de aplicar o algoritmo nunca maior do que f(n).

    Caso mdio (ou caso esperado): mdia dos tempos de execuo de todas as entradas de tamanho n.

  • Anlise de Melhor Caso, Pior Caso e Caso Mdio

    Na anlise do caso esperado, supe-se uma distribuio de probabilidades sobre o conjunto de entradas de tamanho n e o custo mdio obtido com base nessa distribuio.

    A anlise do caso mdio geralmente muito mais difcil de obter do que as anlises do melhor e do pior caso.

    Algoritmos e Estrutura de Dados II

    que as anlises do melhor e do pior caso.

    comum supor uma distribuio de probabilidades em que todas as entradas possveis so igualmente provveis.

    Na prtica isso nem sempre verdade.

  • Exemplo - Registros de um Arquivo

    Considere o problema de acessar os registros de um arquivo.

    Cada registro contm uma chave nica que utilizada para recuperar registros do

    Algoritmos e Estrutura de Dados II

    arquivo. O problema: dada uma chave qualquer,

    localize o registro que contenha esta chave. O algoritmo de pesquisa mais simples o

    que faz a pesquisa seqencial.

  • Exemplo - Registros de um Arquivo

    Seja f uma funo de complexidade tal que f(n) o nmero de registros consultados no arquivo (nmero de vezes que a chave de consulta comparada com a chave de cada registro). melhor caso:

    Algoritmos e Estrutura de Dados II

    pior caso:

    caso mdio:

  • Exemplo - Registros de um Arquivo

    Seja f uma funo de complexidade tal que f(n) o nmero de registros consultados no arquivo (nmero de vezes que a chave de consulta comparada com a chave de cada registro). melhor caso:

    registro procurado o primeiro consultado

    Algoritmos e Estrutura de Dados II

    f(n) = 1 pior caso:

    caso mdio:

  • Exemplo - Registros de um Arquivo

    Seja f uma funo de complexidade tal que f(n) o nmero de registros consultados no arquivo (nmero de vezes que a chave de consulta comparada com a chave de cada registro). melhor caso:

    registro procurado o primeiro consultado

    Algoritmos e Estrutura de Dados II

    f(n) = 1 pior caso:

    registro procurado o ltimo consultado ou no est presente no arquivo;

    f(n) = n caso mdio:

  • Exemplo - Registros de um Arquivo

    No estudo do caso mdio, vamos considerar que toda pesquisa recupera um registro.

    Se pi for a probabilidade de que o i-simo registro seja procurado, e considerando que

    Algoritmos e Estrutura de Dados II

    registro seja procurado, e considerando que para recuperar o i-simo registro so necessrias i comparaes, ento:

    f(n) = 1 x p1 + 2 x p2 + 3 x p3 + ... + n x pn

  • Exemplo - Registros de um Arquivo

    Para calcular f(n) basta conhecer a distribuio de probabilidades pi.

    Se cada registro tiver a mesma probabilidade de ser acessado que todos os outros, ento

    pi = 1/n, 1 i n

    Algoritmos e Estrutura de Dados II

    pi = 1/n, 1 i n

  • Exemplo - Registros de um Arquivo

    Para calcular f(n) basta conhecer a distribuio de probabilidades pi.

    Se cada registro tiver a mesma probabilidade de ser acessado que todos os outros, ento

    pi = 1/n, 1 i n

    Algoritmos e Estrutura de Dados II

    Nesse caso:

    A anlise do caso esperado revela que uma pesquisa com sucesso examina aproximadamente metade dos registros.

    pi = 1/n, 1 i n

  • Exemplo - Registros de um Arquivo

    Seja f uma funo de complexidade tal que f(n) o nmero de registros consultados no arquivo (nmero de vezes que a chave de consulta comparada com a chave de cada registro). melhor caso:

    registro procurado o primeiro consultado

    Algoritmos e Estrutura de Dados II

    f(n) = 1 pior caso:

    registro procurado o ltimo consultado ou no est presente no arquivo;

    f(n) = n caso mdio:

    f(n) = (n + 1)/2.

  • Exemplo - Maior e Menor Elemento (1) Considere o problema de encontrar o maior e o menor

    elemento de um vetor de inteiros A[n]; n 1. Um algoritmo simples pode ser derivado do algoritmo

    apresentado no programa para achar o maior elemento.

    void MaxMin1(int A[n], int *Max, int *Min) {

    Algoritmos e Estrutura de Dados II

    void MaxMin1(int A[n], int *Max, int *Min) { int i;

    (*Max) = A[0]; (*Min) = A[0]; for (i = 1; i < n; i++) {

    if (A[i] > (*Max)) (*Max) = A[i]; if (A[i] < (*Min)) (*Min) = A[i];

    } }

  • Qual a funo de complexidade para MaxMin1?

    void MaxMin1(int A[n], int *Max, int *Min) { int i;

    (*Max) = A[0]; (*Min) = A[0]; for (i = 1; i < n; i++) {

    Algoritmos e Estrutura de Dados II

    for (i = 1; i < n; i++) { if (A[i] > (*Max)) (*Max) = A[i]; if (A[i] < (*Min)) (*Min) = A[i];

    } }

  • Qual a funo de complexidade para MaxMin1?

    void MaxMin1(int A[n], int *Max, int *Min) { int i;

    (*Max) = A[0]; (*Min) = A[0]; for (i = 1; i < n; i++) {

    if (A[i] > (*Max)) (*Max) = A[i]; if (A[i] < (*Min)) (*Min) = A[i];

    Algoritmos e Estrutura de Dados II

    Seja f(n) o nmero de comparaes entre os elementos de A, se A contiver n elementos.

    Logo f(n) = 2(n-1) para n > 0, para o melhor caso, pior caso e caso mdio.

    if (A[i] < (*Min)) (*Min) = A[i]; }

    }

  • Exemplo - Maior e Menor Elemento (2)

    MaxMin1 pode ser facilmente melhorado: a comparao A[i] < Min s necessria quando a comparao A[i] > Max d falso.

    void MaxMin2(int A[n], int *Max, int *Min) {

    Algoritmos e Estrutura de Dados II

    void MaxMin2(int A[n], int *Max, int *Min) { int i;

    (*Max) = A[0]; (*Min) = A[0]; for (i = 1; i < n; i++) {

    if (A[i] > (*Max)) (*Max) = A[i]; else if (A[i] < (*Min)) (*Min) = A[i];

    } }

  • Qual a funo de complexidade para MaxMin2?

    void MaxMin2(int A[n], int *Max, int *Min) { int i;

    (*Max) = A[0]; (*Min) = A[0]; for (i = 1; i < n; i++) {

    if (A[i] > (*Max)) (*Max) = A[i]; else if (A[i] < (*Min)) (*Min) = A[i];

    Algoritmos e Estrutura de Dados II

    else if (A[i] < (*Min)) (*Min) = A[i]; }

    }

  • Qual a funo de complexidade para MaxMin2?

    void MaxMin2(int A[n], int *Max, int *Min) { int i;

    (*Max) = A[0]; (*Min) = A[0]; for (i = 1; i < n; i++) {

    if (A[i] > (*Max)) (*Max) = A[i]; else if (A[i] < (*Min)) (*Min) = A[i];

    Algoritmos e Estrutura de Dados II

    Melhor caso:

    Pior caso:

    Caso mdio:

    else if (A[i] < (*Min)) (*Min) = A[i]; }

    }

  • Qual a funo de complexidade para MaxMin2?

    void MaxMin2(int A[n], int &Max, int &Min) { int i;

    Max = A[0]; Min = A[0]; for (i = 1; i < n; i++) {

    if (A[i] > Max) Max = A[i]; else if (A[i] < Min) Min = A[i];

    }

    Algoritmos e Estrutura de Dados II

    } }

    Melhor caso: quando os elementos esto em ordem crescente; f(n) = n 1

    Pior caso:

    Caso mdio:

  • Qual a funo de complexidade para MaxMin2?

    void MaxMin2(int A[n], int &Max, int &Min) { int i;

    Max = A[0]; Min = A[0]; for (i = 1; i < n; i++) {

    if (A[i] > Max) Max = A[i]; else if (A[i] < Min) Min = A[i];

    }

    Algoritmos e Estrutura de Dados II

    } }

    Melhor caso: quando os elementos esto em ordem crescente; f(n) = n 1

    Pior caso: quando A[0] o maior elemento; f(n) = 2(n 1)

    Caso mdio:

  • Qual a funo de complexidade para MaxMin2?

    void MaxMin2(int A[n], int &Max, int &Min) { int i;

    Max = A[0]; Min = A[0]; for (i = 1; i < n; i++) {

    if (A[i] > Max) Max = A[i]; else if (A[i] < Min) Min = A[i];

    }

    Algoritmos e Estrutura de Dados II

    } }

    Melhor caso: quando os elementos esto em ordem crescente; f(n) = n 1

    Pior caso: quando A[0] o maior elemento; f(n) = 2(n 1)

    Caso mdio: No caso mdio, considerando A[i] maior do que Max a metade das vezes. f(n) = 3n/2 3/2

  • Exemplo - Maior e Menor Elemento (3) Considerando o nmero de comparaes realizadas, existe a

    possibilidade de obter um algoritmo mais eficiente:1. Compare os elementos de A aos pares, separando-os em

    dois subconjuntos (maiores em um e menores em outro), a um custo de n/2 comparaes.

    2. O mximo obtido do subconjunto que contm os maiores

    Algoritmos e Estrutura de Dados II

    2. O mximo obtido do subconjunto que contm os maiores elementos, a um custo de n/2 -1 comparaes

    3. O mnimo obtido do subconjunto que contm os menores elementos, a um custo de n/2 -1 comparaes

  • Exemplo - Maior e Menor Elemento (3) Considerando o nmero de comparaes realizadas, existe a

    possibilidade de obter um algoritmo mais eficiente:1. Compare os elementos de A aos pares, separando-os em

    dois subconjuntos (maiores em um e menores em outro), a um custo de n/2 comparaes.

    2. O mximo obtido do subconjunto que contm os maiores

    Algoritmos e Estrutura de Dados II

    2. O mximo obtido do subconjunto que contm os maiores elementos, a um custo de n/2 -1 comparaes

    3. O mnimo obtido do subconjunto que contm os menores elementos, a um custo de n/2 -1 comparaes

  • Qual a funo de complexidade para este novo algoritmo?

    Os elementos de A so comparados dois a dois. Os elementos maiores so comparados com Max e os elementos menores so comparados com Min.

    Quando n mpar, o elemento que est na posio A[n] duplicado na posio A[n + 1] para evitar um

    Algoritmos e Estrutura de Dados II

    A[n] duplicado na posio A[n + 1] para evitar um tratamento de exceo.

    Para esta implementao:

    no pior caso, melhor caso e caso mdio

  • Exemplo - Maior e Menor Elemento (3)void MaxMin3(Vetor A, int *Max, int *Min) {

    int i, FimDoAnel;

    if ((n % 2) > 0) { A[n] = A[n - 1]; FimDoAnel = n;

    } else FimDoAnel = n - 1;

    if (A[0] > A[1]) { *Max = A[0]; *Min = A[1];

    Algoritmos e Estrutura de Dados II

    *Max = A[0]; *Min = A[1]; } else {

    *Max = A[1]; *Min = A[0];} i = 3; while (i A[i]) { if (A[i - 1] > *Max) *Max = A[i - 1]; if (A[i] < *Min) *Min = A[i];

    } else {

    if (A[i - 1] < *Min) *Min = A[i - 1]; if (A[i] > *Max) *Max = A[i];

    } i += 2;

    } }

  • Qual a funo de complexidade para MaxMin3?

    Quantas comparaes so feitas em MaxMin3?

    Algoritmos e Estrutura de Dados II

  • Qual a funo de complexidade para MaxMin3?

    Quantas comparaes so feitas em MaxMin3? 1. comparao feita 1 vez 2. comparao feita n/2 - 1 vezes

    Algoritmos e Estrutura de Dados II

    3. e 4. comparaes feitas n/2 1 vezes

  • Qual a funo de complexidade para MaxMin3?

    Quantas comparaes so feitas em MaxMin3? 1. comparao feita 1 vez 2. comparao feita n/2 - 1 vezes

    Algoritmos e Estrutura de Dados II

    3. e 4. comparaes feitas n/2 1 vezes

    f(n) = 1 + n/2 1 + 2 * (n/2 1) f(n) = (3n 6)/2 + 1f(n) = 3n/2 3 + 1 = 3n/2 - 2

  • Comparao entre os Algoritmos

    A tabela apresenta uma comparao entre os algoritmos dos programas MaxMin1, MaxMin2 e MaxMin3, considerando o nmero de comparaes como medida de complexidade.

    Os algoritmos MaxMin2 e MaxMin3 so superiores ao algoritmo MaxMin1 de forma geral.

    O algoritmo MaxMin3 superior ao algoritmo MaxMin2 com

    Algoritmos e Estrutura de Dados II

    O algoritmo MaxMin3 superior ao algoritmo MaxMin2 com relao ao pior caso e bastante prximo quanto ao caso mdio.

  • Limite Inferior - Uso de um Orculo

    Existe possibilidade de obter um algoritmo MaxMin mais eficiente?

    Para responder temos de conhecer o limite inferior para essa classede algoritmos.

    Tcnica muito utilizada: uso de um orculo.

    Algoritmos e Estrutura de Dados II

    Tcnica muito utilizada: uso de um orculo. Dado um modelo de computao que expresse o comportamento do

    algoritmo, o orculo informa o estado da computao depois de cadapasso possvel (no caso, o estado aps cada comparao).

    Para derivar o limite inferior, o orculo procura sempre fazer com que oalgoritmo trabalhe o mximo, escolhendo como resultado da prximacomparao aquele que cause o maior trabalho possvel necessriopara determinar a resposta final.

  • Exemplo de Uso de um Orculo

    Teorema: Qualquer algoritmo para encontrar o maior e o menorelemento de um conjunto com n elementos no ordenados, n>1,faz pelo menos [3n/2]- 2 comparaes.

    Prova: A tcnica utilizada define um orculo que descreve ocomportamento do algoritmo por meio de um conjunto de ntuplas,mais um conjunto de regras associadas que mostram as tuplaspossveis (estados) que um algoritmo pode assumir a partir de uma

    Algoritmos e Estrutura de Dados II

    possveis (estados) que um algoritmo pode assumir a partir de umadada tupla e uma nica comparao.

    Uma 4tupla, representada por (a; b; c; d), onde os elementos de: a nunca foram comparados; b foram vencedores e nunca perderam em comparaes

    realizadas; c foram perdedores e nunca venceramem comparaes

    realizadas; d foram vencedores e perdedores em comparaes realizadas.

  • Exemplo de Uso de um Orculo

    O algoritmo inicia no estado (n, 0, 0, 0) e termina com (0, 1, 1, n - 2). Aps cada comparao a tupla (a; b; c; d) consegue progredir apenas

    se ela assume um dentre os seis estados possveis abaixo: (a - 2, b + 1, c + 1, d)

    se a 2 (dois elementos de a so comparados) (a - 1, b + 1, c, d) ou (a - 1, b, c + 1, d) ou (a - 1, b, c, d + 1)

    Algoritmos e Estrutura de Dados II

    (a - 1, b + 1, c, d) ou (a - 1, b, c + 1, d) ou (a - 1, b, c, d + 1)se a 1 (um elemento de a comparado com um de b ou um de c)

    (a, b - 1, c, d + 1)se b 2 (dois elementos de b so comparados)

    (a, b, c - 1, d + 1)se c 2 (dois elementos de c so comparados)

  • Exemplo de Uso de um Orculo O primeiro passo requer necessariamente a manipulao do

    componente a. O caminho mais rpido para levar a at zero requer n/2

    mudanas de estado e termina com a tupla (0, n/2, n/2, 0)(por meio de comparao dos elementos de a dois a dois).

    A seguir, para reduzir o componente b at um so necessrias n/2 - 1 e mudanas de estado (mnimo de comparaes necessrias para obter o maior elemento de b)

    Idem para c, com n/2 - 1 mudanas de estado.

    Algoritmos e Estrutura de Dados II

  • Exemplo de Uso de um Orculo

    O primeiro passo requer necessariamente a manipulao docomponente a.

    O caminho mais rpido para levar a at zero requer n/2mudanas de estado e termina com a tupla (0, n/2, n/2, 0)(por meio de comparao dos elementos de a dois a dois).

    A seguir, para reduzir o componente b at um so

    Algoritmos e Estrutura de Dados II

    A seguir, para reduzir o componente b at um sonecessrias [ n/2 ] - 1 e mudanas de estado (mnimo decomparaes necessrias para obter o maior elemento de b).

    Idem para c, com [ n/2 ] - 1 mudanas de estado.

  • Exemplo de Uso de um Orculo Logo, para obter o estado (0, 1, 1, n - 2) a partir do estado (n,

    0, 0, 0) so necessrias[ n/2 ] + [ n/2 ] - 1 + [ n/2 ] - 1= [3n/2] 2 comparaes.

    O teorema nos diz que se o nmero de comparaes entre oselementos de um vetor for utilizado como medida de custo,ento o algoritmo MaxMin3 timo.ento o algoritmo MaxMin3 timo.

    Algoritmos e Estrutura de Dados II