» »

[C++] razpršene matrike

[C++] razpršene matrike

zala ::

Pozdravljeni,
kaj pozna kdo kak link, kjer bi dobila informacije o razpršenih matrikah? Če ima kdo razpršeno matriko že sprogramirano, pa bi blo še boljše:)

hvala za odgovor,
lep pozdrav

OwcA ::

Otroška radovednost - gonilo napredka.

Gundolf ::

Sparse matrix? Poskusi poiskati knjižnjico v boost-u. http://www.boost.org/

64202 ::

Ce te zanima preprosta implementacija sparse matrik, lahko implementiras s hash-tabelo, kot je predlagal owca. Izvornih kod za hash tabelo je kolikor hoces po netu, pa sploh ni tezko to sam sprogramirat. Sicer obstaja eden (minimalen) hakeljc, hash-tabele so namrec eno-dimenzionalne. Za dostop do elementa obicajno rabis kljuc h(x), kjer je h hash funkcija. En mozen nacin da dobis eno-dimenzionalen kljuc gre takole: h(x) = h(x1) XOR h(x2) XOR (x3) ... XOR h(xn). V tvojem primeru torej h(x) = h(x1) XOR h(x2). Imam obcutek, da bi ta formula morala lepo ohranjati razprsenost prvotne funkcije h.

Uf, sem pomislil pa h(x1) XOR h(x2) ni kaj prida :). Problem je v tem, da je h(x1) XOR h(x2) = h(x2) XOR h(x1), kar zna nastopiti pri zgoraj-desno, spodaj-levo diag. matrikah. Bolje da poguglas :).

Zgodovina sprememb…

  • spremenilo: 64202 ()

zala ::

Hvala za odgovore, ampak meni še vedno ni jasno, kako sprogramirat to matriko(ki mora biti narejena s kazalci):O.
Kaj je možno dobit kaj še bolj specifičnega?
p.s.: Sem šele 2. letni računalništva na pedagoški fakulteti.:8)

slawc ::

poskusi kaj najti tukaj: www.nr.com Numerical recepies in c home page.

Poskusi prdelati verzijo za C v C++.
LP, Slawc

OwcA ::

zala: v katerem delu "sprogramirati" natanko je problem?
Otroška radovednost - gonilo napredka.

zala ::

Kje je problem? Bolje rečeno, kje ga ni. Razpršena matrika bi naj delovala po principu, kot je pokazano na
http://uk.pg.photos.yahoo.com/ph/zalla1...?.dir=/a76f. S kazalci vsepovsod. Oblika pa mora bit:

CGlava {
int vrednost; // stolpec ali vrstica
CGlava* naslednja;
}

CGlava* PrviS;
CGlava* PrviV;

CElement {
int vrednost;
int stolpec;
int vrstica;
CElement* naslednjiVVrsti;
CElement* naslednjiVStolpcu;
}

CMatrika {
CMatrika(aDimenzijaN, aDimenzijaM);
~CMatrika(); // počistiti je potrebno kazalce!
int DajDimenzijoN();
int DajDImenzijoM();

void Vstavi(aVrednost, aI, aJ); // vstavljanje elementa na i,j-to mesto
void Izpis(); // izpis vsebine matrike
CMatrika* Vsota(aMat); // vsota dveh matrik
CMatrika* Produkt(aMat); // produkt dveh matrik
}

Problem je CGlava, ker ne vem, kaj naj z njo.

CCfly ::

Gre za podatkovno strukturo imenovano dvosmerni linearni seznam.
CGlava* PrviS; kaže na prejšnji element matrike
CGlava* PrviV; kaže na naslednji element matrike
"My goodness, we forgot generics!" -- Danny Kalev

Gundolf ::

Samo ne CCfly-a poslusat. Jaz ga včasih, a se mi to samo maščuje :D

Verjetno veš da je 'PrviS' pointer na prvi stlpec in 'PrviV' pointer na prvo vrstico. Morda bi ju le premaknila v definicijo razreda CMatrika;) CGlava je enostavna, če imas stolpec, potem kaže 'naslednja' na naslednji stolpec, v primeru vrstice pa na naslednjo vrstico. CGlava, ki je del zadnje vrstice ali stolpca ima 'naslednja' postavljen na NULL.

Edino kar ti manjka v 'CGlava' je en pointer na prvi element v stolpcu/vrstici.

CCfly ::

1. Hej !!! :|
2. Ups. :8)
"My goodness, we forgot generics!" -- Danny Kalev

BigWhale ::

Matr, sam da je zenska, pa ste takoj vsi sladki pa mehki! ;> Ne bomo ti delal domacih nalog!

Hinavci ;) Naslednji problem, k ga bom mel z HP-UXom, bom postal kot Mirjana

:))

zala ::

Hvala:)

BigWhale: brez komentarja.

lep pozdrav,
zala

Vesoljc ::

[naloga][c++][female] ime topica

tkole?

;)
Abnormal behavior of abnormal brain makes me normal...

petrina ::

Mi lahko kdo pomaga?
kako sestevamo razpršene matrike?
:8)

petrina ::

sama ugotovila :D


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

matematika - pomoč

Oddelek: Šola
213857 (2912) lebdim
»

Generator enkratih gesel

Oddelek: Programiranje
7959 (792) fiction
»

Piljenje Leksikona (strani: 1 2 )

Oddelek: Znanost in tehnologija
748810 (4869) gzibret
»

Poziv za resevanje resnisnega kriptograma

Oddelek: Loža
211841 (1396) Brane2
»

C++ Project --- v1

Oddelek: Programiranje
131196 (989) Vesoljc

Več podobnih tem