Calculer la médiane d'un milliard de chiffres

Si vous avez un milliard de chiffres et de, une centaine d'ordinateurs, quelle est la meilleure façon de localiser la médiane de ces nombres?

Une solution que j'ai est:

  • Diviser l'ensemble de manière égale entre les ordinateurs.
  • Les trier.
  • Trouver les médianes de chaque ensemble.
  • Trier les jeux sur les médianes.
  • De fusionner deux ensembles à la fois à partir de la plus faible à la plus forte moyenne.

Si nous avons m1 < m2 < m3 ... puis la première fusion Set1 et Set2 et dans l'ensemble, nous pouvons jeter tous les nombres inférieurs à la médiane de Set12 (fusionné). Donc, à tout point de temps, nous avons l'égalité de taille fixe. En passant, cela ne peut pas être fait en parallèle. Des idées?

  • sont les milliards de nombres triés?
  • Boker: en fait, le problème se compose de deux sous-problèmes: 1) trier la liste et 2) obtenir de l'élément d'indice 5'000'000'000. J'ai peine à croire que les chiffres sont triés.
  • Est-ce devoirs, une question d'entrevue, ou juste de la curiosité?
  • C'est une question d'entrevue trouvé sur un site
  • le problème n'a pas besoin composé de deux sous-problèmes que vous décrivez, par exemple quickselect. Mais quickselect n'est pas paralléliser, au moins pas de façon triviale. Et bien sûr, vous avez raison, si les numéros sont pré-triés, c'est une jolie question inutile.
  • Je ne pense pas qu'un pays de langue anglaise utilise le long milliards de dollars en anglais pour toutes fins officielles. Par exemple, ici au royaume-UNI, nous avons cessé de l'utiliser en 1974. Je considère l'utilisation de "milliards de dollars", au sens d'un million de millions, dans la langue anglaise pour être un pervers de la question de tour, pas un "vrai milliards de dollars" à tous. Des cours de français, ce serait une question totalement différente, mais la question n'est pas en français.
  • J'ai d'autre part imediatly visualiser un milliard de dollars comme étant un "million" comme vous l'avez dit. Je suis européen, donc je suppose que c'est logique
  • Oui, si j'étais à parler le français (dont je n'ai pas fait depuis très longtemps, et de mal, même à l'époque), ou de toute autre langue Européenne je ne doute pas faire l'inverse erreur tout le temps, en disant: "milliards de dollars" pour "milliard". Donc sur la deuxième pensées, il n'est pas forcément un truc à utiliser des "milliards de dollars" pour les "millions" en anglais, c'est peut-être difficile à éviter l'erreur de traduction. Ma réaction serait plus adapté dirigé vers les locuteurs de l'anglais tente de revenir à l'époque où nous avons utilisé la "bonne" des milliards et des Britannia a statué sur les vagues 😉
  • Vous n'avez pas besoin de les trier! en.wikipedia.org/wiki/...
  • Belle question! Pouvez-vous partager le site où vous avez trouvé la question?
  • 1 milliard de dollars de chiffres n'est qu'à quelques gigaoctets de données, vous n'avez pas besoin de plusieurs Ordinateurs ni des algorithmes complexes pour résoudre cette tâche. Ne pas compliquer.
  • questions obligatoires: 1) où les nombres sont stockés? 2) définir le "meilleur moyen"
  • Ca me rappelle un Google les questions de l'entrevue...
  • cs.stackexchange.com/questions/1914/...
  • si vous voulez juste pour "localiser" il, de l'utilisation de l'échantillonnage et un ordinateur...
  • ce type de numéros, cela fait une différence si ces juste des entiers, ou un écorchement numéros .. etc.
  • Avez-vous considéré l'utilisation de GPU computing? Les gpu sont exceptionnellement bons à faire ce que vous voulez.
  • Plusieurs machines peuvent communiquer avec un temps de latence faible par rapport à l'échéance prévue, ce qui semble pleurer pour un sur la ligne de l'algorithme: distribuer les données (un sujet à méditer dans son propre droit: imaginez l'entrée "ordonna presque"), des échanges d'après les estimations actuelles (par sous-ensemble/machine), la médiane de chaque maintenant et puis (serait probablement aller pour une séquence de Fibonacci pour l'enfer de celui-ci), il suffit de compter les valeurs aberrantes au risque de devoir recommencer (avec plus de connaissances sur la distribution de la valeur).
  • Je ne pense pas que c'est vrai. Ce problème a incroyablement faible densité de calcul. Les gpu sont bien à l'opposé de la nature de la tâche.
  • Si c'était "continental" des milliards (10^12), alors il serait maladroit de les stocker (en supposant que int32 chiffres, ce serait un 4 TO fichier juste pour les chiffres). De toute façon, étant dans le domaine des questions théoriques, cette question devrait être "Comment trouver la médiane d'un ridicule quantité d'articles?(sans tenir compte des détails de bas niveau)"
  • vous êtes de droite. J'ai oublié le calcul médian eu une forte dépendance de données. Mon mauvais.

InformationsquelleAutor anony | 2010-04-03