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