Algoritmia - Numeros combinatorios

 
Vista:

Numeros combinatorios

Publicado por Alfonso López (1 intervención) el 13/06/2003 11:22:30
Hola,
Necesito una algoritmo (si es posible en VBasic o pseudocodigo) para el desarrollo de las combinaciones de N elementos tomados de M en M, por ejemplo C(n,m) -> C(3,2) siendo C(a,b,c), el resultado deberia ser
(a,b) (a,c) (b,c)
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

Generación de combinaciones de N elementos tomados de M en M

Publicado por Alejandro (307 intervenciones) el 28/02/2024 20:33:36
Alfonso, aquí te presento un pseudocódigo que describe un algoritmo para generar combinaciones de N elementos tomados de M en M. Puedes adaptar este pseudocódigo a tu implementación en Visual Basic o cualquier otro lenguaje de programación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Procedimiento GenerarCombinaciones(N, M):
    Si M > N entonces
        Imprimir "No es posible generar combinaciones"
        Retornar
 
    Declarar arreglo de tamaño M para almacenar la combinación actual
    Inicializar el arreglo con los primeros M elementos de la secuencia (1, 2, ..., M)
 
    Mientras el último elemento del arreglo no sea mayor que N:
        Imprimir la combinación actual
 
        i = M
        Mientras i > 0 y arreglo[i] == N - M + i hacer
            i = i - 1
 
        Si i > 0 entonces
            arreglo[i] = arreglo[i] + 1
            Para j desde i + 1 hasta M hacer
                arreglo[j] = arreglo[i] + (j - i)
        Sino
            Salir del bucle principal
 
    Fin Mientras
Fin Procedimiento

Este algoritmo utiliza un enfoque lexicográfico para generar las combinaciones. Inicialmente, se crea un arreglo con los primeros M elementos de la secuencia (1, 2, ..., M). Luego, en un bucle, se imprimen las combinaciones actuales y se actualiza el arreglo para la siguiente combinación.

Ejemplo de uso para C(3,2):

1
GenerarCombinaciones(3, 2)

Resultado:

1
2
3
1 2
1 3
2 3

Puedes adaptar este pseudocódigo según tus necesidades y el lenguaje de programación que estés utilizando.
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