python利用递归方法实现求集合的幂集


Posted in Python onSeptember 07, 2020

什么是集合的幂集?

就是原集合中所有的子集(bai包括全集du和空集)构成的集族。可数集是zhi最小的无限集; 它的幂集和实数dao集一一对应(也称同势),是不可数集。 

不是所有不可数集都和实数集等势,集合的势可以无限的大。如实数集的幂集也是不可数集,但它的势比实数集大。 设X是一个有限集,|X| = k,则X的幂集的势为2的k次方。

代码

def powSet(S):
 #创建列表a存储S中的元素
 a=[]
 for i in S:
  a.append(i)
 #判断S中是否只有一个元素,作为递归的终点
 if len(a)==1:
  return set([frozenset(),frozenset(a)])
 
 powset=set()
 #遍历S中的每一个元素
 	for i in range(len(a)):
  S.remove(a[i])
  temp = set()
 #取S中的这一个元素去掉,得到集合S的下一层(相当于S-1),认为S-1幂集已知。
 #将去掉的元素与S-1幂集中每一个元素都求并,得到新集合temp,temp和S-1的幂集求并便得到S的幂集
  for j in powSet(S):
   temp.add(j.union({a[i]}))
   powset = powSet(S).union(temp)
  S.add(a[i])
 return powset
 #验证
s=set([1,2,3])
print(powSet(s))

#结果
{{frozenset({2}), frozenset({2, 3}), frozenset({1, 2}), frozenset({1, 2, 3}), frozenset({3}), frozenset({1}), frozenset(), frozenset({1, 3})}}

需要知识

幂集的概念

python set 和 frozenset 数据类型

心得体会

笔者在写代码时遇到的问题是认为powSet(S-1)(S-1代表S中去掉任一个元素)就完完全全地替代了真正去掉那一个随机元素的元素组成的幂集。

实际上这样是不完全的,因为设置的递归规则有缺陷,不可能完全遍历所有情况。

解决:借助于集合元素的不可重复添加这一特性,我们可以遍历遍历所有S中的元素,都让它们进行一次递归操作,这样做虽然会产生n(S)次重复,但是它可以考虑到所有情况。

到此这篇关于python利用递归方法实现求集合的幂集的文章就介绍到这了,更多相关python递归方法求集合的幂集内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现挑选出来100以内的质数
Mar 24 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
Python打印“菱形”星号代码方法
Feb 05 Python
python实现log日志的示例代码
Apr 28 Python
详解python while 函数及while和for的区别
Sep 07 Python
python实现文件助手中查看微信撤回消息
Apr 29 Python
解决django服务器重启端口被占用的问题
Jul 26 Python
Python-Flask:动态创建表的示例详解
Nov 22 Python
简单介绍django提供的加密算法
Dec 18 Python
Python list和str互转的实现示例
Nov 16 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
Feb 20 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 #Python
python简单利用字典破解zip文件口令
Sep 07 #Python
python 如何快速复制序列
Sep 07 #Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 #Python
python 装饰器的实际作用有哪些
Sep 07 #Python
通俗讲解python 装饰器
Sep 07 #Python
彻底搞懂python 迭代器和生成器
Sep 07 #Python
You might like
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
python操作MySQL数据库的方法分享
2012/05/29 Python
Python自动调用IE打开某个网站的方法
2015/06/03 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
解决Python安装cryptography报错问题
2020/09/03 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
python中time.ctime()实例用法
2021/02/03 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
美国时尚在线:Showpo
2017/09/08 全球购物
德国足球商店:OUTFITTER
2019/05/06 全球购物
保加利亚运动鞋购物网站:SneakerStudio.bg
2020/12/23 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
创业计划书的内容步骤和要领
2014/01/04 职场文书
班队活动设计方案
2014/01/30 职场文书
个人求职信格式范文
2015/03/20 职场文书
安全教育片观后感
2015/06/17 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
医院消毒隔离制度
2015/08/05 职场文书
小学生安全教育心得体会
2016/01/15 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书