logo

Jaucējfunkcijas un jaucējfunkciju veidi

Jaucējfunkcijas ir datorzinātņu pamatjēdziens, un tiem ir izšķiroša nozīme dažādās lietojumprogrammās, piemēram, datu glabāšanā, izguvē un kriptogrāfijā. Datu struktūrās un algoritmos (DSA) jaucējfunkcijas galvenokārt izmanto jaucēj tabulās, kas ir būtiskas efektīvai datu pārvaldībai. Šajā rakstā ir apskatītas jaukšanas funkciju sarežģītības, to īpašības un dažādi DSA izmantoto jaucējfunkciju veidi.

Kas ir jaucējfunkcija?

A jaucējfunkcija ir funkcija, kas ņem ievadi (vai 'ziņojumu') un atgriež fiksēta izmēra baitu virkni. Izvadi, parasti skaitli, sauc par hash kods vai hash vērtība . Jaucējfunkcijas galvenais mērķis ir efektīvi kartēt patvaļīga lieluma datus uz fiksēta lieluma vērtībām, kuras bieži izmanto kā indeksus jaukšanas tabulās.



Jaucējfunkciju galvenās īpašības

  • Deterministisks : jaucējfunkcijai konsekventi jārada viena un tā pati izvade vienai un tai pašai ievadei.
  • Fiksēts izvades izmērs : jaucējfunkcijas izvadei ir jābūt fiksētam izmēram neatkarīgi no ievades lieluma.
  • Efektivitāte : jaucējfunkcijai jāspēj ātri apstrādāt ievadi.
  • Vienveidība : jaucējfunkcijai jaucējvērtības vienmērīgi jāsadala visā izvades telpā, lai izvairītos no klasteru veidošanās.
  • Priekšattēla pretestība : jaucējfunkcijas apvēršanai, t.i., lai atrastu sākotnējo ievadi ar jaucējvērtību, jābūt skaitļošanas ziņā neiespējamam.
  • Sadursmes pretestība : Būtu grūti atrast divus dažādus ievades datus, kas rada vienādu jaucējvērtību.
  • Lavīnas efekts : nelielām ievades izmaiņām vajadzētu radīt ievērojami atšķirīgu jaucējvērtību.

Jaucējfunkciju lietojumprogrammas

  • Hash tabulas : DSA jaucējfunkcijas visbiežāk izmanto jaucēj tabulās, kas nodrošina efektīvu datu glabāšanas un izgūšanas veidu.
  • Datu ticamība : jaucējfunkcijas tiek izmantotas, lai nodrošinātu datu integritāti, ģenerējot kontrolsummas.
  • Kriptogrāfija : kriptogrāfijas lietojumprogrammās jaucējfunkcijas tiek izmantotas, lai izveidotu drošus jaukšanas algoritmus, piemēram, SHA-256.
  • Datu struktūras : jaucējfunkcijas tiek izmantotas dažādās datu struktūrās, piemēram, Blūma filtros un jaucējkopās.

Jaucējfunkciju veidi

Ir daudzas jaucējfunkcijas, kas izmanto ciparu vai burtu un ciparu taustiņus. Šajā rakstā ir apskatītas dažādas jaucējfunkcijas:

  1. Sadalīšanas metode.
  2. Reizināšanas metode
  3. Vidēja kvadrāta metode
  4. Salocīšanas metode
  5. Kriptogrāfiskās jaucējfunkcijas
  6. Universāla jaukšana
  7. Perfekta jaukšana

Sāksim detalizēti apspriest šīs metodes.

1. Sadalīšanas metode

Sadalīšanas metode ietver atslēgas dalīšanu ar pirmskaitli un atlikuma izmantošanu kā jaucējvērtību.



h ( k )= k pret m

masīva garums java

Kur k ir atslēga un 𝑚 m ir pirmskaitlis.

Priekšrocības :



  • Vienkārši īstenojams.
  • Darbojas labi, ja 𝑚 m ir pirmskaitlis.

