Sunteți pe pagina 1din 7

PORTOFOLIUL

TEMA: DEZVOLTAREA PERSONALĂ

INTERDISCIPLINARITATEA

TRANSPUNEREA GENERĂRII PERMUTĂRILOR PRIN METODA


BACKTRACKING

Curs: Didactica Ariilor Curriculare Matematică, Științele naturii și Tehnologii

Cursant Constantin Marius-Nicolae


Grupa 10CD111

Dezvoltarea personală include activități și experiențe care au scopul final de a îmbunătăți


starea de conștientizare, dezvoltare a talentelor și abilităților personale, îmbunătățirea calității
vieții și contribuirea la realizarea aspirațiilor și viselor personale.
Cunoscut și sub denumirea de "self help" sau "evoluție personală", conceptul de dezvoltare
personală include și activități formale sau informale pentru a dezvolta în alții roluri precum cel
de pedagog, ghid, consilier, manager, coach sau mentor.
Conceptul de dezvoltare personală pare foarte ofertant la prima vedere, promițând o
evoluție și o transformare a individului pe toate planurile. De la fraze precum “Schimbă-ți viața
în 5 pași”, “Schimbarea începe cu tine” sau “Află secretele succesului”, programele de
dezvoltare personală promit o transformare personală dacă urmezi o serie de pași și reguli.
Ce este dezvoltarea personală?
Dezvoltarea personală este un concept de confluență, aflat la intersecția unor elemente din
psihologie cum ar fi: motivația, autocunoașterea, managementul emoțiilor, stima de sine,
atitudinea (pozitivă) și lista rămâne deschisă. Adițional, este susținută de discipline: filosofie,
economie, politică, medicină sau sport.
Unele programe sunt concentrate pe activități și pași care înlesnesc conștientizarea,
imaginea de sine și identitatea unui individ, în timp ce altele sunt create pentru a satisface nevoi
materiale, precum creșterea calității vieții și un câștig financiar mai mare. De asemenea, sunt
programe de dezvoltare personală care adoptă și promovează o poziție de sănătate, prezentând
reguli de nutriție și sport, pentru ca individul să-și asigure longevitatea.
Cum a apărut conceptul de dezvoltare personală?
Ideea de dezvoltare personală, de creștere, de cunoaștere de sine și de o înțelegere mai
profundă asupra experienței umane și a umanității în general, traversează întreaga istorie
culturală a umanității sub diverse definiții și înțelesuri. Spre exemplu, spiritualitatea estică, care
înglobează, yoga, tehnici de meditație, reiki sau acupunctură, și care este din ce în ce mai
prezentă în viețile noastre, se bazează pe un principiu de dezvoltare personală.
Prin prezenta lucrare am încercat, nu știu dacă am și reușit, transpunere interdisciplinară
intre matematică și informatică, un subiect privind generarea permutărilor prin metoda
Backtracking, o binecunoscută metodă în Informatică.
Metoda Backtracking se folosește în rezolvarea unor probleme care îndeplinesc simultan
următoarele condiții:
 Soluția lor poate fi pusă sub forma unui vector S=(x1 , x2, x3, ........, xn) cu elementele x1
€ A1 , x2 € A2 , x3 € A3, ........................ x n € An,
 Mulțimile A1 , A2 , A3, .......... An sunt mulțimi finite, iar elementele lor se consideră că se
află intr-o relație de ordine bine stabilită.
 Nu se dispune de o altă metodă de rezolvare mai rapidă
Metoda Backtracking are la bază un principiu simplu:
Dacă în procesul de generare a unui vector soluție S= x1, x2, x3, ........, xn, pentru
componenta k, atunci cînd s-a generat deja x1 x2 x3........xn, constatăm că valoarea xk nu este bine
aleasă (păstrând-o nu se ajunge la o soluție ), nu trecem la componenta k+1, ci reluăm căutarea
pentru altă valoare pentru componenta k, iar dacă această valoare nu există, reluăm căutarea
pentru componenta k-1.
Trecem la exemplificarea algoritmului pentru generarea permutărilor, în cazul n=3.
a. Componenta 1 va memora numărul 1. Întrucît există permutări care incep cu 1, trecem la
elementul 2. Pas înainte 1

b. Componenta 2 va memora 1 1 1

c. Nu există permutări care încep 1, 1, motiv pentru care, pentru aceeași componentă, vom
reține valoarea următoare, adică 2. Întrucât există permutări care încep cu 1, 2, vom trece
la elementul 3. Pas înainte. 1 2
d. Componenta 3 va memora 1 1 2 1

e. Nu există permutări care sunt de forma 1, 2, 1, motiv pentru care are component va reține
numărul următor, 2. 1 2 3

f. Nu există permutări care sunt de forma 1, 2, 2, motiv pentru care aceeași componentă va
memora numărul următor, adică 3. Am obținut o primă soluție și o afișăm. 1 2 3

g. Pentru componenta 3, nu există o altă valoare pe care o putem utiliza. 1 3 0

h. Din acest motiv vom trce la elementul 2. Pas înapoi. Componenta 2 are déjà valoarea
memorată 2. Alegem valoarea următoare 3. Întrucât există permutări care încep cu 1, 3,
vom trece la elementul următor 3. Trecem la valoarea 2, intrucît nu există permutări de
forma 1, 3, 1. Așadar, obținem soluția 1, 3, 2 și o afișăm. 1 3 2

i. Algoritmul continuă până se ajunge la o componentă de indice 0. În acel moment au fost


afișate toate permutările.
O modalitate de implementare a metodei generării permutărilor.
Subprogramul care implementează metoda generării permutărilor. Programul se apelează
prin funcția back(1).

void back(int k)
{
if (solutie(k)) tipar ();
else
{ init (k);
while (successor (k))
if (valid (k) ) back(k+1);
}
}
Inițial se testează dacă s-a generat o soluție. Pentru aceasta, se apelează subprogramul soluție(k).
Cum subprogramul este recursiv, acest fapt se întâmplă când s-a ajuns la nivelul n+1.

 Dacă s-a obținut o soluție, aceasta se afișează. Pentru această operație se va utiliza
subprogramul tipar.
 În situația în care nu a fost obținută o soluție, se inițializează nivelul k. Inițializarea se
face cu valoarea aflată înaintea tuturor valorilor posibile. Se va folosi subprogramul init.
Pentru permutări inițializarea se face cu 0.
 După inițializare, se generează, pe rând, toate valorile mulțimii Ak. Pentru aceasta se
utilizează subprogramul succesor. Rolul său este de a atribui componentie k valoarea
celei deja existente.
 Pentru fiecare valoare generată, se testează dacă aceasta îndeplinește condiția de
continuitate. Acest test este realizat de subprogramul valid.
 În cazul în care condițiile sunt îndeplinite, se trece la componenta k+1, urmând ca
generarea valorilor pe nivelul k, să continue atunci când se revine pe acest nivel.
 Dacă condițiile de continuare nu sunt îndeplinite, se generează următoarea valoare
pentru componenta k.
După ce au fost generate toate valorile mulțimii Ak se trece, implicit, la componenta k-1, iar
algoritmul se încheie când k=0.

Programul de generare a permutărilor

#include <iostream>
using namespace std;
int n, sol[10];
void init(init k)
{ sol[k]=0;
}
int successor(int k)
{ if (sol[k]<n)
{ sol[k]++;
return 1; }
else return 0;
}
int valid(int k)
{ int I, ev=1;
for (i=1;i<=k-1;i++)
if (slo[k]==sol[i]) ev=0;
return 0;
}
int solutie(int k)
{ return k==n+1;
}
void tipar ( )
{ for (int i=1;i<=n;i++)
cout<<sol[i];
cout<<endl;
}
void back(int k)
{ if (solutie(k)) tipar( );
else
{ init(k);
while (succesor(k))
if (valid(k)) back(k+1);
}
}
int main()
{ cout<<”n=”; cin>>n; back(1);
return 0;
}

APLICAȚIE GENERAREA ARANJAMENTELOR

Se dau două mulțimi A={1, 2, 3, …., p} și B={1, 2, 3, …., n}. Se cer toate toate funcțiile
injective definite pe A cu valori în B. o astfel de problemă este una de generare a aranjamentelor
𝑝
de n luate câte p (𝐴𝑛 ).
Exemplu: p=2; n=3. Avem: 12,21,13,31,23,32. De exemplu, 21 este funcția f: AB dată
astfel: f(1)=2; f(2)=1; Avem relațiile:
𝑝 𝑛!
𝐴𝑛 = (𝑛−𝑝)! = n(n-1).......(n-p+1)

Enunț. Se citesc n și p numere naturale. Să se genereze toate aranjamentele de n luate câte p.


Rezolvare. O soluție este de forma x1 x2.......xp, unde x1 , x2, ....., xp € B, În plus x1, x2, ....., xp
trebuie să fie distincte. În acest caz, ne interesează toate permutările unei soluții (acestea sunt, la
rândul lor, alte soluții). Aceasta înseamnă că nu mai putem pune în soluție elementele în ordine
crescătoare.
Deci:
- O soluție are p numere din B.
- Numerele trebuie să fie distincte.
Rezultă de aici că algoritmul este același de la permutări, diferența fiind dată de faptul că
soluția are p numere, nu n ca în cazul permutărilor.
Programul C++ pentru generarea aranjamentelor
#include <iostream.h>
int n,p,sol[10];
int valid(int k)
{ for (int i=1;i<k;i++)
if (sol[k]= =sol[i])
return 0;
return 1;
}
void back(int k)
{ int i, j;
if (k= = p+1)
{ for (j=1;j<=p;j++)
cout<<sol[j];
cout<<endl;
}
else
for (i=1;i<=n;i++)
{ sol[k]=i;
if (valid(k))
back (k+1);
}
}
main ( )
{ cin>>n; cin>>p;
back (1); }

CONCLUZIE

Prin această lucrare am urmărit să inițiez și să orientez procesul de învățare al generării


permutărilor, să antrez elevii în cunoașterea și aplicarea generării permutărilor în rezolvarea
unor porbleme, astfel încăt să fie depățite eventualele dificultăți.

Pe de altă parte am dorit să pun în evidență cele două competențe-cheie:

 competența matematică, științifică și tehnologică: buna stăpânire a aritmeticii, o


înțelegere a lumii naturale și o abilitate de a pune în aplicare cunoștințele și tehnologia
pentru a răspunde nevoilor umane percepute (precum medicina, transportul sau
comunicarea).
 competența digitală: utilizarea cu încredere și în mod critic a tehnologiei informației și
comunicațiilor pentru muncă, timp liber și comunicare.
Studiind Informatica, elevii au posibilitatea să își identifice domeniile de interes: preferă să
programeze într-un limbaj de programare, preferă programarea vizuală, preferă programarea
bazelor de date, preferă modelarea bazelor de date, 2 preferă să se ocupe de marketing într- o
firmă de IT, sau să testeze anumite produse informatice pentru a le îmbunătăți. Aceasta îi va
ajuta să aleagă mai târziu profesia adecvată.
Domeniul dezvoltării personale este cel care oferă modalităţi de realizare a scopului vostru
de a vă dezvolta. Domeniul aduce la îndemână instrumente utile şi experienţa celor care le-au
creat. Numai acceptând schimbarea personală putem înfrunta provocările la care ne supun
schimbările rapide ale lumii de astăzi. Depinde de noi să ajungem din punctul în care suntem
astăzi în cel în care ne dorim să fim. Vom observa că există două categorii de oameni: cei care se
schimbă şi cei care şiau propus prin atitudinea lor faţă de schimbare să devină victimele ei. În
jurul nostru lumea se schimbă cu viteză o ameţitoare. Dacă încercăm să menţinem situaţia
existentă, dacă nu progresăm, atunci vom eşua.

S-ar putea să vă placă și