SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: lidenbrock en Jueves 10 de Junio de 2004, 19:46

Título: Conjunto Potencia
Publicado por: lidenbrock en Jueves 10 de Junio de 2004, 19:46
Me gustaría que alguien me ayudara a obtener un conjunto potencia de un vector  de diez elementos, y de ahí poder seleccionar los conjuntos de dos, tres y cuatro elementos.
Título: Re: Conjunto Potencia
Publicado por: Ruben3d en Jueves 10 de Junio de 2004, 19:57
Hola.

¿Qué es un conjunto potencia?

Un saludo.

Ruben3d
Título: Re: Conjunto Potencia
Publicado por: lidenbrock en Jueves 10 de Junio de 2004, 20:04
Es un conjunto de dos a la n elementos los que obtienes a partir de un conjunto dado, por ejemplo:

x=[a,b,c];

el conjunto potencia sería: {{0},{a},{b},{c},{ab},{ac},{bc},{abc}}
Título: Re: Conjunto Potencia
Publicado por: The Black Boy en Jueves 10 de Junio de 2004, 20:57
mmm.. :think:  y que has hecho o que has avanzado en eso.. por que aqui no te lo van a desarrollar todo

Saludos ;)
Título: Re: Conjunto Potencia
Publicado por: Noel Solw en Jueves 10 de Junio de 2004, 21:22
Una observacion : el conjunto de potencia de un conjunto dado, es el conjunto de todos los conjuntos parciales. En este no debes incluir {0}, sino al conjunto vacio que se represemta por la letra phi (un cero cruzado por un palito diagonal).
Un sugerencia : para un conjunto de n elementos
[1] : escribe al conjunto vacio (este siempre esta en conjunto de potencias).
[2] : forma todas las conbinaciones posibles para n elementos:
       C(1,n),C(2,n),.....,C(n,n);  
[3] : tienes que obtener en total 2^n elementos.

exito ! ! !
Título: Re: Conjunto Potencia
Publicado por: lidenbrock en Viernes 11 de Junio de 2004, 01:11
Si, he estado trabajando  :comp: en la otra parte del algoritmo, pues es un algoritmo de reconocimiento de objeots nuevos, con base en clases dadas.

Ya tengo toda la parte de captura de datos, y la resolución de la mayor parte del problema, lo que pasa es que no puedo programar la parte del conjunto potencia.

Por ejemplo, le doy que son cinco elementos en el vector, es decir de X1 hasta X5; entonces el número de conjuntos de apoyo será 3, lo que significa que solo los subconjuntos formados por dos elementos, 3 elementos y cuatro elementos se deberán utilizar. :lightsabre:

Por medio de unos ciclos for voy comparando si es un número distinto del primer número es decir, para k=3:     X1X2X3, X1X2X4, pero en la siguiente iteración me da como resultado X3X2X1, y ese valor ya estárepetido en la primera. Para finalizar, debo puntualizar que si obtengo el conjunto potencia es de manera errónea, es decir, con valores X3X2X1, que ya se repite, y valores que faltan. :smartass:
Título: Re: Conjunto Potencia
Publicado por: Noel Solw en Viernes 11 de Junio de 2004, 08:39
Adjunto un programa reecursivo para encontrar las combinaciones de un conjunto de elementos : 1,2,3,....,n.
Espero que consigas adaptarlo a tus necesidades.
Exito ! ! !
Título: Re: Conjunto Potencia
Publicado por: lidenbrock en Viernes 11 de Junio de 2004, 09:05
Gracias Noel, afortunadamente, ya  :comp: pude resolver el problema, pero me servirá mucho tu ayuda.

Hasta luego, espero que en un futuro cercano, pueda aportar algo  a los de esta página. :alien:
Título: Re:Conjunto Potencia
Publicado por: luismgl.86 en Miércoles 12 de Febrero de 2014, 01:04
Buenas noches. Tengo una duda en relación al código fuente que facilita un amigo anteriormente. El codigo fuente es el siguiente: #include<iostream>
#include <stdlib.h>

int potencia(int b,int e){
    int i;
    int pot=1;
    for(i=1;i<=e;i++){
          pot=pot*b;
    }
    return pot;
}

int main(){
    int i,j,limite;
    std::string A[100];
    std::cout<<"Ingrese el numero de elementos del conjunto"<<"\n";
    std::cin>>limite;
    for(i=0;i<limite;i++){
       std::cout<<"Ingrese el elemento: "<<i+1<<" ";
       std::cin>>A;
    }
    for(i=0;i<potencia(2,limite);i++){
        for(j=0;j<limite;j++){
          if(i & (1<<j))
            std::cout<<A[j];
        }
        std::cout<<"\n";
    }
    system("pause");
    return 0;
 
}

Mi duda, o mas bien pregunta, es que significa la instrucción  if(i & (1<<j)). Gracias por la ayuda.