Existem algoritmos ou estruturas de dados que precisam encontrar o valor mediano de um conjunto?


14

Eu tenho lido este livro para minha turma, Algoritmos Aleatórios. Neste livro em particular, há uma seção inteira dedicada a encontrar a mediana de uma matriz usando seleção aleatória, que leva a um algoritmo mais eficiente. Agora, eu queria saber se existem aplicações práticas desse algoritmo, no domínio da ciência da computação, além de uma melhoria teórica. Existem algoritmos ou estruturas de dados que precisam encontrar a mediana de uma matriz?


3
Você pode dar uma olhada no quicksort: escolhendo a mediana como o pivô, seu pior caso pode ser evitado (pior caso de execução = O (n log n) em vez de O (n ^ 2)) e a profundidade da recursão será minimizado (log2 (n)).
Hoffmale #

11
@hoffmale: Mas isso não exige que você encontre a mediana. Requer que você encontre um valor razoavelmente próximo da mediana. Por exemplo, encontrar um pivô que não esteja entre os 5% superiores ou os 5% inferiores garante O (n log n).
precisa saber é o seguinte

11
@ gnasher729: mas isso não minimizará a profundidade da recursão. Ambas as propriedades são importantes, por exemplo, em um ambiente de tempo real com recursos limitados.
Hoffmale #

@hoffmale, aliás, a notação usual para o logaritmo da base 2 (particularmente entre os cientistas da computação) é simplesmente "lg" como em (lg (n)).
Wildcard

@ gnasher729 Como o tópico são algoritmos estocásticos, este (= razoavelmente próximo) é provavelmente exatamente o que esses algoritmos estão fazendo.
Konrad Rudolph

Respostas:


17

se existe alguma aplicação prática desse algoritmo no domínio da ciência da computação, além de ser uma melhoria teórica

A aplicação desse algoritmo é trivial - você o utiliza sempre que quiser calcular uma mediana de um conjunto de dados (array em outras palavras). Esses dados podem vir de diferentes domínios: observações astronômicas, ciências sociais, dados biológicos, etc.

No entanto, vale mencionar quando preferir mediana à média (ou modo). Basicamente, nas estatísticas descritivas, quando nossos dados são perfeitamente normais distribuídos, a média, o modo e a mediana são iguais, ou seja, coincidem. Por outro lado, quando nossos dados são distorcidos, ou seja, a distribuição de frequência de nossos dados é distorcida (esquerda / direita), a média falha em fornecer a melhor localização central, porque a distorção os afasta do valor típico para a esquerda ou direita. , enquanto a mediana não é tão fortemente influenciada pelos dados distorcidos e, portanto, mantém melhor essa posição apontando para um valor típico. Assim, calcular uma mediana pode ser preferível quando você lida com dados distorcidos.

Além disso, o aprendizado de máquina é onde os métodos estatísticos são muito usados, por exemplo, medians clustering .k


Obrigado! Isso é extremamente útil! Algum outro algoritmo ou técnica que precise encontrar uma mediana?
Sharan Duggirala

5
Embora isso seja verdade o suficiente (+1), na maioria das vezes nas estatísticas aplicadas, os dados seriam classificados antes da localização da mediana, pois em muitos ou mesmo na maioria dos contextos em que a mediana é desejada, o mesmo ocorre com alguns dos outros pedidos. Estatisticas.
John Coleman

11
Interessante. Ouvi falar sobre o agrupamento mean, mas não sobre o agrupamento medians. kk
svick

13

A filtragem mediana é comum na redução de certos tipos de ruído no processamento de imagens. Especialmente barulho de sal e pimenta. Ele funciona escolhendo o valor mediano em cada canal de cores em cada vizinhança local da imagem e substituindo-o por ele. O tamanho desses bairros pode variar. Os tamanhos de filtro populares (vizinhanças) são, por exemplo, 3x3 e 5x5 pixels.


11
A mediana se aplica não apenas ao ruído nas imagens, mas ao ruído em praticamente todas as leituras dos sensores, das quais as câmeras são apenas um tipo de sensor. Os manuais escolares mostram boas formas de onda sinusoidal e quadrada para trabalhar. No mundo real, dados limpos como esse quase nunca acontecem. Se isso acontecer, é quase sempre porque outra pessoa cuidou de suavizar os dados antes que você os obtivesse. por exemplo, dos dados mais típicos de leitura de sensores, dos quais você precisa selecionar o valor "correto": (1, 3, 5, 65, 68, 70, 75, 80, 82, 85, 540, 555). Eu organizei os dados para torná-los mais óbvios.
Dunk

11
Sim, você está certo. Mas daria uma resposta muito longa e chata se escrevêssemos todas as pequenas coisas no processamento de sinais onde elas podem ser usadas.
mathreadler

11
Medianas em processamento de imagem também pode ser usado por pixel com sequências de 5 ou tão fotos, que é uma maneira de se livrar do ruído temporal (aka turistas bloqueando a visão.)
Hagen von Eitzen

@HagenvonEitzen Você está certo! Na verdade, eu estava pensando em algo parecido há apenas alguns dias. Muitos turistas ...
mathreadler

10

A mediana da computação é particularmente importante em algoritmos aleatórios.

341±ϵA34kA(1±ϵ)kA(1ϵ)A(1+ϵ)k

2nn


5

A mediana de medianas tem algumas aplicações:

  • O(nlogn)
  • O(n)O(n2)

11
Atualmente, o uso de mediana de medianas para selecionar um pivô para quicksort parece muito mais lento na prática, porque mata completamente a localidade do cache, que é a principal contribuição para a rapidez do quicksort. Mas o seu comentário sobre a pior das complexidades é obviamente correto.
Whargin #

@wchargin Que alternativas você sugere? Nenhuma implementação prática de quicksort que eu conheço usa um pivô sensível ao cache, porque isso é negociado no tempo de execução atroz do pior caso. O documento seminal “Engineering a sort function” discute alternativas, e nenhuma delas reconhece cache (e, no entanto, supera a seleção de pivô ingênua).
Konrad Rudolph

11
@ wchargin… respondendo à minha própria pergunta: o Java 7 mudou para um novo procedimento de pivô duplo que eu desconhecia. Isso é intrigante e pode tornar obsoletos os algoritmos de mediana do pivô.
Konrad Rudolph
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.