J'essaie actuellement de vérifier si, compte tenu d'un tableau non trié A de longueur N et d'un entier k, il existe ou non un élément qui apparaît n/k fois ou plus. Je pensais à ce problème en calculant le mode, puis en le comparant à n/k. Cependant, je ne sais pas comment calculer ce mode rapidement. Mon résultat final doit être n log (k), mais je ne sais pas vraiment comment faire cela. Le plus rapide que je pouvais trouver était n k ...Calcul du mode statistique
Répondre
Utilisez une table de hachage pour compter la fréquence de chaque valeur:
uint[int] counts;
foreach(num; myArray) {
counts[num]++;
}
int mostFrequent;
uint maxCount = 0;
foreach(num, count; counts) {
if(count > maxCount) {
mostFrequent = num;
maxCount = count;
}
}
J'allais suggérer cela aussi. C'est un algorithme O (N). – Welbog
Si vous voulez seulement savoir si n/k est dépassé ou seulement besoin du premier élément et non de tous les éléments qui dépassent n/k vous pouvez ajouter une vérification dans la première boucle et terminer lorsque le nombre dépasse n/k pour tout élément, en option, sauvegarder cet élément si nécessaire. – tvanfosson
C'est le bon type de réponse à la question que j'ai posée. Cependant, j'ai oublié de mentionner que je ne peux pas supposer l'existence d'une question de hachage parfait, mais à la question que j'ai posée, c'est la bonne réponse. – samoz
Il suffit de marcher le tableau et garder compte dans un hachage/dictionnaire (et retour vrai une fois n/k est trouvé, sinon faux) serait O (n)
modifier, quelque chose comme:
counts = {}
for n in numbers:
if (counts.has_key(n)):
counts[ n ] += 1
else:
counts[ n ] = 1
if (counts[ n ] >= n/k):
return true
return false
pseudocode:
found = false
value = null
B = new hashtable
for (i =0, j = A[i]; i < |A| and !found; ++i, j=A[i])
if B contains key j
B[j] = B[j] + 1
if B[j] > |A|/k
found = true
value = j
endif
else
B[j] = 1
endif
end for
En supposant que votre mise en œuvre Hashtable a O (1) insérer/recherche ce doit être O (n)
Set m = n/k arrondi. Faites un quicksort, mais rejetez les sous-listes de longueur inférieure à m. Comme le quicksort, vous pouvez avoir de la malchance et choisir à plusieurs reprises des pivots proches des extrémités. Mais cela a une petite probabilité de se produire, si vous choisissez les pivots au hasard.
Il y aura des niveaux O (log (k)) pour la récursion, et chaque niveau prend le temps O (n).
Calcul du mode statistique en F # .net pour jeu de données (entiers) qui a monomodes
let foundX (num: int, dList) = List.filter (fun x -> x = num) dList
let groupNum dList =
dList
|> (List.map (fun x -> foundX (x, dList)))
|> (List.maxBy (fun x -> x.Length))
let Mode (dList: int List) =
let x = groupNum dList
x.Head
//using Mode
let data = [1;1;1;1;1;1;1;1;2;2;3;3;3;1;4;4;4;4;4]
Mode data;;`
- 1. Calcul de la signification statistique avec Excel
- 2. Algorithme d'estimation statistique
- 3. Calcul du temps écoulé
- 4. calcul du temps d'exécution
- 5. longueur de calcul du tableau
- 6. Calcul du total dans gridview
- 7. Réglage du fuseau horaire du mode org
- 8. % opérateur pour le calcul du temps
- 9. Calcul du temps pour réaliser un projet
- 10. Calcul du classement de l'impression d'annonces
- 11. Calcul de la longueur du contenu SOAP
- 12. calcul du temps la durée d'un fichier
- 13. Java: Cache les résultats du calcul?
- 14. Calcul du rang centile dans MySQL
- 15. Calcul des occurrences futures du vendredi 13e
- 16. Analyse statistique des journaux de serveur - Correction de l'extrapolation
- 17. Que signifie la statistique Utilisation du carreleur dans l'instrument iPhone OpenGL ES?
- 18. Compteur d'horodatage (TSC) lors du passage du mode noyau au mode utilisateur
- 19. Exécution du mode intégré et du mode classique sur le même serveur iis7
- 20. Activation du mode Présentation dans Windows
- 21. Vérification du mode protégé d'Internet Explorer
- 22. Fonction du mode idiomatique dans Clojure
- 23. Masquage du titre en mode plein écran?
- 24. Comment faire revenir l'ordinateur du mode veille
- 25. Problème du mode de flux WCF
- 26. Résumé du mode strict d'ActionScript 3
- 27. Qu'est-ce qu'un bon package mathématique statistique pour .Net?
- 28. Colonne de la version du document dans la feuille de calcul
- 29. UnsatisfiedLinkError lors du démarrage du mode hébergé de GWT
- 30. Date Calcul