Avatar billede mickni33 Nybegynder
25. april 2001 - 12:34 Der er 15 kommentarer og
3 løsninger

HASH TABLE

Der er sku noget jeg ikke forstår her.
En hash table søger man på index, key.
men hvis jeg skal søge på navnet michael i tabellen hvordan kan den så finde navnet når der ikke gives noget index nummer. key er jo en int og michael er en string.
Jeg har forsøgt mig med en løkke der kører tabellen indtil den finder michael og så tage index\'et derfra. men det giver ikke nogfen mening da jeg jo så har fundet navnet.
Er der nogen der kan komme med en forklaring eller kender et sted på nettet der omhandler hashtables
Avatar billede wisen Nybegynder
25. april 2001 - 12:37 #1
Avatar billede preclean Nybegynder
25. april 2001 - 12:45 #2
når du bruger en key(int) som indexsering kan du kun søge på denne key via din hashfunktion, alle andre colloner i dine tabel må du bruge en sekventiel søgning for at finde det du søger efter. så hvis du ikke kender keyen på michael kan du ikke udnytte dit index.......
Avatar billede disky Nybegynder
25. april 2001 - 12:45 #3
tag f.eks. ascii værdierne for \'michael\' læg dem sammen og lav en moduls 65536 på den til sidst. så har du en hash værdi for navnet \'michael\'
Avatar billede disky Nybegynder
25. april 2001 - 12:46 #4
p.s. man søger ikke i en hash tabel man slår op i den :)
Avatar billede disky Nybegynder
25. april 2001 - 12:46 #5
p.s. man søger ikke i en hash tabel man slår op i den :)
Avatar billede preclean Nybegynder
25. april 2001 - 12:56 #6
i tilfælle af collicion må man slå op flere gange derfor ordet søger
Avatar billede disky Nybegynder
25. april 2001 - 12:58 #7
preclean:

delvist enig, men en ordentligt designet hash klasse sørger selv for denne \'søgning\' altså ikke noget brugeren skal gøre.
Avatar billede preclean Nybegynder
25. april 2001 - 13:04 #8
nej selvfølig skal brugeren ikke gøre noget. dette er kun lidt uenighed om en ord \"søger\" funktionen der udfører opslagningen i hashtabellen skal skal søge i den mest sandsylige index..... du ved jo god hvad jeg mener...
fx. key nr 11,22,33,44 og man bruger moduls 11 kan man få op til 4 opslag i tabellen :) søger i mest sandsynlige index
Avatar billede disky Nybegynder
25. april 2001 - 13:18 #9
yep så er vi enige :)
Avatar billede mickni33 Nybegynder
25. april 2001 - 13:21 #10
hvis jeg alligevel skal lave en sekvientiel søgning kan jeg jo lige så godt have at array istedet...eller hva ???
Avatar billede disky Nybegynder
25. april 2001 - 13:22 #11
nej for den sekventiele søgning skal kun bruges hvis du har en såkaldt hash kollision, altså hvor to forskellige nøgler har samme hash key,

Sker dette for tit, skal du vælge en anden måde at udregne dine hash nøgler på.
Avatar billede mickni33 Nybegynder
25. april 2001 - 13:38 #12
ok men så tror jeg at den med ascii værdierne virker som det bedste for man kan jo også godt tage ascii værdien af f.eks tallet 23 og så er man dækket ind hvis man vil søge både på cpr eller navn....kigger lige på det
Avatar billede mickni33 Nybegynder
25. april 2001 - 15:24 #13
pyyyha
10 klasser 1000 linier kode
det er ikke lige til men det skal jo heller ikke være for nemt...
Avatar billede disky Nybegynder
25. april 2001 - 15:35 #14
er du ved at lave en ny www.google.com ?

1 klasse og et par linier skulle være nok :)
Avatar billede mickni33 Nybegynder
25. april 2001 - 17:15 #15
jojo men den skal implementeres med nogle andre klasser.

det er eksamensprojekt.
skal lave en lexer / parser (compiler)som skal kunne lave en analyse og checke syntaxen af følgende sql sætninger

insert
select
delete

foruden det skal det fungere på en client/server over INET ved hjælp af tråde...

jeg har lavet min insert statement som så ligger det der skal insertes ned i en hashtable ..
jeg operere med to tupler i en kunde table
og to tupler i en salary table dvs to hashtable som siden hen skal kunne joines

Jeg vil lige spørge om
skal hver tupple/attribut have hver deres hashtable altså en hashtable for 
fornavn
efternavn
fra tabellen kunde

og
løn
timer
fra tabellen salary

Hvis jeg laver det på den måde tror jeg selv at det bliver nemmere at lave en søgning og en join
i øjeblikket har jeg fornavn og efternavn i en hashtable og såp er det et problem at pille enten fornavn eller efternavn ud seperat....er det ikke...

Er der nogle der forstår denne omgang vrøvl......
Avatar billede preclean Nybegynder
25. april 2001 - 19:48 #16
kære mickni33
du spilder din tid ved at lave index på alle dine colloner, opgaven går på at vise man kender princippet bag hashning og kan bruge det. det gør du udemærket ved kun at tillade at der søges når man kender keyen.

mit råd er at konceterer dig om clien/server med tråde/låse og joint mellem to tabeller på to forskælling server. samt en rapport om dette. det er rapporten der tæller og så selvfølig din viden om de forskellige områder til eksamen.

da jeg var til eksamen brugte vi ca 1-1.5 minut på hashning og de forskællige principper bag dette.

ps hvis du har 10 klasser med 1000 liner skulle du bruge din tid på at ryde op i din codning.

jeg lavede  lexer/parser/client/server/controller/dbms server/hash  7 klasser ialt med max 500 liner ialt inclusiv komentaret.

ps jeg fik 10. selv om jeg kun havede index på keyen (en collone)

Avatar billede preclean Nybegynder
25. april 2001 - 20:02 #17
resten at eksamen gik på (DBMS, sikkerhed, two phase-commit,client/server aritektur(primitiver) mm )
Avatar billede mickni33 Nybegynder
25. april 2001 - 20:58 #18
Skide godt preclean
Det tror jeg er en god ide...Du kender det godt ikk? man prøver at lave det så godt som muligt og ender med at gøre det svære end man behøver..
keep it simple..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester