implementacia grafu

Programovacie jazyky, rady, poradňa...
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

implementacia grafu

Príspevok od používateľa beluský »

naimplementoval som graf pomocou statickeho pola... teda resp. viacerych poli

jedno je jednorozmerne -> obsahuje vrcholy
jedno dvojrozmerne -> obsahuje ci existuju cesty medzi vrcholmi
dalsie dvojrozmerne -> obsahuje dlzky hran medzi jednotlivymi vrcholmi (aj ked este neexistuju medzi nimi hrany)

a pride mi to riadne tazkopadne, kedze mam hladat minimalnu kostru grafu...

neviete o nejakom setrnejsom sposobe kedze ten moj je taky aky je... :oops:
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

a co sa ti na tom nezda ... uchovavat tie data v matici je uplne normalne ..
akurat si mozes tie dve dvojrozmerne polia spojit do jedneho trojrozmerneho a alokovat to dynamicky a nie staticky
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

je to úplne normálne, my keď sme robili primov alg na nájdenie minimálnej kostry, použil som rovnaký spôsob uchovávania hodnot, s jedným rozdielom. Tvoje dve polia:
jedno dvojrozmerne -> obsahuje ci existuju cesty medzi vrcholmi
dalsie dvojrozmerne -> obsahuje dlzky hran medzi jednotlivymi vrcholmi (aj ked este neexistuju medzi nimi hrany)
som spojil do jedného. Ak existuje cesta, tak namiesto true som si tam rovno hodil jej dlžku. Ak neexistuje cesta je to to isté ako keby tam bola nekonečne dlha cesta, preto som si tam hodil max(int) a pri hladaní mi túto cestu odignorovalo lebo bola velmi velká (omnoho väčšia ako ktorákolvek iná) čiže efekt rovnaký ako keby nebola. Potom ale treba ošetriť prípad, že je graf nespojitý (potom by aj táto dlha cesta bola súčasťou min. kostry) To som spravil tak, že som si rátal veľkosť minimálnej kostry a ukladal do premennej typu int. Ak by sa zarátala táto dlha "neexistujúca" hrana, tak by spolu s už uloženými hodnotami bola nájdená kostra väčšia ako max(int) lebo tolko je samotná jedna hrana a pretiekol by dátový typ. Preto to celé bolo v chránenom bloku a hodilo exepction ktorú som odchytil a spracoval :)
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

Príspevok od používateľa beluský »

dobre vysvetlene, nejak sa s nim potrapim...
audiotrack napísal:...Potom ale treba ošetriť prípad, že je graf nespojitý (potom by aj táto dlha cesta bola súčasťou min. kostry) ...
No a ja mam este taky problem s tym, ze ma ten graf obsahovat N komponentov... cize si to rozdelim nejak na dva grafy najprv a potom hladam min kostru pre kazdy zvlast, alebo existuje na to nejaky iny algac :)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

áno, ale iba ak sú to naozaj komponenty, tzn že sú spojené jedným vrcholom. Inak by sa mohlo stať, že to čo by si našiel by nebola kostra
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

Príspevok od používateľa beluský »

audiotrack napísal:áno, ale iba ak sú to naozaj komponenty, tzn že sú spojené jedným vrcholom. Inak by sa mohlo stať, že to čo by si našiel by nebola kostra
komponent v grafe nie je mnozina izolovanych vrcholov, ktore nie su nijak spojene s inymi vrcholmi?

lebo ja potrebujem z mnoziny vrcholov celeho grafu urobit izolovane podmnoziny (komponenty) s minimalnymi kostrami
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

a to máš v znení úlohy že ho musíš rozbiť? ja by som to nerobil, iba sa v tom zamotáš a zkomplikuješ si to
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

Príspevok od používateľa beluský »

audiotrack napísal:a to máš v znení úlohy že ho musíš rozbiť? ja by som to nerobil, iba sa v tom zamotáš a zkomplikuješ si to
opisem ti to aspon v skratke...

Mam zakladne, ktore su rozne po mape rozmiestnene (vrcholy grafu). Zakladne su dvojakeho typu: radiove a satelitne (na obr. satelitne cierne, sede su radiove).
Ak chce radiova stanica komunikovat s inou zakladnou (satelitnou alebo radiovou) tak len po kabli (hrane grafu). Ak chce satelitna zakladna komunikovat so satelitnou nemusia byt spojene vobec, ale ak chce komunikovat s radiovou musia byt spojene. Cesty maju byt najkratsie.

A ide o to ze na vstupe mam N satelitnych stanic a V vrcholov.
Pre obrazok by bolo N = 2 a V = 8.
Prílohy
Priklad rozmiestnenia zakladni
Priklad rozmiestnenia zakladni
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

v takom prípade (že sa z čierneho vrcholu dostanem do lubovolného čierneho vždy rovnako "rýchlo") si môžeš tieto "virtuálne" hrany ohodnotiť zase nulou (ako sme neexistujúce ohodnotili vysokým číslom). Potom tam máš hranu (čiže sa nemusíš hrať s viacerými grafmi), ale kostru neovplyvnia. Čiže jednoducho pospájaš každý čierny vrchol s každým nulovou hranou (len aby sa vytvorila jenotnosť komponentov)
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

Príspevok od používateľa beluský »

audiotrack napísal:v takom prípade (že sa z čierneho vrcholu dostanem do lubovolného čierneho vždy rovnako "rýchlo") si môžeš tieto "virtuálne" hrany ohodnotiť zase nulou (ako sme neexistujúce ohodnotili vysokým číslom). Potom tam máš hranu (čiže sa nemusíš hrať s viacerými grafmi), ale kostru neovplyvnia. Čiže jednoducho pospájaš každý čierny vrchol s každým nulovou hranou (len aby sa vytvorila jenotnosť komponentov)
to je vsetko krasne ale najvacsi problem je to ze ja mam najst prave tie cierne tak, aby najdlhsia cesta medzi sedym a ciernym bola co najkratsia...
cize v zadani mam len pocet vsetkych vrcholov, pocet ciernych a suradnice jednotlivych vrcholov
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

toto uz jednoduchym algoritmom na hladanie kostry asi nespravis ...
cosi sa mi ale mari ze nejaky algoritmus na podobne ulohy je (nieco ako problem umiestnenia skladov ci tak nejako), urcite sme to v skole brali .... len kto si to ma pamat tolke roky :?
Napísať odpoveď