Você está na página 1de 3

Problema da Mediana Em teoria da probabilidade e em estatstica, a mediana uma medida de tendncia central, um nmero que caracteriza as observaes de uma

a determinada varivel de tal forma que este nmero (a mediana) de um grupo de dados ordenados separa a metade inferior da amostra, populao ou distribuio de probabilidade, da metade superior. Mais concretamente, 1/2 da populao ter valores inferiores ou iguais mediana e 1/2 da populao ter valores superiores ou iguais mediana. s vezes, a mediana uma medida melhor que do que a mdia, pois esta influenciada por valores extremos. Para calcular a mediana de n nmeros fcil: basta orden-los. Se n impar ento a mediana ser encontrada no termo (n+1)/2. Se n par ento a mediana ser a mdia dos termos n/2 e (n+2)/2. A principal desvantagem desta abordagem que isto leva O (n log n) para ser executado e gostaramos de alguma coisa de linear. Vamos considerar um problema mais geral. SELECTION Entrada: Uma lista de nmero S, um inteiro k Sada: O k-simo menor elemento de S Um algoritmo de diviso e conquista para a seleo baseado no quicksort Para um nmero v, imagine que a lista S ser dividida em duas categorias: elementos menores que v, aqueles que so iguais ou maiores que v. Por exemplo, se o vetor

dividido considerando v=13, os dois sub-vetores gerados sero SL = {2,5,8,1,11,5,4} |SL| = 7 SR = {13,21,36,20} |SR| = 4 A busca ser reduzida para umas dessas listas. Se ns queremos o oitavo menor elemento de S, ns sabemos que ele ser o primeiro menor elemento de SR.

selection(S,k) =

A complexidade deste algoritmo no pior caso O(n2) e no melhor caso O(n). Suponha que a escolha randmica de v tem 50% de chance de ser boa. Quantos vs ns precisamos escolher para que em mdia consigamos uma boa escolha? Vamos colocar isso de outra forma e utilizar o seguinte lema.

Lema: Em mdia com uma moeda honesta precisamos jogar a moeda duas vezes antes que uma cara seja vista. Prova 1: Seja E o valor esperado de vezes de lanamentos antes que uma cara seja vista. Ns precisamos de apenas um lanamento se ele cara. Se ele coroa (que ocorre com probabilidade 1/2), ns precisamos repetir o processo. Portanto, quando E = 2. Prova 2: Portanto, depois de duas divises em mdia, o vetor estar reduzido a no mximo do seu tamanho. Seja T(n) o tempo de execuo esperado para um vetor de tamanho n, ns teremos T(n) T(n ) + O(n) A partir dessa recorrncia, temos que T(n) = O(n)
int selection (int *a, int ini, int fim, int k){ int pivotIndex, pivotValue,auxIndex; int i; pivotIndex = (ini+fim)/2;//no-randmico pivotValue = a[pivotIndex]; swap(a[pivotIndex], a[fim]); auxIndex = ini; for(i = ini; i< fim;i++){ if(a[i] < pivotValue){ swap(a[auxIndex], a[i]); auxIndex = auxIndex+1; } } swap(a[auxIndex], a[fim]); if(k == auxIndex) return a[k]; else if (k < auxIndex ) return selection(a, ini, auxIndex-1,k); else return selection(a,auxIndex+1, fim, k); }

, isto vale

Exerccio 1 Problema da localizao da agncia postal unidimensional Temos n nmeros reais a1,,an que representam as localizaes de alguns pontos . Desejamos encontrar um nmero a (no necessariamente um dos nmeros da entrada) que minimize o somatrio das distncias entre todos os nmeros a i e o nmero escolhido a.

Mostre que a mediana a melhor soluo para este problema. http://acm.uva.es/p/v100/10041.html Exerccio 2 Encontre a melhor soluo para o problema de localizao da agncia postal bidimensional, no qual os pontos so pares de coordenadas (x,y) e a distncia entre os pontos a = (x1,y1) e b=(x2,y2) dado pela distncia de Manhattan dado por d(a,b) = |x1-x2| + |y1-y2| http://br.spoj.pl/problems/SUPERMER/

Soluo 1391894 class vector + sort (algoritm)


Soluo 2702601 qsort Soluo 3956537 usando selection no randmico Soluo 3956542 usando selection randmico

Exerccio 3 Sejam X[1..n] e Y[1..n] dois vetores, cada um contendo n nmeros j em sequncia ordenada. Fornea um algoritmo de tempo O(log n) para localizar a mediana de todos os 2n elementos nos vetores X e Y.

Você também pode gostar