graf

Aplicatii simple notiuni grafuri
 * 1) Desenati un graf G=(X,U) neorientat cu 8 noduri si 12 muchii
 * Exprimati multimea nodurilor X si multimea muchiilor  U
 * precizati pentru fiecare nod gradul
 * Afisati nodurile izolate si terminale
 * precizati un lant simplu, un lant compus
 * precizati un lant elementar/ neelementar
 * precizati un ciclu elementar
 * precizati un lant elementar de lungime 3
 * precizati cel mai lung lant elementar
 * afisati matricea de adiacente
 * afisati matricea de incidente
 * desenati un graf Gp partial cu 7 muchii
 * desenati un subgraf Gs cu 4 noduri

2. Cate muchii are un graf complet cu 10 varfuri ?

<span style="font-family: Arial_R,serif; font-size: 16px; line-height: 1.5;">3. Se da graful G=(X,U) cu n=4 si muchiile (1,2),(1,4) (1,3) <span style="font-family: Arial_R,serif; font-size: 16px; line-height: 1.5;">Afisati toate grafurile partiale ale acestuia, in ordine crescatoare a numarului de muchii. Gasiti o metoda de determinare a numarului de grafuri partiale. <span style="font-family: Arial_R,serif; font-size: 16px; line-height: 1.5;">Generalizati pentru un graf cu m muchii / graf complet.

<span style="font-family: Arial_R,serif; font-size: 16px; line-height: 1.5;">4. Desenati un graf cu 7 noduri si 10 muchii. <span style="font-family: 'Arial_R','serif'; font-size: 16px;">a) Desenati 3 subgrafuri cu numar diferit de noduri si muchii <span style="font-family: 'Arial_R','serif'; font-size: 16px;">b) Desenati 3 grafuri partiale cu numar diferit de muchii


 * Probleme simple grafuri **

1.Se da matricea de adiacente a unui graf. a) Sa se afiseze toate muchiile b) Sa se afiseze nodurile de grad impar c) Sa se afiseze toate lanturile de lungime 2

2. Se citeste matricea de adiacente a unui graf neorientat. Se citeste o succesiune de noduri, intr-un vector x. Sa se verifice daca formeaza: a) lant b) lant elementar c) ciclu d) ciclu elementar

3. Se citesc de la tastatura 2 numere n si m.Sa se formeze 2 grafuri cu n noduri si m muchii. Sa se afiseze matricile lor de adiacente.

4. Se citesc n,m si cele m muchii ale unui graf neorientat.

a)Sa se afiseze matricea de adiacente. b)Sa se afiseze toate perechile de noduri care au aceiasi vecini. c)Pornind de la matricea de adiacente, sa se construiasca matricea de incidenta.

5. Sa se verifice daca un graf este complet.

6. Sa se verifice daca intr-un graf exista ciclul elementar 1,2,3...n,1.

7. Sa se afiseze toate ciclurile elementare de lungime 3 care trec prin nodul x dat.

8. Sa se afiseze toate lanturile elementare din nodul x in nodul y intr-un graf G precum si numarul acestora.

9. Sa se verifice daca 2 cicluri elementare sunt identice. Ex 1,2,3,4,1 identic cu 2,3,4,1,2 si cu 3,2,1,4,3

10. pentru un graf oarecare G=(X,U) se cere; a) sa se afiseze toate nodurile de grad k si muchiile incidente cu acestea b) sa se afiseze muchiile care trec prin nodul x sau prin nodul y c) sa se afiseze lanturile elementare de lungime 2 din x in y d) sa se verifice daca 1,2,3,4,..n,1 este ciclu in graful dat e)sa se verifice daca exista lantul 1,3,5,...n/n+1 in graful dat f) cate muchii trebuie adaugate astfel incat graful sa devina complet?

11. Se citesc din doua fisiere graf1.in si graf2.in numarul de noduri si matricea de adiacente pentru 2 grafuri G1 si respectiv G2. Verificati daca G2 este graf partial al lui G1.

12. Pornind de la matricea noduri-muchii (matricea de incidenta) a unui graf, construiti si afisati matricea de adiacenta.

13. Se citeste matricea de adiacente a unui graf. Afisati: a) listele de vecini (pentru fiecare nod se afiseaza nodurile cu care e conectat printr-o muchie) b) muchiile grafului (o singura data fiecare) c) perechile de noduri (daca exista) care au aceiasi vecini d) toate perechile de noduri care nu au niciun vecin comun. e) lanturile elementare de lungime 3 din nodul x in nodul y si numarul acestora f) matricea de adiacenta a grafului complementar g) nodurile care au doar vecini numere pare

14. Se citesc din fisierul Date.in: Sa se afiseze muchiile subgrafului indus de nodurile precizate mai sus.
 * n, m si muchiile unui graf G
 * un numar k si k numere naturale distincte cuprinse intre 1 si n reprezentand noduri ale grafului G..

15. Afisati toate perechile de noduri dintr-un graf care au numar maxim de vecini comuni.


 * Probleme parcurgere adancime **

1. Se citesc n, m si muchiile unui graf. a) se citesc 3 noduri:A,B,C. Verificati daca apartin aceleiasi componente conexe b) afisati componentele conexe, pe linii diferite. Afisati un nod din fiecare componenta si numarul de elemente al acesteia. c) afisati cea mai mare(cele mai mari) componente conexe d) afisati numarul de componente formate doar din noduri izolate e) afisati componentele cu numar par de elemente

2. Se parcurge un graf in adancime incepand cu nodul x. a) aflati ultimul nod care se viziteaza (y) b) parcurgeti in adancime graful incepand cu y. Verificati daca ultimul nod vizitat e x.

3. Se da un graf neorientat cu n varfuri si m muchii prin lista muchiilor. Afisati numarul minim de muchii care trebuie adaugate in graf pentru ca acesta sa fie conex si o posibilitate de a alege aceste muchii.

4. Problema comis-voiajorului <span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">Un comis voiajor trebuie să viziteze un număr n de oraşe. Iniţial, el se află într-unul dintre ele, notat 1. Comis voiajorul doreşte să nu treacă de două ori prin acelaşi oraş, iar la întoarcere să revină în oraşul din care a plecat. Cunoscând legăturile existente între oraşe, se cere să se tipărească toate drumurile posibile pe care le poate efectua comis voiajorul.Drumurile dintre orase sunt date sub forma unei matrici a[i][j]=1 daca intre orasul i si j exista drum si a[i][j]=0 daca nu exista drum intre orasul i si orasul j.

<span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">5. Sa se afiseze toate lanturile elementare de lungime t care pornesc dintr-un nod x.


 * Recapitulare test **

<span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">6.Se citeste dintr-un fisier matricea de adiacenta a unui graf. <span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">a) afisati nodurile cu grad par <span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">b) afisati tripletele de noduri care au aceiasi vecini <span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">c) construiti matricea de incidenta a grafului. (are n linii si m coloane, fiecare coloana corespunde unei muchii, va avea 2 valori egale cu 1, corespunzatoare fiecarei muchii, in rest coloana va fi 0). Matricea de incidenta nu este unica, depinde in ce ordine consideram muchiile. <span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">De exemplu pentru o muchie (2,3) se va adauga o coloana cu valori 1 pe linia 2 si linia 3. <span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">d) verificati daca succesiunea de noduri x1,x2,...xk formeaza lant neelementar <span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">e) verificati daca graful este arbore. <span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">f) verificati daca succesiunea de noduri y1,y2,...yn+1 este ciclu hamiltonian <span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">g) verificati daca succesiunea de noduri y1,y2,...yn+1 este ciclu eulerian <span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">h) afisati, pentru fiecare componenta conexa, numarul de elemente din acesta si un element din ea. se va folosi o structura care memoreaza 2 valori: numarul elementelor din componenta si un element apartinator. <span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">i) se citesc 3 noduri: x,y,x. Se incepe o parcurgere plecand din nodul x. Afisati care dintre nodurile x si y se viziteaza primul. Mesaje daca nu se viziteaza. <span style="background-color: #ffffff; color: #333333; font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;">j) afisati nodurile i care au toti vecinii corespunzand unor valori strict mai mici decat i. (ex. daca nodul 6 are vecini doar 1,3,4 verifica aceasta conditie)

1. Folosind algoritmul de parcurgere in latime a unui graf, (BF) sa se realizeze urmatoarele cerinte:
 * Probleme BF (parcurgere in latime) **

a) sa se verifice daca un graf e conex b) sa se verifice daca se poate ajunge de la nodul x la nodul y c) sa se afiseze componenetele conexe ale grafului d) pornind cu parcurgerea din nodul x, sa se afiseze nivelul fiecarui nod in arborele obtinut e)sa se afiseze componentele conexe cu numar maxim de elemente. (indicele componentei si un element din aceasta. Se va folosi o structura care memoreaza un element si dimensiunea componentei) f) sa se afiseze o posibilitate de a adauga un numar minim de muchii in graf astfel incat acesta sa devina conex.

2. Se parcurge un graf in adancime si latime plecand dintr-un acelasi nod x. Sa se verifice daca nodurile sunt vizitate in aceeasi ordine.

