Pagini: [1] 2   În jos
  Imprimă  
Ajutor Subiect: 031 Componente biconexe  (Citit de 31790 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« : Ianuarie 05, 2009, 22:30:29 »

Aici puteti discuta despre problema Componente biconexe din Arhiva educationala.
Memorat

Am zis Mr. Green
anna_bozianu
De-al casei
***

Karma: 5
Deconectat Deconectat

Mesaje: 111



Vezi Profilul
« Răspunde #1 : Ianuarie 06, 2009, 14:16:46 »

As vrea sa intreb daca urmatorul algoritm determina corect componentele biconexe:

Pas 1. Se considera muchiile critice ca fiind componente biconexe si se elimina din graf.
Pas 2. Se elimina toate nodurile izolate ramase.
Pas 3. Toate componentele conexe ramase sunt celelalte componente biconexe ale grafului initial.

O a doua intrebare : Graful initial este conex?
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #2 : Ianuarie 06, 2009, 19:16:54 »

1. Algoritmul oferit de tine nu e corect (daca l-am inteles bine). Uite un contraexemplu:
Cod:
5 6
1 2
2 3
1 3
3 4
4 5
3 5

Tu vei spune ca exista o singura componenta biconexa formata din tot graful, in timp ce raspunsul corect este
Cod:
2
1 2 3
3 4 5

2. In toate testele problemei, graful este conex. In cazul in care ar fi mai multe componente conexe, atunci ar trebui sa rulezi algoritmul prezentat pentru fiecare componenta.
« Ultima modificare: Ianuarie 06, 2009, 19:22:26 de către Paul-Dan Baltescu » Memorat

Am zis Mr. Green
anna_bozianu
De-al casei
***

Karma: 5
Deconectat Deconectat

Mesaje: 111



Vezi Profilul
« Răspunde #3 : Ianuarie 06, 2009, 22:08:36 »

Mai mult decat edificator exemplul. Faceam o confuzie grava. Mersi. Ce spuneam eu duce mai degraba (poate gresesc) renuntand la pasul 2 spre componente tare conexe. Cat despre conexitate grafului din problema ... am facut pana la urma rezolvarea la general   Smile .
« Ultima modificare: Ianuarie 06, 2009, 22:15:09 de către Bozianu Ana » Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #4 : Ianuarie 07, 2009, 00:04:11 »

Nu, nu merge nici acolo. Componentele tare-conexe sunt pentru grafuri orientate, in timp ce componentele biconexe sunt pentru grafuri neorientate.
Memorat

Am zis Mr. Green
anna_bozianu
De-al casei
***

Karma: 5
Deconectat Deconectat

Mesaje: 111



Vezi Profilul
« Răspunde #5 : Ianuarie 07, 2009, 00:58:21 »

 Embarassed iar am dat-o in bara. Totusi, pentru cultura mea generala, un graf neorientat fara muchii critice are vreo denumire.
Memorat
MciprianM
Nu mai tace
*****

Karma: 87
Deconectat Deconectat

Mesaje: 324



Vezi Profilul
« Răspunde #6 : Februarie 12, 2009, 09:56:23 »

E voie cu copy paste? Am vazut sursa "oficiala" la alti useri.
L.E. @PDB am inteles
« Ultima modificare: Februarie 12, 2009, 15:46:54 de către Marginean Ciprian » Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #7 : Februarie 12, 2009, 10:46:17 »

E voie. Ideea surselor vizibile este de a invata de la altii si de a putea testa ce au facut altii imbunatatind programele voastre. Nu putem garanta ca toata lumea este bine intentionata, dar pentru cei interesati merita sa pastram acest avantaj.
Memorat

Am zis Mr. Green
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #8 : Februarie 13, 2009, 11:58:31 »

As avea o intrebare, cam legata de componentele biconexe. Cum se poate determina daca o muchie este punte in graf(parca asa ii zice, adica daca o elimin nu mai pot ajunge dintr-o parte in alta a grafului)? Very Happy
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #9 : Februarie 13, 2009, 17:17:47 »

O muchie este critica <=> componenta sa biconexa nu contine alte muchii.

O modalitate de a determina muchiile critice este urmatoarea: faci un DF si pentru fiecare nod te uiti cat de sus poti ajunge mergand in subarborele sau si apoi pe o muchie de intoarcere. In momentul cand gasesti un nod care are un fiu din care nu poti ajunge mai sus decat nivelul tatalui, ai gasit muchia critica nod - fiu.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #10 : Februarie 13, 2009, 18:40:57 »

O muchie este critica <=> componenta sa biconexa nu contine alte muchii.

Pai daca e asa, cred ca cel mai simplu ar fi sa fac exact ca la componentele biconexe, iar cand am gasit o componenta biconexa numar cate elemente are, si daca are 2, e tzais Smile
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #11 : Februarie 13, 2009, 18:49:59 »

Nu cred ca ai inteles ce vrea sa spuna wefgef.

O modalitate de a determina muchiile critice este urmatoarea: faci un DF si pentru fiecare nod te uiti cat de sus poti ajunge mergand in subarborele sau si apoi pe o muchie de intoarcere. In momentul cand gasesti un nod care are un fiu din care nu poti ajunge mai sus decat nivelul tatalui, ai gasit muchia critica nod - fiu.

Algoritmul acesta este exact cel pentru determinarea punctelor de articulatie explicat in problema cu o mica modificare (un > in loc de  >=) . Se pot, deci, determina muchiile critice (sau puntile) fara a mai determina componentele biconexe.
Memorat

Am zis Mr. Green
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #12 : Februarie 13, 2009, 18:59:00 »

10x Paul.
Am inteles acu Smile
Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #13 : Februarie 13, 2009, 21:30:58 »

Pe testul 4 de exemplu primesc 4pct desi acasa iau segfault. Sa fie oare o eroare in grader cpp?

LE : mea culpa, aveam define special pentru sursele de acasa Smile
Memorat
mlazari
Strain
*

Karma: 8
Deconectat Deconectat

Mesaje: 28



Vezi Profilul
« Răspunde #14 : Mai 12, 2009, 16:41:33 »

Din indicatii se intelege ca radacina arborelui DFS este intotdeauna punct de articulatie, deoarece nu are stramosi, deci nu se poate ajunge in modul indicat la un stramos al sau.  Huh Ceea ce sigur ca nu e adevarat, deoarece radacina arborelui poate fi orice nod. Am inteles eu ceva gresit? Sau radacina e un caz aparte?  Think
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #15 : Mai 12, 2009, 16:49:34 »

Rădăcina este nod critic dacă are cel puţin doi fii în parcurgerea DFS. Într-adevăr, este un caz aparte Smile.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
S7012MY
Nu mai tace
*****

Karma: 26
Deconectat Deconectat

Mesaje: 648



Vezi Profilul
« Răspunde #16 : Iulie 06, 2010, 20:00:25 »

Ma poate ajuta cineva sa corectez algoritmul asta http://infoarena.ro/job_detail/469196?action=view-source
Am imlementat ca in cartea d-nei Cerchez dar se pare ca nu functioneaza. Think
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #17 : Iulie 06, 2010, 23:02:26 »

Tare mă îndoiesc că în cartea respectivă autorul și-a declarat o stivă de 10 miliarde de elemente. Tu iei KBS, nu incorect/TLE.
Memorat
S7012MY
Nu mai tace
*****

Karma: 26
Deconectat Deconectat

Mesaje: 648



Vezi Profilul
« Răspunde #18 : Iulie 07, 2010, 11:30:42 »

kbs-ul il iau si daca stiva e de 999
Memorat
gorgovan
Strain
*

Karma: 8
Deconectat Deconectat

Mesaje: 37



Vezi Profilul
« Răspunde #19 : Septembrie 13, 2010, 18:28:05 »

Salut!
Am cateva intrebari in legatura cu problema si cu sursa oficiala.

- in cartile mele de acasa( Pregatire pentru grupele de performanta, Volumul III al doamnei Cerchez si Introducere in Algoritmi de Udi Manber) cat si in articolul lui Mugurel Ionut Andreica am vazut ca se introducea o muchie in stiva indiferent daca era muchie de intoarcere sau nu, pe cand in sursa lui Marius Stroe se introduce numai cand nu este muchie de intoarcere..

Din ce motiv? Sau ce altceva mai este diferit la sursa lui Marius astfel incat algoritmul functioneaza?

- cum modific algoritmul lui Marius ca sa aflu muchiile?
Initial credeam ca din cauza ca nu se cer muchiile, Marius a renuntat la introducerea muchiei in stiva.
Insa dupa ce i-am modificat putin sursa am observat ca nu aceasta este cauza.


« Ultima modificare: Aprilie 18, 2011, 09:35:25 de către Aurelian Namascu » Memorat
a_h1926
Echipa infoarena
Nu mai tace
*****

Karma: 317
Deconectat Deconectat

Mesaje: 385



Vezi Profilul
« Răspunde #20 : Iunie 15, 2011, 19:49:36 »

Ma poate ajuta cineva? Nu stiu ce gresesc la implementare, am respectat pasii din solutia de 100 de puncte si nu stiu ce poate fi. As aprecia daca s-ar uita cineva peste sursa mea sa-mi spuna ce gresesc.
http://infoarena.ro/job_detail/595289?action=view-source
Multumesc anticipat.
Memorat
scipianus
Nu mai tace
*****

Karma: 129
Deconectat Deconectat

Mesaje: 345



Vezi Profilul
« Răspunde #21 : Iunie 17, 2011, 12:52:07 »

Am facut aceasta problema cu implementare de O(n+m) - liste de adiacenta alocate dinamic , dar ma incurca foarte tare modul in care trebuie afisate componentele biconexe (atunci cand le determin , in loc sa le afisez,trebuie sa le numar si sa le retin cumva undeva ca sa le afisez mai tarziu). Am incercat aici http://infoarena.ro/job_detail/596464 sa retin componentele in liste alocate dinamic in felul urmator : cand extrag o muchie [x,y] a componentei biconexe din stiva , retin nodul x in lista ; daca la finalul determinarii acelei componente biconexe am retinut in lista componentei doar un nod , atunci il retin si pe y. Asta deoarece muchiile sunt retinute in modul [x1,x2] [x2,x3] .... [xn,x1]  Think
Si totusi cum de mi se zice ca pe 8 teste am afisat gresit componentele?  Huh Inainte mai facusem o varianta in care retineam din muchia [x,y] si pe x si pe y,iar apoi la afisare pentru fiecare componenta reinitializam un vector bool "afisat" pentru a nu afisa de 2 ori acelasi nod,dar bineinteles ca din cauza reinitializarii la fiecare componenta se facea O(n^2) sau chiar mai mult si deci lua 70pct cu TLE pe ultimele 3 teste  d'oh!

Poate sa-mi explice cineva de ce gandirea mea de afisare din prima varianta ar fi gresita?  Huh

LE : m-am mai uitat pe teste si am incercat sa mai repar la afisare cu diverse variabile prim,ultim,etc. si cu ceva verificari dar inca raman 6 teste cu afisarea incorecta  Brick wall http://infoarena.ro/job_detail/596484
Deci imi poate da cineva o idee cum afisez eficient si corect nodurile componentei biconexe stiind muchiile?  Think
« Ultima modificare: Iunie 17, 2011, 13:58:07 de către Olariu Ciprian » Memorat
savim
Nu mai tace
*****

Karma: 194
Deconectat Deconectat

Mesaje: 333



Vezi Profilul
« Răspunde #22 : Iunie 18, 2011, 08:33:24 »

Din ce stiu, ar trebui sa-ti mearga prima idee de afisare, insa nu am avut timp sa ma uit pe sursa ta.

Mai simplu, daca stii muchiile unei componente, poti adauga nodurile fiecarei muchii (x,y) intr-un vector, sortezi vectorul, si afisezi doar elementele distincte.

Asta se poate realiza intr-un mod destul de simplu. (if A[ i ] != A[i - 1] afiseaza A[ i ], ai grija la A[0] ! ).
« Ultima modificare: Iunie 18, 2011, 09:52:49 de către FMI - Paul-Dan Baltescu » Memorat
scipianus
Nu mai tace
*****

Karma: 129
Deconectat Deconectat

Mesaje: 345



Vezi Profilul
« Răspunde #23 : Iunie 18, 2011, 12:56:37 »

Din ce stiu, ar trebui sa-ti mearga prima idee de afisare, insa nu am avut timp sa ma uit pe sursa ta.

Mai simplu, daca stii muchiile unei componente, poti adauga nodurile fiecarei muchii (x,y) intr-un vector, sortezi vectorul, si afisezi doar elementele distincte.

Asta se poate realiza intr-un mod destul de simplu. (if A[ i ] != A[i - 1] afiseaza A[ i ], ai grija la A[0] ! ).

Pai da,s-ar putea si asa,adica fiecare nod ar aparea de 2 ori,dar sortarea nu ar mai mari complexitatea inutil?  Huh Cand ai sa ai timp poti sa te uiti pe sursa mea sa vezi totusi de ce nu ar fi bun?  Think
Memorat
savim
Nu mai tace
*****

Karma: 194
Deconectat Deconectat

Mesaje: 333



Vezi Profilul
« Răspunde #24 : Iunie 18, 2011, 17:45:39 »

Poti sa incerci ideea cu sortarea, nu cred ca sunt sanse sa iei tle, si eviti sa te complici.

Ca sa nu astepti sa ma uit pe sursa, iti dau link catre sursa mea, e destul de intuitiv scrisa, si poti sa compari cu ce ai facut tu:  http://infoarena.ro/job_detail/553869?action=view-source.
Memorat
Pagini: [1] 2   În sus
  Imprimă  
 
Schimbă forumul:  

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