0% encontró este documento útil (0 votos)
11 vistas29 páginas

Nombre Del Alumno: Luis Emilson de Anda Cornejo Materia: Estructura de Datos Grupo:2203 Grado: 3

Cargado por

emilsondeanda
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
11 vistas29 páginas

Nombre Del Alumno: Luis Emilson de Anda Cornejo Materia: Estructura de Datos Grupo:2203 Grado: 3

Cargado por

emilsondeanda
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Nombre del alumno: Luis Emilson de Anda

Cornejo
Materia : estructura de datos
Grupo:2203 grado: 3
Código 1
Explicación del código

1. Definición de numeros y matriz:

Numeros es una lista unidimensional que


contiene los valores [10, 20, 30, 40, 50].

Matriz es una lista de listas (matriz


bidimensional) que representa una tabla
de 3x3 con los valores del 1 al 9.

2. Función recorrer_array(array):

Esta función recorre un array (lista)


utilizando un bucle for y un índice (i).

El índice se usa para acceder al elemento


correspondiente y luego se imprime el
índice junto al valor del elemento.
3. Función recorrer_matriz(matriz):

Esta función utiliza bucles anidados para


recorrer una matriz (lista de listas).

El bucle externo recorre las filas, mientras


que el bucle interno recorre los elementos
de cada fila (columnas).

Cada elemento se accede mediante sus


índices [fila][columna] y se imprime su
posición y valor.

4. Llamadas a las funciones:


Recorrer_array(numeros) imprime cada
elemento de la lista numeros junto con su
índice.

Recorrer_matriz(matriz) imprime cada


elemento de la matriz matriz junto con
sus índices de fila y columna.

Resultado al ejecutar el código

Salida de recorrer_array(numeros):

Elemento en índice 0: 10
Elemento en índice 1: 20
Elemento en índice 2: 30
Elemento en índice 3: 40
Elemento en índice 4: 50

Salida de recorrer_matriz(matriz):

Elemento en fila 0, columna 0: 1


Elemento en fila 0, columna 1: 2
Elemento en fila 0, columna 2: 3
Elemento en fila 1, columna 0: 4
Elemento en fila 1, columna 1: 5
Elemento en fila 1, columna 2: 6
Elemento en fila 2, columna 0: 7
Elemento en fila 2, columna 1: 8
Elemento en fila 2, columna 2: 9

Este código demuestra cómo recorrer


listas y matrices utilizando bucles y cómo
acceder a elementos específicos con sus
índices.

Código 2
Explicación del código
1. Definición de la lista area:

Area es una lista que contiene elementos


de tipo str que representan colores:
[‘rojo’, ‘verde’, ‘azul’, ‘amarillo’,
‘naranja’].

2. Función acceder_elemento(area,
indice):

La función toma dos parámetros:

Area: una lista cuyos elementos se


quieren acceder.

Indice: el índice del elemento que se


quiere acceder.
Utiliza una condición para verificar si el
índice está dentro del rango válido de la
lista:

Si 0 <= indice < len(area), se accede al


elemento con area[indice] y se devuelve.

Si el índice no está en el rango válido,


retorna un mensaje de error: “Índice fuera
de rango”.

3. Ejemplo de uso:

Se define un índice (indice_a_acceder =


2) para acceder al tercer elemento de la
lista (azul).
La función acceder_elemento(area,
indice_a_acceder) se llama con este
índice.

El resultado (el color en el índice 2) se


almacena en la variable elemento.

4. Impresión del resultado:

Se imprime el mensaje: “El elemento en


el índice 2 es: azul”.

Resultado esperado al ejecutar el código


El elemento en el índice 2 es: azul

Este código demuestra cómo acceder de


forma segura a elementos de una lista
utilizando un índice, asegurando que no
se produzcan errores al intentar acceder
a índices fuera del rango.
Código 3
Explicación del código

1. Definición de la función
busqueda_binaria(lista, objetivo):

La búsqueda binaria funciona sobre una


lista ordenada, dividiendo repetidamente
el rango de búsqueda a la mitad hasta
encontrar el elemento objetivo o
determinar que no está presente.

Parámetros:

Lista: una lista ordenada de elementos.

Objetivo: el valor que queremos buscar.

Variables principales:
Izquierda: índice del límite inferior de
búsqueda (inicia en 0).

Derecha: índice del límite superior de


búsqueda (inicia en len(lista) – 1).

Medio: índice calculado como el promedio


de los límites ((izquierda + derecha) // 2).

2. Proceso del bucle while:

El bucle continúa mientras izquierda <=


derecha, lo que significa que aún hay
elementos por verificar en el rango de
búsqueda.

Condiciones:
Si lista[medio] == objetivo, el elemento
ha sido encontrado, y se retorna su
índice.

Si lista[medio] < objetivo, el objetivo


debe estar en la mitad derecha, por lo
que izquierda se actualiza a medio + 1.

Si lista[medio] > objetivo, el objetivo


debe estar en la mitad izquierda, por lo
que derecha se actualiza a medio – 1.

3. Resultado final:

Si el bucle termina sin encontrar el


elemento, se retorna -1, indicando que el
objetivo no está en la lista.
4. Ejemplo de uso:

Se define una lista ordenada


lista_ordenada = [1, 3, 5, 7, 9, 11, 13,
15].

Se busca el valor objetivo = 7 en la lista.

La función busqueda_binaria imprime los


pasos del proceso y devuelve el índice si
el elemento es encontrado o -1 si no lo
es.

5. Impresión del resultado:

Si el índice retornado no es -1, imprime el


índice del elemento encontrado.
Si no se encuentra, imprime “Elemento
no encontrado”.

Resultado esperado al ejecutar el código

Salida del proceso de búsqueda:

Izquierda: 0, Derecha: 7, Medio: 3,


Elemento medio: 7

Resultado final:

Elemento encontrado en el índice: 3

Este código muestra cómo funciona el


algoritmo de búsqueda binaria,
explicando cada paso del proceso de
división en mitades para localizar un
elemento en una lista ordenada.

Código 4:Explicación del código

Este programa implementa el algoritmo


de fuerza bruta para resolver el problema
de la mochila (Knapsack Problem). A
continuación, se desglosa cada parte del
código:
1. Definición de la función
mochila_fuerza_bruta:

Parámetros:

Pesos: una lista con los pesos de los


objetos.

Valores: una lista con los valores


asociados a cada objeto.

Capacidad: la capacidad máxima de la


mochila.

Variables principales:
N: número de objetos (tamaño de la lista
valores).

Max_valor: almacena el valor máximo


encontrado (inicia en 0).

Mejor_combinacion: almacena los índices


de los objetos que forman la mejor
combinación encontrada.

2. Generación de todas las


combinaciones posibles:

Se generan todas las combinaciones


posibles de los objetos utilizando el rango
1 << n (equivalente a , el número total
de combinaciones posibles de n objetos).
Cada número en este rango se interpreta
como un número binario:

Si el bit está activado (1), el objeto se


incluye en la combinación actual.

3. Evaluación de cada combinación:


Para cada combinación, se calculan:

Peso_actual: la suma de los pesos de los


objetos incluidos.

Valor_actual: la suma de los valores de los


objetos incluidos.

Combinacion_actual: una lista de los


índices de los objetos incluidos en la
combinación.

Se verifica si:

Peso_actual no excede la capacidad.

Valor_actual es mayor que el max_valor


encontrado hasta ahora.
Si se cumplen ambas condiciones, se
actualizan max_valor y
mejor_combinacion.

4. Retorno de resultados:

La función retorna:

Max_valor: el valor máximo obtenido.

Mejor_combinacion: la lista de índices de


los objetos en la combinación óptima.
Ejemplo de uso

Datos de entrada:

Glosario: importantes relacionados con el


problema de la mochila y el algoritmo de
fuerza bruta:

Términos clave
1. Mochila (Knapsack)

Problema clásico en optimización donde


se busca seleccionar un subconjunto de
objetos con el mayor valor posible, sin
exceder una capacidad máxima (peso o
volumen) de una mochila.

2. Fuerza bruta (Brute Force)

Estrategia que evalúa todas las


combinaciones posibles para resolver un
problema, garantizando la solución
óptima pero con un alto costo
computacional.

3. Capacidad (Capacity)
Límite máximo (como peso o volumen)
que la mochila puede contener.

4. Combinación

Un subconjunto de objetos seleccionados


entre el conjunto total de objetos
disponibles.

5. Peso (Weight)

Propiedad de cada objeto que representa


su impacto en la capacidad de la mochila.

6. Valor (Value)
Beneficio o utilidad de cada objeto. El
objetivo es maximizar la suma de estos
valores dentro de las restricciones de
capacidad.

7. Índice (Index)

Posición de un elemento en una lista,


utilizada para identificar objetos
específicos en las combinaciones.

8. Bitmasking

Técnica que usa representaciones binarias


para generar todas las combinaciones
posibles de un conjunto, útil en
problemas de fuerza bruta como este.
9. Complejidad exponencial

Describe el tiempo de ejecución del


algoritmo de fuerza bruta, donde el
número de combinaciones crece
exponencialmente con el número de
objetos ().

10. Valor máximo (Maximum Value)

El mayor valor total obtenido al evaluar


todas las combinaciones posibles de
objetos que cumplen con la restricción de
capacidad.
11. Subconjunto válido

Una combinación de objetos cuyo peso


total no excede la capacidad de la
mochila.

Otros términos relacionados

12. Algoritmo

Secuencia finita de pasos o instrucciones


que resuelven un problema.

13. Optimización
Proceso de encontrar la mejor solución
posible (máximo o mínimo) bajo ciertas
restricciones.

14. Espacio de búsqueda

También podría gustarte