3. Se cunosc coordonatele a n obiective din oras. La fiecare obiectiv se gaseste o statie de emisie-receptie. Doua statii pot comunica daca distanta dintre ele este mai mica decat o valoare d, care se cunoaste. a) Sa se verifice daca 2 obiective x si y pot sa comunice. (eventual prin intermediari) b) Sa se afiseze numarul minim de intermediari prin care pot comunica si care sunt acestia

5. Pe un teren de forma dreptunghiulara (matrice nxm) se gasesc obstacole. O persoana se afla in punctul de coordonate (xs,ys). Sa se afiseze numarul minim de pasi pe care trebuie sa ii faca persoana pentru a parasi zona. (pentru a ajunge pe margini)
 * 4. (**Algoritmul lui Lee) Se da un graf neorientat G=(X,U). Sa se afiseze lungimea lanturilor minime de la un nod dat la toate celelalte.

6. a) Se se af.comp. conexe b) Sa se afiseze componentele conexe ale unui graf formate din noduri pare.

7. a) Dintr-un graf se elimina k muchii date. Verificati daca noul graf e arbore. b) Intr-un graf se adauga k muchii date. Verificati daca noul graf e arbore.


 * Pregatire pentru teza **




 * Grafuri orientate **

1. Se citesc din GRAF.IN n,m si arcele unui graf orientat. a) afisati matricea de adiacenta b) afisati nodurile cu grad exterior minim c) afisati nodurile care au gradul exterior egal cu gradul interior d) afisati succesorii nodurilor cu grad exterior maxim e) verificati daca graful e complet Se mai citesc un numar t si t numere intregi reprezentand noduri din graf. Verificati daca succesiunea de noduri citita formeaza: f) lant elementar/neelementar g) drum h) circuit

2. Se citeste din fisierul date.in matricea de adiacente a unui graf orientat. a) afisati listele de adiacente b) afisati toate arcele c) afisati arcele care pornesc din nodul x (dat)

<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">3.Unui graf orientat prin eliminarea orientarii i se poate atasa un graf neorientat. Sa se determine daca graful neorientat atasat este conex.

4.Un graf //orientat// se numeşte **//antisimetric//** dacă pentru oricare două vârfuri din graf //x// şi //y// dacă există arcul (x,y), atunci nu există arcul (y,x). Sa se verifice daca un graf este antisimetric.

<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">5. Sa se afiseze matricea de adiacenta a grafului complementar unui graf G=(X,U). (Graful complementar contine toate arcele posibile care nu apartin grafului G)

<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">6. Numim transpusul unui graf G=(X,U), graful G’ care are aceeasi multime de varfuri, arcele sale fiind arcele lui G, dar avand sens opus. Dandu-se G prin matricea de adiacenta sau prin lista de adiacenta, sa se determine transpusul grafului dat.

<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">7. Se numeste graf turneu un graf orientat cu proprietatea ca intre oricare doua varfuri distincte exista un arc si numai unul. Sa se verifice daca un graf este graf turneu.

<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">8. a) Pornind de la matricea varfuri-arce sa se construiasca matricea de adiacente. b) Invers


 * Matricea drumurilor. Conexitate in grafuri orientate.**

1. Se citesc n, m si arcele unui graf orientat. a) afisati M.A. b) construiti si afisati matricea drumurilor (alg. Roy Warshall) c) afisati nodurile izolate d) afisati nodurile in care se poate ajunge din nodul x e) afisati nodurile din care se poate ajunge in nodul x f) afisati nodurile care fac parte din componenta tare conexa a nodului x

2. Se citesc n, m si arcele unui graf orientat. Folosind matricea drumurilor, afisati componentele tare conexe ale grafului.

<span style="font-family: 'Times New Roman','serif'; font-size: 16px;">3 Folosind algoritmul DF, sa se afiseze componenta tare conexa din care face parte un nod x al unui graf orientat.

4.Sa se afiseze un drum elementar de lungime maxima intr-un graf orientat.

5.Sa se afiseze un circuit elementar de lungime maxima intr-un graf orientat.

Se citesc n,m, arcele si lungimile acestora. a) Se citesc 3 noduri, X,Y si Z. Sa se verifice care dintre nodurile X si Y este mai apropiat de nodul Z. Daca nu se poate ajunge din ele in Z, se va afisa un mesaj. b) Se citeste un numar t. Sa se afiseze toate perechile de noduri (i,j) pentru care drumul minim din i in j e mai mic decat t c) Sa se afiseze perechile de noduri pentru care nu exista drum decat intr-un sens. d) Sa se afiseze pentru fiecare nod, nodurile in care nu se poate ajunge plecand din el. e) Sa se afiseze pentru fiecare nod i, cele mai apropiate 2 noduri in care se poate ajunge plecand din acesta.


 * Alg. Dijkstra de determinare a drumului minim de la un nod la toate celelalte**