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.

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

Ejemplo<br />

Consideremos un grafo como el de la figura, organizado por fases, 4 y se plantea<br />

el problema de averiguar el recorrido más corto <strong>en</strong>tre a y z, conoci<strong>en</strong>do las<br />

longitudes de los arcos:<br />

a<br />

. . .<br />

. . .<br />

. . .<br />

e<br />

✘✘ ✘✘✘✘✘✿ ✟✯<br />

b ✘✘✘ ✟<br />

✟✟✟✟✟✟✟✟<br />

c<br />

f<br />

✚<br />

d<br />

g<br />

. . .<br />

. . .<br />

. . .<br />

z<br />

✚✚✚✚✚✚✚✚✚✚❃<br />

fase 0 fase i-1 fase i fase n<br />

<br />

◗ ✲<br />

◗◗◗◗◗◗◗◗◗◗<br />

✘✘ ✘✘✘✘✘✿ ✘✘<br />

✘✘<br />

✲<br />

El problema propuesto consiste <strong>en</strong> formar una secu<strong>en</strong>cia de etapas, <strong>en</strong> cada<br />

una de las cuales se opta por un arco que conduce a uno de los nodos de la<br />

sigui<strong>en</strong>te, accesible desde nuestro nodo actual, determinado por las etapas anteriores.<br />

Si <strong>en</strong> la fase i-ésima se puede escoger <strong>en</strong>tre los nodos E, F y G, el camino<br />

más corto <strong>en</strong>tre A y Z es el más corto <strong>en</strong>tre los tres sigui<strong>en</strong>tes<br />

ir desde a hasta e, e ir desde e hasta z<br />

ir desde a hasta f, e ir desde f hasta z<br />

ir desde a hasta g, e ir desde g hasta z<br />

de manera que, una vez fijada una elección (por ejemplo E), las subsoluciones ir<br />

desde A hasta E e ir desde E hasta Z compon<strong>en</strong> la solución global. Esto es, se<br />

verifica el principio de optimalidad de Bellman.<br />

En resum<strong>en</strong>, el mejor trayecto <strong>en</strong>tre los puntos P y Q (<strong>en</strong> fases no consecutivas<br />

finic y ffin), se halla así:<br />

Elegir una etapa intermedia i (por ejemplo, (finic + ffin) div 2)<br />

(sean {o1, . . . , ok} los puntos <strong>en</strong> la etapa i-ésima)<br />

Elegir O ∈ {o1, . . . , ok} tal que el recorrido MejorTray(P,O)<br />

junto con MejorTray(O,Q) sea mínimo<br />

La recursión termina cuando los nodos a <strong>en</strong>lazar están <strong>en</strong> etapas consecutivas,<br />

existi<strong>en</strong>do un único tramo de P a Q (<strong>en</strong> cuyo caso se elige éste) o ninguno (<strong>en</strong> cuyo<br />

4 Este tipo de grafos se llaman polietápicos.

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

Saved successfully!

Ooh no, something went wrong!