当前位置:网站首页>Table de hachage, conflit de hachage
Table de hachage, conflit de hachage
2022-06-25 13:47:00 【Chef de station du programmeur de pile complète】
Bonjour tout le monde,On se revoit,Je suis ton ami, le chef de l'armée..
Table de hachage 1.Une table de hachage est une sorte de clékeyStockage des donnéesvalueStructure de,ParkeyStocké comme valeur d'identitévalueValeur;Il suffit d'entrerkey,Vous pouvez obtenir levalueValeur.Lorsque vous Interrogez un élément par valeur clé,Utiliser le mêmehashLa fonction vakeyConvertir en indice de tableau,Obtenir des données à partir d'un tableau en fonction de l'emplacement de l'indice.C'est en fait une extension du tableau,Tableau+Liste des liens+Arbre Rouge et noir. 2.Conception de la table de hachage La conception de la fonction de hachage ne doit pas être trop compliquée.,Les fonctions de hachage complexes ont un impact indirecthashPerformance du tableau;Deuxièmement, les valeurs de hachage doivent être réparties aussi aléatoirement et uniformément que possible.,Éviter ou réduire le nombre de conflits de hachage,Moyenne des données stockées dans chaque seau.
Les méthodes de conception conventionnelles comprennent l'analyse des données.,Sélectionner les caractéristiques commerciales des données pour extraire certaines données pour le calcul,Ensuite, nous obtenons le résultat qui est le plus haché après avoir additionné la longueur du tableau de hachage.Il y a aussi l'Adressage direct、Méthode de la moyenne au carré、Méthode de pliage et méthode des nombres aléatoires, etc..
Facteur de charge(Facteur de charge):Réduire la longueur de la Liste Expansion inefficace:Multiplié par2Pour agrandir Plus le facteur de charge est grand,Plus d'éléments sont stockés dans la table de hachage,Moins il y a de place libre,Plus la probabilité de conflit de hachage est élevée,Insérer、Les performances diminuent lorsque les données sont supprimées et trouvées. L'expansion inefficace doit être évitée.,Parce que dans de rares cas, la vitesse d'insertion est très lente,Provoque un crash de l'utilisateur. Fonction de hachage 1.La valeur de hachage calculée par la fonction de hachage doit être un entier non négatif 2.Sikey1==key2,Alorshash(key1)==hash(key2) 3.Même les deuxkeyDehashValeur égale,Mais c'est possiblekeyValeurs inégales 4.Scénario d'application:Cryptage sécurisé、Identification unique、Vérification des données、Équilibrage de la charge、 Fragmentation des données et stockage réparti, etc. Hash conflict En raison de la limitation de la portée de la cartographie ,key La probabilité de valeur est supérieure à la plage de cartographie , Il y a deux choses différentes key Mapping to the same location
Les méthodes courantes pour résoudre les conflits de hachage sont Open address et Link List . Méthode des adresses ouvertes:Une fois là - Bas,hash Les conflits de valeurs sont résolus en redéployant de nouveaux emplacements . Pour la méthode de détection linéaire lorsque plus d'éléments sont stockés dans la table de hachage , Plus la probabilité de conflit de hachage est élevée , Dans des cas extrêmes, il faut sonder toute la table de hachage ,La complexité temporelle estO(n). Méthode de la liste de liens:Méthode de l'adresse de la chaîne, Plus utilisé dans des applications spécifiques , Chaque seau correspond à une liste liée dans la table de hachage , Conserver les éléments ayant la même valeur de hachage dans la liste des liens correspondants à la même position de baril , Parce qu'il faut comparer key Valeur donc la complexité du temps d'insertion est O(k), La complexité temporelle de la recherche et de la suppression est proportionnelle à la longueur de la liste liée O(k),En généralk Quand la valeur n'est pas grande, on peut penser que O(1). La longueur de la liste doit être réduite au minimum , Un paramètre peut être introduit : Facteur de charge ou facteur de charge . Le facteur de charge est utilisé pour limiter indirectement la longueur de la liste , Plus la valeur est élevée, plus la longueur admissible de la liste est grande , Plus la table de hachage est mauvaise , Mais plus le facteur de charge est petit, plus l'espace est gaspillé .
HashMap La méthode de la liste de liens est adoptée pour résoudre le problème. hashConflit,ThreadLocalMap Résolution des conflits par une méthode d'adressage ouverte basée sur la détection linéaire .
Les données de la méthode d'adressage ouvert sont stockées dans un tableau , Peut être utilisé efficacement CPU Cache pour accélérer les requêtes , Il n'y aura pas de problèmes avec les listes de liens et les pointeurs . Lorsque le facteur de charge est grand, il provoque un grand nombre d'actions de détection ,Les performances vont chuter, C'est très gênant de supprimer les données. , Et il faut plus d'espace de stockage que la méthode de la liste liée .La quantité de données est relativement faible、 Convient à la méthode d'adresse ouverte lorsque le facteur de charge est faible . Les données de la méthode de la liste liée sont stockées dans la liste liée , L'utilisation de la mémoire est un peu plus élevée que la méthode d'adresse de développement , Un facteur de charge plus élevé peut être toléré , Parce que le stockage est nécessaire dans le noeud nextPointeur, Consomme de l'espace mémoire supplémentaire 【 Problèmes de charge utile 】. En fait, si l'on considère la longueur de la liste , On pourrait envisager d'introduire des arbres rouges et noirs. , Pour éviter les attaques malveillantes de collision de hachage qui stockent des données dans un seau .
Éditeur:Programmeur de pile complète,Veuillez indiquer la source de la réimpression.:https://javaforall.cn/151682.htmlLien vers le texte original:https://javaforall.cn
边栏推荐
- 关于扫雷的简易实现
- The priority of catch() and then (..., ERR) of promise
- There is a problem with the date when MySQL imports and exports data to excel
- Cesium model Daquan glb/glft format
- 使用调试工具调试博图TCP连接所遇到的问题
- [pit avoidance means "difficult"] the antd form dynamic form is deleted, and the first line is displayed by default
- 学习编程的起点。
- Parabolic motion in unity 2D games
- À propos du stockage des données en mémoire
- OpenStack学习笔记(一)
猜你喜欢

Rust, le meilleur choix pour un programmeur de démarrer une entreprise?

Application of tactile intelligent sharing-rk3568 in financial self-service terminal

历史上的今天:网易成立;首届消费电子展召开;世界上第一次网络直播

Where can the brightness of win7 display screen be adjusted
![[data visualization] antv L7 realizes map visualization, drilldownlayer drill asynchronously obtains data, and suspends the warning box](/img/81/f8280f16efa314d736c3a869c32ef0.jpg)
[data visualization] antv L7 realizes map visualization, drilldownlayer drill asynchronously obtains data, and suspends the warning box

论文阅读:Graph Contrastive Learning with Augmentations

數據在內存中的存儲相關內容
![[proteus simulation] 51 MCU +ds1302+lcd1602 display](/img/02/9644415b72c330afa15060d81d4cbc.png)
[proteus simulation] 51 MCU +ds1302+lcd1602 display

NR-ARFCN和信道栅格、同步栅格和GSCN

深入理解深度神经网络背后的数学(Mysteries of Neural Networks Part I)
随机推荐
Numpy库使用入门
关于结构体,枚举,联合的一些知识
Explanation of a textbook question
关于三子棋游戏的简易实现与N子棋胜利判断方法
Related examples of data storage in memory
Germany holds global food security Solidarity Conference
Some knowledge of the initial C language
[pit avoidance means "difficult"] antd select fuzzy search
Include what you use to save chaotic header files
leetcode:剑指 Offer II 091. 粉刷房子【二维dp】
How unity makes the UI intercept click events
Where can the brightness of win7 display screen be adjusted
leetcode:918. 环形子数组的最大和【逆向思维 + 最大子数组和】
打新债是不是不安全
数据库中显示error1822,error1824
Gorm-- search you don't know
Detailed explanation of string operation functions and memory functions
Nova中的api
QT mouse tracking
[pit avoidance means "difficult"] actionref current. Reload() does not take effect