Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Drumuri Graf  (Citit de 2619 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Fayed
Client obisnuit
**

Karma: -24
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« : Februarie 17, 2013, 22:18:24 »

Salut. As vrea va rog daca imi puteti spune cum pot gasi toate drumurile posibile intre 2 noduri dintr-un graf neorientat
Memorat
deneo
Vorbaret
****

Karma: 185
Deconectat Deconectat

Mesaje: 160



Vezi Profilul
« Răspunde #1 : Februarie 17, 2013, 22:53:16 »

Ai un numar infinit de drumuri posibile. Poate vrei sa zici numarul de drumuri de lungime minima. Merge cu un BFS.
Memorat
flaviumanica
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 22



Vezi Profilul
« Răspunde #2 : Februarie 17, 2013, 23:07:37 »

Ai un numar infinit de drumuri posibile. Poate vrei sa zici numarul de drumuri de lungime minima. Merge cu un BFS.

De ce infinit? Adica,banuiesc ca se refera la drumuri in care sa nu treci de 2 ori prin acelasi nod.
Memorat
deneo
Vorbaret
****

Karma: 185
Deconectat Deconectat

Mesaje: 160



Vezi Profilul
« Răspunde #3 : Februarie 18, 2013, 00:24:59 »

Ai un numar infinit de drumuri posibile. Poate vrei sa zici numarul de drumuri de lungime minima. Merge cu un BFS.

De ce infinit? Adica,banuiesc ca se refera la drumuri in care sa nu treci de 2 ori prin acelasi nod.

Atunci merge sa faci o dinamica O(2 ^ N * N) ... dp[stare][nod] - numarul de posibilitati de a parcurge graful astfel incat sa pornesti din nodul de start, sa ajungi in nodul nod si sa ai in parcurgere nodurile din stare. Actualizezi starile urmatoare parcurgand vecinii nodului nod, care nu se afla deja in starea curenta. Rezultatul este suma de dp[stare][nodFinal]. Sunt curios daca exista o solutie mai buna Smile
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #4 : Februarie 18, 2013, 01:43:45 »

El nu a zis neaparat ca vrea numarul lor. Daca vrei sa gasesti drumurile propriu-zise, poti sa faci asta cu o parcurgere in adancime.
Memorat
flaviumanica
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 22



Vezi Profilul
« Răspunde #5 : Februarie 18, 2013, 14:18:18 »

Iar daca le vrei pe cele de drum minim,inainte faci o parcurgere in latime si vezi care e distanta minima.
Memorat
Fayed
Client obisnuit
**

Karma: -24
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #6 : Februarie 18, 2013, 14:52:13 »

Eu vreau sa gasesc toate lanturile dintre un nod S si unul D. Nu cred ca este vorba de un infinit de posibilitati. Daca stiu sa fac asta voi putea adapta la unele probleme (toate drumurile minime sau suma costurilor pe toate lanturile de la sursa la destinatie,etc).
 
Memorat
flaviumanica
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 22



Vezi Profilul
« Răspunde #7 : Februarie 18, 2013, 15:09:16 »

Incepi cu DF(S). Intr-un vector T marchezi faptul ca ai trecut prin S,iar intr-unul V adaugi elementul(va trebui sa iei si un k ce va creste de fiecare data). Iei toate nodurile i si daca S are legatura cu ele faci DF(i). Daca i=D,afisezi vectorul V. Nu uita ca la sfarsit sa faci T=0 si sa descresti k-ul.
Memorat
Fayed
Client obisnuit
**

Karma: -24
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #8 : Februarie 18, 2013, 15:36:50 »

Din ce am inteles eu mai sus fac o pargurgere DFS si retin nodurile in vect sirul V in ordinea in care le vizitez si in T le marchez ca vizitate. Insa nu inteleg cum imi va determine mie toate lanturile intre cele 2 noduri.
Memorat
flaviumanica
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 22



Vezi Profilul
« Răspunde #9 : Februarie 18, 2013, 15:47:55 »

Din ce am inteles eu mai sus fac o pargurgere DFS si retin nodurile in vect sirul V in ordinea in care le vizitez si in T le marchez ca vizitate. Insa nu inteleg cum imi va determine mie toate lanturile intre cele 2 noduri.

for(i=1;i<=n;i++) if(a[ x ][ i ]==1&&T==0) DF(i);
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #10 : Februarie 18, 2013, 23:53:17 »

Intre doua noduri S si D exista un numar exponential de lanturi elementare. Backtracking e solutia Wink.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines