infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Spissack Cristian din Iunie 04, 2010, 01:26:15



Titlul: Problema (urgent)
Scris de: Spissack Cristian din Iunie 04, 2010, 01:26:15
Am urmatoarea problema:

Am o matrice N * N cu elemente numere naturale.

Vreau sa parcurg aceasta matrice de la linia 1 la linia N (alegand cate un element de pe fiecare linie) cu conditia ca odata trecut printr-un element, restul elementelor de pe aceeasi coloana nu mai pot fi parcurse pana la sfarsit. Vreau sa scot o secventa de suma maxima prin acest tip de parcurgere.

Am nevoie de o idee de rezolvare destul de urgent :)


Titlul: Răspuns: Problema (urgent)
Scris de: Cosmin Negruseri din Iunie 04, 2010, 02:08:50
Pai de ce e asa urgent? :)


Titlul: Răspuns: Problema (urgent)
Scris de: Spissack Cristian din Iunie 04, 2010, 02:44:52
As prefera o idee decat un raspuns off-topic :)


Titlul: Răspuns: Problema (urgent)
Scris de: MciprianM din Iunie 04, 2010, 08:45:47
Daca e urgent urgent sa fie! :indifferent: Poti sa incerci backtracking (generezi permutari). Vezi http://en.wikipedia.org/wiki/Rook_polynomial (http://Vezi http://en.wikipedia.org/wiki/Rook_polynomial)


Titlul: Răspuns: Problema (urgent)
Scris de: Spissack Cristian din Iunie 04, 2010, 09:06:15
Backtracking e mult prea lent, N <= 400


Titlul: Răspuns: Problema (urgent)
Scris de: Andrei Misarca din Iunie 04, 2010, 09:25:28
Dintr-un element poti merge doar intr-un element adiacent sau in oricare altul?


Titlul: Răspuns: Problema (urgent)
Scris de: Mihai Calancea din Iunie 04, 2010, 09:33:58
Un cuplaj de cardinalitate N si cost maxim ? :)


Titlul: Răspuns: Problema (urgent)
Scris de: Spissack Cristian din Iunie 04, 2010, 10:37:46
@Andrei
Dintr-un element poti merge in oricare altul pe a carui coloana nu ai mai fost inainte (trebuie ales un element de pe fiecare coloana)

@Mihai
Din cate imi dau seama asa e, ce solutie imi propui? Presupun ca folosesc flux maxim unde reteaua are S care duce in N noduri cu capacitatea infinit, apoi cele N noduri duc in alte N noduri (toate combinatiile posibile) cu capacitatile date de matricea mea si apoi alea duc in T (tot cu capacitatea infinit).


Titlul: Răspuns: Problema (urgent)
Scris de: Andrei Misarca din Iunie 04, 2010, 10:52:31
Nu, din S vei avea muchii în N noduri de capacitate 1 și cost 0, din nodul din dreapta i și nodul din stânga j vei avea capacitate 1 și cost -A[ i ][ j ], iar din cele N noduri din dreapta vei avea muchii de capacitate 1 și cost 0 către destinație. Iar apoi dai bătaie cu cuplaj maxim de cost minim. Suma cerută va fi -costul cuplajului.


Titlul: Răspuns: Problema (urgent)
Scris de: Mihai Calancea din Iunie 04, 2010, 10:53:51
Nu. E cum a spus Andrei Misarca. Exista si o solutie care nu implica flux , se numeste algoritmul ungar din cate tin minte.

Look:
http://infoarena.ro/problema/cmcm


Titlul: Răspuns: Problema (urgent)
Scris de: SAlexandru din Iunie 04, 2010, 11:07:26
Poate nu inteleg problema, dar tu trebuie sa alegi un element de pe fiecare coloana a.i suma sa fie maxima, da ?
Atunci de ce nu alegi maximul de pe fiecare coloana si gata, sau imi scapa mie un detaliu ?  ???


Titlul: Răspuns: Problema (urgent)
Scris de: Andrei Misarca din Iunie 04, 2010, 11:15:01
Și dacă maximele de pe fiecare coloană sunt pe aceeași linie ce faci?


Titlul: Răspuns: Problema (urgent)
Scris de: SAlexandru din Iunie 04, 2010, 11:19:50
Și dacă maximele de pe fiecare coloană sunt pe aceeași linie ce faci?
A, deci acest detaliu imi scapa :-' , thanks :D


Titlul: Răspuns: Problema (urgent)
Scris de: Spissack Cristian din Iunie 04, 2010, 15:42:42
Ms de raspunsuri, works wonderfully :)