Académique Documents
Professionnel Documents
Culture Documents
ATESTAT PROFESIONAL
Prof. ndrumtor
Sceanu Ion
Elev:
Popescu Florin Cristian
Profil: Matematic-Informatic
Colegiul Tehnic Mtsari
Clasa a XII-a B
PROBLEMA CELOR N
DAME
Prof. ndrumtor:
Sceanu Ion
Elev:
Popescu Florin Cristian
Profil: Matematic-Informatic
Colegiul Tehnic Mtsari
Clasa a XII-a B
CUPRINS
Crearea unui soft educational este o art care seamn cu rezolvarea unui
puzzle. n activitatea sa omul lucreaz cu informaia. Metodele i tehnicile de organizare
a informaiei au evoluat mpreun cu dezvoltarea echipamentelor de calcul i cu evoluia
tehnicilor i limbajelor de programare.
nvtmntul modern presupune utilizarea unor mijloace de prezentare a
informaiei ntr-o form dinamic i care sa simuleze realitatea. Se tie c fiina uman
inva mai uor prin joc. Acest proiect ajut elevii s invee mai usor tehnica
backtracking prin prezentarea unei interfee n cazul problemei damelor.
Softul educaional reflect necesitatea cunoaterii limbajelor de programare in
scopul punerii n valoare a disciplinei <INFORMATICA>.
n acest scop mi-am ales tema Tehnica Backtraking aplicat la problema
damelor care descrie n mod grafic importana si necesitatea tehnicii Backtraking n
diverse aplicaii.
B
A
x2
x1
ST
10
st(1) = 3 i = 1
st(3) = 1 j = 3
|st(i) - st(j)| = |3 1| = 2
|i j| = |1 3| = 2
11
12
Istoric:
Problema a fost prima dat propus n 1848 de ctre juctorul de ah Max Bezzel
i peste civa ani de mai muli matematiceni printre care i Johann Carl Friedrich
Gauss care a lucrat la acesta problem i la problem general. Prima soluie a fost
gsit de Franz Nauck n 1850. Tot Nauck a generalizat problema. n 1874, S. Gunther a
propus o metod de gsire a solutilor folosind determinantul.
Edsger Dijkstra a folosit aceast problem n 1972 pentru a ilustra ceea ce noi
numim structura de programare. El a publicat o descriere foarte detaliat a primului
algoritm de backtracking.
Aflarea soluiei:
Problema pare destul de complicat, fiind 4.426.165.368 de cazuri posibile de a
pune cele opt dame pe tabla de 8x8 i doar 92 de soluti corecte. Dintre cele 92 de soluii,
exist doar 12 cazuri unice sau fundamentale.
Caz 1
Caz 2.
a b c d e f g h
X
8
X
a b c d e f g h
X
7
X
7
X
X 5
X
6
X
4
X
4
X 3
2
X
13
1
X
2
1
Caz 3.
Caz 4.
a b C d e f g h
8 a b c d e f g h
X
X
7
X
8
X
7
X 6
5
X
4
X 3
1
X
Caz 5.
a b c d e f g h
3
X
X 6
5
X
a b c d e f g h
X
7
X 6
X
X
Caz 6.
5
X
4
3
X
X
2
1
14
3
2
1
Caz 7.
Caz 8.
a b c d e f g h
8 a b c d e f g h
X
X
7
6 X
X
X
7
X
5
X
6
X 5
4
X
X 3
X
X
a3 b c d e f g h
1
X
Caz 9.
8
X
5
X 4
X
3
X
X
Caz 10.
15
2
1
a b c d e f g h
X
7
X
6
5
4
X 3
X
Caz 11.
Caz 12.
a b c d e f g h
8a b c d e f g h
X
X
7
6
X 5
4X
X
X
3
X
2 X
1.Stiva:
X
Stiva este o list pentru
X
1
care
singurele
operaii
X
permise sunt:
adugarea unui element in stiv;
eliminarea, consultarea sau modificarea unui element introdus in
stiv;
Stiva funcioneaz pe principiul LIFO (Last In First Out) - ultimul
intrat, primul ieit.
Atenie: adugarea sau scoaterea unui element din stiv se face prin
acelai capt, numit vrful stivei
16
8
7
X
6
5
X 4
3
2
1
II.
2. Exemplificarea lucrului
cu stiva:
a) n stiva iniial vid se introduce elementul A i vrful stivei va fi
nivelul 1 (k=1).
b) Introducem n stiv elementul B, deci vrful stivei va fi nivelul 2
(k=2).
c) Vrem s scoatem din stiv elementul A. Se procedeaz n felul
urmtor: scoatem din stiv elementul B, deoarece A nu se poate scoate
deocamdat. Vrful stivei devine nivelul 1 (k=1).
d) Scoatem din stiv pe A.
3.Tehnica backtracking:
. Exist clase de probleme pentru care algoritmii se proiecteaz dup o
anumit metod de programare. Putem privi metoda de programare ca un
ablon pe care l putem aplica pentru rezolvarea unor clase de probleme cu
un specific comun.
Tehnica backtracking se folosete n rezolvarea problemelor care au
urmtoarele caracteristici:
- soluia lor poate fi pus sub forma unui vector:
S= s1 s2 .... sn unde s1S1, s2S2.... snSn
- mulimile S1, S2... Sn sunt mulimi finite, iar elementele lor se afl intr-o
relaie de ordine bine stabilit.
- nu avem la dispoziie o alt metod mai rapid
17
Important:
18
19
5. Metoda backtracking
Va folosi o serie de proceduri i funcii care vor fi folosite totdeauna
cu acelai nume i aceiai parametri:
procedure init(k, st);
Rol: atribuie elementului situat pe nivelul k o valoare iniial
Parametri:
k - nivelul in stiv
st - stiv
procedure succesor(k, st, as);
Rol: atribuie elementului st[k] din stiv valoarea urmtoare din mulimea Sk
Parametri:
20
repeat
{
succesor (k,st,as)
if as then validare ( k,st,ev)
until (not as) or (as and ev)
}
if as then
{
if solutie(k) then tipar
{
else
k<-k+1
init(k,st)
}
else k<-k-1
}
}
atac dac ele se afl pe aceeai linie, pe aceeai coloana sau pe aceeai
diagonala. Aceast problem fuctioneaza doar pentru n=1 sau n>=4.
De exemplu, daca n=4, o soluie este reprezentat n figuria a. modul
de obinere al soluiei este prezent n figurile urmtoare, de la b la i.
a)
x
x
x
x
b)
c)
d)
x
x
e)
x
x
23
f)
g)
x
x
h)
x
x
x
i)
x
x
x
x
Comentarii referitoare la figurile anterioare.
x
x
x
x
sol(1)=1 i=1
sol(3)=3 j=3
| sol(1)-sol(3) | =| 1-3 |
2=2
sol(1)=3 i=1
sol(3)=1 j=3
| sol(1)-sol(3) | =| 1-3 |
25
2=2
10
11
12
Solutii
unice
12
46
92
341
1.787
Total
solutii
10
40
92
352
724
2.680
14.200
13
14
24
25
26
9.233
45.752
28.439.272.956.934
275.986.683.743.434
2.789.712.466.510.289
73.712
365.596
227.514.171.973.73
6
2.207.893.435.808.35
2
22.317.699.616.364.04
4
26
27
Bibliografie
Manualul de informatic, cls. aXI-a
http://info.mcip.ro/?t=back
http://www.scribd.com/doc/8066145/Metoda-Backtracking
http://www.scritube.com/stiinta/informatica/Metode-deprogramare3424121010.php
28