 | |
Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum |
Hashing doppio Clicca QUI per vedere il messaggio nel forum |
Cronovirus |
C'è qualcosa in particolare che non ti torna oppure non riesci proprio a cominciare? |
Cic |
Non riesco proprio a farlo. Ho visto pure sul libro, ma non capisco come procedere :( |
Cronovirus |
Ok.. Sarò abbastanza breve, se poi qualcosa non è chiaro dimmi pure.
c(leone,0) = h(leone) = 8. La entry è libera quindi scrivi "leone" nella casella 8.
c(gazzella,0) = h(gazzella) = 6. La entry numero 6 è libera quindi scrivilo li.
c(giaguaro,0) = h(giaguaro) = 6. La entry numero 6 non è libera quindi calcola
c(giaguaro,1) = 1. La entry 1 è libera quindi scrivilo.
c(gorilla,0) = 6 è occupata allora c(gorilla,1)= 7 è libera etc.... |
Cic |
Ciao Cronovirus, scusami se ti disturbo ancora, ma perché gufo fa alla casella 12 e bisonte alla 0? E non rispettivamente alla 9 e alla 2? |
Cronovirus |
immagino che hai sbagliato a fare i conti.. infatti
c(gufo,0) = 6 che è occupata,
c(gufo,1) = 1 che è occupata,
c(gufo,2) = 12 che è libera
Per mandare gufo nella 9 devi avere i = 9 :P |
Cic |
Innanzitutto grazie ancora per la risposta, ma non mi torno proprio bisonte. Perché faccio così(che sarà sicuramente sbagliato):
C(bisone, 0)=C(bisonte)=1 che è occupata da giaguaro. A questo punto, dato che la 2 sarebbe libera, visto che coniglio non è ancora stato scritto, perché bisonte va alla 0 e non alla 2? |
Cic |
Alla fine credo di aver capito comunque. |
Cronovirus |
Scusami.. ma quanto fa
c(bisonte,2) e c(bisonte,3)? |
Cic |
Non si calcola così? : C(bisonte, 2)=2*(1+(4)) mod 16=0. Dove 1=h(k) e 4=g(k). |
Cronovirus |
Io direi invece
c(bisonte,2) = ( h(bisonte) + 2* (1 + g(bisonte) ) ) mod 16 = ( 1 + 2 * ( 1 + 4) ) mod 16 = 11 mod 16 = 11
c(bisonte, 3) = ( h(bisonte) + 3* (1 + g(bisonte) ) ) mod 16 = (1 + 3 * (1 + 4) ) mod 16 = 16 mod 16 = 0 |
Cic |
Si vede che sbagliavo allora, perché io facevo che poi il risultato lo dividevo per 16, calcolavo il resto e poi lo sottraevo al numero ottenuto da 11/16. Così:
C(bisonte, 2)=1+2(1+4)=11 mod 16
poi 11/16=0,68 quindi prendo solo 0, poi trovo il resto facendo 0*16 e a questo punto ho 0-0.
Credo di aver fatto un po' di confusione con le operazioni di resto XD |
Cic |
Ok, ci sono. Riporto 2 esempi.
C(bisonte, 0)=1 occupata.
C(bisonte, 1)=1+1(1+4)=6 mod 16 occupata.
C(bisonte, 2)=1+2(1+4)=11 mod 16occupata.
C(bisonte, 3)=1+3(1+4)=16 mod 16 e quindi 16/16=1, di conseguenza 16-16*1=0 che è una posizione libera.
Così è corretto no? |
Cic |
Ok, grazie per l'aiuto :) |
|
|
|
|