Documente Academic
Documente Profesional
Documente Cultură
1. SCOPUL LUCRRII:
2. NOTE DE CURS
Structuri de date: liste
Fiecare tip de list definete o mulime de iruri finite de elemente de tipul declarat. Numrul de
elemente care se numete lungimea listei poate varia pentru diferite liste de acelai tip. Lista care nu
conine nici un element se va numi vid. Pentru list sunt definite noiunile nceputul, sfritul listei i
respectiv primul i ultimul element, de asemenea elementul curent ca i predecesorul i succesorul
elementului curent. Element curent se numete acel unic element care este accesibil la momentul dat.
Verificare la vid;
1
END
ELSE
n calitate de O1 se va lua FA O2, care nu este vid,
iar n calitate de O2 se va lua FA vid O1;
Vom nota c procedura parcurgerii grafului n lrgime permite s realizm arborele de cutare i n
acelai timp s construim acest arbore. Cu alte cuvinte, se va rezolva problema determinrii unei
rezolvri sub forma vectorului (a1, a2,...) de lungime necunoscut, dac este cunoscut c exist o
rezolvare finit a problemei.
Algoritmul pentru cazul general este analogic cu cel pentru un graf n form de arbore cu o mic
modificare care const n aceea c fiecare vrf vizitat va fi marcat pentru a exclude ciclarea
algoritmului.
Cutare n adncime
La cutarea n adncime (parcurgerea unui graf n sens direct, n preordine) vrfurile grafului vor
fi vizitate n conformitate cu urmtoarea procedur recursiv:
mai nti va fi vizitat rdcina arborelui q, apoi, dac rdcina arborelui nu este frunz - pentru
fiecare fiu p al rdcinii q ne vom adresa recursiv procedurii de parcurgere n adncime pentru a vizita
vrfurile tuturor subarborilor cu rdcina p ordonate ca fii ai lui q.
n cazul utilizrii unei stive pentru pstrarea drumului curent pe arbore, drum care ncepe din rdcina
arborelui i se termin cu vrful vizitat n momentul dat, poate fi realizat un algoritm nerecursiv de
forma:
Viziteaz rdcina arborelui i introdu-o n stiva vid S;
WHILE stiva S nu este vid DO
BEGIN
fie p - vrful din topul stivei S;
IF fiii vrfului p nc nu au fost vizitai
THEN viziteaz fiul mai mare al lui p i introduce-l n S
ELSE BEGIN
elimin vrful p din stiva S
IF p are frai THEN viziteaz pe fratele lui p i introduce-l n stiva S
END
END
Acest algoritm poate fi modificat pentru a putea fi utilizat la parcurgerea tuturor vrfurilor unui graf
arbitrar. n algoritmul de mai jos se va presupune c este stabilit o relaie de ordine pe mulimea tuturor
vrfurilor grafului, iar mulimea vrfurilor adiacente cu un vrf arbitrar al grafului este de asemenea
ordonat:
WHILE va exista cel puin un vrf care nu a fost vizitat DO
BEGIN
fie p - primul din vrfurile nevizitate;
viziteaz vrful p i introduce-l n stiva vid S;
WHILE stiva S nu este vid DO
BEGIN
fie p - vrful din topul stivei S;
IF m vrfuri ale lui p sunt vrfuri adiacente nevizitate
THEN BEGIN
fie z primul vrf nevizitat din vrfurile adiacente cu p;
parcurge muchia (p,z), viziteaz vrful z i introduce-l n stiva S;
END
ELSE elimin vrful p din stiva S
END
END
n cazul n care se va lucra cu un graf conex arbitrar cu relaia de ordine lips, nu va mai avea
importan ordinea de parcurgere a vrfurilor. Propunem un algoritm care utilizeaz mai larg
posibilitile stivei, cea ce face programul mai efectiv n sensul diminurii timpului de calcul necesar.
De exemplu, acest algoritm n varianta recursiv este pe larg utilizat n programele de selectare global
n subdirectori (cazul programelor antivirus).
Introdu n stiv vrful iniial i marcheaz-l;
WHILE stiva nu este vid DO
BEGIN
extrage un vrf din stiv;
IF exist vrfuri nemarcate adiacente cu vrful extras
THEN marcheaz-le i introduce-le n stiv;
END
3. SARCINA DE BAZ
1. Elaborai procedura cutrii n adncime ntr-un graf arbitrar (vezi anexaA si B);
2. Elaborai procedura care va realiza algoritmul de parcurgere a grafului n lrgime;
3. Elaborai un program cu urmtoarele posibiliti:
ANEXA
4.Listing-ul programului
#include
#include
#include
#include
<iostream>
<conio.h>
<stdio.h>
<stdlib.h>
5.Concluzie
Efecuand aceasta lucrare de laborator,am obtinut practica de lucru metodele de reprezentare ale
grafului,si metodele lui de stocare in memoria calculatorului.
Pe parcursul lucrarii, am ajuns la concluzia ca cea mai simpla metoda de introducere a grafului de la
tastatura este lista adiacenta, care piermite utilizatorului sa aleaga cu usurinta virfurile necesare,de
asemenea aceasta metoda utilizeaza si cel mai putin din memoria calculatorului.
Dupa parerea mea, cel mai usor putem desena graful,daca ne orientam dupa matricea de incidenta,insa
ea ocupa un volum mai mare din memoria calculatorului.
6.Bibliografie
1.Conspectul de matematica discreta predat de V.Bagrin
2.Conspectul de SDA predat de dr.conf.univ. Kulev M.