09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

450 Capítulo 20. Esquemas algorítmicos fundam<strong>en</strong>tales<br />

20.1 <strong>Algoritmos</strong> devoradores<br />

La estrategia de estos algoritmos es básicam<strong>en</strong>te iterativa, y consiste <strong>en</strong> una<br />

serie de etapas, <strong>en</strong> cada una de las cuales se consume una parte de los datos<br />

y se construye una parte de la solución, parando cuando se hayan consumido<br />

totalm<strong>en</strong>te los datos. El nombre de este esquema es muy descriptivo: <strong>en</strong> cada<br />

fase (bocado) se consume una parte de los datos. Se int<strong>en</strong>tará que la parte<br />

consumida sea lo mayor posible, bajo ciertas condiciones.<br />

20.1.1 Descripción<br />

Por ejemplo, la descomposición de un número n <strong>en</strong> primos puede describirse<br />

mediante un esquema devorador. Para facilitar la descripción, consideremos la<br />

descomposición de 600 expresada así:<br />

600 = 2 3 3 1 5 2<br />

En cada fase, se elimina un divisor de n cuantas veces sea posible: <strong>en</strong> la<br />

primera se elimina el 2, y se considera el correspondi<strong>en</strong>te coci<strong>en</strong>te, <strong>en</strong> la segunda<br />

el 3, etc. y se finaliza cuando el número no ti<strong>en</strong>e divisores (excepto el 1).<br />

El esquema g<strong>en</strong>eral puede expresarse así:<br />

procedure Resolver P (D: datos; var S: solucion);<br />

begin<br />

G<strong>en</strong>erar la parte inicial de la solución S<br />

(y las condiciones iniciales)<br />

while D sin procesar del todo do begin<br />

Extraer de D el máximo trozo posible T<br />

Procesar T (reduciéndose D)<br />

Incorporar el procesado de T a la solución S<br />

<strong>en</strong>d {while}<br />

<strong>en</strong>d; {Resolver P }<br />

La descomposición de un número <strong>en</strong> factores primos se puede implem<strong>en</strong>tar<br />

s<strong>en</strong>cillam<strong>en</strong>te sigui<strong>en</strong>do este esquema:<br />

procedure Descomponer(n: integer);<br />

{PreC.: n > 1}<br />

{Efecto: muestra <strong>en</strong> la pantalla la descomposición de n<br />

<strong>en</strong> factores primos}<br />

var<br />

d: integer;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!