Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
be quiet! debutta nel settore mouse da gaming con Dark Perk Ergo e Dark Perk Sym: due modelli gemelli per specifiche, con polling rate di 8.000 Hz anche in wireless, sensore PixArt PAW3950 da 32.000 DPI e autonomia dichiarata fino a 110 ore. Nel test, a 8.000 Hz si arriva a circa 30 ore reali, con ricarica completa in un'ora e mezza
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-04-2005, 13:10   #1
Ancosen
Member
 
L'Avatar di Ancosen
 
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 183
[C] Hashing

Qualcuno mi può parlare un po' degli algoritmi di hashing? Mi potete fare un esempio di una Hash Table scritta in C? Grazie mille!
Ancosen è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 13:38   #2
tglman
Senior Member
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
Be in c si possono costruire duve vettori di stringe o anche un record associano ad una stringa un'altra, in questo modo è sufficente cercare una stinga nel vettore delle chiavi per poi trovare il corrispettivo valore
tglman è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 13:41   #3
Ancosen
Member
 
L'Avatar di Ancosen
 
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 183
Ma in pratica la struct della tabella hash qual'è? Mi puoi fare un esempio? Più che altro l'uso delle tabelle hash qual'è? Mi hanno dato da fare un progetto ma non ho chiara la struttura della tabella hash, quindi non posso lavorarci...
Ancosen è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 14:48   #4
tglman
Senior Member
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
be il concetto di base è questo :
ho un blocco di informazioni memorizate in coppia chiave, valore es:
chiave1=valore1
chiave2=valore2
chiave3=valore3
chiave4=valore4

poi ho una funzione che passato per parametro una chiave mi restituisce il valore, es prototipo:
char *get(char *);

praticamente è un vettore che invece di usare degli indici numerici progressivi per accedere ai valori utilizza delle stringhe.

Ciao..
tglman è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 15:09   #5
end.is.forever
Senior Member
 
Iscritto dal: Jul 2004
Messaggi: 1578
Una funzione hash riassume una stringa di bit di lunghezza arbitraria in una di lunghezza fissa, per esempio un intero a 32 bit.
Per cui puoi pensare di utilizzare come indicizzatore di una tabella un dato di qualsiasi lunghezza, appunto la chiave.
Una volta applicata la funzione di hash alla chiave e ottenuto il riassunto utilizzi quello come indice per ottenere l'indirizzo a cui accedere in un vettore semplice.

Più la funzione hash è sicura (e più bit di riassunto usi) più è difficile che due chiavi diverse siano in collisione, cioè abbiano lo stesso riassunto.

Eccoti uno pseudocodice copiato da http://en.wikipedia.org/wiki/Hash_table

Codice:
 record pair { key, value }
 var pair array slot[0..numSlots-1]
 
 function findSlot(key) {
     i := hash(key) modulus numSlots
     loop {
         if slot[i] is not occupied or slot[i].key = key
             return i
         i := (i + 1) modulus numSlots
     }
 }
 
 function lookup(key)
     i := findSlot(key)
     if slot[i] is occupied   // key is in table
         return slot[i].value
     else                     // key is not in table
         return not found     
 
 function set(key, value) {
     i := findSlot(key)
     if slot[i] is occupied
         slot[i].value := value
     else {
         if the table is almost full
             rebuild the table larger (note 1)
         i := findSlot(key)
         slot[i].key   := key
         slot[i].value := value
     }
 }

Ultima modifica di end.is.forever : 07-04-2005 alle 15:11.
end.is.forever è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 15:45   #6
Ancosen
Member
 
L'Avatar di Ancosen
 
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 183
Quello che non riesco a capire e se quello che mi viene chiesto di implementare è una tabella hash semplice o una tabella hash più complessa...

Vi posto i link ai PDF che mi ha dato il mio professore... C'è questo HASHTABLE che non capisco cosa sia: non mi sembra molto chiaro... Eccoli qua:

Questa è la descrizione del progetto...

http://www.dsi.uniroma1.it/~galesi/descrptog.pdf

E questo è il modulo in cui è presente il tipo HASHTABLE

http://www.dsi.uniroma1.it/~galesi/tavole.pdf

Aiutatemi please!
Ancosen è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 17:06   #7
Ancosen
Member
 
L'Avatar di Ancosen
 
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 183
/*
* Elemento di una tavola.
*
* Il campo key è la chiave dell'elemento la stringa.
* Il campo info è un puntatore alla struttura contenente i dati
* associati alla cbiave. Per poter implementare la tavola indipendentemente
* dal tipo dei dati associati alla chiave, questo campo è di tipo void*.
*/
struct tabelem
{
char *key; /*chiave dell'elemento*/
void *info; /*informazioni associate alla chiave*/
};

/*
* Lista di elementi di una tavola.
*/
struct telist
{
struct tabelem *el; /*elemento della tavola*/
struct telist *next; /*coda della lista*/
};

/*
* Tavola di elementi.
*
* La tavola è formata da
* - una tavola hash nella quale gli elementi vengono inseriti e ricercati per
* mezzo della chiave
* - il puntatore alla lista di tutti gli elementi nella tavola
* NB La lista degli elementi serve a scorrere in modo sequenziale gli elementi
* presenti nella tavola.
*/
struct table
{
HASHTABLE htable; /*Tavola Hash*/
struct telist *ls; /*Lista di tutti i nodi*/
};

In base a questo io avrei elaborato questa tavola hash come struttura... Secondo voi è quella che intende il testo??? Eccola

struct hash
{
int a;
struct telist *list;
}
typedef struct hash HashTable;
typedef HashTable *HASHTABLE;

Aiutatemi per favore!
Ancosen è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 21:06   #8
Ancosen
Member
 
L'Avatar di Ancosen
 
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 183
Dai per favore!
Ancosen è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2005, 10:31   #9
Ancosen
Member
 
L'Avatar di Ancosen
 
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 183
Nessuno proprio mi può aiutare?
Ancosen è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2005, 20:43   #10
Darkslide
Member
 
L'Avatar di Darkslide
 
Iscritto dal: Oct 2003
Messaggi: 49
Prima di tutto una precisazione....esistono 2 tipi di hash:hash chiuso e aperto.

L'hash aperto,in caso di collisione tra chiavi usa una lista per inserire gli elementi.

L'hash chiuso invece applica algoritmi di rehash,in caso di collisione tra 2 chiavi entra in gioco un secondo algoritmo che genera una nuova chiave.


A te quale dei 2 è stato chiesto di implementare?
Darkslide è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2005, 09:59   #11
Ancosen
Member
 
L'Avatar di Ancosen
 
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 183
Mi è stato chiesto di implementare l'hash aperto. La lista è la struct telist, che ho postato poco più su, insieme ad altre due strutture... La terza rappresenta una cella dell'hashtable credo... Soltanto che non capisco come vada definito il tipo di dato HASHTABLE... Se mi dessi una manina te ne sarei infinitamente grato... Grazie!
Ancosen è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2005, 20:47   #12
Ancosen
Member
 
L'Avatar di Ancosen
 
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 183
up
Ancosen è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
HP e lavoro ibrido: le nuove cuffie Poly...
MSI sta lavorando a un dissipatore ottim...
27 offerte Amazon, le prime 5 in elenco ...
Il telescopio spaziale James Webb ha cre...
Il reboot di Painkiller tenta il rilanci...
7 smartphone in super offerta su Amazon,...
Ring abbassa i prezzi su Amazon: videoci...
Blink taglia i prezzi su Amazon: Mini 2K...
Claude al centro di Apple: ecco come Cup...
Pornhub e altri siti porno si ribellano ...
La TV non è smart? Amazon la trasforma c...
Oltre 200 siti di news hanno limitato l'...
Gennaio si chiude positivamente per il m...
Caos in Ubisoft: licenziato un dipendent...
BMW ed Encory avviano il riciclo diretto...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:38.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v