Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Subiecte examen SDA

Subiecte examen SDA

sesiunea vara

  1. Din fisierul "p1.txt" se citeste un arbore dat sub forma parantezata. Arborele contine identificatori (un identificator este un  cuvant ce incepe cu o litera si contine litere, cifre sau caracterul '_' ). Se cere sa se afiseze urmatoarele informatii:
    1. Numarul de noduri
    2. Numarul de muchii
    3. Inaltimea
    4. Arborele parcurs in preordine

Exemplu:

p1.txt

Rezultat

a(Ion(-,-),Vasile(A2b(-,-),xyz(-,ax3(-,-)))

6 noduri

5 muchii

Inaltime 4

Parcurgere in preordine: Ion, A2b, ax3, xyz, Vasile, a


  1. Fisierul "p2.txt" contine identificatori, cate unul pe linie (un identificator este un  cuvant ce incepe cu o litera si contine litere, cifre sau caracterul '_'). Se cere sa se urmatoarele:
    1. Sa se introduca acesti identificatori intr-un arbore de cautare
    2. Sa se afiseza arborele sub forma parantezata
    3. Sa se afiseze identificatorii sortati lexicografic descrescator folosind urmatorul algoritm:

i. i.cat timp mai sunt noduri in arbore

ii. ii.Gaseste cel mai mare element

iii. iii.Afiseaza elementul gasit

iv. iv.Sterge nodul din arbore


Exemplu:

p2.txt

Rezultat

Ion

Vasile

A2b

xyz

ax3

b. Ion(A2b(-,-),Vasile(-,xyz(ax3(-,-),-)))

c. xyz, ax3, Vasile, Ion, A2b


  1. In fisierul "p3.txt" se gasesc mai multe numere intregi. Se cere sa se sorteze aceste numere dupa urmatorul algoritm:
    1. Se introduc toate numerele intr-un heap
    2. Se scoate pe rand elementul din varful heap-ului

Exemplu:

p3.txt

Rezultat

2 7 3 5 1 0 1

0 1 1 2 3 5 7

  1. Din fisierul "p4.txt" se citeste un graf neorientat, precizat prin numarul de noduri, numarul de muchii si muchiile sale. Se cere sa se afiseze componentele conexe ale grafului folosind o parcurgere DF. Arborele va fi retinut in reprezentarea prin liste de adiacenta (fiecare nod retine vecinii sai). Se cere deasemenea sa se precizeze complexitatea algoritmului si sa se argumenteze aceasta complexitate.

Exemplu:

p4.txt

Rezultat

5 4

1 2

0 3

0 4

3 4

Exista 5 noduri si 4 muchii.

Componente conexe:

[1 2]

[0 3 4]


  1. Din fisierul "p5.txt" se citeste un graf orientat, precizat prin numarul de noduri, numarul de muchii si muchiile sale. Costul este acelasi pentru toate muchiile grafului. Se cere sa se afiseze lungimea drumurilor (evident cele mai scurte) de la nodul 0 la toate celelalte noduri la care se poate ajunge. Pentru aceasta se va folosi o parcurgere BF (nu se accepta algoritmul Floyd sau Dijkstra). Graful va fi retinut prin liste de adiacenta (fiecare nod retine vecinii sai). Se cere deasemenea sa se precizeze complexitatea algoritmului si sa se argumenteze aceasta complexitate.

Exemplu:

p5.txt

Rezultat

6 4

0 3

0 4

3 2

2 1

Exista 6 noduri si 4 muchii.

Lungimea drumurilor:

0: -

1: 3

2: 2

3: 1

4: 1

5: nu este conectat


  1. Din fisierul "p6.txt" se citesc mai multe relatii de forma "Id1 < Id2" sau "Id1 > Id2" (unde id1 si id2 sunt identificatori, i.e. un identificator este un  cuvant ce incepe cu o litera si contine litere, cifre sau caracterul '_'). Se cere sa se gaseasca o sortare topologica a acestor identificatori (o insiruire a acestor identificatori in asa fel incat daca exista relatia "Id1 < Id2" atunci Id1 apara inaintea lui Id2, iar daca exista relatia "Id3 > Id4" atunci Id3 apare dupa Id4. Evident exista cazuri cand aceasta sortare nu este posibile (Ex. Id1 > Id2, Id1 < Id2) caz in care porgramul va genera eroare.

Exemplu:

p6.txt

Rezultat

ion < gigel

vasile > ion

alina > ion

O posibila sortare topologica este:

ion < vasile < gigel < alina


  1. Din fisierul "p7.txt" se citeste un graf neorientat, precizat prin numarul de noduri, numarul de muchii si muchiile sale.Sa se determine arborele partial de cost minim folosind algoritmul lui Kruskal. Pentru implementare se vor folosi multimi disjuncte (evident cu path compression si  union by size/union by rank).

Algoritmii Kruskal si Prim produc acelasi arbore partial de cost minim ? Argumentati raspunsul.

Exemplu:

p7.txt

Rezultat

4 5

0 1 1

1 2 1

2 3 1

3 0 3

0 2 2

Exista 4 noduri si 5 muchii.

Arborele partial de cost minim contine muchiile:

[0 1]

[1 2]

[2 3]


  1. Din fisierul "p8.txt" se citeste un graf neorientat, precizat prin numarul de noduri, numarul de muchii si muchiile sale. Se cere sa se afiseze drumurile minime (si costul acestora) dintre nodul 0 si toate celelalte noduri. Se va folosi algoritmul Dijkstra.

Exemplu:

p8.txt

Rezultat

4 5

0 1 1

1 2 1

2 3 1

3 0 4

0 2 7

Exista 4 noduri si 5 muchii.

Drumurile minime:

1: drum-ul 0-1 este: 0 - 1, cost 1

2: drum-ul 0-2 este: 0 - 1 - 2, cost 2

3: drum-ul 0-3 este: 0 - 1 - 2 - 3, cost 3


  1. Din fisierul "p9.txt" se citeste un graf neorientat, precizat prin numarul de noduri, numarul de muchii si muchiile sale. Se doreste afisarea lungimii drumurilor minime intre oricare doua noduri i si j. Deasemenea se va calcula si lungimea "masurata in noduri" intre oricare doua noduri (i.e. cate noduri contine drumul minim de la i la j). Se va folosi algoritmul Floyd-Warshall.

Exemplu:

p9.txt

Rezultat

4 5

0 1 2

1 2 2

2 3 2

3 0 8

0 2 14

Exista 4 noduri si 5 muchii.

Matricea lungimilor drumurilor minime:

2

4

6

2

2

4

4

2

2

6

4

2

Matricea lungimilor drumurilor minime "masurate in noduri":

1

2

3

1

1

2

2

1

1

3

2

1

  1. Din fisierul "p10.txt" se citeste un graf neorientat, precizat prin numarul de noduri, numarul de muchii si muchiile sale. Se cere sa se determine si sa se afiseze arborele partial de cost minim folosind algoritmul lui Prim.

Algoritmii Kruskal si Prim produc acelasi arbore partial de cost minim ? Argumentati raspunsul.

Exemplu:

p10.txt

Rezultat

4 5

0 1 1

1 2 1

2 3 1

3 0 3

0 2 2

Exista 4 noduri si 5 muchii.

Arborele partial de cost minim contine muchiile:

[0 1]

[1 2]

[2 3]

 Timpul de lucru 45 min.