Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Calcular combinaciones (https://www.clubdelphi.com/foros/showthread.php?t=22929)

kes 01-07-2005 09:51:04

Calcular combinaciones
 
Hola a todos.

Tengo dos arrays (A y B) de [1..X] y necesitaria un algoritmo capaz de calcular y mostrar en un memo todas las combinaciones posibles entre ambos.

Todos los elementos de B tienen que estar en la combinación, pero no necesariamente todos los elementos de A. Por ejemplo: si A=[A1,A2,A3] y B=[B1,B2,B3,B4], la siguiente combinación seria correcta:

A1-B1
A1-B2
A2-B3
A2-B4

y la siguiente seria incorrecta:

A1-B1
A2-B2
A3-B2
A3-B2.

¿Alguien conoce algún algoritmo que pueda solucionarme el problema o donde puedo informarme del tema?

Saludos y muchas gracias.

marcoszorrilla 01-07-2005 12:43:44

Pues yo creo que con un simple bucle anidado se resolvería.

For i:=1 to High(xx)
For j:=1 to High(yy)

cuando no sean todos los elementos, habrá que ver la manera de presentar la lista para el usuario elija y eso es facil, luego el anidado no recorrería todos los elementos sino solamente los seleccionados.

Un Saludo.

kes 01-07-2005 13:10:19

Gracias por la respuesta, pero esta no es la solución.

Este algoritmo solo genera una pequeña parte de las soluciones posibles, no todas.
Puede que me haya explicado mal... cuando digo "combinación" me refiero a que todos los elementos de B queden vinculados a un elemento de A. Es decir, en el ejemplo anterior una combinación tendria 4 elementos combinados, ya que el array B es de 4 elementos.
Siguiendo con el mismo ejemplo, si aplicamos este algoritmo las soluciones que genera son las siguientes:

A1-B1
A1-B2
A1-B3
A1-B4

A2-B1
A2-B2
A2-B3
A2-B4

A3-B1
A3-B2
A3-B3
A3-B4

Como puedes comprobar aqui faltan muchas combinaciones como podria ser, entre otras, la siguiente:

A1-B1
A2-B2
A2-B3
A3-B4

Saludos.

Lepe 01-07-2005 14:06:56

Pues lo que marcos zorrilla ha dicho.

Las combinaciones correctas que has puesto es:
Para cada elemento de A, coges cada elemento de B

Useasé 2 bucles.

Si hubiera otra combinación correcta añadida a las anteriores, habrá que analizarla.... Es que yo estadistica la aprobé por los pelos y hace años... ¿hay más combinaciones correctas?

Un saludo

kes 01-07-2005 14:36:39

Hola Lepe.

Veo que no me explico. A lo que llamo combinación es a cada conjunto de cuatro elementos combinados. Por ejemplo:

A1-B1
A2-B2
A2-B3
A3-B4

Esto seria una sola combinación, no cuatro. Si utilizo dos bucles anidados me genera todas las relaciones entre los elementos de los dos arrays (3 combinaciones), pero estas relaciones después deben combinarse entre si para generar todos los posibles resultados de 4 elementos.

Supongo que debo utilizar funciones recursivas.

Espero haberme explicado mejor, aunque es bastante complicado el tema.


La franja horaria es GMT +2. Ahora son las 13:27:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi