SlideShare a Scribd company logo
Problema  colorării hărţilor Elev: Finta Ionuţ
Fiind dată o hartă cu n ţări, se cer toate soluţiile de colorare a hărţii, utilizând cel mult patru culori, astfel încât două ţări de frontieră comună să fie colorate diferit. Este demonstrat faptul că sunt suficiente numai patru culori pentru ca orice hartă să poată fi colorată
Exemplu Ţara 3: Polonia N=5 Culoarea 1 Culoarea 2 Culoarea 3 Culoarea 4 Ţara 1: Latvia Ţara 2: Lituania Ţara 4: Belarus Ţara 5: Rusia A= 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 0
Exemplu N=5 Polonia Lituania Latvia Belarus Rusia Culoarea 1 Culoarea 2 Culoarea 3 Culoarea 4
Algoritm Pas1. Se introduc datele de intrare ( nr.  de ţări si matricea vecinilor) Pas2. Se initializează nivelul k al stivei Pas3. Cât timp există nivele în stivă executăm paşii următori. Pas4. Căutăm un succesor pe nivelul k al stivei până când gasim unul care nu depăşeşte numărul maxim de culori, apoi verificăm dacă este valid (îndeplineşte condiţiile ca elementul gasit în stivă să fie diferit de celelalte elemente şi în plus ţara i să nu fie vecină cu ţara k).  Pas5. Dacă s-a găsit un astfel de element şi dacă este o soluţie a problemei se tipăreşte, iar în caz contrar se trece la nivelul următor al stivei şi se initializează stiva. Pas6. În cazul în care nu s-a găsit nici o soluţie pe nivelul k, coborâm la nivelul anterior să căutăm şi alte soluţii valide.
Implementare Harta este furnizată programului cu ajutorul unei matrice Anxn A(i,j)  =   1, dacă ţara i se învecinează cu ţara j şi valoarea 0 în caz contrar. Matricea A este simetrică. Pentru rezolvarea problemei se utilizează stiva st, unde nivelul k al stivei simbolizează ţara k, iar st[k] culoarea ataşată ţării k. Stiva are înălţimea n (numărul de ţări) şi pe fiecare nivel ia valori între 1 şi 4.
Programul Pascal Program colorarea_h artilor ; Type stiva = array [1…100] of integer; var st : stiva; i, j, n, k : integer; as, ev : boolean; a: array [1..20,1..20] of integer; procedure init(k:integer; var st:stiva); begin st[k]:=0; end; procedure succesor(var as:boolean; var st:stiva; k:integer); begin if st[k] < 4 then begin st[k]:=st[k]+1; as:=true end else as:=false end;
function solutie(k:integer):integer; begin solutie:=(k=n); end; procedure tipar; var i:integer; begin for i:= 1 to n do writeln(’Tara =’, i,’; culoarea=’,st[i]); writeln(’===================’); end; begin write(’Numarul de tari = ’); readln(n); for i:= 1 to n do for j:=1 to i-1 do begin write(’a[’,i,’,’,j,’]=’); readln(a[i,j]) end; k:=1; init(k,st);
while k>0 do begin repeat succesor(as,st,k); if as then valid(ev,st,k); until (not as) or (as and ev); if as then if solutie (k) then tipar else begin k:=k+1; init(k,st); end else k:=k-1; end end.

More Related Content

More from guesta1c73b

Criticismul Junimist
Criticismul JunimistCriticismul Junimist
Criticismul Junimistguesta1c73b
 
Turnurile Din Hanoi
Turnurile Din HanoiTurnurile Din Hanoi
Turnurile Din Hanoiguesta1c73b
 
Problema Magazinului Cu Cele 10 Raioane
Problema Magazinului Cu Cele 10 RaioaneProblema Magazinului Cu Cele 10 Raioane
Problema Magazinului Cu Cele 10 Raioaneguesta1c73b
 
Statuia Lui Iisus Hristos
Statuia Lui Iisus HristosStatuia Lui Iisus Hristos
Statuia Lui Iisus Hristosguesta1c73b
 
Problema Rucsacului
Problema RucsaculuiProblema Rucsacului
Problema Rucsaculuiguesta1c73b
 
Parcul Yellowstone
Parcul YellowstoneParcul Yellowstone
Parcul Yellowstoneguesta1c73b
 
Problema Rucsacului
Problema RucsaculuiProblema Rucsacului
Problema Rucsaculuiguesta1c73b
 

More from guesta1c73b (12)

Criticismul Junimist
Criticismul JunimistCriticismul Junimist
Criticismul Junimist
 
Turnurile Din Hanoi
Turnurile Din HanoiTurnurile Din Hanoi
Turnurile Din Hanoi
 
Studiu De Caz
Studiu De CazStudiu De Caz
Studiu De Caz
 
Serengeti
SerengetiSerengeti
Serengeti
 
Problema Magazinului Cu Cele 10 Raioane
Problema Magazinului Cu Cele 10 RaioaneProblema Magazinului Cu Cele 10 Raioane
Problema Magazinului Cu Cele 10 Raioane
 
Castelul Bran
Castelul BranCastelul Bran
Castelul Bran
 
Statuia Lui Iisus Hristos
Statuia Lui Iisus HristosStatuia Lui Iisus Hristos
Statuia Lui Iisus Hristos
 
Problema Rucsacului
Problema RucsaculuiProblema Rucsacului
Problema Rucsacului
 
Parcul Yellowstone
Parcul YellowstoneParcul Yellowstone
Parcul Yellowstone
 
Studiu De Caz
Studiu De CazStudiu De Caz
Studiu De Caz
 
Serengeti
SerengetiSerengeti
Serengeti
 
Problema Rucsacului
Problema RucsaculuiProblema Rucsacului
Problema Rucsacului
 

Recently uploaded

Studiu Nike, Dascalu Ana-Georgiana, Crp.
Studiu Nike, Dascalu Ana-Georgiana, Crp.Studiu Nike, Dascalu Ana-Georgiana, Crp.
Studiu Nike, Dascalu Ana-Georgiana, Crp.
GeorgianaDascalu1
 
Să ne împrietenim cu lectura Ermurachi Nina/ Pruncia Monica
Să ne împrietenim cu lectura Ermurachi Nina/ Pruncia MonicaSă ne împrietenim cu lectura Ermurachi Nina/ Pruncia Monica
Să ne împrietenim cu lectura Ermurachi Nina/ Pruncia Monica
NinaTofanErmurachi
 
Antarctica caracterizare fizico geografica
Antarctica caracterizare fizico geograficaAntarctica caracterizare fizico geografica
Antarctica caracterizare fizico geografica
Alina70851
 
Papa Francisco canoniza los martires de Rumanía (Rumanian).pptx
Papa Francisco canoniza los martires de Rumanía (Rumanian).pptxPapa Francisco canoniza los martires de Rumanía (Rumanian).pptx
Papa Francisco canoniza los martires de Rumanía (Rumanian).pptx
Martin M Flynn
 
Proces verbal sedinta cu parintii (26.09.2023).docx
Proces verbal sedinta cu parintii (26.09.2023).docxProces verbal sedinta cu parintii (26.09.2023).docx
Proces verbal sedinta cu parintii (26.09.2023).docx
AureliaTertereanu
 
Raport proiect transfrontalier Culori fermecate.pdf
Raport proiect transfrontalier Culori fermecate.pdfRaport proiect transfrontalier Culori fermecate.pdf
Raport proiect transfrontalier Culori fermecate.pdf
savinioana
 
Patrimoniul cultural PROIECT clasa a 6 a IECHEI SORAYA GABRIELA
Patrimoniul cultural PROIECT clasa a 6 a IECHEI SORAYA GABRIELAPatrimoniul cultural PROIECT clasa a 6 a IECHEI SORAYA GABRIELA
Patrimoniul cultural PROIECT clasa a 6 a IECHEI SORAYA GABRIELA
iecheisorayagabriela
 
Analiza SWOT - fisa de lucru aplicabila pentru liceu
Analiza SWOT - fisa de lucru aplicabila pentru liceuAnaliza SWOT - fisa de lucru aplicabila pentru liceu
Analiza SWOT - fisa de lucru aplicabila pentru liceu
Andreea Balaci
 

Recently uploaded (8)

Studiu Nike, Dascalu Ana-Georgiana, Crp.
Studiu Nike, Dascalu Ana-Georgiana, Crp.Studiu Nike, Dascalu Ana-Georgiana, Crp.
Studiu Nike, Dascalu Ana-Georgiana, Crp.
 
Să ne împrietenim cu lectura Ermurachi Nina/ Pruncia Monica
Să ne împrietenim cu lectura Ermurachi Nina/ Pruncia MonicaSă ne împrietenim cu lectura Ermurachi Nina/ Pruncia Monica
Să ne împrietenim cu lectura Ermurachi Nina/ Pruncia Monica
 
Antarctica caracterizare fizico geografica
Antarctica caracterizare fizico geograficaAntarctica caracterizare fizico geografica
Antarctica caracterizare fizico geografica
 
Papa Francisco canoniza los martires de Rumanía (Rumanian).pptx
Papa Francisco canoniza los martires de Rumanía (Rumanian).pptxPapa Francisco canoniza los martires de Rumanía (Rumanian).pptx
Papa Francisco canoniza los martires de Rumanía (Rumanian).pptx
 
