Page 181 - INTRODUCCIÓN AL ANÁLISIS DE ALGORITMOS
P. 181

INTRODUCCIÓN AL ANÁLISIS  DE ALGORITMOS


                        a.  Choice(S)... en forma arbitraria se escoge un elemento del conjunto S.

                        b.  Failure... señala una terminación sin éxito.

                        c.  Success... señala una terminación con éxito.




            X        choice (1: n) puede resultar en X la asignación de un entero en el rango [1, n]. No existe una
            regla especifica de cómo se escogió el número entero. La señal de éxito o no éxito se utiliza para
            definir un estado del algoritmo. Estas declaraciones son equivalentes a definir un stop y no son uti-
            lizadas para efectuar un retorno. Un algoritmo termina sin éxito si y solo si no existe un conjunto de
            elecciones que conduzcan al éxito.

            Los tiempos de cómputo para choice, success y failure son tomados como O (1). Una máquina que
            sea capaz de ejecutar un algoritmo no determinístico se conoce como máquina no determinística.
            Mientras no exista una máquina no determinística (como la definida en este escrito), se tienen las su-
            ficientes razones intuitivas para concluir que ciertos problemas no se pueden resolver en algoritmos
            determinísticos en tiempo polinomial.

            Por ejemplo: considere el problema de buscar para un elemento x en un conjunto dado de elemen-
            tos A(1: n), n ≥1. Se requiere determinar el índice tal que A(j) = x o j = 0 si x no se encuentra en A. Un
            algoritmo no determinístico es este:
            j         choice (1: n)


            if A(j) =x entonces
            imprime(j)


            success
            endif


            else
            print (‘0’);


            failure




            En este ejemplo, una computadora no determinística imprimirá un cero si y solo si no existe algún
            j tal que A(j) = x. El algoritmo es no determinístico con complejidad O(1). Note que como A no está
            ordenado, cualquier algoritmo determinístico de búsqueda tiene una complejidad Ω(n).
            Una interpretación de un algoritmo no determinístico puede ser permitida utilizando una computa-
            dora paralela sin límites. Se puede hacer en cada instante cada choice(S), el algoritmo realiza varias
            copias de él mismo. Una copia para cada choice(S), por lo que todas las copias son ejecutadas al
            mismo tiempo. La primera copia que termine con un sucessful obliga que terminen las demás co-

                                                         175
   176   177   178   179   180   181   182   183   184   185   186