infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Musoiu Tudor din Aprilie 20, 2008, 18:10:00



Titlul: Graf
Scris de: Musoiu Tudor din Aprilie 20, 2008, 18:10:00
Spuneti-mi si mie va rog cum calculez drumul de cost minim de la un nod al unui graf la alt nod, drum care sa treaca printr-un numar fixat de noduri


Titlul: Răspuns: Graf
Scris de: Bogdan-Alexandru Stoica din Aprilie 20, 2008, 18:23:32
Poti rezolva problema prin programare dinamica:
D[ i ][ j ] = distanta minima de la nodul de start panala nodul i trecand prin exact j noduri. Initial D[ sursa ][1] = 0, iar pentru o stare (i,j) deja calculata vei trece intr-o stare (i',j+1) unde i' este un vecin al lui i.


Titlul: Răspuns: Graf
Scris de: Andrei Grigorean din Aprilie 20, 2008, 19:54:17
Nodurile presupun ca au voie sa se repete :-'


Titlul: Răspuns: Graf
Scris de: Lucian Boca din Aprilie 20, 2008, 21:05:03
Daca nu au voie sa se repete, e NP-completa.


Titlul: Răspuns: Graf
Scris de: Bogdan-Alexandru Stoica din Aprilie 20, 2008, 21:29:09
Nodurile presupun ca au voie sa se repete :-'

si eu am presupus acelasi lucru  :-'


Titlul: Răspuns: Graf
Scris de: Musoiu Tudor din Aprilie 21, 2008, 00:22:37
nu au voie sa se repete   :-'


Titlul: Răspuns: Graf
Scris de: Lucian Boca din Aprilie 21, 2008, 00:33:43
Atunci nu se poate rezolva in timp polinomial. Daca ai gasi un astfel de algoritm, ai rezolva si problema drumului hamiltonian (cauti drumul dintre doua noduri care sa treaca prin toate celelalte |V|-2 noduri).
Cred ca poti gasi o rezolvare intr-o dinamica pe stari in O(2^N * N^2), similara cu gasirea drumului hamiltonian de cost minim.


Titlul: Răspuns: Graf
Scris de: Andrei Grigorean din Aprilie 21, 2008, 12:32:49
In cazul in care nu se poate sa repeti nodurile ai 2 posibilitati:

1. Faci un backtracking optimizat
2. Folosesti rezolvarea de care spunea amadeus mai sus cu dinamica pe configuratii. Ar trebui sa te uiti peste rezolvarea de la problema ADN (http://infoarena.ro/preoni-2005/runda-1/solutii) pentru mai multe detalii


Titlul: Răspuns: Graf
Scris de: Lucian Boca din Aprilie 21, 2008, 15:46:40
...sau niste random-uri inteligente, in sistem Ciucu  :-'


Titlul: Răspuns: Graf
Scris de: Cezar Mocan din Aprilie 21, 2008, 17:38:59
Ia zi si mie cum ar merge cu randomuri problema asta... sunt chiar curios :)


Titlul: Răspuns: Graf
Scris de: Lucian Boca din Aprilie 21, 2008, 18:11:42
Asta numai el iti poate spune :P


Titlul: Răspuns: Graf
Scris de: Cosmin Negruseri din Aprilie 21, 2008, 18:18:58
Cezare poti baga si pe aici k-opturi cum ti-am mai zis la ciclu hamiltonean.


Titlul: Răspuns: Graf
Scris de: Savin Tiberiu din Aprilie 21, 2008, 19:34:31
ce sunt k-opturile??


Titlul: Răspuns: Graf
Scris de: Cosmin Negruseri din Aprilie 21, 2008, 19:43:22
http://en.wikipedia.org/wiki/Traveling_salesman_problem

cauta aici k-opt

Am avut la ginfo prin 2001 sau 2002 nu mai stiu sa determinam lantul hamiltonean de cost minim intr-un graf unde n era vreo 200. Prietenul meu Adrian Carcu a facut cel mai bine pe problema si a folosit o combinatie de 2-opt si 3-opt.

Am folosit in o gramada de probleme de euristici de la Bursele Agora metode de imbunatatire a solutiei de tipul asta.


Titlul: Răspuns: Graf
Scris de: Marius Stroe din Aprilie 21, 2008, 22:46:56
Sa punem o problema pe infoarena care sa determine lantul hamiltonian de cost minim pentru n mare (200 cum zice Cosmin) si sa se evalueze astfel incat daca obtii un cost mai bun decat al comisiei sa primesti mai mult de 10 puncte pe test? Sa fie o problema care obtine mai mult de 100 de puncte. :)


Titlul: Răspuns: Graf
Scris de: Andrei Grigorean din Aprilie 21, 2008, 23:05:40
Nu se poate sa obtii mai mult de 100 de puncte la o problema pe infoarena :).


Titlul: Răspuns: Graf
Scris de: Marius Stroe din Aprilie 21, 2008, 23:08:03
Eu am avut si un milion de puncte si nu se poate 101 ... :D


Titlul: Răspuns: Graf
Scris de: Lucian Boca din Aprilie 22, 2008, 00:05:21
Ar merge o intreaga clasa de astfel de probleme, pentru care sa nu existe solutie polinomiala sau solutie exponentiala care s-ar incadra in timp, iar punctarea sa se faca in functie de cea mai buna solutie valida pana la momentul respectiv (care ar lua 100p), restul surselor primind puncte in funtie de o anumita distributie (de exemplu Gaussiana).

Cred ca este totusi destula munca pentru implementarea unei astfel de functionalitati; poate in infoarena 3.0 vom avea si "arhiva de bulaneli", plasata cu o eticheta mai formala :P sub arhiva de probleme si arhiva educationala :D