创建算法以确定功率集中的子集的大小

Creating algorithms to determine the size of subsets in a power set

本文关键字:子集 集中 功率 算法 创建      更新时间:2023-10-16

我在为此分配创建算法时遇到困难。如果我能得到一些在第一个算法上开始的提示,我会很感激。

该分配的目标是实现和比较各种算法,以计算给定集的每个可能大小的子集数量。请记住,具有N元素的集合具有2^n子集。其中两种算法将用于实际生成子集。您的程序将有能力要求用户选择选择,直到他/她希望退出为止。允许为您的程序提供GUI,但不需要。选择应允许以下内容:

  1. 运行一种算法,该算法是基于计数所有2^n整数从0开始的工作(您可能无法使用C/C /Java INT数据类型)并确定与每个数字相对应的子集的大小。该算法必须以某种方式使用整数除法和模量。它需要返回一个数组,保留每个可能大小的子集的数量。显示每个可能大小的子集的数量。n的值将由用户输入确定。应在n。
  2. 上执行错误检查
  3. 运行一种算法,该算法是基于计数所有2^n从0开始的全数字(您可能无法使用C/C /Java Int数据类型)并确定子集的大小与对应于每个数字。该算法必须以某种方式使用比特级操作(逻辑和移动)。它需要返回一个数组,保留每个可能大小的子集的数量。显示每个可能大小的子集的数量。n的值将由用户输入确定。错误检查应在n。

  4. 上执行错误
  5. 运行一种算法,该算法对于0和n之间的所有k的值生成C(N,K),其中N由用户输入确定。该算法需要利用递归阶乘功能。它需要返回一个数组,保留每个可能大小的子集的数量。显示每个可能大小的子集的数量。错误检查应在n。

  6. 上执行错误
  7. 运行一种算法,该算法对于0和n之间的所有k的值生成C(N,K),其中N由用户输入确定。该算法需要使用迭代阶乘算法。它需要返回一个数组,保留每个可能大小的子集的数量。显示每个可能大小的子集的数量。错误检查应在n。

  8. 上执行错误

我看到您的所有问题都是关于一个主题的:递归回溯

生成集合S的功率集:

function rec( i )
      if i == S.length
         print choocen elements of S
         return
      else
         do not chooce element i of S
         rec(i + 1)
         choose element i of S
         rec(i + 1)

一旦您了解递归的概念,C(n, k)的问题就相似。我不会为您的作业提供解决方案:)