Pagini: [1] 2   În jos
  Imprimă  
Ajutor Subiect: 020 Cuplaj maxim in graf bipartit  (Citit de 15521 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
filipb
Nu mai tace
*****

Karma: 232
Deconectat Deconectat

Mesaje: 929



Vezi Profilul
« : Decembrie 06, 2008, 19:49:25 »

Aici puteti discuta despre problema Cuplaj maxim in graf bipartit.
Memorat
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« Răspunde #1 : Ianuarie 09, 2009, 15:39:07 »

Lipseste poza de la explicatia exemplului.
Memorat
Marius
Nu mai tace
*****

Karma: 154
Deconectat Deconectat

Mesaje: 572



Vezi Profilul
« Răspunde #2 : Ianuarie 09, 2009, 21:42:59 »

Au fost câteva probleme cauzate (de mine). Am să pun poza imediat. Smile
Memorat

Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
gabor_oliviu1991
Nu mai tace
*****

Karma: 28
Deconectat Deconectat

Mesaje: 200



Vezi Profilul
« Răspunde #3 : Martie 10, 2009, 00:07:31 »

interesant e ca daca fac cu Edmonds Karp pe exemplul:

Cod:
3 3 6
1 4
1 5
2 4
3 4
3 5
3 6

imi da raspuns gresit. daca folosesc solutia cu "lanțuri altenante" care cred ca sunt alternante, imi da raspunsul corect. totusi cred ca ambele solutii ar trebui sa returneze un raspuns corect daca totusi sunt "solutii" cu implementare diferita.

raspuns corect furnizat de solutia cu lanturi alternante ( http://infoarena.ro/job_detail/225128?action=view-source ):

Cod:
3
1 5
2 4
3 6

iar cea gresita cu Edmonds Karp ( http://infoarena.ro/job_detail/225136?action=view-source ) :

Cod:
3
1 4
2 4
3 4
« Ultima modificare: Martie 10, 2009, 08:23:30 de către gaboru corupt » Memorat
Marius
Nu mai tace
*****

Karma: 154
Deconectat Deconectat

Mesaje: 572



Vezi Profilul
« Răspunde #4 : Martie 11, 2009, 20:04:26 »

Soluția cu Edmonds Karp nu cred că e greșită. Tu ai introdus datele greșit. Pe prima linie ai 3 3 6, adică ai o mulțime L cu 3 elemente {1, 2, 3} și o mulțime R tot cu 3 elemente {1, 2, 3} și între acestea se adaugă 6 muchii. Însă, pe coloana a doua din liniile următoare ai valorile 4, 5, 6 care nu sunt corecte. Ar trebui 1, 2, 3.
Memorat

Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
gabor_oliviu1991
Nu mai tace
*****

Karma: 28
Deconectat Deconectat

Mesaje: 200



Vezi Profilul
« Răspunde #5 : Martie 11, 2009, 20:36:00 »

Ok, pana la urma am inteles ce era gresit. Dar totusi, cred ca ar trebui specificat alaturi de solutie ca datele de intrare au alt format fata de cel cu liste alternante.
Memorat
Marius
Nu mai tace
*****

Karma: 154
Deconectat Deconectat

Mesaje: 572



Vezi Profilul
« Răspunde #6 : Martie 12, 2009, 19:55:38 »

Ok, pana la urma am inteles ce era gresit. Dar totusi, cred ca ar trebui specificat alaturi de solutie ca datele de intrare au alt format fata de cel cu liste alternante.

Datele de intrare au acelaşi format pentru toate soluţiile.
Memorat

Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
adelinas
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #7 : Noiembrie 20, 2009, 16:12:47 »

Imi poate spune cineva va rog frumos care este ideea de rezolvare cu lanturi alternante?
Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #8 : Noiembrie 20, 2009, 17:21:21 »

Daca te referi la ce cred eu:
- sa zicem ca ai in stanga un set de noduri i, in dreapta un set de noduri j. tii in L[ i ] nodul din dreapta cu care nodul i (din stanga) e cuplat, iar in R[ j ]  nodul din stanga cu care e cuplat nodul j(din dreapta). bineinteles, daca L[ i ] sau R[ j ] sunt 0, inseamna ca sunt necuplati (sau egali cu alta valoare "de referinta" gen -1, tu stii)
- pentru un nod din dreapta cuplat cu unul din stanga, stii ca el va ramane cuplat mereu (practic, nu vrei sa scazi cuplajul).
- iei un nod din stanga. daca gasesti sa-l cuplezi cu unul din dreapta liber, o faci. daca nu gasesti vreunu liber, ii iei pe cei ocupati si incerci sa-i recuplezi pe astia cu nodu curent, deci sa incerci pe R[j] (nodul corespunzator nodului din dreapta cu care vrei sa cuplezi) sa il cuplezi cu altcineva
Asta e ideea in mare. Imi dau seama ca nu  este foarte clar explicata, dar cred ca te-ar ajuta sa te uiti si pe o sursa in acelasi timp ( de exemplu: http://infoarena.ro/job_detail/234180?action=view-source ).

Daca are altcineva o explicatie mai clara, sau daca eu am explicat alta metoda decat cea ceruta, va rog sa ma corectati Smile
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #9 : Noiembrie 20, 2009, 23:09:00 »

Ce anume vrei sa iti explicam, algoritmul in sine sau modul de implementare?
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
emi.0105
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #10 : Martie 25, 2010, 11:29:52 »

salut...ma poate ajuta cineva?..nu gasesc un turorial sau un articol care sa ma ajute sa inteleg ce sunt grafurile si cum le folosesc..nu am mai lucrat deloc cu grafuri..daca ma puteti ajuta cu un tutorial ceva ar fi perfect
Memorat
CezarMocan
Nu mai tace
*****

Karma: 252
Deconectat Deconectat

Mesaje: 567



Vezi Profilul
« Răspunde #11 : Martie 25, 2010, 12:29:18 »

Wikipedia. 1 si 2. Sper sa te ajute!
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #12 : Mai 02, 2010, 19:40:08 »

Nu gasesc nici unde  explicata metoda lanturilor alternante, se poate detalia putin sau un link catre o explicatie ?
Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #13 : Mai 02, 2010, 23:38:17 »

Bineinteles, imediat. Uite aici:

http://infoarena.ro/forum/index.php?topic=3450.msg36209#msg36209

Pun pariu ca nu ai citit topicul...
Memorat
livium
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 21



Vezi Profilul
« Răspunde #14 : Februarie 02, 2011, 00:17:40 »

Poate cineva sa comenteze codul (http://infoarena.ro/job_detail/225128?action=view-source) pentru ca nu pot sa-l inteleg. Eu stiu cum sa fac problema asta dar intr-un mod mult mai dificil de implementat, de aceea va rog daca poate cineva sa ma ajute sa inteleg codul lui Marius Stroe!
Memorat
dornescuvlad
Nu mai tace
*****

Karma: -138
Deconectat Deconectat

Mesaje: 234



Vezi Profilul
« Răspunde #15 : Februarie 02, 2011, 11:40:51 »

http://en.wikipedia.org/wiki/Hopcroft-Karp_algorithm
Memorat
livium
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 21



Vezi Profilul
« Răspunde #16 : Februarie 02, 2011, 12:18:10 »

Algoritmul lui Marius Stroe nu urmeaza pseudocodul Hopcroft-Karp de pe wikipedia. E cu totul altceva!
Memorat
S7012MY
Nu mai tace
*****

Karma: 26
Deconectat Deconectat

Mesaje: 648



Vezi Profilul
« Răspunde #17 : Februarie 02, 2011, 14:27:10 »

Uite sursa mea:
http://infoarena.ro/job_detail/465422?action=view-source
nu sunt multe comentarii dar sper sa te ajute Very Happy Daca nu intelegi ceva intreaba si incerc sa te ajut.
Memorat
livium
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 21



Vezi Profilul
« Răspunde #18 : Februarie 02, 2011, 21:50:55 »

Merci!
Eu m-am gandit la un algoritm propriu inspirat de chestia asta cu vectorii L si R.
Incerc sa cuplez un nod din stanga cu unul din dreapta.
Daca nodul din dreapta nu e cuplat atunci fac cuplajul.
Altfel caut un alt nod din dreapta cu care nodul din stanga se poate cupla.
Daca toate nodurile din dreapta nodului din stanga sunt cuplate atunci decuplez un nod din dreapta, il cuplez cu nodul din stanga, iar nodul din stanga care a fost decuplat de nodul din dreapta caut sa-l cuplez cu un altul din dreapta necuplat.

Faza e ca algoritmul la care m-am gandit eu merge foarte bine pe foaie, intru-cat l-am testat multe grafuri bipartite?
Cumva algoritmul tau face acelasi lucru?

Apropo: algoritmul lui Stroe nu merge pentru un graf anume. E gresit.
Memorat
DraStiK
Nu mai tace
*****

Karma: 131
Deconectat Deconectat

Mesaje: 207



Vezi Profilul
« Răspunde #19 : Februarie 03, 2011, 00:04:00 »


Apropo: algoritmul lui Stroe nu merge pentru un graf anume. E gresit.


Nu e algoritmul lui Stroe. E un algoritm greedy ce determina cuplajul maxim, si e demonstrat a fi corect.

Practic functia pair-up returneaza adevarat daca poate cupla nodul i din prima multime.
Cum face asta? Parcurge in primul rand toate nodurile vecine ale nodului i din cea dea doua multime,si daca gaseste unul liber, il cupleaza cu acesta.
Daca nu gaseste nici un nod liber (necuplat), atunci parcurge din nou vecinii nodului i, si incearca sa vada daca poate cupla perechea acestui nod cu altul, pentru a-l putea cupla pe i cu acesta.

Sper sa intelegi. E seara, si e probabil sa am greseli gramaticale, si pentru asta, imi cer scuze.
Memorat
livium
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 21



Vezi Profilul
« Răspunde #20 : Februarie 03, 2011, 00:40:51 »

Asa m-am gandit si eu. Ciudat e ca merge si nu pot intelege de ce.
Nu pot sa inteleg care ar putea fi demonstratia matematica pentru algoritmul asta, asa cum exista una pentru algoritmul care rezolva acceasi problema, insa utilizand un graf auxiliar (http://www.youtube.com/watch?v=NlQqmEXuiC8).
Memorat
Prostu
Nu mai tace
*****

Karma: 134
Deconectat Deconectat

Mesaje: 323



Vezi Profilul
« Răspunde #21 : Februarie 04, 2011, 00:16:17 »

Algoritmul lui Marius Stroe nu urmeaza pseudocodul Hopcroft-Karp de pe wikipedia. E cu totul altceva!

E acelasi lucru, doar ca este implementat la obiect, fara bla bla. Se demonstreaza folosind drumuri de augmentare, pana la urma este o optimizare la Edmond-Karp, care este o implementare a Ford–Fulkerson. Daca nu stii algoritmul de flux maxim intr-o retea de transport, atunci iti recomand sa incepi cu acesta din urma.
Memorat
gorgovan
Strain
*

Karma: 8
Deconectat Deconectat

Mesaje: 37



Vezi Profilul
« Răspunde #22 : Aprilie 01, 2011, 06:53:26 »

Care este cel mai eficient algoritm pentru a afla cuplajul maxim intr-un graf multi partit( tripartit, 4 partit, 5 partit, 6 partit) ?
Dar cred ca pentru ce am eu nevoie va fi 7->9 partit.

Edmonds-Karp?
Memorat
edward_alex
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #23 : Mai 09, 2011, 21:51:58 »

Am implementat aceasta problema urmarind exact algoritmul de pe Wikipedia cu privire la algoritmul Hopcroft–Karp. Am retinut muchiile intr-o lista de adiacenta, vectorul pair e global la fel si dist. Am urmarit exact acel algoritm. Nu inteleg de ce imi da raspunsul gresit. Nu este de ajuns implementarea acelui algoritm sau mai trebuie modificat ceva?

Multumesc anticipat,
Alex
Memorat
VisuianMihai
De-al casei
***

Karma: -9
Deconectat Deconectat

Mesaje: 121



Vezi Profilul
« Răspunde #24 : Noiembrie 25, 2011, 19:56:03 »

Buna... imi puteti spune si mie de unde pot invata despre grafuri(de pe internet de preferat) sunt pe clasa a 9-a.
Memorat
Pagini: [1] 2   În sus
  Imprimă  
 
Schimbă forumul:  

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