Proces verbal sedinta cu parintii (26.09.2023).docx
Proces verbal sedinta cu parintii (26.09.2023).docxProces verbal sedinta cu parintii (26.09.2023).docx
Proces verbal sedinta cu parintii (26.09.2023).docx
 
Raport proiect transfrontalier Culori fermecate.pdf
Raport proiect transfrontalier Culori fermecate.pdfRaport proiect transfrontalier Culori fermecate.pdf
Raport proiect transfrontalier Culori fermecate.pdf
 
Patrimoniul cultural PROIECT clasa a 6 a IECHEI SORAYA GABRIELA
Patrimoniul cultural PROIECT clasa a 6 a IECHEI SORAYA GABRIELAPatrimoniul cultural PROIECT clasa a 6 a IECHEI SORAYA GABRIELA
Patrimoniul cultural PROIECT clasa a 6 a IECHEI SORAYA GABRIELA
 
Analiza SWOT - fisa de lucru aplicabila pentru liceu
Analiza SWOT - fisa de lucru aplicabila pentru liceuAnaliza SWOT - fisa de lucru aplicabila pentru liceu
Analiza SWOT - fisa de lucru aplicabila pentru liceu
 

Colorarea Hartilor

  • 1. Problema colorării hărţilor Elev: Finta Ionuţ
  • 2. Fiind dată o hartă cu n ţări, se cer toate soluţiile de colorare a hărţii, utilizând cel mult patru culori, astfel încât două ţări de frontieră comună să fie colorate diferit. Este demonstrat faptul că sunt suficiente numai patru culori pentru ca orice hartă să poată fi colorată
  • 3. Exemplu Ţara 3: Polonia N=5 Culoarea 1 Culoarea 2 Culoarea 3 Culoarea 4 Ţara 1: Latvia Ţara 2: Lituania Ţara 4: Belarus Ţara 5: Rusia A= 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 0
  • 4. Exemplu N=5 Polonia Lituania Latvia Belarus Rusia Culoarea 1 Culoarea 2 Culoarea 3 Culoarea 4
  • 5. Algoritm Pas1. Se introduc datele de intrare ( nr. de ţări si matricea vecinilor) Pas2. Se initializează nivelul k al stivei Pas3. Cât timp există nivele în stivă executăm paşii următori. Pas4. Căutăm un succesor pe nivelul k al stivei până când gasim unul care nu depăşeşte numărul maxim de culori, apoi verificăm dacă este valid (îndeplineşte condiţiile ca elementul gasit în stivă să fie diferit de celelalte elemente şi în plus ţara i să nu fie vecină cu ţara k). Pas5. Dacă s-a găsit un astfel de element şi dacă este o soluţie a problemei se tipăreşte, iar în caz contrar se trece la nivelul următor al stivei şi se initializează stiva. Pas6. În cazul în care nu s-a găsit nici o soluţie pe nivelul k, coborâm la nivelul anterior să căutăm şi alte soluţii valide.
  • 6. Implementare Harta este furnizată programului cu ajutorul unei matrice Anxn A(i,j) = 1, dacă ţara i se învecinează cu ţara j şi valoarea 0 în caz contrar. Matricea A este simetrică. Pentru rezolvarea problemei se utilizează stiva st, unde nivelul k al stivei simbolizează ţara k, iar st[k] culoarea ataşată ţării k. Stiva are înălţimea n (numărul de ţări) şi pe fiecare nivel ia valori între 1 şi 4.
  • 7. Programul Pascal Program colorarea_h artilor ; Type stiva = array [1…100] of integer; var st : stiva; i, j, n, k : integer; as, ev : boolean; a: array [1..20,1..20] of integer; procedure init(k:integer; var st:stiva); begin st[k]:=0; end; procedure succesor(var as:boolean; var st:stiva; k:integer); begin if st[k] < 4 then begin st[k]:=st[k]+1; as:=true end else as:=false end;
  • 8. function solutie(k:integer):integer; begin solutie:=(k=n); end; procedure tipar; var i:integer; begin for i:= 1 to n do writeln(’Tara =’, i,’; culoarea=’,st[i]); writeln(’===================’); end; begin write(’Numarul de tari = ’); readln(n); for i:= 1 to n do for j:=1 to i-1 do begin write(’a[’,i,’,’,j,’]=’); readln(a[i,j]) end; k:=1; init(k,st);
  • 9. while k>0 do begin repeat succesor(as,st,k); if as then valid(ev,st,k); until (not as) or (as and ev); if as then if solutie (k) then tipar else begin k:=k+1; init(k,st); end else k:=k-1; end end.