Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2008-11-14 09:21:12.
Revizia anterioară   Revizia următoare  

Probleme de acoperire

(Categoria Algoritmi, autor Cosmin Negruşeri)

În acest articol vom prezenta o serie de probleme apărute la concursurile de programare care au o tematică similară şi anume acea de acoperire în plan. În general acest tip de probleme sunt NP complete, dar pentru cazurile particulare prezentate problemele sunt rezolvabile.

Problema 1 (Olimpiada de informatică, Bucureşti, etapa pe sector, 1995 şi [1])

Se dă un pătrat de latură 2<sup>$n$</sup> care se împarte în pătrate disjuncte de latură 1. Unul dintre aceste pătrate se elimină. Se cere acoperirea suprafeţei rămase cu piese de forma:

Soluţie:

Prima întrebare care ne vine în minte este dacă aria ce trebuie acoperită este divizibilă cu 3. Aria este 4 <sup>n</sup> – 1 = (4 – 1)(4 <sup>(n-1)</sup> + 4 <sup>(n-2)</sup> + … + 4 + 1), deci este multiplu de trei.
Să trecem acum la ideea rezolvării.
Împărţim pătratul în patru pătrate de dimensiuni egale. Unul dintre ele are un pătrat lipsă, facem ca celelalte trei pătrate să aibă şi ele un pătrat lipsă prin plasarea unei piese care sa acopere câte un colţ al fiecăruia dintre cele trei pătrate rămase dupa cum observăm în figură.

Astfel am redus problema la patru noi probleme de dimensiuni mai mici.

Se vede clar acum, cum prin metoda divide et impera putem să acoperim întreg pătratul cu piesele cerute.