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.

20.3. <strong>Programación</strong> dinámica 459<br />

type<br />

tDominio = 0..20;<br />

tTabla = array [tDominio] of record<br />

definido: boolean;<br />

resultado: integer<br />

<strong>en</strong>d; {record}<br />

var<br />

tablaFib: tTabla;<br />

cuyo estado inicial debe incluirse <strong>en</strong> el programa principal:<br />

tablaFib[0].definido:= True;<br />

tablaFib[0].resultado:= 1;<br />

tablaFib[1].definido:= True;<br />

tablaFib[1].resultado:= 1;<br />

for i:= 2 to 20 do<br />

tablaFib[i].definido:= False<br />

Entonces, la función Fib resulta<br />

function Fib(n: tDominio; var t: tTabla): integer;<br />

begin<br />

if not t[n].definido th<strong>en</strong> begin<br />

t[n].definido:= True;<br />

t[n].resultado:= Fib(n-1,t) + Fib(n-2,t)<br />

<strong>en</strong>d; {if}<br />

Fib:= t[n].resultado<br />

<strong>en</strong>d; {Fib}<br />

que se llama, por ejemplo, mediante Fib(14, tablaFib).<br />

❡❡ <br />

Un requisito indisp<strong>en</strong>sable para que una función se pueda tabular correctam<strong>en</strong>te<br />

es que esté libre de (producir o dep<strong>en</strong>der de) efectos laterales, de<br />

manera que el valor asociado a cada argum<strong>en</strong>to sea único, indep<strong>en</strong>di<strong>en</strong>te del<br />

punto del programa <strong>en</strong> que se requiera o del mom<strong>en</strong>to <strong>en</strong> que se invoque.<br />

Esta observación es necesaria, ya que <strong>en</strong> esta técnica se utilizan variables<br />

globales; como se explicó <strong>en</strong> el apartado 8.5.4, un uso incontrolado de estas<br />

variables puede acarrear la pérdida de la corrección de nuestros programas.<br />

Tabulación de algoritmos de programación dinámica<br />

Veamos ahora cómo las técnicas de tabulación descritas mejoran la efici<strong>en</strong>cia<br />

del algoritmo del grafo polietápico.

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

Saved successfully!

Ooh no, something went wrong!