Skip to main content

Ano ang isang hashtable?

Sa science sa computer, ang isang hashtable ay isang istraktura ng data para sa pag -iimbak ng data na binubuo ng isang listahan ng mga halaga, na tinatawag na mga susi, na ipinares sa isang kaukulang listahan ng mga halaga, na tinatawag na isang array.Halimbawa, ang isang pangalan ng negosyo ay maaaring ipares sa address nito.Karaniwan, ang bawat halaga sa array ay may isang numero ng posisyon na tinukoy bilang isang hash.Ang hash function ay karaniwang isang hanay ng mga tagubilin o isang algorithm na mapa ang bawat pangunahing halaga sa isang hash mdash;Ang pagkonekta sa pangalan ng negosyo sa address nito, ang numero ng telepono at kategorya ng negosyo nito, halimbawa.Ang layunin ng pag -andar ng hash ay upang italaga ang bawat susi sa isang natatanging kaukulang halaga sa array;Ito ay karaniwang tinutukoy bilang hashing.Ang mga pag -andar ng hash ay dapat na maayos na mai -format para sa isang hashtable upang gumana nang maayos.

Ang pagganap ng isang hashtable sa isang hanay ng data ay nakasalalay sa kahusayan ng hash function nito.Ang isang mahusay na pag -andar ng hash ay karaniwang nagbibigay para sa isang pantay na paghahanap ng mga susi at isang pamamahagi ng mga mappings sa kaukulang hanay.Ang isang pagbangga ng hash ay nangyayari kapag ang dalawang susi ay itinalaga sa parehong kaukulang halaga.Kapag naganap ang isang pagbangga ng hash, ang pag -andar ng hash ay karaniwang naisakatuparan muli hanggang sa natagpuan ang isang natatanging kaukulang halaga;Ito ay karaniwang nagreresulta sa mas mahabang oras ng hashing.Bagaman ang bilang ng mga susi sa isang hashtable ay karaniwang naayos, kung minsan ay maaaring may mga dobleng susi.Kahit na, ang isang mahusay na dinisenyo hashtable ay may epektibong hash function na mapa ang bawat susi sa isang natatanging kaukulang halaga sa array.

Minsan, ang hindi mahusay na pag -andar ng hash sa isang hashtable ay maaari ring makagawa ng isang kumpol ng mga mappings.Kung ang isang pag -andar ng hash ay lumilikha ng isang kumpol ng mga mappings para sa mga umiiral na mga susi, maaari itong dagdagan ang dami ng oras na kinakailangan upang maghanap ng mga kaukulang halaga.Maaari itong pabagalin ang hashing para sa mga susi sa hinaharap dahil ang karamihan sa mga pag -andar ng hash ay karaniwang naghahanap para sa susunod na magagamit na posisyon sa array.Kung ang isang malaking kumpol ng mga halaga ay naatasan na, karaniwang mas matagal na maghanap para sa isang hindi pinarangalan na halaga para sa isang bagong susi.

Ang kadahilanan ng pag -load ay isa pang konsepto na may kaugnayan sa kahusayan ng isang hash function;Ang kadahilanan ng pag -load ay ang halaga ng mayroon nang mga hashings na may kaugnayan sa pangkalahatang sukat ng kaukulang hanay sa isang hashtable.Karaniwan itong tinukoy sa pamamagitan ng paghati sa bilang ng mga naitalang mga susi sa pamamagitan ng laki ng kaukulang hanay.Habang tumataas ang kadahilanan ng pag -load, ang isang mahusay na pag -andar ng hash ay karaniwang magpapanatili pa rin ng isang palaging bilang ng mga banggaan at kumpol hanggang sa isang tiyak na punto.Kadalasan ang threshold na ito ay maaaring magamit upang matukoy kung gaano kahusay ang isang pag -andar ng hash na may isang naibigay na bilang ng mga susi at kapag maaaring kailanganin ang isang bagong hash function.Ang isa na hindi gumagawa ng banggaan o kumpol na binigyan ng pagtaas ng kadahilanan ng pag -load.Sa teorya, ang susi sa paggawa ng isang perpektong hashtable ay upang makabuo ng isang perpektong pag -andar ng hash.Sa pangkalahatan, naniniwala ang mga mananaliksik na ang isang perpektong pag -andar ng hash ay dapat magkaroon ng patuloy na pagganap at mdash;ang bilang ng mga banggaan at kumpol at mdash;na may pagtaas ng kadahilanan ng pag -load.Sa pinakamasamang mga sitwasyon ng kaso, ang isang perpektong pag -andar ng hash ay magpapahintulot pa rin para sa patuloy na hashing nang hindi maabot ang isang threshold.