Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-05-2005, 08:12   #1
Vecchia Spugna
Senior Member
 
L'Avatar di Vecchia Spugna
 
Iscritto dal: Oct 2002
Città: Porto Sant' Elpidio (ap)
Messaggi: 789
Algoritmo per la moda

Allora ragazzi mi sto letteralmente consumando il cervello per riuscire a trovare un algoritmo che mi clalcoli la moda con complessità O(n), cioè in pratica deve fare il tutto in un solo ciclo. A me sembra impossibile ma il professore dice che c'è...
boooooooooooooooh.
qualche idea?(più ci penso più mi pare assurdo poterlo fare con 1 ciclo solo,)
(ah ovviamente i dati in input non sono ordinati)
ciao a tutti e grazie in anticipo
__________________
Abit aw9-d max, pentium code 2 duo E7300, sapphire radeon hd 4750, corasir 650W
Vecchia Spugna è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2005, 10:18   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Lo puoi fare se sai il range da tra cui possono variare gli elementi...se non lo sai dovresti allocare troppa memoria...

Supponendo che i dati siano interi che variano da 0 a N, dichiari un vettore (frequenze) di N interi...ogni elemento deve essere azzerato...

Supponendo che in dati siano nel vettore dati...

N = numero dei dati

1: i -> 1; max -> 0; indice_max -> 1
2: se i > N vai al punto 7
3: frequenze(dati(i)) -> frequenze(dati(i)) + 1
4: se frequenze(dati(i)) > max vai al punto 5, altrimenti vai al punto 6
5: max -> frequenze(dati(i)); indice_max = dati(i)
6: i -> i + 1; vai al punto 2
7: fine
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2005, 11:10   #3
Vecchia Spugna
Senior Member
 
L'Avatar di Vecchia Spugna
 
Iscritto dal: Oct 2002
Città: Porto Sant' Elpidio (ap)
Messaggi: 789
purtroppo non ho il renge
se non ce l'ho mi dite che non posso far nulla?
però dai con l' allocazione dinamica.... alla fine anche fosse 1 vettore di 500, 1000 numeri non sarebbe infattibile.
altri metodi non ci sono?
__________________
Abit aw9-d max, pentium code 2 duo E7300, sapphire radeon hd 4750, corasir 650W
Vecchia Spugna è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2005, 11:22   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Chiaro che con l'allocazione dinamica ci sono meno problemi...

Potresti fare una cosa del genere:

allochi 1000 interi per i numeri da 0 a 1000...se ti viene dato un numero più grande di 1000 usi realloc per allargare il vettore (per fare questa operazione il minor numero di volte possibile mettine 1000 in più rispetto all'elemento che supera il limite attuale)...

Altra soluzione sarebbe quella di una lsita, ma dopo diverrebbe O(n^2) per ricercare il valore...

Comunque anche con l'allocazione dinamica saresti emsso in ginocchio da valori che si molto alti e saresti limitato dalla memoria di sistema...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2005, 12:06   #5
Vecchia Spugna
Senior Member
 
L'Avatar di Vecchia Spugna
 
Iscritto dal: Oct 2002
Città: Porto Sant' Elpidio (ap)
Messaggi: 789
per O(n^2) esistono un' infinità di soluzioni , ovvio
beh.. non so che dire.. grazie... sono molto demoralizzato
soprattutto a pensare che il prof dice che la soluzione O(n) c'è
vorrà dire che gli chiederò maggiori info sul range
__________________
Abit aw9-d max, pentium code 2 duo E7300, sapphire radeon hd 4750, corasir 650W
Vecchia Spugna è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2005, 08:41   #6
Vecchia Spugna
Senior Member
 
L'Avatar di Vecchia Spugna
 
Iscritto dal: Oct 2002
Città: Porto Sant' Elpidio (ap)
Messaggi: 789
Allora riporto in auge la discussione con 1 aggiornamento così mi date una mano invece di stare ad askpettare la partita di domani sera sulla poltrona e con la fila di bottiglie di birra vuote!!!

Alura....

Mediante tavole hash dovrebbe essere possibile fare il tutto con dei contatori.. quindi rimarrebbe il problema dei numeri con virgola....
Spremendo le vostre dotate meningi.. riuscireste a cavar fuori un'idea??
__________________
Abit aw9-d max, pentium code 2 duo E7300, sapphire radeon hd 4750, corasir 650W
Vecchia Spugna è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2005, 09:10   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non credevo che volessi trattare algoritmi così, per così dire, avanzati...
Il discorso hash è un po' complicato...è sì certo possibile fare il tutto con un vettore di contatori...ma il problema dell'hash è che non è biunivoco...di conseguenza non bastano i contatori...ma devi salvarti anche il valore facendo corrispondere ad ogni riga del vettore di hash un lista linkata... Ogni volta che trovi un certo hash dovrai scorrere la lista linkata e verificare che il valore sia stato già immesso, ed in tal caso incrementare il contatore corrispondente...

La probabilità di trovare un valore già immesso nel campo corrispondente ad un dato hash è proporzionale allla lunghezza del vettore hash...

Come calcolare un semplice hash per i numeri in virgola mobile potresti fare un algoritmo di questo tipo:

1) il vettore di hash contiene 2^16 elementi (puntatori a strutture)
2) la funzione hash, dato un valore floating point, ritorna un unsigned short int
3) dato in input alla funzione hash un floating point su 8 byte (un double) esegue la somma 2 byte a 2 byte...il risultato è l'hash... Non ti importa niente degli eventuali overflow, visto che sono un fattore voluto...

