Existe-t-il des algorithmes ou des structures de données qui doivent trouver la valeur médiane d'un ensemble?

14

J'ai lu ce livre pour ma classe, Randomized Algorithms. Dans ce livre en particulier, il existe une section entière dédiée à la recherche de la médiane d'un tableau à l'aide de la sélection aléatoire, ce qui conduit à un algorithme plus efficace. Maintenant, je voulais savoir s'il existe des applications pratiques de cet algorithme, dans le domaine de l'informatique, en plus d'une amélioration théorique. Y a-t-il des algorithmes ou des structures de données qui doivent trouver la médiane d'un tableau?

Sharan Duggirala
la source
3
Vous voudrez peut-être jeter un œil au tri rapide: en choisissant la médiane comme pivot, son pire cas peut être évité (pire cas d'exécution = O (n log n) au lieu de O (n ^ 2)) et la profondeur de récursivité sera minimisé (log2 (n)).
hoffmale du
1
@hoffmale: Mais cela ne vous oblige pas à trouver la médiane. Il vous oblige à trouver une valeur raisonnablement proche de la médiane. Par exemple, trouver un pivot qui n'est pas dans les 5% supérieurs ou 5% inférieurs garantit O (n log n).
gnasher729
1
@ gnasher729: mais cela ne minimisera pas la profondeur de récursivité. Les deux propriétés sont importantes, par exemple dans un environnement en temps réel à ressources limitées.
hoffmale
@hoffmale, incidemment, la notation habituelle pour le logarithme de base 2 (en particulier chez les informaticiens) est simplement "lg" comme dans (lg (n)).
Wildcard
@ gnasher729 Puisque le sujet est les algorithmes stochastiques, c'est (= raisonnablement proche) est probablement précisément ce que font ces algorithmes.
Konrad Rudolph

Réponses:

17

s'il existe des applications pratiques de cet algorithme dans le domaine de l'informatique en plus d'être une amélioration théorique

L'application de cet algorithme est triviale - vous l'utilisez chaque fois que vous souhaitez calculer la médiane d'un ensemble de données (tableau en d'autres termes). Ces données peuvent provenir de différents domaines: observations astronomiques, sciences sociales, données biologiques, etc.

Cependant, il convient de mentionner quand préférer médiane signifie (ou mode). Fondamentalement, dans les statistiques descriptives, lorsque nos données sont parfaitement réparties normalement, la moyenne, le mode et la médiane sont égaux, c'est-à-dire qu'ils coïncident. D'un autre côté, lorsque nos données sont asymétriques, c'est-à-dire que la distribution de fréquence de nos données est (gauche / droite) asymétrique, la moyenne ne fournit pas le meilleur emplacement central parce que l'asymétrie les éloigne de la valeur typique vers la gauche ou la droite. , tandis que la médiane n'est pas aussi fortement influencée par les données asymétriques, et conserve donc mieux cette position pointant vers une valeur typique. Ainsi, le calcul d'une médiane peut être préférable lorsque vous traitez des données asymétriques.

En outre, l'apprentissage automatique est l'endroit où les méthodes statistiques sont largement utilisées, par exemple le clustering -medians .k

fade2black
la source
Je vous remercie! C'est extrêmement utile! Y a-t-il d'autres algorithmes ou techniques qui pourraient avoir besoin de trouver une médiane?
Sharan Duggirala
5
Bien que cela soit assez vrai (+1), le plus souvent dans les statistiques appliquées, les données sont triées avant de trouver la médiane, car dans de nombreux ou même dans la plupart des contextes où la médiane est souhaitée, il en est de même pour au moins une partie de l'autre ordre statistiques.
John Coleman
1
Intéressant. J'ai entendu parler du clustering -means, mais pas du clustering -medians. kkk
svick
13

Le filtrage médian est courant dans la réduction de certains types de bruit dans le traitement d'image. Surtout le bruit du sel et du poivre. Il fonctionne en sélectionnant la valeur médiane dans chaque canal de couleur dans chaque voisinage local de l'image et en la remplaçant par elle. La taille de ces quartiers peut varier. Les tailles de filtres populaires (quartiers) sont par exemple 3x3 et 5x5 pixels.

