Documente Academic
Documente Profesional
Documente Cultură
1.2 Definiţii
□ Grafuri conexe sau neconexe (toate nodurile unite cu toate nodurile), orientate
sau neorientate (arata sensul în care se poate circula pe legături), ponderate
sau neponderate (cu costuri diferite asociate drumurilor dintre noduri);
□ Distanţe: una din cele mai importante caracteristici ale sistemelor informatice
geografice este aceea că ele sunt modelări ale spaţiului. Pentru a reprezenta
spaţiul şi obiectele spaţiale în poziţiile corespunzătoare acestora, SIG trebuie
să utilizeze elemente de bază precum cele de referinţă spaţială, adică
elipsoidul terestru sau modelul acestuia, sistemul de coordonate asociat şi
sistemul de proiecţie cartografică după care are loc transpunerea în plan a
elementelor spaţiale. Atributele obiectelor spaţiale sunt a doua caracteristică
a sistemelor informatice geografice, acestea presupunând reprezentarea
corectă a unor elemente definitorii pentru toate obiectele ce apar pe o hartă, şi
anume: poziţia şi mărimea acestora, distanţa dintre ele, unghiuri etc. Sunt
cunoscute mai multe forme de reprezentare a spaţiului: carteziană, euclidiană,
peaniană, teserală, fractală şi topologică.
▪ În spaţiul cartezian, viziunea pentru reprezentarea elementelor
spaţiale se face prin referire la sistemul de coordonate carteziene,
notate de obicei cu x, y şi z (ca distanţe faţă de originea unică, de
coordonate 0,0,0 în trei dimensiuni). În acest mod, orice obiect
spaţial poate fi asociat unei poziţii unice şi prin urmare se poate
localiza prin referire la acea poziţie. Pentru a putea utiliza acest
spaţiu de măsură în cazul reprezentărilor suprafeţei terestre a fost
nevoie de realizarea unor puncte de referinţă (origini) ale
spaţiului. Acestea sunt denumite puncte geodezice. În
tehnologiile de început, sistemul a fost unicul folosit şi în prezent
este de asemenea foarte răspândit, datorită posibilităţii utilizării
noţiunilor de geometrie în spaţiu şi geometrie analitică sau de
algebră. Pentru a realiza poziţionarea unor obiecte mai mari decât
un punct, este necesară reprezentarea printr-un şir de coordonate
de poziţie a acestor obiecte.
Supermarket
Cladire
Clad
A
Origine
1
Points of interest (POI)
Norma euclidiană reprezintă măsura distanţei euclidiene de la un
punct oarecare la originea spaţiului euclidian:
A = x12 + y12 + z12 (Ec. 2)
Dacă cele două puncte (originea A şi destinaţia B) sunt definite
prin coordonate polare A(r1 ,1 ) şi B(r2 , 2 ) , atunci distanţa dintre
punctele A şi B va fi:
DAB = r12 + r22 − 2r1r2 (1 − 2 ) (Ec. 3).
Pe suprafaţa Pământului, distanţa dintre două puncte A( , ) şi
B ( , ) , unde , reprezintă respectiv longitudinea şi latitudinea,
este reprezentată de lungimea arcului de cerc:
DAB = arccos[sin 1 sin 2 + cos1 cos2 cos(1 − 2 )] (Ec. 4).
▪ În spaţiul peanian, punctul este văzut ca o limită a unui pătrat ale
cărui laturi tind către zero. În ceea ce priveşte linia, aceasta
beneficiază de o altă dimensiune ce tinde la zero: lăţimea. Linia
curbă este un şir de trepte ale căror dimensiuni tind de asemenea
la zero. Extinzând aceste concepte la linia curbă în spaţiu, aceasta
poate fi reprezentată ca o spirală a cărei secţiune tinde la zero.
Unii matematicieni preferă denumirea de spaghetti pentru
reprezentarea liniei curbe. Spaţiul peanian reprezintă un mod de
reprezentare discretă a obiectelor spaţiale. Spaţiul peanian este
unul rasterizat, specific imaginilor satelitare ce depind de
numărul de megapixeli ai camerelor foto şi de aceea acest sistem
de reprezentare stă la baza a numeroase SIG-uri spaţiale.
▪ Spaţiul teseral este format din elemente geometrice cu forme
regulate (hexagoane, pătrate, triunghiuri echilaterale etc.) sau
neregulate. Prin repetarea acestor forme după algoritmi
cunoscuţi se ajunge la definirea spaţiului teseral. De exemplu,
spaţiul teseral definit pe baza unor hexagoane regulate are
distanţele dintre centrele acestor poligoane constantă, în timp ce
spaţiul definit pe baza unor pătrate se poate agrega în mod
recursiv. Algoritmi asemănători stau la baza definirii sistemelor
de gestiune a bazelor de date. Unele spaţii teserale definite pe
baza unor poligoane neregulate (de exemplu triunghiuri2) au
2
TIN – Triangular Irregulated Network – reţea triangulară neregulată
importante aplicaţii în geodezie şi definirea morfologiei
terenului.
▪ Spaţiul fractal. Scara unei hărţi face ca lungimea unei linii
neregulate să difere de la un factor de magnificaţie la altul, în
timp ce o linie dreaptă îşi păstrează lungimea constantă în raport
cu scara de reprezentare a hărţii. Mandelbrot a propus o metodă
de estimare a neregularităţilor unei linii în funcţie de raportul
scării, notat cu r, şi de numărul de paşi folosit pentru măsurarea
lungimii, notat cu N: D = log N / log r. Curba neregulată a fost
numită fractal, iar D dimensiunea fractală. Dimensiunea fractală
pentru o linie aflată în plan variază între 1 şi 2. Pentru D = 1,
linia este dreaptă, iar pentru D = 2, linia se va caracteriza prin
neregularităţi extreme.
1.3 Rutarea
Algoritmii actuali de planificare în reţelele de transport, bazate pe tehnica de calcul,
au cunoscut în zilele noastre ritmuri de dezvoltare susţinute, culminând cu apariţia
unor metode de rutare mai rapide de până la un milion de ori decât algoritmul
Dijkstra. Calculul unei rute optime între două puncte ale unei reţele nodale
reprezintă, în continuare, una din provocările constante ale tehnologiei SIG. Există
numeroase aplicaţii, cum ar fi planificarea logistică a transporturilor de mărfuri, sau
planificarea călătoriilor multimodale sau cu autovehiculul personal, care necesită
algoritmi de calcul al rutelor optimizate după mai multe criterii: durată, distanţă,
combustibil consumat, puncte de interes, categorii de drumuri utilizate etc. Multe
dintre tehnicile utilizate în prezent funcţionează cel mai bine dacă funcţia de analiză
a costurilor (orice amestec de elemente de comparaţie de genul: durate de călătorie,
distanţe, costuri autostrăzi, consum de energie/combustibil, valoare a peisajului
străbătut, valoare a elementelor turistice de pe parcursul rutei etc.) este corelată cu
durata călătoriei.
3
Computed Aided Design – proiectare asistată de calculator
1.4 Algoritmi de optimizare
1.4.1 Algoritmul Dijkstra4
Algoritmul Dijkstra este un procedeu prin care se calculează drumurile minime de
la un nod al unui graf la toate celelalte noduri ale grafului. Grafurile cu care poate
lucra acest algoritm sunt ponderate şi orientate, adică arcele au sensurile de
parcurgere orientate de la un nod la alt nod şi au asociat un anumit cost, de care se
ţine cont la alegerea drumului. Cu toate acestea, algoritmul Dijkstra funcţionează
atât pe grafuri conexe5, căt şi pe grafuri non-conexe.
Dacă graful este neponderat (toate costurile asociate arcelor sunt egale sau acestea
nu au deloc costuri asociate) atunci se consideră că drumul minim dintre două noduri
este drumul format din cel mai mic număr de arce. Pentru a găsi acest drum, de la
un nod origine A la un nod destinaţie B se procedează la o căutare prin cuprindere
pornind de la nodul A (prima apariţe a lui B în coada algoritmului de căutare
semnifică faptul că există un număr de arce de la A la B care poate fi reconstituit).
Pe un astfel de graf neponderat se poate aplica algoritmul lui Dijkstra dacă se
asociază fiecărui arc o pondere de valoare fixă, de exemplu de cost unitar. Drumul
de cost minim între două noduri obţinut în urma aplicării algoritmului Dijkstra va
avea şi un număr minim de arce, deoarece toate arcele au acelaşi cost.
În cazul grafurilor orientate, pentru ca între două noduri să existe un drum într-un
graf, nu este suficient să existe numai o cale între cele două noduri, reprezentată de
o succesiune de arce, ci mai este nevoie şi ca arcele să fie astfel orientate, încât să
permită parcurgerea lor de la nodul origine la cel destinaţie. Dacă acest drum nu este
găsit, atunci algoritmul Dijkstra va returna o distanţă infinită între cele două noduri.
Algoritmul este demarat prin declararea unui graf orientat cu N noduri. Fiecărei căi
îi este asociată o anumită pondere. Pentru a afla toate drumurile minime din graf se
defineşte, de asemenea, un nod origine al grafului. În cele ce urmează se descriu
paşii algoritmului pentru acest exemplu.
− Se marchează nodul X de origine a grafului, de la care se vor estima
toate distanţele la celelalte noduri din graf;
− Algoritmul de căutare începe prin determinarea costului între nodul
X origine (sau sursă) şi un alt nod Y, pe un singur arc. Apoi se
cercetează toate celelalte drumuri posibile, incluzând mai mult de un
arc, căutându-se drumuri mai scurte; se pleacă de la ideea că un drum
4 Edsger Wybe Dijkstra (născut la 11 mai 1930 în Rotterdam – a murit la 6 august 2002, în Nuenen) - informatician
olandez, conform Wikipedia. Numele său se pronunţă aproximativ ['eds-hăr 'deyk-stra].
5
Un graf este conex dacă din orice nod al acestuia este interconectat cu orice alt nod.
minim poate avea cel mult N-1 arce, pornind căutarea mai întâi de la
drumurile cu număr mic de arce, dar mai mare de 1 (2, 3 etc.);
− După pasul k, cu k [1, N − 1] , tabloul de valori ale costurilor C va
conţine lungimile drumurilor minime de la nodul origine X la toate
celelalte noduri, drumuri alcătuite din cel mult k arce;
− Se obţine că C(Y)=L,adică costul parcurgerii distanţei de la X la Y
este L, tocmai distanţa minimă după k paşi; aceasta nu înseamnă însă
că din totalitatea posibilităţilor de deplasare în graful orientat C(Y)
are valoarea minimă; aceasta se va obţine abia la finalul algoritmului,
la pasul N-1, când vor fi evaluate toate drumurile din graful orientat.
Lungimea maximă a acestor drumuri va fi de N-1 arce; la fiecare
evaluare a drumurilor dintr-un nod sursă se face marcarea acestuia,
prin urmare la începutul unui pas oarecare k se va obţine un set de k-
1 noduri marcate, pentru care se cunoaşte drumul minim iniţial. La
fiecare iteraţie k se execută o serie de operaţiuni:
o Se găseşte un nod Y nemarcat pentru care C(Y) este minim şi se
marchează;
o Pentru fiecare alt nod Z încă nemarcat se execută algoritmul:
if C[Z] > C[Y] + Arc(Y , Z) then begin
C[Z] := C[Y] + Arc(Y , Z);
T[Z] := Y
end
o C(Y) conţine costurile (lungimile) drumului minim de la nodul origine
X la nodul destinaţie Y ce parcurge un traseu format numai din noduri
marcate şi are un număr de k-1 arce.
o C(Z) conţine lungimea celui mai scurt drum de la nodul origine la nodul
Z (format din k-1 arce cel mult), trece prin noduri marcate şi nu ţine
cont de faptul că de la ultima iteraţie a fost marcat şi nodul Y.
o Unicul drum de la nodul origine X la nodul destinaţie Z care trece numai
prin noduri marcate este cel dinainte, care include drumul prin noduri
marcate de la originea X la destinaţia intermediară Y la care se adaugă
arcul direct de la Y la Z. Costul parcurgerii acestui ultim arc va fi C(Y)
= Arc (Y,Z).
G
9
A
1 5
3
C
2
D
1
2
9
1
5
E
H
4 1 4
F
B
În tabel simbolul ∞ reprezintă lipsa unui arc direct. Se observă că pornind din nodul
A există drumuri directe numai către nodurile B, C, D şi G. Drumul către nodul A
însuşi nu are sens, aşa că în căsuţa corespunzătoare costului acestui drum s-a trecut
simbolul [-].
Următorul pas constă în compararea costurilor rezultate:
F(A) = min {C(B), C(C), C(D), C(G)} = 1,
adică determinarea costului minim dintre cele evaluate. Se consideră în continuare
nodul C nod de start. Se obţine un nou tablou parţial de costuri, considerând doar
costurile având ca origine nodul C:
C(n) - ∞ - ∞ 2 5 ∞ ∞
T(n) C C C C C C C C
Noduri A B C D E F G H
destinaţie
/ marcate
Evaluarea minimului:
F(C) = min {C(E), C(F)} = 2
Pentru toate celelalte noduri care nu au fost marcate se verifică dacă nu există căi
alternative, ce pornesc din A şi trec prin nodul C, ale căror costuri asociate să fie mai
mici decât cele iniţiale:
• Pentru nodul B: C(B) = C(A) + arc (C-B) = 1 + ∞ = ∞; prin urmare, nu există
un drum mai scurt şi C(B) nu se modifică;
• Pentru nodul E: C(E) = C(A) + arc (C-E) = 1 + 2 = 3 < ∞ care era înainte,
prin urmare se marchează nodul E;
• Pentru nodul F: C(F) = C(A) + arc (C-F) = 1 + 5 = 6 < ∞; se marchează
nodul F pentru că pe calea ce trece prin C apare un drum mai mic decât cel
din iteraţia precedentă;
• Pentru nodul G: C(G) = C(A) + arc (C-G) = 1 + ∞ = ∞;
• Pentru nodul H: C(H) = C(A) + arc (C-H) = 1 + ∞ = ∞; se obţine tabloul
general:
C(n) - 9 1 3 3 6 9 ∞
T(n) A A A A C C A A
Noduri A B C D E F G H
destinaţie
/ marcate
Următorul nod pentru care se face evaluarea globală va fi ales nodul încă neevaluat,
cu cea mai mică intrare în tabloul de costuri şi anume nodul D; se obţine următorul
tablou parţial, având ca origine nodul D:
C(n) - - - - - - 5 -
T(n) D D D D D D D D
Noduri A B C D E F G H
destinaţie
/ marcate
Pentru toate celelalte noduri care nu au fost marcate se verifică dacă nu există căi
alternative, ce trec prin nodul D şi pornesc din A, ale căror costuri asociate să fie
mai mici decât cele iniţiale:
• Pentru nodul B: C(B) = -;
• Pentru nodul E: C(E) = -;
• Pentru nodul F: C(F) = -;
• Pentru nodul H: C(H) = -;
• Pentru nodul G: C(G) = C(D) + arc (D-G) = 3 + 5 = 8 < 9 care fusese
determinat la iteraţia precedentă; noul tablou general al costurilor va fi:
C(n) - 9 1 3 3 6 8 ∞
T(n) A A A A C C D A
Noduri A B C D E F G H
destinaţie
/ marcate
Pentru toate nodurile rămase nemarcate se determină dacă există vreun drum cu
nodul A ca origine şi trece prin E, având un cost mai mic decât cel estimat iniţial:
• Pentru nodul B: C(B) = C(E) + arc (E-B) = 3 + 4 = 7 < 9;
• Pentru nodul F: C(F) = C(E) + arc (E-F) = 3 + 1 = 4 < 6;
• Pentru nodul G: C(G) = C(E) + ∞ = ∞;
• Pentru nodul H: C(H) = C(E) + - = -; rezultă următorul tablou general:
C(n) - 7 1 3 3 4 9 ∞
T(n) A E A A C E A A
Noduri A B C D E F G H
destinaţie
/ marcate
În tabloul de mai sus costul deplasării către nodul F are valoare minimă. Se alege
acest nod, se marchează şi se determină costurile parţiale ale deplasării de la nodul
origine A către toate nodurile rămase nemarcate, pe traseul ce trece prin nodul F. Se
obţine următorul tablou parţial:
C(n) - - - - - - 1 -
T(n) F F F F F F F F
Noduri A B C D E F G H
destinaţie
/ marcate
Se observă că nu există drumuri cu cost mai redus ce pornesc din nodul G către
celelalte noduri.
Se continuă iteraţia prin alegerea unui alt nod nemarcat, şi anume B. Se obţine
următorul tablou general:
C(n) - 7 1 3 3 4 5 ∞
T(n) A E A A C E F A
Noduri A B C D E F G H
destinaţie
/ marcate