Trūkumi :

  • Slikta izplatīšana, ja 𝑚 m nav gudri izvēlēts.

2. Reizināšanas metode

Reizināšanas metodē konstante 𝐴 A (0 m lai iegūtu jaucējvērtību.

h ( k )=⌊ m ( kA mod1)⌋

Kur ⌊ ⌋ apzīmē grīdas funkciju.

Priekšrocības :

1 miljons cik 0
  • Mazāk jutīgs pret 𝑚 izvēli m .

Trūkumi :

  • Sarežģītāka nekā dalīšanas metode.

3. Vidēja kvadrāta metode

Vidēja kvadrāta metodē atslēga ir kvadrātā, un rezultāta vidējie cipari tiek ņemti par jaucējvērtību.

Soļi :

  1. Atslēgu kvadrātā.
  2. Izņemiet kvadrātveida vērtības vidējos ciparus.

Priekšrocības :

  • Izveido labu jaucējvērtību sadalījumu.

Trūkumi :

  • Var būt nepieciešams vairāk skaitļošanas piepūles.

4. Salocīšanas metode

Salocīšanas metode ietver atslēgas sadalīšanu vienādās daļās, daļu summēšanu un pēc tam moduļa ņemšanu attiecībā uz 𝑚 m .

java pārvērst char par virkni

Soļi :

  1. Sadaliet atslēgu daļās.
  2. Summējiet daļas.
  3. Paņemiet modulo 𝑚 m no summas.

Priekšrocības :

  • Vienkāršs un viegli īstenojams.

Trūkumi :

  • Atkarīgs no sadalīšanas shēmas izvēles.

5. Kriptogrāfiskās jaucējfunkcijas

Kriptogrāfiskās jaucējfunkcijas ir izstrādātas tā, lai tās būtu drošas, un tās tiek izmantotas kriptogrāfijā. Piemēri: MD5, SHA-1 un SHA-256.

Raksturlielumi :

  • Priekšattēla pretestība.
  • Otrā priekšattēla pretestība.
  • Sadursmes pretestība.

Priekšrocības :

  • Augsta drošība.

Trūkumi :

sql izvēlieties kā
  • Skaitļošanas intensīvs.

6. Universālā jaukšana

Universālā jaukšanā tiek izmantota jaukšanas funkciju saime, lai samazinātu sadursmes iespējamību jebkurai ievades datu kopai.

h ( k )=(( a k + b )pret lpp )pret m

Kur a un b ir nejauši izvēlētas konstantes, lpp ir pirmskaitlis, kas lielāks par m , un k ir atslēga.

Priekšrocības :

  • Samazina sadursmju iespējamību.

Trūkumi :

  • Nepieciešams vairāk aprēķinu un uzglabāšanas.

7. Perfekta jaukšana

Ideālas jaukšanas mērķis ir izveidot bez sadursmes jaukšanas funkciju statiskai atslēgu kopai. Tas garantē, ka divām atslēgām nebūs vienādas vērtības.

Veidi :

  • Minimālā perfektā jaukšana: nodrošina, ka jaucējfunkcijas diapazons ir vienāds ar atslēgu skaitu.
  • Perfekta jaukšana, kas nav minimāla: diapazons var būt lielāks par atslēgu skaitu.

Priekšrocības :

  • Nav sadursmju.

Trūkumi :

java cast int uz virkni
  • Sarežģīti būvēt.

Secinājums

Noslēgumā jāsaka, ka jaucējfunkcijas ir ļoti svarīgi rīki, kas palīdz ātri uzglabāt un atrast datus. Lai programmatūra darbotos labāk un drošāk, ir svarīgi zināt dažādu veidu jaucējfunkcijas un to pareizi lietot. Izvēloties darbam pareizo jaucējfunkciju, izstrādātāji var ievērojami uzlabot savu sistēmu efektivitāti un uzticamību.