UNIVERSIDAD NACIONAL DE PIURA
FACULTAD DE CIENCIAS
ESCUELA PROFESIONAL DE MATEMÁTICA
TRABAJO ENCARGADO:
Algoritmo min-max
GRUPO:
Guevara Chunga, Diego Alain
Juárez Espinoza, Emerson Marliñho
Majuan López, Sarita Lucía
Olarte Córdova, Giuliana Milenka
CURSO: ALGORITMOS DE BÚSQUEDA DE SOLUCIONES
TERCER CICLO
PIURA
Ejercicio propuesto: Crear un algoritmo para seleccionar dentro de 200 fechas de
vencimiento de diferentes productos la más próxima a vencerse
1. Primera parte del Algoritmo para crear aleatoriamente las matrices necesarias
function [M,D] = ejemplo(n)
M = randi([1,12],n,n);
m31 = [1,3,5,7,8,10,12];
m30 = [4,6,9,11];
D = zeros(n,n);
for i = 1:n
for j = 1:n
if ismember(M(i,j), m31)
D(i,j) = randi([1,31]);
else
if ismember(M(i,j), m30)
D(i,j) = randi([1,30]);
else
D(i,j) = randi([1,29]);
end
end
end
end
end
2. Algoritmo de selección de datos
% M contiene los numeros de los meses (1 a 12)
% D contiene los dias de vencimiento (1 a 28/29/30/31)
% La funcion ejemplo (archivo aparte) garantiza que las fechas sean
correctas
[M,D] = ejemplo(20);
disp(M)
disp(D)
% Inicializaciòn de vectores de salida
min_coords = zeros(2, 20); % Para almacenar las coordenadas (lote,
producto)
min_dates = zeros(2,20); % Para almacenar las fechas (dìa, mes)
% Iteraciòn sobre cada columna (producto)
for j = 1:20
% Combinar dìa y mes en una fecha ùnica para comparaciòn
fechas = datenum(2025, M(:, j), D(:, j)); % Convertir a nùmero de
fecha MATLAB
[min_fecha, row_idx] = min(fechas); % Encuentra la fecha mìnima y
su fila
min_coords(:, j) = [row_idx; j]; % Guarda la coordenada (lote,
producto)
min_dates(:, j) = [D(row_idx, j); M(row_idx, j)]; % Guarda la
fecha correspondiente (dìa, mes)
end
% Ahora encontramos la fecha mìnima de todas las columnas
[min_fecha_global, col_idx] = min(datenum(2025, min_dates(2, :),
min_dates(1, :)));
row_idx_global = min_coords(1, col_idx);
% Coordenada (lote, producto) correspondiente a la fecha mìnima global
global_min_coord = [row_idx_global; col_idx];
% Fecha mìnima global (dìa, mes)
global_min_date = [min_dates(1, col_idx); min_dates(2, col_idx)];
% Mostrar resultados
disp('Coordenadas (lote, producto) de la fecha mìnima de cada
columna:');
disp(min_coords);
disp('Fechas (dìa, mes) mìnimas de cada columna:');
disp(min_dates);
disp('Coordenada (lote, producto) de la fecha mìnima global:');
disp(global_min_coord);
disp('Fecha mÃnima global (dìa, mes):');
disp(global_min_date);
Ejecusiòn:
Meses:
Dias: