Introducere în funcția de spălare în C
Acest articol are o notă scurtă despre hashing (tabel hash și funcție hash). Cel mai important concept este „căutarea” care determină complexitatea timpului. Pentru a reduce complexitatea timpului decât orice alt concept de hashing a structurii de date este introdus, care are O (1) timp în cazul mediu și cel mai rău caz va dura O (n) timp.
Hashing-ul este o tehnică cu acces mai rapid la elemente care mapează datele date cu o cheie mai mică pentru comparații. În general, în această tehnică, tastele sunt urmărite folosind funcția hash într-un tabel cunoscut sub numele de tabla hash.
Ce este funcția Hash?
Funcția hash este o funcție care utilizează operația în timp constant pentru stocarea și preluarea valorii din tabela hash, care este aplicată pe tastele ca numere întregi și aceasta este utilizată ca adresă pentru valori în tabelul hash.
Tipuri de funcție Hash
Tipurile de funcții hash sunt explicate mai jos:
1. Metoda diviziunii
În această metodă, funcția hash depinde de restul unei diviziuni.
Exemplu: elementele care trebuie plasate într-un tabel hash sunt 42, 78, 89, 64 și să luăm dimensiunea tabelului ca 10.
Hash (cheie) = Elements% size size;
2 = 42% 10;
8 = 78% 10;
9 = 89% 10;
4 = 64% 10;
Reprezentarea tabelului poate fi văzută mai jos:
2. Metoda Square Square
În această metodă, partea de mijloc a elementului pătrat este luată ca indice.
Elementul care trebuie plasat în tabelul hash este 210, 350, 99, 890, iar dimensiunea mesei este de 100.
210 * 210 = 44100, indicele = 1 ca parte mijlocie a rezultatului (44100) este 1.
350 * 350 = 122500, indicele = 25 ca mijloc al rezultatului (122500) este 25.
99 * 99 = 9801, index = 80 ca mijloc al rezultatului (9801) este 80.
890 * 890 = 792100, index = 21 ca mijloc al rezultatului (792100) este 21.
3. Metoda de pliere a cifrelor
În această metodă elementul care trebuie plasat în tabel uh este cheia de hash sing, care se obține prin împărțirea elementelor în diferite părți și apoi se combină piesele prin efectuarea unor operații matematice simple.
Elementul care urmează să fie plasat este 23576623, 34687734.
- hash (cheie) = 235 + 766 + 23 = 1024
- cheie hash) = 34 + 68 + 77 + 34 = 213
În aceste tipuri de hashing, să presupunem că avem numere de la 1- 100 și mărimea hash table = 10. Elemente = 23, 12, 32
Hash (cheie) = 23% 10 = 3;
Hash (cheie) = 12% 10 = 2;
Hash (cheie) = 32% 10 = 2;
Din exemplul de mai sus observați că ambele elemente 12 și 32 indică locul 2 în tabel, unde nu este posibil să se scrie ambele în același loc, o astfel de problemă este cunoscută sub denumirea de coliziune. Pentru a evita acest tip de probleme, există câteva tehnici de funcții hash care pot fi utilizate.
Tipuri de tehnici de rezolvare a coliziunilor
Să discutăm tipurile de tehnici de rezolvare a coliziunilor:
1. Înlănțuire
În această metodă, după cum sugerează și numele, furnizează un lanț de casete pentru înregistrarea din tabel având două intrări de elemente. Deci, ori de câte ori apar astfel de coliziuni, atunci casetele acționează ca o listă legată va fi format.
Exemplu: 23, 12, 32 cu dimensiunea tabelului 10.
Hash (cheie) = 23% 10 = 3;
Hash (cheie) = 12% 10 = 2;
Hash (cheie) = 32% 10 = 2;
2. Deschideți Adresare
- Sondare liniară
Aceasta este o altă metodă pentru soluționarea problemelor de coliziune. Așa cum spune și numele ori de câte ori apare o coliziune, atunci două elemente ar trebui să fie plasate pe aceeași intrare din tabel, dar prin această metodă, putem căuta următorul spațiu gol sau intrarea în tabel și plasăm al doilea element. Acest lucru poate duce din nou la o altă problemă; dacă nu găsim nicio intrare goală în tabel, atunci aceasta duce la grupare. Astfel, aceasta este cunoscută sub numele de o problemă de clustering, care poate fi rezolvată prin metoda următoare.
Exemplu: 23, 12, 32 cu dimensiunea tabelului 10
Hash (cheie) = 23% 10 = 3;
Hash (cheie) = 12% 10 = 2;
Hash (cheie) = 32% 10 = 2;
În această diagramă 12 și 32 pot fi plasate în aceeași intrare cu indicele 2, dar prin această metodă, acestea sunt plasate liniar.
- Sondarea cvadratică
Această metodă este o rezoluție pentru problema de clustering în timpul sondării liniare. În această metodă funcția hash cu cheie hash este calculată ca hash (cheie) = (hash (cheie) + x * x)% dimensiunea tabelului (unde x = 0, 1, 2 …).
Exemplu: 23, 12, 32 cu dimensiunea tabelului 10
Hash (cheie) = 23% 10 = 3;
Hash (cheie) = 12% 10 = 2;
Hash (cheie) = 32% 10 = 2;
În acest lucru, putem vedea că 23 și 12 pot fi plasate cu ușurință, dar 32 nu mai pot fi din nou 12 și 32 împărtășește aceeași intrare cu același index din tabel, conform acestei metode hash (key) = (32 + 1 * 1) % 10 = 3. Dar, în acest caz, intrarea în tabel cu indexul 3 este plasată cu 23, deci trebuie să incrementăm x valoarea cu 1. Hash (cheie) = (32 + 2 * 2)% 10 = 6. Deci putem să plasăm acum 32 la intrarea cu indexul 6 din tabel.
- Dublu hashing
Această metodă trebuie să calculăm 2 funcții hash pentru a rezolva problema coliziunii. Prima este calculată folosind o metodă simplă de divizare. Al doilea trebuie să îndeplinească două reguli; acesta nu trebuie să fie egal cu 0 și intrările trebuie sondate.
- 1 (cheie) = cheie% dimensiunea tabelului.
- 2 (cheie) = p - (modificarea tastei p), unde p este numere prime <dimensiunea tabelului.
Exemplu: 23, 12, 32 cu dimensiunea tabelului 10
Hash (cheie) = 23% 10 = 3;
Hash (cheie) = 12% 10 = 2;
Hash (cheie) = 32% 10 = 2;
În acest caz, elementul 32 poate fi plasat folosind hash2 (cheie) = 5 - (32% 5) = 3. Deci, 32 poate fi plasat la indexul 5 din tabel, care este gol, deoarece trebuie să sărim 3 intrări pentru a-l plasa.
Concluzie-Funcție de zgomot în C
Hashing-ul este una dintre tehnicile importante în ceea ce privește căutarea datelor furnizate cu metode foarte eficiente și rapide, folosind funcția hash și tabele hash. Fiecare element poate fi căutat și plasat folosind diferite metode de hashing. Această tehnică este foarte rapidă decât oricare altă structură de date din punct de vedere al coeficientului de timp.
Articole recomandate
Acesta este un ghid pentru funcția Hashing din C. Aici vom discuta despre introducerea funcției Hashing în C, Ce este funcția Hash, Tipuri de funcție hash, etc. Puteți parcurge și alte articole sugerate pentru a afla mai multe -
- Hashing în DBMS
- Procesul de criptare
- Cum se instalează CakePHP?
- Cum funcționează Blockchain
- Funcția Hashing în Java
- Funcția Hashing în PHP | Cum să lucrezi?