ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Fundamentos de redes y seguridad


Enviado por   •  22 de Marzo de 2021  •  Ensayos  •  3.073 Palabras (13 Páginas)  •  65 Visitas

Página 1 de 13

Título de la tarea

Nombre Alumno

Nombre Asignatura

Instituto IACC

Ponga la fecha aquí


Desarrollo

Pregunta 1 :

Enunciado

Un amigo suyo tiene en mente un numero entero positive x que representa su mes de nacimiento.

  • ¿Cúal cree usted que sería la major forma de resolver el problema?

 Respuesta : con una function recursive que mediante dos indices vayan buscando el numero de mes uno desde el principio y el Segundo indice desde el final hasta el principio del array.

Codigo PHP

<?php

/*Funcion recursiva en php*/

/** Buscar un valor en un array */

/* Busca mes_nacimiento en $meses[1...$rango_fin], mediante

dos indices ($rango_inicio y $rango_fin) , el primero

buscara el mes desde el indice 0 hasta el ultimo indice del array, y el

segundo indice lo hara desde el ultimo indice hasta el principio,

si ninguno de las dos variables no encuentran al numero de mes, entonces

la funcion retornara un -1.  */

function busquedaRecursiva($meses, int $rango_inicio,  

                   int $rango_fin, int $mes_nacimiento)

{

        /**Si el rango_fin es menor al rango_inicio quiere

         * decir que la funcion recorrio todo el array de meses sin encontrar

         * el numero de mes_nacimiento, entonces terminara el ciclo recursivo,devolvera

         * un valor -1 e imprimira  que "El mes x no existe"

         */

    if ($rango_fin < $rango_inicio)

        return -1;

        /**Si la funcion recursiva encontro el numero de mes_nacimiento

         * entonces devolvera el inidice $rango_inicio e imprimira el

         * numero de mes y el indice donde se encontro */        

    if ($meses[$rango_inicio] == $mes_nacimiento)

        return $rango_inicio;

        /**Si la funcion recursiva encontro el numero de mes_nacimiento

         * entonces devolvera el inidice $rango_fin e imprimira el

         * numero de mes y el indice donde se encontro */        

    if ($meses[$rango_fin] == $mes_nacimiento)

        return $rango_fin;

        /**Si ninguna de las condiciones anteriores de la funcion recursiva

         * se cumnple entonces seguira iterando la funcion recursiva con el

         * siguiente $rango_inicio , decrementando el rango_fin hasta que uno

         * de los dos indices logre encontrar el numero a buscar, caso contrario

         * devolvera un valor -1 y se dara por sentado qeu el numero no se encontro

         * en el array de meses. */        

     return busquedaRecursiva($meses, $rango_inicio+1, $rango_fin-1, $mes_nacimiento);

}

/*        Definiendo Variables*/

$meses = array(1,2,3,4,5,6,7,8,9,10,11,12); $i;

$rango_fin = count($meses);

$mes_nacimiento = 15;

/**Llamando a la funcon recursiva para que encuentre el mes dentro

 * del arreglo de meses

 */

$resultado = busquedaRecursiva($meses, 0, $rango_fin - 1, $mes_nacimiento);

/* Si el rango_fin no llego a un indice menor a 0 entonces  encontro el numero a buscar en el array meses */

if ($resultado != -1)

{

        echo "El mes".$mes_nacimiento." existe y su indice es ".$resultado.".";

}

else

{

        /**En caso de que la funcion retorne un -1 se imprimira el

         * siguiente mensaje.

         */

        echo "El mes ".$mes_nacimiento." no existe.";

}

?>

Captura de pantalla

Pregunta 2 :

Enunciado

¿Que tipo de complejidad asocial a este problema?

  1. Respuesta : La complejidad que tiene es de tipo recursivo, al hacer o seguir un conjunto de instrucciones repetitivas durante un número de ciclos o iteraciones hasta encontrar la solución.

Pregunta 3:

Enunciado

¿Que clase de algoritmo es, cualitativo o cuantitativo? ¿Por qué ?

  1. Respuesta : El problema tiene un algoritmo de tipo cuantitativo ya que hay que aplicar operaciones matemáticas y logica para su resolución

Pregunta 3:

Enunciado

Tomando en cuenta el algoritmo realizado, reflexione y discuta sobre cual tipo de algoritmo seria major usando como criterio su magnitud.

  1. Respuesta : Según el criterio de su magnitud del algoritmo de este problema , se lo clasificaría de O(N2) ya que cumple todas las condiciones para su implementación.

Ejercicio 2 :

Enunciado

Mencione y describa al menos 2 problemas que puedan ser resuletos utilizando la tecnica  “Divide y Venceras” y ademas señale en que se diferencia con la tecnica Top-Down.

Ejemplo 1

Código PHP

<?php

class EncontrarMaximo

{

    public function __construct()

    {

       

    }

    public static function encontrarMaximo($arreglo,$indice_inicial,$indice_ultimo):int{

        $medio            = 0;

        $maximo_izquierdo = 0;

        $maximo_derecho   = 0;

        /*** Divide el array en dos partes

         *      para encontrar el maximo numero en cada para del array dividido

         *      luego compara ambos numeros en cada iteracion y va devolviendo

         *      el numero mayor de forma recursiva.

        */

        if($indice_inicial==$indice_ultimo)

        {

            return $arreglo[$indice_inicial];

        }

        else

        {

            $medio = floor(($indice_inicial+$indice_ultimo)/2);

            $maximo_izquierdo = EncontrarMaximo::encontrarMaximo($arreglo,$indice_inicial,$medio);

            $maximo_derecho   = EncontrarMaximo::encontrarMaximo($arreglo,$medio+1,$indice_ultimo);

        }

        if($maximo_izquierdo>$maximo_derecho)

        {

            return $maximo_izquierdo;

        }

        else

        {

            return $maximo_derecho;

        }

    }

}

$findMax = new EncontrarMaximo;

echo $findMax::encontrarMaximo(array(200,5,8,12,455,111,38,56,72,23),0,9);

?>

Ejemplo 2

Código PHP

<?php

/**Una busqueda binaria tiene dos requisitos:

 * a) El array debe tener valores unicos, que no se repitan.

 * b) El array debe estar ordenado de forma ascendente.

 */

 class Busquedabinaria

 {

    public function __construct(){

    }

    /** Funcion que recibe un array y un elemento a buscar,

     * la funcion retornara un entero

     */

    public static function busquedaBinaria($arreglo,$numero):int

    {

        /**Si el arrray es Nulo o esta vacio, entonces

         * se imprime un mensaje anunciandolo.

         */

        if($arreglo==NULL || sizeof($arreglo)==0)

        {

            echo "Error: el arreglo esta vacio.";

            return -1;

        }

        /**Caso contrario llama a la funcion busquedaBinaria2 y le entrega el array

         * junto con un 0 que hacer referencia al indice inicial , el ultimo indice

         * del array, y el numero a buscar, esta funcion retornara un entero que hace

         * referencia al indice del numero a buscar en el array.

         */

        return  Busquedabinaria::busquedaBinaria2($arreglo,0,sizeof($arreglo)-1,$numero);

    }

    /**Funcion que se encarga de ir segmentando el array e ir tambien decidiendo

     * en que partes segmentadas ir busscando el indice del numero a buscar

     * en forma recursiva.Retorna un indice entero del array

     */

    public static function busquedaBinaria2($arreglo,$indice_inicial,$indice_ultimo,$numero):int

    {

        /**Si los rangos del array estan fuera de rango,

         * entonces se imprimira un mensaje.

          */

        if($indice_inicial>$indice_ultimo || $indice_inicial<0 || $indice_ultimo>=sizeof($arreglo))

        {

            echo "Error:el indice del array esta fuera de rango";

        }

        /**Si la busqueda termino, entonces se verificara que el numero

         * entero fue encontrardo y se retornara su indice, caso contrario

         * se retornara -1 , ya que indica que no queda elementos en el array

         * y este esta vacio y que la busqueda ha finalizo.

         *

         */

        if($indice_inicial==$indice_ultimo)

        {

            if($arreglo[$indice_inicial]==$numero)

            {

                return $indice_inicial;

            }

            else

            {

                return -1;

            }

        }

        else

        {

            /**De lo contrario se calcula el nuevo valor del ultimo indice al ser dividido en

             * dos partes el array, y se continua buscado en esta nueva division del array

             * el numero y con ello su indice, de forma recursiva.

              */

            $nuevo_indice_ultimo = floor($indice_inicial + ($indice_ultimo-$indice_inicial)/2);

            /**Si el numero a buscar esta en el indice desde donde se dividio el array, osea en la mitad,

             * entonces se notifica que se encontro el indice del numero buscado, al hacer la segmentacion

             * del array.

              */

            if($numero==$arreglo[$nuevo_indice_ultimo])

            {

                return $nuevo_indice_ultimo;

            }

            elseif($numero<$arreglo[$nuevo_indice_ultimo])

            {

                /**caso contrario, si el numero a buscar esta en la primera mitad del

                 * array dividido, entonces se procede a seguir buscando recursivamente en la primera mitad

                 * del array dividido y se establecen los numeros valores de los indices inicial y ultimo

                  */

                return BusquedaBinaria::busquedaBinaria2($arreglo,$indice_inicial,$nuevo_indice_ultimo-1,$numero);

            }

            else

            {

                /**caso contrario, se procedera a buscar en la segunda mitad de la misma forma que en la condicion

                 * anterior explicada.*/

                return BusquedaBinaria::busquedaBinaria2($arreglo,$nuevo_indice_ultimo+1,$indice_ultimo,$numero);

            }

        }

    }

 }

 /**se define el array de elementos unicos y ordenados de forma ascedente */

 $arreglo = array(2,5,8,12,16,23,38,56,72,91);

 $busquedaBinaria = new BusquedaBinaria;

 echo $busquedaBinaria::busquedaBinaria($arreglo,16);

 /**RESUMEN */

 /**

  * La busqueda binaria tal como su nombre lo indica , procede a segmentar ,dividir, o cortar el

  * array de los elementos, y va preguntando si el numero a buscar se encuentra en la mitad del array,

  * buscara en la primera mitad del array si es que el numero abuscar es menor al numero que esta en la mitad ,

  * o en la segunda mitad si el numero a buscar es mayor al numero que se encuentra en la mitad del array,

  * y procede de esta manera recursivamente hasta encontrar el numero a buscar y retorna su indice en donde

  * se encuentra ubicado el numero dentro del array inicial.

  */

 

?>

...

Descargar como (para miembros actualizados)  txt (13 Kb)   pdf (194.6 Kb)   docx (18.6 Kb)  
Leer 12 páginas más »
Disponible sólo en Clubensayos.com