INFO : matrices creuses - Algo - Programmation
Marsh Posté le 29-07-2003 à 01:12:01
flag
mais sinon la solution que tu proposes est vivable, maintenant reste a savoir si ca vaut la peine de sauver cet espace au détriment de la vitesse
Marsh Posté le 29-07-2003 à 01:16:40
Oui faut pas sauter sur cette soluce à la première occase on est bien d'accord. Mais c'est utilisé en tout cas dans certain cas. Car l'accès est tout de même assez rapide si la matrice est quasi vide
Marsh Posté le 29-07-2003 à 01:17:21
http://www-igm.univ-mlv.fr/~beal/E [...] rices.html
Marsh Posté le 29-07-2003 à 01:20:37
ReplyMarsh Posté le 29-07-2003 à 01:21:43
ou c'est assez flou je trouve. Je prèfère mon explication
Marsh Posté le 29-07-2003 à 01:42:53
le dessin est correcte et la solution OK. mais essaye plutot avec une std::map si tu fais ça en C++
Marsh Posté le 29-07-2003 à 01:46:30
Taz a écrit : le dessin est correcte et la solution OK. mais essaye plutot avec une std::map si tu fais ça en C++ |
explique? quest-ce que ca fait?
(mes cours de c remonte à longtemps et jpeux pratiquement dire quon a rien vu sauf comme faire des boucles et le minimum d'objet)
Marsh Posté le 29-07-2003 à 01:58:34
ou dans une hasmap. pas besoin de tout se cogner. il existe déjà des implémentations à base d'arbres ou de table de hashage.
apres tu accedes à tes éléments
map< pair<unsigned, unsigned>, double> matrice;
matrice[pair(0, 0)]; //par exemple
tu peux meme wrapper autour si tu veux paremeter la valeur par défaut de retour
documenter vous sur les maps, apres je ne saurais pas dire si l'implémentation non ISO sous forme de hashmap fournit par SGI est plus performante. elle est relativement compatible avec std::map, donc egalement, on wrappe tout ça et on fait des tests pour voi
Marsh Posté le 29-07-2003 à 01:59:25
bien sur à implémenter comme montre Jag, c'est pas la mer à boire non plus
Marsh Posté le 29-07-2003 à 02:00:56
Taz: t un gourrou du C/C++? ou t dans la moyenne?
car le 3/4 des trucs que tu lances j'piges rien
Marsh Posté le 29-07-2003 à 02:03:20
demande, je suis pret à vous aider à fond sur ce truc.
pour l'implémentation à la main, on va mettre en pratique nos templates, se poser la question si la taille de la matrice est connue à la compilation.
enfin je sens que ça va partir en std::list< std::vector <double> > >
Marsh Posté le 29-07-2003 à 02:06:54
std::list< std::vector <double> > >
rofl, c con mais dans le peu de c que jai fait jai jamais vu ce genre de truc
une chance que jai fait du perl un peu et jpige le std::list, mais pour les reste jcrois que jai beaucoup de théorie à faire
sérieusement présentement jfais un peu de tout, perl de base, php, web, rexx, jai deja fait du c, du progress, vb6( )
tjrs pas de java et mon c/c++ est pas très poussé mais jveux l'améliorer parce que jai possibilité de me brancher les pieds dans une boite de jeu pour mes stages et j'suis plutot quelqu'un pro-optimisation alors codé en couillon ca me tente pas trop
Marsh Posté le 29-07-2003 à 02:14:37
ben tu crois que je me suis démené pour vous faire des petits topics aujourd'hui pour rien?
Marsh Posté le 29-07-2003 à 02:15:00
burger je te rassure. Taz est un gourou. T'es pas le seul à pas tout capter
Marsh Posté le 29-07-2003 à 02:15:59
Taz a écrit : ben tu crois que je me suis démené pour vous faire des petits topics aujourd'hui pour rien? |
Oui chapeau les topics. ça relève le niveau parce que des fois...
Marsh Posté le 29-07-2003 à 02:16:30
Taz a écrit : ben tu crois que je me suis démené pour vous faire des petits topics aujourd'hui pour rien? |
justement, jviens den lire quelques uns, du genre le pré-incrémentation et post-incrémentation
jcomprends ton exemple, mais l'appliquer dans un cas concret j'en serait incapable
Marsh Posté le 29-07-2003 à 02:17:05
JagStang a écrit : burger je te rassure. Taz est un gourou. T'es pas le seul à pas tout capter |
ouf
jcrois que jvais m'arranger pour etre copaing copaing avec Taz
Marsh Posté le 29-07-2003 à 02:24:58
burgergold a écrit : |
ben peut etre un jour tu vas décrire un type de donner qui a une arithmétique. Jag travaille sur des matrices. on peut tres bien prévoir une sémantique m+=x incrémente tous les éléments de la matrice de x. donc pour des raccourcis, on veut ecrire m++ et ++m.
tu la sens la copie inutile là?
Marsh Posté le 29-07-2003 à 02:36:07
jcapte pas mais fait toi en pas, p-e que d'ici 1 an jvais comprendre
deja que jsavais pas que ca se faisait ++m
sémantique ? j'ai deja eu des problemes de semaphore sur linux, jconsidere que c par rapport à l'allocation mémoire
Marsh Posté le 29-07-2003 à 02:38:18
burgergold a écrit : jcapte pas mais fait toi en pas, p-e que d'ici 1 an jvais comprendre |
la sémantique n'a rien à voir avec les sémaphores qui n'ont rien à voir avec l'allocation mémoire qui n'a rien à voir avec la sémantique....
tu as eu ton bac de français??? ouvre ton dico
Marsh Posté le 29-07-2003 à 02:39:13
Taz a écrit : la sémantique n'a rien à voir avec les sémaphores qui n'ont rien à voir avec l'allocation mémoire qui n'a rien à voir avec la sémantique.... |
ouais bin jsuis au québec moi, et c pas un mot très utilisé
Marsh Posté le 29-07-2003 à 02:45:49
Sémantique -> relatif au sens d'un mot, ou d'une unité linguistique. par extension, on parle donc de sméantique dans les langages informatiques. ça se rapporte à l'interprétation et à la signification. la sémantique donne du sens à la synthaxe.
Marsh Posté le 29-07-2003 à 01:03:06
Imaginez le problème suivant.
Vous devez stocker une matrice de 100000 x 100000 enregistrements.
De plus, vous savez d'avance, que le 90% de cette matrice contiendra un 0.
ça peut paraître bizzare comme concept, mais c'est fréquemment utilisé en Biologie.
Comment pallier à ce problème ?
En créant un vecteur (ou tableau) de taille 100000.
Les indices de ce derniers pointeront vers une file de structures.
Pour finir, la structure contiendra : l'indice, et la valeur (si celle-ci est différente de 0 bien sûr)
Gain de place très important, mais accès aux données fortement ralenti (addition de matrice, recherche, etc...)
---------------
What if I were smiling and running into your arms? Would you see then what I see now?