mathreadler
la source
1
La médiane ne s'applique pas seulement au bruit dans les images, mais au bruit dans presque toutes les lectures de capteur, dont les caméras ne sont qu'une sorte de capteur. Les manuels scolaires montrent de belles formes d'ondes sinusoïdales et carrées avec lesquelles travailler. Dans le monde réel, des données propres comme celles-ci n'arrivent presque jamais. Si c'est le cas, c'est presque toujours parce que quelqu'un d'autre a pris soin de lisser les données avant de vous les procurer. par exemple, des données de lecture de capteur plus typiques dont vous devez choisir la valeur "correcte": (1, 3, 5, 65, 68, 70, 75, 80, 82, 85, 540, 555). J'ai trié les données pour les rendre plus évidentes.
Dunk
1
Oui, vous avez raison. Mais cela ferait une réponse très longue et ennuyeuse si nous notions toutes les petites choses dans le traitement du signal où elles peuvent être utilisées.
mathreadler
1
Les médianes dans le traitement d'image peuvent également être utilisées par pixel avec des séquences de 5 photos environ, ce qui est un moyen de se débarrasser du bruit temporel (alias les touristes bloquant la vue)
Hagen von Eitzen
@HagenvonEitzen Vous avez raison! En fait, je pensais à quelque chose d'assez similaire il y a quelques jours à peine. Beaucoup de touristes autour ...
mathreadler
10

Le calcul des médianes est particulièrement important dans les algorithmes randomisés.

Très souvent, nous avons un algorithme d'approximation qui, avec une probabilité d' au moins , donne une réponse à un facteur de de la vraie réponse  . Bien sûr, en réalité, nous voulons obtenir une réponse presque correcte avec une probabilité beaucoup plus élevée que . Nous répétons donc l'algorithme  fois, puis prenons la médiane. La médiane sera dans à moins qu'au moins la moitié des  échantillons soient inférieurs à ou au moins la moitié soit plus grande que , et cela a une probabilité exponentiellement petit en  . 1±ϵA3341±ϵA kA(1±ϵ)kA(1-ϵ)A(1+ϵ)k34kA(1±ϵ)kA(1ϵ)A(1+ϵ)k

Le calcul des médianes prend notre algorithme merdique «C'est faux une fois sur quatre» et le transforme en un algorithme «C'est faux une fois sur » tout en ajoutant seulement un facteur de quelque chose comme  au temps d'exécution. n2nn

David Richerby
la source
5

La médiane des médianes a quelques applications:

  • Recherche d'un pivot pour le tri rapide, qui apporte sa complexité la plus défavorable à .O(nlogn)
  • Trouver un pivot pour la sélection rapide, apportant sa complexité au pire moment à , à partir de .O ( n 2 )O(n)O(n2)
Odo Frodo
la source
1
En fait, l'utilisation de la médiane des médianes pour sélectionner un pivot pour le tri rapide semble très susceptible de ralentir l'algorithme dans la pratique, car il tue complètement la localité du cache, qui est la principale contribution à la rapidité du tri rapide. Mais votre commentaire sur la complexité du pire des cas est bien sûr correct.
wchargin
@wchargin Quelles alternatives proposez-vous? Aucune implémentation de tri rapide pratique que je connaisse n'utilise un pivot sensible au cache, car cela échangerait dans le pire cas d'exécution atroce. Le papier séminal «Ingénierie d'une fonction de tri» discute des alternatives, et aucune d'entre elles n'est compatible avec le cache (et néanmoins surpasse la sélection naïve de pivot).
Konrad Rudolph
1
@wchargin… répondant à ma propre question: Java 7 est passé à une nouvelle procédure à double pivot que je n'étais pas au courant. Ceci est intrigant et pourrait rendre les algorithmes de pivot médian obsolètes.
Konrad Rudolph