Algoritmia - Matrices Retrógradas

 
Vista:

Matrices Retrógradas

Publicado por Ernesto (1 intervención) el 30/01/2005 01:46:11
Mucho les agradeceré que me faciliten el algoritmo para ordenar una matriz dada de 'n' renglones x 'c' columnas de tal manera que al sumar todos los elementos de un renglón den la misma suma que todos los elementos de una columna, y que todos los renglones tengan la misma suma que todas las columnas, como en el siguiente ejemplo:

===================
Renglón 1: 2 + 6 + 9=17
Renglón 2: 8 + 4 + 5=17
Renglón 3: 7 + 7 + 3=17
===================
SumaCOL:17=17=17[51]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Ordenar matriz para sumas equitativas

Publicado por Alejandro (307 intervenciones) el 05/03/2024 00:08:03
A continuación, te proporciono un algoritmo en pseudocódigo para ordenar una matriz de tal manera que la suma de cada renglón sea igual a la suma de cada columna, como en tu ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Algoritmo OrdenarMatrizEquitativa
 
// Función para sumar los elementos de un renglón
Función SumaRenglón(matriz, renglón, columnas)
    suma = 0
    Para cada elemento en matriz[renglón]
        suma += elemento
    Fin Para
    devolver suma
Fin Función
 
// Función para sumar los elementos de una columna
Función SumaColumna(matriz, columna, renglones)
    suma = 0
    Para cada fila en matriz
        suma += fila[columna]
    Fin Para
    devolver suma
Fin Función
 
// Función para intercambiar dos renglones de la matriz
Procedimiento IntercambiarRenglones(matriz, renglón1, renglón2, columnas)
    Para cada columna de 1 a columnas
        temp = matriz[renglón1][columna]
        matriz[renglón1][columna] = matriz[renglón2][columna]
        matriz[renglón2][columna] = temp
    Fin Para
Fin Procedimiento
 
// Función para ordenar la matriz
Procedimiento OrdenarMatriz(matriz, renglones, columnas)
    // Calcula la suma de la primera columna y la compara con las sumas de los renglones
    sumaPrimeraColumna = SumaColumna(matriz, 1, renglones)
    Para cada renglón de 1 a renglones
        sumaRenglón = SumaRenglón(matriz, renglón, columnas)
        Si sumaRenglón <> sumaPrimeraColumna
            // Busca un renglón que tenga la misma suma que la primera columna y lo intercambia
            Para cada otroRenglón de 1 a renglones
                sumaOtroRenglón = SumaRenglón(matriz, otroRenglón, columnas)
                Si sumaOtroRenglón = sumaPrimeraColumna
                    IntercambiarRenglones(matriz, renglón, otroRenglón, columnas)
                    Salir
                Fin Si
            Fin Para
        Fin Si
    Fin Para
Fin Procedimiento
 
// Ejemplo de uso
// (Debes llenar tu matriz con los valores correspondientes antes de llamar a la función)
matriz = [[2, 6, 9], [8, 4, 5], [7, 7, 3]]
renglones = 3
columnas = 3
 
// Llama a la función para ordenar la matriz
OrdenarMatriz(matriz, renglones, columnas)
 
// Imprime la matriz ordenada
Para cada fila en matriz
    Imprimir fila
Fin Para
 
Fin Algoritmo

Este algoritmo busca garantizar que la suma de cada renglón sea igual a la suma de cada columna en la matriz. Ten en cuenta que este pseudocódigo asume que ya tienes una matriz inicializada con los valores correspondientes. Adaptar el código según tu lenguaje de programación específico y necesidades de entrada y salida. ¡Espero que sea de utilidad, Ernesto!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar