infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Jean Luca Paliuca din Mai 01, 2008, 10:35:27



Titlul: Drum simplu de cost MAXIM
Scris de: Jean Luca Paliuca din Mai 01, 2008, 10:35:27
Salut , ce algoritm as putea folosi pentru a determina un drum simplu de cost maxim intr-un graf neorientat ?
Mentionez ca trebuie sa reconstitui si drumul daca asta influenteaza cu ceva..


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Andrei Grigorean din Mai 01, 2008, 15:43:19
E problema NP-completa, nu exista rezolvare polinomiala pentru ea :).

Poti face dinamica pe stari sau back optimizat.


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Jean Luca Paliuca din Mai 01, 2008, 16:04:47
Mi-ai putea da un mic ajutor in legatura cu dinamica pe stari deoarece nu am mai auzit de asa ceva ?
Ar fi un fel de Roy Floyd doar ca nu ar merge daca exista cicluri ? Sau merge tot timpul ?


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Bondane Cosmin din Mai 01, 2008, 17:15:59
Hmm cred ca ai putea face ceva de genul:

A[i,j] - costul maxim de a ajunge in nodul i, avand configuratia j. Prin configuratie se intelege un numar care in baza 2 tine minte daca ai fost intr-un nod. Spre exemplu daca ai avea j=9 in baza 2 ai avea 1001, asta insemnand ca ai deja parcurse nodurile 1 si 4. Sper sa mearga :-), daca este ceva gresit corectati-ma.


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Jean Luca Paliuca din Mai 01, 2008, 18:00:56
Ce inseamna ca sunt parcurse nodurile 1 si 4 ? Ca drumul este 1 , 4 si i ?


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Bondane Cosmin din Mai 01, 2008, 18:38:43
Ce inseamna ca sunt parcurse nodurile 1 si 4 ? Ca drumul este 1 , 4 si i ?

In cazul asta ii ca si cum ai avea drumul 1-4-i. Dar, de exemplu daca ai avea mai multe noduri parcurse, spre exemplu 1,2,3,4 nu insemna ca drumul este 1-2-3-4-i, ci doar ca ai trecut prin nodurile 1,2,3,4 deja. Astfel te asiguri ca nu mai treci inca o data prin ele.


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Jean Luca Paliuca din Mai 01, 2008, 22:11:08
Hmmm , sunt curios daca merge asa... Si care ar fi recurenta pentru a actualiza un element din matrice ? In functie de ce actualizezi ?


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Bondane Cosmin din Mai 02, 2008, 09:02:14
Ai putea face un Bellman Ford cu coada pentru o implementare mai simpla.


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Jean Luca Paliuca din Mai 02, 2008, 09:11:58
Pana la urma e sau nu NP-completa ? Daca fac un Bellman-Ford pt fiecare nod mi se pare ca nu gaseste drum simplu tot timpul


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Cosmin Negruseri din Mai 02, 2008, 09:33:11
E np hard.

Poti sa te uiti la problema ADN si la solutia ei din articolele cu solutii, ca sa prinzi trucul.

Cosmine nu faci cu bellman ford ci umplii pur si simplu matricea aia cu dinamica. Nu vad cu ce te ajuta bellman ford.

Daca problema e mai particulara si graful accepta o sortare topologica atunci exista algoritmi eficienti, sau daca graful e un arbore.


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Jean Luca Paliuca din Mai 02, 2008, 09:49:35
Am citit articolul cu solutii , frumoasa abordare . In general am inteles, sper sa-mi iasa si implementarea.

Mersi mult.


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Bondane Cosmin din Mai 02, 2008, 11:14:00
@Cosmin

Defapt nu aplici un Bellman Ford cu coada in adevaratul sens al cuvantului, ci doar ti o coada de care te folosesti. Mie mi se pare mult mai usor sa umpli matricea asa.



Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Jean Luca Paliuca din Mai 06, 2008, 21:14:19
Doar daca exista si costuri negative este NP-completa ?


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Savin Tiberiu din Mai 06, 2008, 21:16:41
Este NP si fara costuri negative. Gandeste-te ca dak as putea rezolva problema ta, atunci as putea sa rezolv problema si pentru un graf in  care costurile muchiilor sunt 1, ceea ce inseamna ca as putea gasi un ciclul hamiltonian, problema demonstrata ca fiind NP.


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Jean Luca Paliuca din Mai 06, 2008, 21:21:57
Multumesc.

Inca ceva , poate poti sa ma ajuti.

Nu-mi dai un exemplu pentru care pica Dijkstra aplicat pt fiecare nod ?


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Savin Tiberiu din Mai 06, 2008, 21:34:59
pai cum verifici cu djikstra sa nu vizitezi un nod de 2 ori?? cu djikstra o sa te plimbi pe cicluri de o infinitate de ori si costul o sa tot creasca.


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Jean Luca Paliuca din Mai 06, 2008, 21:52:23
Cu vectorul in care verifici daca ai trecut sau nu printr-un nod


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Alina Ene din Mai 06, 2008, 22:14:56
Nu-mi dai un exemplu pentru care pica Dijkstra aplicat pt fiecare nod ?

Nu imi dau seama exact la ce te referi. Vrei sa modifici algoritmul lui Dijkstra astfel incant sa aleaga la fiecare pas nodul cu distantza temporara maxima?


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Jean Luca Paliuca din Mai 06, 2008, 22:17:57
Un contraexemplu pentru care Dijkstra nu gaseste drum simplu de cost maxim daca iei pe rand fiecare nod ca sursa... nevermind...abandonez problema


Titlul: Răspuns: Drum simplu de cost MAXIM
Scris de: Alina Ene din Mai 06, 2008, 22:30:09
Dijkstra calculeaza drumurile minime. Daca folosesti Dijkstra pornind din fiecare nod, cel mai costisitor drum pe care il gasesti e distanza maxima dintre oricare 2 noduri. "Roata" (http://en.wikipedia.org/wiki/Wheel_graph (http://en.wikipedia.org/wiki/Wheel_graph) wheel graph) cu 7 noduri este un contraexemplu: un ciclu de lungime 6 cu un nod in centru conectat cu toate nodurile de pe ciclu. Sa zicem ca fiecare muchie are cost 1. Distanta maxima intre oricare 2 varfuri este 2. Dar drumul de cost maxim are cost 6.