Documente Academic
Documente Profesional
Documente Cultură
Obiective
Formularea problemelor ca probleme de căutare şi identificarea modalităţilor de rezolvare a lor.
Specificarea, proiectarea şi implementarea metodelor de căutare.
Aspecte teoretice
Rezolvarea problemelor ca proces de căutare
Tipuri de probleme de căutare.
Modalităţi de rezolvare a problemelor de căutare construirea progresivă a soluţiei:
- Stabilirea componentelor problemei
o Stare iniţială
o Stare finală
o Operatori (funcţii succesor)
o Soluţie
- Definirea spaţiul de căutare
- Stabilirea strategiei de identificare a soluţiei în spaţiul de căutare
Termen de predare
Cerința C1 - pe loc (in cadrul laboratorului 2)
Cerința C2 - laborator 3
Cerinţe
C1. Subalgoritmi de căutare
Implementați (în Python) câte un subalgoritm pentru fiecare din cerințele următoare. Codul
corespunzător unui subalgoritm poate fi notat cu maxim 5 puncte. Sub-algoritmii trebuie să
respecte specificarea dată și vor fi evaluați cu ajutorul a 5 aserțiuni. Fiecare aserțiune corectă
valoarează 1 punct.
1. subalgoritm distanțaMotyka:
Descriere: determină distanța Motyka între 2 vectori de numere întregi
Input: 2 vectori de numere întregi (de aceeași lungime)
Output: distanța Motyka
Exemplu:
In: [2,4,1], [1,2,3]
Out: 0.4
Punctaj: 5p pentru cod și 5x1p pentru aserțiuni
2. subalgoritm distanțaRuzicka:
Descriere: determină distanța Ruzicka între 2 vectori de numere întregi
Input: 2 vectori de numere întregi (de aceeași lungime)
Output: distanța Ruzicka
Exemplu:
In: [2,4,1], [1,2,3]
Out: 0.44
Punctaj: 5p pentru cod și 5x1p pentru aserțiuni
3. subalgoritm distanțaEditare:
Descriere: determină distanța de editare între 2 vectori de caractere
Input: 2 vectori de caractere
Output: distanța de editare
Exemplu:
In: [a,b,c,d], [e,b,d]
Out: 2
Punctaj: 20p pentru cod și 5x4p pentru aserțiuni
4. subalgoritm DFS:
Descriere: parcurge în adâncime un arbore ternar (fără a folosi o stivă)
Input: rădăcina unui arbore ternar cu numere întregi în noduri
Output: un vector cu numerele din arbore
Exemplu:
In: rădăcina arborelui:
6
/ | \
4 2 7
/ \
3 5
Out: [6,4,3,5,2,7]
Punctaj: 15p pentru cod și 5x3p pentru aserțiuni
5. subalgoritm adiacență:
Descriere: Determină matricea de adiacență asociată unui arbore ternar
Input: rădăcina unui arbore ternar cu numere întregi în noduri
Output: Matricea de adiacență
Exemplu:
In: rădăcina arborelui:
1
/ | \
2 3 4
/ \
5 6
Out: [[0 1 1 1 0 0]
[1 0 0 0 1 1]
[1 0 0 0 0 0]
[1 0 0 0 0 0]
[0 1 0 0 0 0]
[0 1 0 0 0 0]]
Punctaj: 15p pentru cod și 5x3p pentru aserțiuni
Fiecare dintre probleme trebuie rezolvată cu cele 2 tehnici precizate (dar se pot adăuga şi tehnici
noi) – o tehnică neinformată şi o tehnică informată:
- breadth-first search (BFS)
- depth-first search (DFS)
- greedy best-fisrt search (GBFS)
amplasate pe tablă astfel încât acestea să nu se atace reciproc. În Figura 2 sunt prezentate 2
exemple de rezolvare (corectă şi incorectă) a problemei pentru n = 5 şi m = 6.
R R
R R
R R
R R
R R
Figura 2 a) configuraţie validă; b) configuraţie invalidă pentru problema reginelor pentru o tablă cu 5x6 căsuţe
Să se ordoneze o listă de obiecte (de exemplu, o listă de numere întregi) utilizând un operator
de interschimbare a 2 obiecte din listă.
Tabel 2 Distanţele directe între Bucureşti şi celelalte oraşe din harta din Figura 6
Pe malul unui râu se află un adult, doi copii şi o mică barcă. Oamenii vor să traverseze râul
cu barca şi să ajungă pe celălalt mal. Barca poate transporta fie doi copii, fie un singur copil,
fie un singur adult. Să se găsească o modalitate de traversare a râului.
Figura 7 a) puzzle gilsant cu n=2; b) puzzle glisant cu n=3 (OI – ordinea iniţială, OF – ordinea finală)
1+2+3+…+n pătrate de aceeaşi dimensiune, dar care au associate diferite scoruri, astfel încât
punctajul acumulat de-a lungul drumului parcurs să fie maxim. Triunghiul este format din
mai multe nivele, fiecare nivel conţinând un anumit număr de pătrate. Pătratul cel mai de sus
este plasat pe nivelul 1, pătratele cele mai de jos se află pe nivelul n. Traversarea constă în
operaţii de coborâre şi/sau deplasare. Coborârea de pe un nivel pe altul presupune efectuarea
unui salt de pe un pătrat pi,j de pe nivelul i pe un pătrat pi+1,j de pe nivelul i+1, situate pe
aceeaşi coloană j (a se vedea şi desenul din Figura 8). Deplasarea (la stânga sau la dreapta)
presupune efectuarea unor paşi de pe un pătrat pij aflat pe nivelul i, coloana j pe un alt pătrat
vecin aflat tot pe nivelul i, dar pe coloana j-1 sau j+1.
9
5 7 2
5 8 2 4 1
6 3 1 9 4 3 2
4 5 7 2 3 4 5 1 9
Figura 9 Triunghiul de pătrate
3 1
1 6 9 4 3
9 7 7 1 5
4 7 3 6 2 7
5 5 8
4 5 2
2 8 3 7 8 1
8 4
Figura 10 Exemplu de labirint
de pe glob. Ceasurile sunt plasate ca într-o matrice cu 3 linii şi 3 coloane. Ca urmare a unei
pene de current, ceasurile s-au dereglat şi trebuie reglate din nou. Pentru reglaj există 2
butoane care permit următoarele modificări:
Acţionarea în sus a primului buton creşte cu o unitate ora indicată de toate
ceasurile de pe o linie, iar acţionarea în jos va reduce cu o unitate ora indicată de
toate ceasurile de pe o linie;
Acţionarea în sus a celui de-al doilea buton creşte cu o unitate ora indicată de
toate ceasurile de pe o coloană, iar acţionarea în jos va reduce cu o unitate ora
indicată de toate ceasurile de pe o coloană.
Să se regleze corect ceasurile folosind cât mai puţin cele 2 butoane.
se identifice o modalitate de colorare a hărţilor astfel încât 2 ţări vecine să nu fie colorate cu
aceeaşi culoare.