Pagini: [1] 2 3   În jos
  Imprimă  
Ajutor Subiect: 034 Ciclu Eulerian  (Citit de 26035 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« : Ianuarie 02, 2009, 15:37:08 »

Aici puteti discuta despre problema Ciclu eulerian din Arhiva educationala.
Memorat

Am zis Mr. Green
andrei-alpha
Client obisnuit
**

Karma: 103
Deconectat Deconectat

Mesaje: 91



Vezi Profilul
« Răspunde #1 : Ianuarie 16, 2009, 17:29:32 »

Prima din figurile alea nu cred ca are vreun ciclu eulerian ca sunt 4 noduri cu grad impar si unul cu grad par Think
 
Memorat
gabor_oliviu1991
Nu mai tace
*****

Karma: 28
Deconectat Deconectat

Mesaje: 200



Vezi Profilul
« Răspunde #2 : Ianuarie 19, 2009, 22:58:37 »

in exemplul problemei, avem muchie de la 2 la 2? defapt ramanem pe nodul 2 ? sau nu am inteles eu bine.
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #3 : Ianuarie 20, 2009, 00:26:29 »

Da, grafurile pot contine muchii multiple intre 2 noduri sau self-loops.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
mariusdrg
Client obisnuit
**

Karma: 70
Deconectat Deconectat

Mesaje: 59



Vezi Profilul
« Răspunde #4 : Februarie 20, 2009, 14:43:39 »

Ar mai fi inca o metoda usoara si demna de mentionat care are in componenta un singur dfs. O astfel de solutie se poate vedea aici: http://infoarena.ro/job_detail/263481. Aceasta ia doar 50 de puncte din cazua ca foloseste un dfs(intrece marimea stivei din cate observ) dar e usor de inteles ce face si usor de implementat. Practic ceea ce face sursa mea e: fac un dfs prin tot graful si am un vector de vizitat pe muchii(nu pe noduri), In data ce nu mai pot merge nicaieri tiparesc nodul.

P.S. Scuza-ti implementarea urata , dar e facuta in borland(vine oji.....).
Memorat
amadaeus
Client obisnuit
**

Karma: 28
Deconectat Deconectat

Mesaje: 93



Vezi Profilul
« Răspunde #5 : Februarie 21, 2009, 00:23:33 »

fac un dfs prin tot graful si am un vector de vizitat pe muchii(nu pe noduri), In data ce nu mai pot merge nicaieri tiparesc nodul.

Algoritmul este practic acelasi: construiesc un ciclu si ma intorc pe el, intercaland toate ciclurile suplimentare. Implementarea este putin diferita (marcajele pe muchii) si merita mentionata intr-adevar ca si alternativa; ar fi ideal insa daca ai implementa si o varianta nerecursiva folosind aceeasi idee, pentru a avea o sursa de 100p, care se poate incadra in articolul de solutii. Wink

Memorat

"one of these days I'm going to cut you into little pieces..."
stocarul
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« Răspunde #6 : Februarie 21, 2009, 12:11:46 »

Am implementat eu un dfs nerecursiv pt problema asta...
http://infoarena.ro/job_detail/264061
Insa din pacate nu intra in timp pe testele 8 si 10 Sad

L.E.: am facut o mica modificare si am luat suta  Yahoo!
« Ultima modificare: Februarie 22, 2009, 10:59:26 de către Cosmin Mihai Tutunaru » Memorat
andr33a
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #7 : Martie 07, 2009, 12:48:43 »

Daca exista un ciclu eulerian pt o parte din noduri, iar restu` nodurilor sunt izolate, se afiseaza ciclu` sau -1?  Confused
Memorat
andrei-alpha
Client obisnuit
**

Karma: 103
Deconectat Deconectat

Mesaje: 91



Vezi Profilul
« Răspunde #8 : Martie 07, 2009, 12:53:27 »

-1 Ciclul trebuie sa fie pentru toate nodurile.
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #9 : Martie 07, 2009, 14:58:25 »

-1 Ciclul trebuie sa fie pentru toate nodurile.

Nu. Ciclul trebuie sa traverseze toate muchiile o singura data si nu are nici o restrictie privind nodurile. Daca exista noduri izolate, acestea nu intra in calcul.
Memorat

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

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #10 : Martie 07, 2009, 15:50:37 »

Eu cred ca enuntul problemei ar trebui revizuit.

Un graf se numeste eulerian daca si numai daca este conex si gradul fiecarei nod este par.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
amadaeus
Client obisnuit
**

Karma: 28
Deconectat Deconectat

Mesaje: 93



Vezi Profilul
« Răspunde #11 : Martie 08, 2009, 01:20:04 »

Eu cred ca enuntul problemei ar trebui revizuit.

Un graf se numeste eulerian daca si numai daca este conex si gradul fiecarei nod este par.


Se poate discuta mult pe marginea definitiei; fiecare autor al unei lucrari de teoria grafurilor are particularitatile sale in definitii sau notatii. In cazul de fata, imi pare irelevanta orice obiectie, existand o corespondenta biunivoca intre multimea grafurilor care admit un ciclu eulerian si multimea grafurilor conexe ale caror noduri au toate gradele pare (este una dintre teoremele lui Euler).

Din considerente practice, mi se pare ca a defini grafurile euleriene ca fiind acele grafuri cu proprietatea P1, si a demonstra apoi ca ele au (necesar si suficient) proprietatea P2, este acelasi lucru cu a interschimba P1 si P2 in fraza anterioara. Din considerente teoretice, diferenta aceasta poate deveni importanta, insa, asa cum am spus, lucrarile de specialitate jongleaza prea mult cu termenii pentru a putea avea pretentia unei singure notatii corecte; in final, ramane doar o problema de terminologie.

Memorat

"one of these days I'm going to cut you into little pieces..."
razyelx
Client obisnuit
**

Karma: 0
Deconectat Deconectat

Mesaje: 82



Vezi Profilul
« Răspunde #12 : Martie 11, 2009, 20:20:42 »

imi explicati si mie va rog "La fiecare pas in construirea ciclului, vom alege intotdeauna muchiile de intoarcere inaintea muchiilor de arbore." . Muchiile de intoarcere is alea care formeaza ciclu? Si alea de arbore care nu formeaza? De unde imi pot da seama care muchii is care? Explicatie e putin succinta.
 
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #13 : Martie 11, 2009, 21:12:28 »

Acolo se refera la arborele DFS. Atunci cand faci parcurgerea normala DFS(), se creaza de fapt un arbore. Sa luam algoritmul concret:
Cod:
void dfs(int x)
 {
    viz[x] = 1;
    pt fiecare vecin a lui x
      {
          if(viz[vecin] == 0) dfs(vecin); // asta este muchie de arbore
          else ; // => viz[vecin]=1 => muchia (x, vecin) este muchie de intoarcere si inchide un ciclu
       }
  }
Ia-ti un graf pe hartie si deseneaza-ti nodurile si muchiile exact in ordinea parcurgerii DF, si o sa intelegi cum sta treaba. Succes!  Smile
« Ultima modificare: Martie 12, 2009, 08:58:59 de către Marcu Florian » Memorat
otilia_s
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #14 : Aprilie 03, 2009, 13:20:48 »

Eu am rezolvat problema fara sa utilizez STL, alocand cu realloc , dar obtin SIGSEGV pe 3 teste.  Nu inteleg de ce, pentru ca am folosit aceeasi metoda ca si in rezolvarea oficiala, deci ar trebui sa foloseasca la fel de multa memorie.
Puteti sa va uitati si pe sursa mea, va rog: http://infoarena.ro/job_detail/295583?action=view-source
Multumesc!  Smile
Memorat
andrei-alpha
Client obisnuit
**

Karma: 103
Deconectat Deconectat

Mesaje: 91



Vezi Profilul
« Răspunde #15 : Aprilie 03, 2009, 18:18:19 »

Citat
Inserează citat
Eu am rezolvat problema fara sa utilizez STL, alocand cu realloc , dar obtin SIGSEGV pe 3 teste.  Nu inteleg de ce, pentru ca am folosit aceeasi metoda ca si in rezolvarea oficiala, deci ar trebui sa foloseasca la fel de multa memorie.
Puteti sa va uitati si pe sursa mea, va rog: http://infoarena.ro/job_detail/295583?action=view-source
Multumesc!  Smile

Poti sa iei testele de la atasamente,  le rulezi la tine si vezi exact unde crapa.  Smile
Memorat
Procopliuc
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #16 : Mai 07, 2009, 21:50:27 »

De ce-mi da killed by signal daca folosesc liste liniare?  Think
Pe windows la primul test de la atasamente imi merge bine,iar la evaluare imi da killed by signal sad
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #17 : Mai 07, 2009, 21:58:43 »

Citat
scanf ("%i%i",&x,&y); 
Incearca sa citesti cu " %d ". Poate de aici e. Daca nu, fii atent cum faci legaturile alea. E destul de dubioasa sursa ta. Nu vad unde simulezi stiva, si mi se pare ciudat ca aloci noduri noi (apoi le stergi) de fiecare data cand apelezi ciclu() . Si un sfat prietenesc: ordoneaza-ti putin sursele (ca aspect), ca asa nu intelege nimeni nimic.  Smile Spor!
Memorat
marcelcodrea
Nu mai tace
*****

Karma: 173
Deconectat Deconectat

Mesaje: 217



Vezi Profilul
« Răspunde #18 : Mai 07, 2009, 22:04:20 »

Linux are o gestiune impecabilă a memoriei, spre deosebire de Windows unde în cazul în care scăparea nu este foarte mare, execuţia o să pară în regulă şi o să întoarcă 0. De aceea nu apare nimic suspect când rulezi de acasă. Primeşti "Killed by signal" cel mai probabil din cauza unor greşeli la operaţiile cu liste, accesezi ceva nealocat în prealabil. Pentru a spori lizibilitatea surselor (aşa cum ai structurat-o, sursa e indescifrabilă pentru oricine care nu a scris-o, adică pentru noi toţi), poţi folosi CodeBlocks care oferă posibilitatea indentării lor urmând un anumit tipar printr-un singur click.
Memorat
Procopliuc
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #19 : Mai 08, 2009, 18:31:39 »

cred ca  sursa http://infoarena.ro/job_detail/313322?action=view-source  este structurata putin mai bine
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #20 : Mai 10, 2009, 13:45:27 »

Te inseli Smile. Uita-te si tu la sursele celorlalti concurenti si vezi cum au implementat Smile.
Memorat
Procopliuc
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #21 : Mai 10, 2009, 14:06:42 »

care-i greseala? Think
Pe windows imi merge bine Brick wall
Memorat
popoiu.george
Vorbaret
****

Karma: 19
Deconectat Deconectat

Mesaje: 162



Vezi Profilul
« Răspunde #22 : Februarie 05, 2010, 13:59:16 »

Iau 80 pct, iar pe testele 2 si 4 iau "fisier de iesire corupt!" si nu inteleg de la ce ar putea fi.

Stie cineva?  Think
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #23 : Februarie 06, 2010, 07:05:00 »

M-am uitat in evaluator si acest mesaj apare cand ce afisezi nu respecta formatul cerut. Ori afisezi prea multe/prea putine noduri ori afisezi varfuri care nu apartin intervalului [1, N] (in situatia in care exista solutie).
Memorat

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

Karma: 3
Deconectat Deconectat

Mesaje: 250



Vezi Profilul
« Răspunde #24 : Februarie 10, 2010, 17:29:35 »

Salut! Am si eu o intrebare.
Ciclul eulerian nu iese din prima decat in cazul in care noduri critice?
              (cum e in exemplul de mai sus nodul 3 )
a iesit din prima= apelam doar o data functia euler si avem raspunsul
« Ultima modificare: Iunie 16, 2010, 22:59:58 de către Dragos » Memorat
Pagini: [1] 2 3   În sus
  Imprimă  
 
Schimbă forumul:  

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