Sai come realizzare il punto 3 ? Pensaci...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2005, 09:17   #8
Vecchia Spugna
Senior Member
 
L'Avatar di Vecchia Spugna
 
Iscritto dal: Oct 2002
Città: Porto Sant' Elpidio (ap)
Messaggi: 789
dammi un paio di giorni per riprendermi dallo shock di ciò che mi hai detto poi ti rispondo
scherzi a parte fammici pensare un pò che non è roba propriamente semplice questa.. :P
sto iniziando ora il capitolo in questione
__________________
Abit aw9-d max, pentium code 2 duo E7300, sapphire radeon hd 4750, corasir 650W
Vecchia Spugna è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2005, 17:13   #9
Vecchia Spugna
Senior Member
 
L'Avatar di Vecchia Spugna
 
Iscritto dal: Oct 2002
Città: Porto Sant' Elpidio (ap)
Messaggi: 789
Rieccomi..
(che palle dite voi... come non darvi ragione...)
ehehmmmm

credo, pensando che fosse la stessa cosa.. di aver speso giorni della mia vita a cercare algoritmi per la moda quando invece a me serviva l'elemento di maggioranza... pensando che fosse la stessa cosa.. invece non lo era :P

quindi oggi trovo questo...


"
Problem 3. A read-only array (ROM) contains n integers. Find a linear-time algorithm that
determines whether the array has a “majority element,” and if so, returns that value. An integer
x is a majority element in the array if it is in k locations, where k > n/2.

Discussion: Repeatedly eliminate pairs of different elements. If any element remains it is the
only possible majority element, and a simple linear search can determine whether or not it is. One
clean way to perform the first step uses a stack, with operations push(), pop(), and stacktop():
Majority candidate(a)
for each element c of the array a
if the stack is empty or c is on top of the stack
push(c)
otherwise
pop()
if the stack is nonempty
return top()

"

Questo è quanto!! (soluzione semplice ma geniale...)
ops...
forse non troppo semplice...
che faccio se i numeri immessi sono dispari?
inoltre...
il mio problema non è trovare l'elemento che compare NumeroDiVolte>n/2 , ma >=n/2... e ciò complica un pochettino la cosa...

allora cercando di far chiarezza in questo confusissimo post...
ciò che sottopongo alla vostra attenzione è...
1)cosa significa push e pop (so com'è fatto uno stack, ma non so push e pop cosa voglia dire )
2)come mi comporto nei casi in cui n mi venga dispari
3)con che controlli aggiusto la situazione dato che mi possono anche venire 2 elementi di maggioranza




Grazie per aver consumato i vostri neuroni per capirmi ...
ciaooooooooo
__________________
Abit aw9-d max, pentium code 2 duo E7300, sapphire radeon hd 4750, corasir 650W
Vecchia Spugna è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
Virtua Fighter è tornato e non &e...
Il ritorno di Fumito Ueda, autore di Sha...
Cooler Master svela GPU Shield, la nuova...
Samsung Galaxy S27 Pro: sarà lui ...
Così Google ha ottimizzato Chrome...
Xiaomi non cambia idea: il display poste...
LG presenta in Italia le gamme TV Micro ...
Sette anni dopo l'annuncio, The Wolf Amo...
'Non avrete aumenti': la decisione shock...
TIM lancia il Pass Mondiali DAZN: 104 pa...
Tesla Roadster, promessa o miraggio? La ...
Mark Hamilton, la tavola periodica del m...
Hanger 13 annuncia Uomo d'Onore: espansi...
La battaglia delle HBM4 entra nel vivo: ...
Dopo 12 anni torna Alien: Isolation. Ecc...
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: 23:26.


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