Documente Academic
Documente Profesional
Documente Cultură
INTRODUCERE.......................................................................................................................................3
CONCLUZIE..........................................................................................................................................10
BIBLIOGRAFIE.....................................................................................................................................11
2
INTRODUCERE
Problema comis-voiajorului (PCV) pune următoarea întrebare: „Dată fiind o listă de orașe și
distanțele între fiecare două orașe, care este cel mai scurt traseu posibil care vizitează fiecare oraș o
singură dată și se întoarce la orașul de origine?” Ea este o problemă NP-dură în optimizarea
combinatorie, cu importanță în cercetarea operațională și în informatica teoretică.
În teoria complexității, versiunea de decizie a PCV (unde, dată fiind o lungime L, sarcina este
de a decide dacă graful are un ciclu complet mai scurt decât L) aparține clasei problemelor NP-
complete. Astfel, este posibil ca timpul de rulare în cel mai rău caz pentru orice algoritm pentru PCV
să crească superpolinomial (dar nu mai mult decât exponențial cu numărul de orașe.
Problema a fost formulată pentru prima dată în 1930 și este una dintre cele mai intens studiate
probleme de optimizare. Ea este utilizată ca benchmark pentru multe metode de optimizare. Chiar dacă
problema este dificilă computațional, se cunosc numeroși algoritmi euristici și exacți, astfel încât unele
cazuri cu zeci de mii de orașe pot fi rezolvate complet și chiar probleme cu milioane de orașe pot fi
aproximate cu o eroare de 1%.
PCV are mai multe aplicații, chiar și în cea mai pură formulare, cum ar fi
în planificare, logistică, și la fabricarea de microcipuri. Ușor modificată, ea apare ca o subproblemă în
multe domenii, cum ar fi secvențierea ADN-ului. În aceste aplicații, conceptul de oraș reprezintă, de
exemplu, clienți, puncte de sudură, sau fragmente de ADN, și conceptul de distanță reprezintă durata
de deplasare, costul de realizare, sau o măsură a similarității între fragmente de ADN. PCV apare și în
astronomie, astronomii care observă mai multe surse dorind să minimizeze timpul petrecut de telescop
în mișcare între surse. În multe aplicații se pot impune constrângeri suplimentare, cum ar fi resursele
limitate sau ferestre de timp.
3
I. PROBLEMA COMIS-VOIAJORULUI. CONSIDERAȚII TEORETICE
„Prin problema curierului (întrucât în practică această întrebare și-o pune fiecare poștaș, dar
și numeroși alți calători) notăm găsirea, pentru un număr finit de puncte între care știm distanțele
două câte două, a rutei celei mai scurte care leagă toate punctele. Desigur, această problemă poate fi
rezolvată printr-un număr finit de încercări. Nu se cunosc reguli care să aducă numărul de încercări
sub numărul de permutări al punctelor date. Regula care duce curierul din primul punct în cel mai
apropiat, apoi în cel mai apropiat de acesta etc., în general nu produce ruta cea mai scurtă.”
Prima dată a fost analizată matematic în anii 1930 de către Merrill Flood, care încerca să
rezolve problema rutării unui autobuz școlar. Hassler Whitney de la Universitatea Princeton a introdus
numele de problema comis-voiajorului puțin după aceea.
4
I.2. DEFINIREA PCV
Fie G = (V, E) este un graf neorientat în care oricare două vârfuri diferite ale grafului
sunt unite printr-o latură căreia îi este asociat un cost strict pozitiv. Cerința este de a determina
un ciclu care începe de la un nod aleatorie a grafului, care trece exact o dată prin toate celelalte
noduri şi care se întoarce la nodul inițial, cu condiția ca ciclul sa aibă un cost minim. Costul unui
ciclu este definit ca suma tuturor costurilor ataşate laturilor ciclului.
Numele problemei provine din analogia cu un vanzator ambulant care pleacă dintr- un
oraş, care trebuie să viziteze un număr de oraşe dat şi care apoi trebuie să se întoarcă la punctul de
plecare, cu un efort minim (de exemplu timpul minim, caz în care costul fiecărei laturi este egal cu
timpul necesar parcurgerii drumului).
Prin urmare, fie-G = (V, E) un graf conectat neordonat, definit de un set de noduri V şi de
un set de laturi E.
Dacă vom marca cu V '= {vi | i =1,..., n -1} set de noduri asociate oraşelor care trebuie să
fie vizitate şi dacă vom marca cu v0 nodul care este asociat cu oraşul din care vanzator ambulant
pleaca (de bază), vom avea V = V ' {v0 }.Am marca, de obicei, lungimea laturii dintre nodurile
vi şi vj cu lij şi costul asociat parcurgerii laturii dintre vi si vj cu cji.
Fig.1.1 Fig.1.2
Marginile colorate în verde, ne dau un ciclu care porneste de la nodul A, având costul următor:
1 +4 +1 +2 +5 = 13 pe calea A-B-D-C-E-A.
Marginile colorate în roşu ne dau un ciclu care porneste de lanodul B, având costul următor:
1 +2 +1 +3 +3 = 10 pe calea B-A-C-D-E-B.
Prin urmare, al doilea ciclu este mai bun ca prima, având în vedere costul redus.
5
I.3. METODE DE SOLUȚIONARE
II. Născocirea metodelor euristice de rezolvare aproximativă a TSP (metode bune, dar
care nu pot fi considerate optime)
În situațiile în care pentru anumite problem complexe, pentru a căror rezolvare nu se cunosc
algoritmi, sau aceștia sunt ineficienți(timp memorie, cost), se prefer utilizarea unor algoritmi care
rezolvă problema dată mult mai rapid, cu effort mic, însă nu ne va furniza întotdeauna cea mai bună
soluție, cîd oar soluții acceptabile, adică soluții corecte care pot fi eventual îmbunătățite.
Prin algoritm euristic vom înțelege un algoritm care furnizează soluții bune nu neapărat optime,
care poate fi implementat rapid și furnizează rezultate în timp util.
Aparent această metodă de căutare a soluţiei este mai eficientă, din moment ce la fiecare pas se
trece dintr-un optim (parţial) într-altul. Totuşi, ea nu poate fi aplicată în general ci doar în cazul în care
există certitudinea alegerii optime la fiecare pas, certitudine rezultată în urma etapei anterioare de
analiză a problemei.
7
II. PROBLEMĂ REZOLVATĂ
Problema 1:
cout<<"Numar noduri=";cin>>n;
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
cout<<"A["<<i<<"]["<<j<<"]=",cin>>a[i][j],a[j][i]=a[i][j];
cout<<"Nod de pornire:";cin>>v; s[v]=1;
vs1=v;
cout<<"Drumul trece prin:"<<v<<' ';
p=v;
for(i=1;i<n;i++)
{
mint=3000;
for(j=1;j<=n;j++)
if(a[v][j]!=0&&s[j]==0&&mint>a[v][j])
{
mint=a[v][j];
vs=j;
}
cost+=a[v][vs];
cout<<vs<<' ';
s[vs]=1;
v=vs;
}
cout<<p;
cost+=a[vs1][v];
cout<<endl<<"Cost="<<cost;
8
Răspuns:
9
CONCLUZIE
Se mai poate spune foarte multe la tema dată, însă prin intermediul aceastei lucrări am avut
tendința de a arata și demonstra unele elemente și linii generale privind tematica data. Un lucru este
cert, în urma citirii acestei lucrari, putem afirma cu certitudne că problema „comis-voiajorului” este
una complexă și poate fi abordată din diferite perspective.
Scopul propus la elaborarea acestei lucrări a fost de a afla întîi de toate istoria acesteia, cine au
fost primii savanți care au descoperit și definit această problemă, dar și principalele metode de
soluționare a ei. În primul capitol am prezentat istoria apariției problemei și proveniența numelui
acesteia. Am încercat să definesc problema în linii generale și să prezint o reprezentare grafică cu
ajutorul grafului. În următorul subcapitol am cercetat algoritmi pentru găsirea soluţiilor exacte și
anume: Metoda backtracking, care urmărește să evite generarea tuturor soluțiilor posibile, scurtându-
se astfel timpul de calcul; Metoda euristică, ce prezintă un algoritm care furnizează soluții bune nu
neapărat optime, care poate fi implementat rapid și furnizează rezultate în timp util; Metoda Gredy,
care aparent această metodă de căutare a soluţiei este mai eficientă, din moment ce la fiecare pas se
trece dintr-un optim (parţial) într-altul. Totuşi, ea nu poate fi aplicată în general ci doar în cazul în care
există certitudinea alegerii optime la fiecare pas, certitudine rezultată în urma etapei anterioare de
analiză a problemei.
În ultimul capitol am realizat un program în limbajul c++, cu ajutorul căruia putem obține
rezolvarea unei anumite probleme.
10
BIBLIOGRAFIE
1. Stoica M., Ioniţă I., Botezatu M., Modelarea şi simularea proceselor economice, Editura
Economică, Bucureşti, 1997.
2. Ratiu-Suciu, C., Modelarea şi simularea proceselor economice, Editura didactică şi pedagogică,
Bucuresti, 1995.
3. https://ro.wikipedia.org/wiki/Problema_comis-voiajorului
11