Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Problema grafuri (matricea costurilor / drumuri)  (Citit de 6660 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
IdemLaFel
Strain


Karma: -5
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« : Decembrie 10, 2012, 19:01:34 »

Buna ziua ! Am o problema de facut la informatica. Profesoara a zis ca se face cu ajutorul algoritmului matricei costurilor, adica algoritmul lui Roy-Floyd. Eu insa nu prea ma descurc, e prea complexa problema pentru mine... ar putea sa ma ajute cineva ?

PROBLEMA:
O firma trebuie sa colecteze ambalaje din mai multe puncte de lucru din oras, fiecare punct de lucru gasindu-se pe o anumita strada. O retea de intersectii leaga direct unele dintre aceste puncte de lucru si intre oricare doua puncte de lucru exista o legatura prin intermediul traficului pe strazi. Traficul intre doua intersectii nu este intotdeauna in ambele sensuri, dar intre oricare doua intersectii exista trafic prin intermediul altor intersectii. Cantitatea de ambalaje care poate fi colectata intre doua intersectii intre care exista trafic direct este masurata in kilograme.

Scrieti un program care sa gaseasca un traseu optim intre doua intersectii A si B astfel incat o masina care pleaca din intersectia A si trebuie sa ajunga in intersectia B sa colecteze o cantitate cat mai mare de ambalaje. Datele se citesc dintr-un fisier astfel: de pe primul rand, numarul de intersectii, iar de pe urmatoarele randuri, triplete de numere x,y,c care semnifica faptul ca intersectia x este legata direct de intersectia y prin traficul de pe o strada de pe care se poate colecta cantitatea c de ambalaje. Etichetele intersectiilor A si B se citesc de la tastatura.
_____
Nu am nevoie de algoritmul cu citire si afisare din fisier. Are cineva o idee ? Cum se incepe, cum se desfasoara, ce conditii sa pun, care e logica problemei ? Multumesc anticipat !
Memorat
Mitza444
Client obisnuit
**

Karma: 6
Deconectat Deconectat

Mesaje: 82



Vezi Profilul
« Răspunde #1 : Decembrie 10, 2012, 20:07:10 »

Poti incerca si cu Roy-Floyd,ai algoritmul descris aici:https://infoarena.ro/problema/royfloyd
Doar trebuie modificat putin pt. ca el gaseste costu minim,iar tie iti trebuie costul maxim.
Ca alternative poti incerca si:
1)Algoritmul lui Dijkstra:https://infoarena.ro/problema/dijkstra
2)Algoritmul Bellman-Ford:https://infoarena.ro/problema/bellmanford
Succes! wink
Memorat
IdemLaFel
Strain


Karma: -5
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #2 : Decembrie 10, 2012, 21:23:56 »

au si codul c++, ca nu-l gasesc ?
Memorat
mihai_florea
Strain


Karma: 17
Deconectat Deconectat

Mesaje: 24



Vezi Profilul
« Răspunde #3 : Decembrie 10, 2012, 23:35:56 »

Poti incerca si cu Roy-Floyd,ai algoritmul descris aici:https://infoarena.ro/problema/royfloyd
Doar trebuie modificat putin pt. ca el gaseste costu minim,iar tie iti trebuie costul maxim.
Ca alternative poti incerca si:
1)Algoritmul lui Dijkstra:https://infoarena.ro/problema/dijkstra
2)Algoritmul Bellman-Ford:https://infoarena.ro/problema/bellmanford
Succes! wink

Daca problema iti cere costul maxim, atunci devine NP-Hard. Nu cred ca exista o solutie mai buna decat sa folosesti backtracking. Vezi si http://en.wikipedia.org/wiki/Longest_path_problem
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #4 : Decembrie 10, 2012, 23:42:28 »

Nu poti nega costurile si apoi afli costul minim?
Memorat
mihai_florea
Strain


Karma: 17
Deconectat Deconectat

Mesaje: 24



Vezi Profilul
« Răspunde #5 : Decembrie 10, 2012, 23:44:51 »

Nu poti nega costurile si apoi afli costul minim?
NU
Algoritmul lui Dijkstra merge doar pentru costuri >= 0, iar Bellman-Ford sau Royfloyd merg atunci cand nu exista cicluri de cost < 0.
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #6 : Decembrie 10, 2012, 23:49:18 »

Pai daca exista ciclu de cost negativ raspunsul e infinit. In caz contrar, e ok.
Memorat
mihai_florea
Strain


Karma: 17
Deconectat Deconectat

Mesaje: 24



Vezi Profilul
« Răspunde #7 : Decembrie 10, 2012, 23:57:30 »

Pai daca exista ciclu de cost negativ raspunsul e infinit. In caz contrar, e ok.

Daca vrei sa privesti problema asa, ai dreptate. Dar, in general, se cere determinarea unui drum simplu (in care fiecare nod apare cel mult o data) de cost maxim. Iar aceasta problema se poate rezolva cu backtracking, dar nu se poate rezolva cu unul din algoritmii de cost minim in graf mentionati.
Memorat
IdemLaFel
Strain


Karma: -5
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #8 : Decembrie 15, 2012, 11:56:27 »

din pacate nu pot folosi backtracking-ul pentru ca nu l-am invatat la scoala. oricum, nu trebuie decat sa aflu drumul MAXIM de la nodul A la nodul B, intr-un graf orientat...
Memorat
AlexandruValeanu
Vorbaret
****

Karma: 29
Deconectat Deconectat

Mesaje: 167



Vezi Profilul
« Răspunde #9 : Ianuarie 27, 2013, 16:23:16 »

Se face cu Roy-Floyd si schimbi testul de verificare cu ceva de genul if cost[j] < cost[k] + cost[k][j]....
« Ultima modificare: Februarie 03, 2013, 16:50:24 de către Alexandru Valeanu » Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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