Fórum de Matemática | DÚVIDAS? Nós respondemos! https://forumdematematica.org/ |
|
Como saber o número de subconjuntos que um número inteiro pertence? https://forumdematematica.org/viewtopic.php?f=19&t=8352 |
Página 1 de 1 |
Autor: | allexandrefsr [ 30 mar 2015, 13:20 ] |
Título da Pergunta: | Como saber o número de subconjuntos que um número inteiro pertence? |
Bom dia, Este é meu primeiro post, acredito que eu esteja na seção correta. Minha dúvida é a seguinte: Dado que eu tenho um conjunto de números inteiros N = {1, 2, 3, ..., n}, eu sei que existem 2n-1 subconjuntos possíveis, dado pelas combinações entre cada um dos seus elementos. Eu gostaria então de saber a quantos desses subconjuntos, cada um dos meus elementos pertence, como exemplo, a quantos destes subconjuntos meu número 2 pertenceria? Preciso saber disso para terminar de implementar computacionalmente, pois meu conjunto N tem 100 elementos, o que me leva a 1.267.650.600.228.230.000.000.000.000.000 de subconjuntos... Espero que tenha conseguido ser totalmente claro. A função que eu gero os subconjuntos (S) e seus complementos (S_) em C++ é: Código: void SubsetGen(vector<vector<int > > &S, vector<vector<int > > &S_, int i, int n){ int k_max = pow(2,n); //máximo de subconjuntos possíveis //adicionara o nó 'i' ao subconjunto se ele fizer a condição válida //set S {k in artificial_set} ordered := {i in V_: k div 2**(ord(i) - 1) mod 2 = 1}; for (int k = 0; k <= (k_max-1); k++){ //percorrendo os subconjuntos possíveis int i_aux = i; for(int pos = 1; pos <= n+1; pos++){ if (int(floor(k/pow(2,(pos-1))))%2 == 1){ S[k].push_back(i_aux); //adiciona ao fim da lista i_aux++; } else{ S_[k].push_back(i_aux); i_aux++; } } } } Muito obrigado, Allexandre. |
Autor: | Sobolev [ 31 mar 2015, 10:55 ] |
Título da Pergunta: | Re: Como saber o número de subconjuntos que um número inteiro pertence? |
Bom dia, Pode pensar do seguinte modo, os conjuntos a que certo elemento pertence são formados pela união do conjunto formado apenas por esse elemento com qualquer subconjunto formado pelos restantes. O número de subconjuntos formados com os restantes (n-1) inteiros pode ser obtido com a mesma fórmula que referiu. Assim, tomando o seu exemplo com o número 2, começamos por determinar o número de subconjuntos de {1,3,4, ..., n}, que será de \(2^{n-1}\) (incluindo o conjunto vazio). Este é exactamente o número de subconjuntos que inclui o inteiro 2. No caso de n=100 terá 2^99= 633.825.300.114.114.700.748.351.602.688 conjuntos nessas coindições. |
Autor: | allexandrefsr [ 01 abr 2015, 13:51 ] |
Título da Pergunta: | Re: Como saber o número de subconjuntos que um número inteiro pertence? |
Sobolev Escreveu: Bom dia, Pode pensar do seguinte modo, os conjuntos a que certo elemento pertence são formados pela união do conjunto formado apenas por esse elemento com qualquer subconjunto formado pelos restantes. O número de subconjuntos formados com os restantes (n-1) inteiros pode ser obtido com a mesma fórmula que referiu. Assim, tomando o seu exemplo com o número 2, começamos por determinar o número de subconjuntos de {1,3,4, ..., n}, que será de \(2^{n-1}\) (incluindo o conjunto vazio). Este é exactamente o número de subconjuntos que inclui o inteiro 2. No caso de n=100 terá 2^99= 633.825.300.114.114.700.748.351.602.688 conjuntos nessas coindições. Obrigado Sobolev, Acabei percebendo isso, mas revisando meu problema, acabei descobrindo que ele tem uma grande maneira de ser simplificado. \(\forall i \in N = \{1,...,100\}, \exists N_i \subseteq N.\). Cada um destes subconjuntos \(N_i, \forall i \in N\), chamado de vizinhança de i, contém o inteiro i (referente a um ponto no plano cartesiano) e os índices dos 9 outros pontos mais próximos a ele. Assim, eu só me interesso pelos subconjuntos de \(N_i, \forall i \in N\) que também contém i. Meu real problema agora reside em como gerar somente os subconjuntos de \(N_i, \forall i \in N\) que contenham i. Vocês tem alguma ideia de como fazer isso? Muito obrigado, Allexandre. |
Autor: | allexandrefsr [ 01 abr 2015, 14:00 ] |
Título da Pergunta: | Re: Como saber o número de subconjuntos que um número inteiro pertence? |
allexandrefsr Escreveu: Sobolev Escreveu: Bom dia, Pode pensar do seguinte modo, os conjuntos a que certo elemento pertence são formados pela união do conjunto formado apenas por esse elemento com qualquer subconjunto formado pelos restantes. O número de subconjuntos formados com os restantes (n-1) inteiros pode ser obtido com a mesma fórmula que referiu. Assim, tomando o seu exemplo com o número 2, começamos por determinar o número de subconjuntos de {1,3,4, ..., n}, que será de \(2^{n-1}\) (incluindo o conjunto vazio). Este é exactamente o número de subconjuntos que inclui o inteiro 2. No caso de n=100 terá 2^99= 633.825.300.114.114.700.748.351.602.688 conjuntos nessas coindições. Obrigado Sobolev, Acabei percebendo isso, mas revisando meu problema, acabei descobrindo que ele tem uma grande maneira de ser simplificado. \(\forall i \in N = \{1,...,100\}, \exists N_i \subseteq N.\). Cada um destes subconjuntos \(N_i, \forall i \in N\), chamado de vizinhança de i, contém o inteiro i (referente a um ponto no plano cartesiano) e os índices dos 9 outros pontos mais próximos a ele. Assim, eu só me interesso pelos subconjuntos de \(N_i, \forall i \in N\) que também contém i. Meu real problema agora reside em como gerar somente os subconjuntos de \(N_i, \forall i \in N\) que contenham i. Vocês tem alguma ideia de como fazer isso? Muito obrigado, Allexandre. Um ponto que esqueci de falar, que a cardinalidade de \(N_i, \forall i \in N\) é de 10 elementos, assim, a cardinalidade dos seus subconjuntos é menor ou igual a 10. |
Autor: | Sobolev [ 01 abr 2015, 15:46 ] |
Título da Pergunta: | Re: Como saber o número de subconjuntos que um número inteiro pertence? |
A escolha dos conjuntos \(N_i\) não parece a mais evidente, já que esses conjuntos não são simétricos relativamente ao inteiro i. É preciso pois especificar um pouco melhor como é obtida. Por exemplo, considera que \(N_{10} = \{6,7,8,9,10,11,12,13,14,15\}\) ou \(N_{10} = \{5,6,7,8,9,10,11,12,13,14\}\)? |
Página 1 de 1 | Os Horários são TMG [ DST ] |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |